mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-04-20 03:06:59 +08:00
* opt: image * opt: MatrixTransition * update --------- Co-authored-by: dom <githubaccount56556@proton.me>
41 lines
1.0 KiB
Dart
41 lines
1.0 KiB
Dart
import 'dart:math' show pow;
|
|
|
|
import 'package:flutter/widgets.dart';
|
|
|
|
extension ImageExtension on num {
|
|
int? cacheSize(BuildContext context) {
|
|
if (this == 0) {
|
|
return null;
|
|
}
|
|
return (this * MediaQuery.devicePixelRatioOf(context)).round();
|
|
}
|
|
}
|
|
|
|
extension IntExt on int? {
|
|
int? operator +(int other) => this == null ? null : this! + other;
|
|
int? operator -(int other) => this == null ? null : this! - other;
|
|
}
|
|
|
|
extension DoubleExt on double {
|
|
double toPrecision(int fractionDigits) {
|
|
final mod = pow(10, fractionDigits).toDouble();
|
|
return (this * mod).roundToDouble() / mod;
|
|
}
|
|
|
|
bool equals(double other, [double epsilon = 1e-10]) =>
|
|
(this - other).abs() < epsilon;
|
|
|
|
double lerp(double a, double b) {
|
|
assert(
|
|
a.isFinite,
|
|
'Cannot interpolate between finite and non-finite values',
|
|
);
|
|
assert(
|
|
b.isFinite,
|
|
'Cannot interpolate between finite and non-finite values',
|
|
);
|
|
assert(isFinite, 't must be finite when interpolating between values');
|
|
return a * (1.0 - this) + b * this;
|
|
}
|
|
}
|