computePaddedContentBounds function

Rect2D? computePaddedContentBounds({
  1. required CanvasSceneDocument scene,
  2. required ComputedScene computed,
  3. ContentBoundsPolicy policy = const ContentBoundsPolicy(),
  4. double paddingPx = 0,
})

Implementation

Rect2D? computePaddedContentBounds({
  required CanvasSceneDocument scene,
  required ComputedScene computed,
  ContentBoundsPolicy policy = const ContentBoundsPolicy(),
  double paddingPx = 0,
}) {
  Rect2D? b;

  final preferredId = policy.preferredIdFor(scene);
  if (preferredId != null) {
    b = computed.visualBoundsWorldById[preferredId];
  }

  b ??= selectionUnionBounds(
    policy.fallbackIdsFor(scene),
    getBounds: (id) => computed.visualBoundsWorldById[id],
  );

  if (b == null || b.width <= 0 || b.height <= 0) return null;

  final p = paddingPx;
  return Rect2D.fromLTWH(
    b.left - p,
    b.top - p,
    b.width + p * 2,
    b.height + p * 2,
  );
}