denormalizePoint static method

Offset denormalizePoint({
  1. required Offset normalized,
  2. required Size widgetSize,
  3. required UCameraSize previewSize,
  4. BoxFit fit = BoxFit.cover,
  5. bool mirrored = false,
})

Inverse of normalizePoint: places a normalized point back on the widget.

Implementation

static Offset denormalizePoint({
  required Offset normalized,
  required Size widgetSize,
  required UCameraSize previewSize,
  BoxFit fit = BoxFit.cover,
  bool mirrored = false,
}) {
  if (widgetSize.width <= 0 || previewSize.width <= 0) return Offset.zero;
  final double previewAspect = previewSize.aspectRatio;
  final double widgetAspect = widgetSize.width / widgetSize.height;
  double scale;
  if (fit == BoxFit.contain) {
    scale = previewAspect > widgetAspect ? widgetSize.width / previewSize.width : widgetSize.height / previewSize.height;
  } else {
    scale = previewAspect > widgetAspect ? widgetSize.height / previewSize.height : widgetSize.width / previewSize.width;
  }
  final double renderedWidth = previewSize.width * scale;
  final double renderedHeight = previewSize.height * scale;
  final double x = mirrored ? 1 - normalized.dx : normalized.dx;
  return Offset(
    (widgetSize.width - renderedWidth) / 2 + x * renderedWidth,
    (widgetSize.height - renderedHeight) / 2 + normalized.dy * renderedHeight,
  );
}