flipSelectionHorizontal method

void flipSelectionHorizontal({
  1. int? timestampMs,
})

Implementation

void flipSelectionHorizontal({int? timestampMs}) {
  var affected = 0;
  Transform2D? delta;
  final movedIds = <NodeId>[];
  _core.write<void>((writer) {
    final nodes = selectedTransformableNodesInSceneOrder(
      writer.scene,
      writer.selectedNodeIds,
    ).where((node) => !node.isLocked).toList(growable: false);
    if (nodes.isEmpty) return;

    final center = centerWorldForNodes(nodes);
    delta = Transform2D(a: -1, b: 0, c: 0, d: 1, tx: 2 * center.dx, ty: 0);
    affected = writer.writeSelectionTransform(delta!);
    if (affected > 0) {
      movedIds.addAll(nodes.map((n) => n.id));
    }
  });

  if (affected > 0 && delta != null) {
    _events.emitAction(
      ActionType.transform,
      movedIds,
      _resolveTimestampMs(timestampMs),
      payload: <String, Object?>{'delta': delta!.toJsonMap()},
    );
  }
}