previewRotate method

void previewRotate(
  1. DiagramPoint world, {
  2. bool snapAngle = false,
})

Implementation

void previewRotate(DiagramPoint world, {bool snapAngle = false}) {
  final baseline = transformBaseline;
  if (baseline == null || !baseline.plan.allowed) return;
  final handle = dragHandle;
  if (handle is! DiagramRotateHandle) return;
  final original = baseline.elements[handle.elementId];
  if (original is! FramedElement) return;
  final origin = baseline.origin;
  final pivot = original.frame.center;
  final startDelta = origin - pivot;
  final currentDelta = world - pivot;
  final startAngle = math.atan2(startDelta.y, startDelta.x);
  final currentAngle = math.atan2(currentDelta.y, currentDelta.x);
  var angle =
      original.rotation +
      math.atan2(
        math.sin(currentAngle - startAngle),
        math.cos(currentAngle - startAngle),
      );
  if (snapAngle) {
    angle = DiagramSnapPolicy.angle(
      angle,
      store.state.options.snaps.rotationSnap,
    );
  }
  _preview(
    baseline.plan.rotate(pivot: pivot, radians: angle - original.rotation),
  );
}