ComputedIcon.fit constructor
ComputedIcon.fit(
- ResolvedIcon icon,
- double sizePx
Implementation
factory ComputedIcon.fit(ResolvedIcon icon, double sizePx) {
if (!sizePx.isFinite || sizePx <= 0) {
throw ArgumentError.value(
sizePx,
'sizePx',
'Must be finite and positive.',
);
}
final box = icon.viewBox;
final scale = math.min(sizePx / box.width, sizePx / box.height);
final x = -scale * (box.left / 2 + box.right / 2);
final y = -scale * (box.top / 2 + box.bottom / 2);
if (!scale.isFinite || scale <= 0 || !x.isFinite || !y.isFinite) {
throw ArgumentError(
'Icon fitting must be representable as finite geometry.',
);
}
final sourceToLocal = vm.Matrix4.identity()
..translateByDouble(x, y, 0, 1)
..scaleByDouble(scale, scale, 1, 1);
return ComputedIcon._(
PathIR(icon.source.commands),
sourceToLocal,
icon.fillRule,
);
}