previewRotate method
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),
);
}