effectReach function
How far past the silhouette effect can paint, grown by spread: a shadow as far as it's moved, grown and
blurred, a layer blur as far as its blur.
Implementation
double effectReach(Effect effect, {double spread = 0}) => switch (effect) {
ShadowEffect(:final position, :final blur) => position.x.abs() + position.y.abs() + spread.abs() + blur * 1.5,
LayerBlur(:final maxBlur) => maxBlur * 1.5,
};