absoluteAngle property

double get absoluteAngle
inherited

The resulting angle after all the ancestors and the components own angles and scales have been applied.

Implementation

double get absoluteAngle {
  var angle = 0.0;
  var totalScaleX = 1.0;
  var totalScaleY = 1.0;

  final ancestorChain = ancestors(includeSelf: true).toList(growable: false)
    ..reverse();

  for (final ancestor in ancestorChain) {
    if (ancestor is ReadOnlyScaleProvider) {
      final ancestorScale = (ancestor as ReadOnlyScaleProvider).scale;
      totalScaleX *= ancestorScale.x;
      totalScaleY *= ancestorScale.y;
      if (ancestorScale.x.isNegative) {
        angle *= -1;
      }
      if (ancestorScale.y.isNegative) {
        angle -= math.pi - angle;
      }
    }

    if (ancestor is ReadOnlyAngleProvider) {
      final reflected = totalScaleX.isNegative ^ totalScaleY.isNegative;
      final localAngle = (ancestor as ReadOnlyAngleProvider).angle;
      angle += reflected ? -localAngle : localAngle;
    }
  }

  return angle.toNormalizedAngle();
}