aves/plugins/aves_magnifier/lib/src/scale/scale_level.dart
Thibault Deckers b1920dbe1c lab: transform
2023-05-14 12:50:08 +02:00

25 lines
774 B
Dart

import 'dart:math';
import 'package:equatable/equatable.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/rendering.dart';
@immutable
class ScaleLevel extends Equatable {
final ScaleReference ref;
final double factor;
@override
List<Object?> get props => [ref, factor];
const ScaleLevel({
this.ref = ScaleReference.absolute,
this.factor = 1.0,
});
static double scaleForContained(Size viewportSize, Size contentSize) => min(viewportSize.width / contentSize.width, viewportSize.height / contentSize.height);
static double scaleForCovering(Size viewportSize, Size contentSize) => max(viewportSize.width / contentSize.width, viewportSize.height / contentSize.height);
}
enum ScaleReference { absolute, contained, covered }