diff --git a/.rive_head b/.rive_head index cf570cd..f1041e8 100644 --- a/.rive_head +++ b/.rive_head @@ -1 +1 @@ -8bca56dcaffd0f563a91f628b0ed432eca71acb5 +12cf6b8c3cba1e2d11ec17c1e11d6c25fee423ab diff --git a/lib/src/generated/rive_core_context.dart b/lib/src/generated/rive_core_context.dart index a862412..294baa8 100644 --- a/lib/src/generated/rive_core_context.dart +++ b/lib/src/generated/rive_core_context.dart @@ -109,8 +109,6 @@ import 'package:rive/src/rive_core/draw_rules.dart'; import 'package:rive/src/rive_core/draw_target.dart'; import 'package:rive/src/rive_core/event.dart'; import 'package:rive/src/rive_core/joystick.dart'; -import 'package:rive/src/rive_core/layout/grid_track_sizing_group.dart'; -import 'package:rive/src/rive_core/layout/track_sizing_function.dart'; import 'package:rive/src/rive_core/layout_component.dart'; import 'package:rive/src/rive_core/nested_artboard.dart'; import 'package:rive/src/rive_core/node.dart'; @@ -176,10 +174,6 @@ class RiveCoreContext { return NestedArtboard(); case SoloBase.typeKey: return Solo(); - case TrackSizingFunctionBase.typeKey: - return TrackSizingFunction(); - case GridTrackSizingGroupBase.typeKey: - return GridTrackSizingGroup(); case ListenerFireEventBase.typeKey: return ListenerFireEvent(); case AnimationBase.typeKey: @@ -596,56 +590,6 @@ class RiveCoreContext { object.activeComponentId = value; } break; - case TrackSizingFunctionBase.minTypeTagPropertyKey: - if (object is TrackSizingFunctionBase && value is int) { - object.minTypeTag = value; - } - break; - case TrackSizingFunctionBase.minValueTagPropertyKey: - if (object is TrackSizingFunctionBase && value is int) { - object.minValueTag = value; - } - break; - case TrackSizingFunctionBase.minValuePropertyKey: - if (object is TrackSizingFunctionBase && value is double) { - object.minValue = value; - } - break; - case TrackSizingFunctionBase.maxTypeTagPropertyKey: - if (object is TrackSizingFunctionBase && value is int) { - object.maxTypeTag = value; - } - break; - case TrackSizingFunctionBase.maxValueTagPropertyKey: - if (object is TrackSizingFunctionBase && value is int) { - object.maxValueTag = value; - } - break; - case TrackSizingFunctionBase.maxValuePropertyKey: - if (object is TrackSizingFunctionBase && value is double) { - object.maxValue = value; - } - break; - case GridTrackSizingGroupBase.trackTagPropertyKey: - if (object is GridTrackSizingGroupBase && value is int) { - object.trackTag = value; - } - break; - case GridTrackSizingGroupBase.isRepeatingPropertyKey: - if (object is GridTrackSizingGroupBase && value is bool) { - object.isRepeating = value; - } - break; - case GridTrackSizingGroupBase.repeatTagPropertyKey: - if (object is GridTrackSizingGroupBase && value is int) { - object.repeatTag = value; - } - break; - case GridTrackSizingGroupBase.repeatCountPropertyKey: - if (object is GridTrackSizingGroupBase && value is int) { - object.repeatCount = value; - } - break; case ListenerFireEventBase.eventIdPropertyKey: if (object is ListenerFireEventBase && value is int) { object.eventId = value; @@ -1912,13 +1856,6 @@ class RiveCoreContext { case NestedArtboardBase.artboardIdPropertyKey: case NestedAnimationBase.animationIdPropertyKey: case SoloBase.activeComponentIdPropertyKey: - case TrackSizingFunctionBase.minTypeTagPropertyKey: - case TrackSizingFunctionBase.minValueTagPropertyKey: - case TrackSizingFunctionBase.maxTypeTagPropertyKey: - case TrackSizingFunctionBase.maxValueTagPropertyKey: - case GridTrackSizingGroupBase.trackTagPropertyKey: - case GridTrackSizingGroupBase.repeatTagPropertyKey: - case GridTrackSizingGroupBase.repeatCountPropertyKey: case ListenerFireEventBase.eventIdPropertyKey: case LinearAnimationBase.fpsPropertyKey: case LinearAnimationBase.durationPropertyKey: @@ -2022,8 +1959,6 @@ class RiveCoreContext { case TransformComponentBase.scaleYPropertyKey: case NodeBase.xPropertyKey: case NodeBase.yPropertyKey: - case TrackSizingFunctionBase.minValuePropertyKey: - case TrackSizingFunctionBase.maxValuePropertyKey: case LinearAnimationBase.speedPropertyKey: case NestedLinearAnimationBase.mixPropertyKey: case NestedSimpleAnimationBase.speedPropertyKey: @@ -2169,7 +2104,6 @@ class RiveCoreContext { case IKConstraintBase.invertDirectionPropertyKey: case FollowPathConstraintBase.orientPropertyKey: case FollowPathConstraintBase.offsetPropertyKey: - case GridTrackSizingGroupBase.isRepeatingPropertyKey: case LinearAnimationBase.enableWorkAreaPropertyKey: case LinearAnimationBase.quantizePropertyKey: case NestedSimpleAnimationBase.isPlayingPropertyKey: @@ -2265,20 +2199,6 @@ class RiveCoreContext { return (object as NestedAnimationBase).animationId; case SoloBase.activeComponentIdPropertyKey: return (object as SoloBase).activeComponentId; - case TrackSizingFunctionBase.minTypeTagPropertyKey: - return (object as TrackSizingFunctionBase).minTypeTag; - case TrackSizingFunctionBase.minValueTagPropertyKey: - return (object as TrackSizingFunctionBase).minValueTag; - case TrackSizingFunctionBase.maxTypeTagPropertyKey: - return (object as TrackSizingFunctionBase).maxTypeTag; - case TrackSizingFunctionBase.maxValueTagPropertyKey: - return (object as TrackSizingFunctionBase).maxValueTag; - case GridTrackSizingGroupBase.trackTagPropertyKey: - return (object as GridTrackSizingGroupBase).trackTag; - case GridTrackSizingGroupBase.repeatTagPropertyKey: - return (object as GridTrackSizingGroupBase).repeatTag; - case GridTrackSizingGroupBase.repeatCountPropertyKey: - return (object as GridTrackSizingGroupBase).repeatCount; case ListenerFireEventBase.eventIdPropertyKey: return (object as ListenerFireEventBase).eventId; case LinearAnimationBase.fpsPropertyKey: @@ -2489,10 +2409,6 @@ class RiveCoreContext { return (object as NodeBase).x; case NodeBase.yPropertyKey: return (object as NodeBase).y; - case TrackSizingFunctionBase.minValuePropertyKey: - return (object as TrackSizingFunctionBase).minValue; - case TrackSizingFunctionBase.maxValuePropertyKey: - return (object as TrackSizingFunctionBase).maxValue; case LinearAnimationBase.speedPropertyKey: return (object as LinearAnimationBase).speed; case NestedLinearAnimationBase.mixPropertyKey: @@ -2787,8 +2703,6 @@ class RiveCoreContext { return (object as FollowPathConstraintBase).orient; case FollowPathConstraintBase.offsetPropertyKey: return (object as FollowPathConstraintBase).offset; - case GridTrackSizingGroupBase.isRepeatingPropertyKey: - return (object as GridTrackSizingGroupBase).isRepeating; case LinearAnimationBase.enableWorkAreaPropertyKey: return (object as LinearAnimationBase).enableWorkArea; case LinearAnimationBase.quantizePropertyKey: @@ -2967,41 +2881,6 @@ class RiveCoreContext { object.activeComponentId = value; } break; - case TrackSizingFunctionBase.minTypeTagPropertyKey: - if (object is TrackSizingFunctionBase) { - object.minTypeTag = value; - } - break; - case TrackSizingFunctionBase.minValueTagPropertyKey: - if (object is TrackSizingFunctionBase) { - object.minValueTag = value; - } - break; - case TrackSizingFunctionBase.maxTypeTagPropertyKey: - if (object is TrackSizingFunctionBase) { - object.maxTypeTag = value; - } - break; - case TrackSizingFunctionBase.maxValueTagPropertyKey: - if (object is TrackSizingFunctionBase) { - object.maxValueTag = value; - } - break; - case GridTrackSizingGroupBase.trackTagPropertyKey: - if (object is GridTrackSizingGroupBase) { - object.trackTag = value; - } - break; - case GridTrackSizingGroupBase.repeatTagPropertyKey: - if (object is GridTrackSizingGroupBase) { - object.repeatTag = value; - } - break; - case GridTrackSizingGroupBase.repeatCountPropertyKey: - if (object is GridTrackSizingGroupBase) { - object.repeatCount = value; - } - break; case ListenerFireEventBase.eventIdPropertyKey: if (object is ListenerFireEventBase) { object.eventId = value; @@ -3517,16 +3396,6 @@ class RiveCoreContext { object.y = value; } break; - case TrackSizingFunctionBase.minValuePropertyKey: - if (object is TrackSizingFunctionBase) { - object.minValue = value; - } - break; - case TrackSizingFunctionBase.maxValuePropertyKey: - if (object is TrackSizingFunctionBase) { - object.maxValue = value; - } - break; case LinearAnimationBase.speedPropertyKey: if (object is LinearAnimationBase) { object.speed = value; @@ -4252,11 +4121,6 @@ class RiveCoreContext { object.offset = value; } break; - case GridTrackSizingGroupBase.isRepeatingPropertyKey: - if (object is GridTrackSizingGroupBase) { - object.isRepeating = value; - } - break; case LinearAnimationBase.enableWorkAreaPropertyKey: if (object is LinearAnimationBase) { object.enableWorkArea = value; diff --git a/lib/src/rive_core/artboard.dart b/lib/src/rive_core/artboard.dart index 2261199..5771767 100644 --- a/lib/src/rive_core/artboard.dart +++ b/lib/src/rive_core/artboard.dart @@ -16,33 +16,16 @@ import 'package:rive/src/rive_core/draw_target.dart'; import 'package:rive/src/rive_core/drawable.dart'; import 'package:rive/src/rive_core/event.dart'; import 'package:rive/src/rive_core/joystick.dart'; -import 'package:rive/src/rive_core/layout_component.dart'; import 'package:rive/src/rive_core/nested_artboard.dart'; import 'package:rive/src/rive_core/rive_animation_controller.dart'; import 'package:rive/src/rive_core/shapes/paint/shape_paint_mutator.dart'; import 'package:rive/src/rive_core/shapes/shape_paint_container.dart'; import 'package:rive_common/math.dart'; -import 'package:rive_common/rive_taffy.dart'; import 'package:rive_common/utilities.dart'; export 'package:rive/src/generated/artboard_base.dart'; class Artboard extends ArtboardBase with ShapePaintContainer { - // Should probably change this to be nullable and make it only when necessary. - final Taffy _taffy = Taffy.make(); - @override - Taffy get taffy => _taffy; - final Set _dirtyLayout = {}; - - Artboard() { - _taffy.disableRounding(); - makeTaffyNode(_taffy); - } - - void markLayoutDirty(LayoutComponent layoutComponent) { - _dirtyLayout.add(layoutComponent); - } - bool _frameOrigin = true; bool hasChangedDrawOrderInLastUpdate = false; @@ -211,27 +194,6 @@ class Artboard extends ArtboardBase with ShapePaintContainer { /// Update any dirty components in this artboard. bool advance(double elapsedSeconds, {bool nested = false}) { - if (_dirtyLayout.isNotEmpty && taffyNode != null) { - var dirtyLayout = _dirtyLayout.toList(); - _dirtyLayout.clear(); - for (final layoutComponent in dirtyLayout) { - layoutComponent.syncStyle(taffy); - } - // for (final layout in _dependencyOrder.whereType()) { - // if (layout.taffyNode != null) { - // taffy.markDirty(node: layout.taffyNode!); - // } - // } - var layoutResult = taffy.computeLayout(node: taffyNode!); - if (layoutResult.tag == TaffyResultTag.ok) { - // Need to sync all layout positions. - for (final layout in _dependencyOrder.whereType()) { - layout.updateLayoutBounds(taffy); - } - } else { - print('error with layout'); - } - } bool didUpdate = false; for (final controller in _animationControllers) { if (controller.isActive) { diff --git a/lib/src/rive_core/layout/grid_track_sizing_group.dart b/lib/src/rive_core/layout/grid_track_sizing_group.dart deleted file mode 100644 index 1020356..0000000 --- a/lib/src/rive_core/layout/grid_track_sizing_group.dart +++ /dev/null @@ -1,59 +0,0 @@ -import 'package:rive/src/generated/layout/grid_track_sizing_group_base.dart'; -import 'package:rive/src/rive_core/component.dart'; -import 'package:rive/src/rive_core/layout/track_sizing_function.dart'; -import 'package:rive/src/rive_core/notifier.dart'; -import 'package:rive_common/rive_taffy.dart'; - -export 'package:rive/src/generated/layout/grid_track_sizing_group_base.dart'; - -enum GridTrackSizingType { templateRow, templateColumn, autoRow, autoColumn } - -class GridTrackSizingGroup extends GridTrackSizingGroupBase { - TaffyGridTrackRepetitionTag get repeatType => - TaffyGridTrackRepetitionTag.values[repeatTag]; - - GridTrackSizingType get trackType => GridTrackSizingType.values[trackTag]; - set trackType(GridTrackSizingType type) => trackTag = type.index; - - List get sizingFunctions => - children.whereType().toList(); - - Notifier valueChanged = Notifier(); - - @override - void trackTagChanged(int from, int to) {} - - @override - void isRepeatingChanged(bool from, bool to) {} - - @override - void repeatTagChanged(int from, int to) {} - - @override - void repeatCountChanged(int from, int to) {} - - @override - void update(int dirt) {} - - @override - void childAdded(Component child) { - super.childAdded(child); - if (child is TrackSizingFunction) { - child.valueChanged.addListener(_sizingFunctionChanged); - } - _sizingFunctionChanged(); - } - - @override - void childRemoved(Component child) { - super.childRemoved(child); - if (child is TrackSizingFunction) { - child.valueChanged.removeListener(_sizingFunctionChanged); - } - _sizingFunctionChanged(); - } - - void _sizingFunctionChanged() { - valueChanged.notify(); - } -} diff --git a/lib/src/rive_core/layout/track_sizing_function.dart b/lib/src/rive_core/layout/track_sizing_function.dart deleted file mode 100644 index 32b675e..0000000 --- a/lib/src/rive_core/layout/track_sizing_function.dart +++ /dev/null @@ -1,56 +0,0 @@ -import 'package:rive/src/generated/layout/track_sizing_function_base.dart'; -import 'package:rive/src/rive_core/notifier.dart'; -import 'package:rive_common/rive_taffy.dart'; - -export 'package:rive/src/generated/layout/track_sizing_function_base.dart'; - -class TrackSizingFunction extends TrackSizingFunctionBase { - TaffyMinTrackSizingFunctionTag get minType => - TaffyMinTrackSizingFunctionTag.values[minTypeTag]; - - TaffyDimensionTag get minValueType => TaffyDimensionTag.values[minValueTag]; - - TaffyMaxTrackSizingFunctionTag get maxType => - TaffyMaxTrackSizingFunctionTag.values[maxTypeTag]; - - TaffyDimensionTag get maxValueType => TaffyDimensionTag.values[maxValueTag]; - - Notifier valueChanged = Notifier(); - - @override - void minTypeTagChanged(int from, int to) { - _notifyValueChanged(); - } - - @override - void minValueTagChanged(int from, int to) { - _notifyValueChanged(); - } - - @override - void minValueChanged(double from, double to) { - _notifyValueChanged(); - } - - @override - void maxTypeTagChanged(int from, int to) { - _notifyValueChanged(); - } - - @override - void maxValueTagChanged(int from, int to) { - _notifyValueChanged(); - } - - @override - void maxValueChanged(double from, double to) { - _notifyValueChanged(); - } - - @override - void update(int dirt) {} - - void _notifyValueChanged() { - valueChanged.notify(); - } -} diff --git a/lib/src/rive_core/layout_component.dart b/lib/src/rive_core/layout_component.dart index 658cf42..ebe37c6 100644 --- a/lib/src/rive_core/layout_component.dart +++ b/lib/src/rive_core/layout_component.dart @@ -1,17 +1,11 @@ import 'dart:math'; -import 'package:collection/collection.dart'; import 'package:flutter/rendering.dart'; import 'package:rive/src/generated/layout_component_base.dart'; -import 'package:rive/src/rive_core/artboard.dart'; import 'package:rive/src/rive_core/bounds_provider.dart'; -import 'package:rive/src/rive_core/component.dart'; import 'package:rive/src/rive_core/component_dirt.dart'; -import 'package:rive/src/rive_core/layout/grid_track_sizing_group.dart'; -import 'package:rive/src/rive_core/layout/track_sizing_function.dart'; import 'package:rive/src/rive_core/world_transform_component.dart'; import 'package:rive_common/math.dart'; -import 'package:rive_common/rive_taffy.dart'; export 'package:rive/src/generated/layout_component_base.dart'; @@ -61,569 +55,102 @@ class LayoutComponent extends LayoutComponentBase { static const BitFieldLoc insetTopTypeBits = BitFieldLoc(12, 13); static const BitFieldLoc insetBottomTypeBits = BitFieldLoc(14, 15); - List get gridTemplateRowSizingFunctions => - _gridTemplateRowSizing; - List get gridTemplateColumnSizingFunctions => - _gridTemplateColumnSizing; - List get gridAutoRowSizingFunctions => - _gridAutoRowSizing; - List get gridAutoColumnSizingFunctions => - _gridAutoColumnSizing; - - final List _gridTemplateRowSizing = []; - final List _gridTemplateColumnSizing = []; - final List _gridAutoRowSizing = []; - final List _gridAutoColumnSizing = []; - - TaffyFlexDirection get flexDirection => - TaffyFlexDirection.values[flexDirectionBits.read(layoutFlags0)]; - set flexDirection(TaffyFlexDirection value) => - layoutFlags0 = flexDirectionBits.write(layoutFlags0, value.index); - - TaffyFlexWrap get flexWrap => - TaffyFlexWrap.values[flexWrapBits.read(layoutFlags1)]; - set flexWrap(TaffyFlexWrap value) => - layoutFlags1 = flexWrapBits.write(layoutFlags1, value.index); - - TaffyAlignItems get alignItems => - TaffyAlignItems.values[alignItemsBits.read(layoutFlags0)]; - set alignItems(TaffyAlignItems value) => - layoutFlags0 = alignItemsBits.write(layoutFlags0, value.index); - - TaffyAlignItems get alignSelf => - TaffyAlignItems.values[alignSelfBits.read(layoutFlags1)]; - set alignSelf(TaffyAlignItems value) => - layoutFlags1 = alignSelfBits.write(layoutFlags1, value.index); - - TaffyAlignItems get justifyItems => - TaffyAlignItems.values[justifyItemsBits.read(layoutFlags1)]; - set justifyItems(TaffyAlignItems value) => - layoutFlags1 = justifyItemsBits.write(layoutFlags1, value.index); - - TaffyAlignItems get justifySelf => - TaffyAlignItems.values[justifySelfBits.read(layoutFlags1)]; - set justifySelf(TaffyAlignItems value) => - layoutFlags1 = justifySelfBits.write(layoutFlags1, value.index); - - TaffyAlignContent get justifyContent => - TaffyAlignContent.values[justifyContentBits.read(layoutFlags1)]; - set justifyContent(TaffyAlignContent value) => - layoutFlags1 = justifyContentBits.write(layoutFlags1, value.index); - - TaffyAlignContent get alignContent => - TaffyAlignContent.values[alignContentBits.read(layoutFlags1)]; - set alignContent(TaffyAlignContent value) => - layoutFlags1 = alignContentBits.write(layoutFlags1, value.index); - - TaffyGridPlacementTag get gridRowStartType => - TaffyGridPlacementTag.values[gridRowStartTypeBits.read(layoutFlags1)]; - set gridRowStartType(TaffyGridPlacementTag value) => - layoutFlags1 = gridRowStartTypeBits.write(layoutFlags1, value.index); - - TaffyGridPlacementTag get gridRowEndType => - TaffyGridPlacementTag.values[gridRowEndTypeBits.read(layoutFlags1)]; - set gridRowEndType(TaffyGridPlacementTag value) => - layoutFlags1 = gridRowEndTypeBits.write(layoutFlags1, value.index); - - TaffyGridPlacementTag get gridColumnStartType => - TaffyGridPlacementTag.values[gridColumnStartTypeBits.read(layoutFlags1)]; - set gridColumnStartType(TaffyGridPlacementTag value) => - layoutFlags1 = gridColumnStartTypeBits.write(layoutFlags1, value.index); - - TaffyGridPlacementTag get gridColumnEndType => - TaffyGridPlacementTag.values[gridColumnEndTypeBits.read(layoutFlags1)]; - set gridColumnEndType(TaffyGridPlacementTag value) => - layoutFlags1 = gridColumnEndTypeBits.write(layoutFlags1, value.index); - - TaffyGridAutoFlow get gridAutoFlow => - TaffyGridAutoFlow.values[gridAutoFlowBits.read(layoutFlags1)]; - set gridAutoFlow(TaffyGridAutoFlow value) => - layoutFlags1 = gridAutoFlowBits.write(layoutFlags1, value.index); - - TaffyDisplay get display => - TaffyDisplay.values[displayBits.read(layoutFlags0)]; - set display(TaffyDisplay value) => - layoutFlags0 = displayBits.write(layoutFlags0, value.index); - - TaffyPosition get position => - TaffyPosition.values[positionBits.read(layoutFlags0)]; - set position(TaffyPosition value) => - layoutFlags0 = positionBits.write(layoutFlags0, value.index); - - TaffyDimensionTag get marginLeftType => - TaffyDimensionTag.values[marginLeftTypeBits.read(layoutFlags0)]; - - set marginLeftType(TaffyDimensionTag value) => - layoutFlags0 = marginLeftTypeBits.write(layoutFlags0, value.index); - - TaffyDimensionTag get marginRightType => - TaffyDimensionTag.values[marginRightTypeBits.read(layoutFlags0)]; - - set marginRightType(TaffyDimensionTag value) => - layoutFlags0 = marginRightTypeBits.write(layoutFlags0, value.index); - - TaffyDimensionTag get marginTopType => - TaffyDimensionTag.values[marginTopTypeBits.read(layoutFlags0)]; - - set marginTopType(TaffyDimensionTag value) => - layoutFlags0 = marginTopTypeBits.write(layoutFlags0, value.index); - - TaffyDimensionTag get marginBottomType => - TaffyDimensionTag.values[marginBottomTypeBits.read(layoutFlags0)]; - - set marginBottomType(TaffyDimensionTag value) => - layoutFlags0 = marginBottomTypeBits.write(layoutFlags0, value.index); - - TaffyDimensionTag get paddingLeftType => - TaffyDimensionTag.values[paddingLeftTypeBits.read(layoutFlags2)]; - - set paddingLeftType(TaffyDimensionTag value) => - layoutFlags2 = paddingLeftTypeBits.write(layoutFlags2, value.index); - - TaffyDimensionTag get paddingRightType => - TaffyDimensionTag.values[paddingRightTypeBits.read(layoutFlags2)]; - - set paddingRightType(TaffyDimensionTag value) => - layoutFlags2 = paddingRightTypeBits.write(layoutFlags2, value.index); - - TaffyDimensionTag get paddingTopType => - TaffyDimensionTag.values[paddingTopTypeBits.read(layoutFlags2)]; - - set paddingTopType(TaffyDimensionTag value) => - layoutFlags2 = paddingTopTypeBits.write(layoutFlags2, value.index); - - TaffyDimensionTag get paddingBottomType => - TaffyDimensionTag.values[paddingBottomTypeBits.read(layoutFlags2)]; - - set paddingBottomType(TaffyDimensionTag value) => - layoutFlags2 = paddingBottomTypeBits.write(layoutFlags2, value.index); - - TaffyDimensionTag get insetLeftType => - TaffyDimensionTag.values[insetLeftTypeBits.read(layoutFlags2)]; - - set insetLeftType(TaffyDimensionTag value) => - layoutFlags2 = insetLeftTypeBits.write(layoutFlags2, value.index); - - TaffyDimensionTag get insetRightType => - TaffyDimensionTag.values[insetRightTypeBits.read(layoutFlags2)]; - - set insetRightType(TaffyDimensionTag value) => - layoutFlags2 = insetRightTypeBits.write(layoutFlags2, value.index); - - TaffyDimensionTag get insetTopType => - TaffyDimensionTag.values[insetTopTypeBits.read(layoutFlags2)]; - - set insetTopType(TaffyDimensionTag value) => - layoutFlags2 = insetTopTypeBits.write(layoutFlags2, value.index); - - TaffyDimensionTag get insetBottomType => - TaffyDimensionTag.values[insetBottomTypeBits.read(layoutFlags2)]; - - set insetBottomType(TaffyDimensionTag value) => - layoutFlags2 = insetBottomTypeBits.write(layoutFlags2, value.index); - - TaffyDimensionTag get gapWidthType => - TaffyDimensionTag.values[gapWidthTypeBits.read(layoutFlags0)]; - - set gapWidthType(TaffyDimensionTag value) { - // Can't be set to auto, for simplicity we use the same enum here. - assert(value != TaffyDimensionTag.auto); - layoutFlags0 = gapWidthTypeBits.write(layoutFlags0, value.index); - } - - TaffyDimensionTag get gapHeightType => - TaffyDimensionTag.values[gapHeightTypeBits.read(layoutFlags0)]; - - set gapHeightType(TaffyDimensionTag value) { - // Can't be set to auto, for simplicity we use the same enum here. - assert(value != TaffyDimensionTag.auto); - layoutFlags0 = gapHeightTypeBits.write(layoutFlags0, value.index); - } - - TaffyDimensionTag get widthType => - TaffyDimensionTag.values[widthTypeBits.read(layoutFlags0)]; - - set widthType(TaffyDimensionTag value) => - layoutFlags0 = widthTypeBits.write(layoutFlags0, value.index); - - TaffyDimensionTag get heightType => - TaffyDimensionTag.values[heightTypeBits.read(layoutFlags0)]; - - set heightType(TaffyDimensionTag value) => - layoutFlags0 = heightTypeBits.write(layoutFlags0, value.index); - - TaffyDimensionTag get minWidthType => - TaffyDimensionTag.values[minWidthTypeBits.read(layoutFlags0)]; - - set minWidthType(TaffyDimensionTag value) => - layoutFlags0 = minWidthTypeBits.write(layoutFlags0, value.index); - - TaffyDimensionTag get minHeightType => - TaffyDimensionTag.values[minHeightTypeBits.read(layoutFlags0)]; - - set minHeightType(TaffyDimensionTag value) => - layoutFlags0 = minHeightTypeBits.write(layoutFlags0, value.index); - - TaffyDimensionTag get maxWidthType => - TaffyDimensionTag.values[maxWidthTypeBits.read(layoutFlags0)]; - - set maxWidthType(TaffyDimensionTag value) => - layoutFlags0 = maxWidthTypeBits.write(layoutFlags0, value.index); - - TaffyDimensionTag get maxHeightType => - TaffyDimensionTag.values[maxHeightTypeBits.read(layoutFlags0)]; - - set maxHeightType(TaffyDimensionTag value) => - layoutFlags0 = maxHeightTypeBits.write(layoutFlags0, value.index); - bool get intrinsicallySized => intrinsicallySizedBits.read(layoutFlags0) == 1; set intrinsicallySized(bool value) => intrinsicallySizedBits.write(layoutFlags0, value ? 1 : 0); - void markTaffyNodeDirty() { - if (_taffyNode != null) { - taffy?.markDirty(node: _taffyNode!); - artboard?.markLayoutDirty(this); - } - } - - Taffy? get taffy => artboard?.taffy; - TaffyNode? _taffyNode; - TaffyNode? get taffyNode => _taffyNode; - TaffyStyle? _style; - - void syncStyle(Taffy taffy) { - if (_taffyNode == null || _style == null) { - return; - } - _syncStyle(taffy, _style!, _taffyNode!); - } - - void _syncStyle(Taffy taffy, TaffyStyle style, TaffyNode taffyNode) { - bool setIntrinsicWidth = false; - bool setIntrinsicHeight = false; - if (intrinsicallySized && - (widthType == TaffyDimensionTag.auto || - heightType == TaffyDimensionTag.auto)) { - bool foundIntrinsicSize = false; - Size intrinsicSize = Size.zero; - forEachChild((child) { - if (child is LayoutComponent) { - return false; - } - if (child is Sizable) { - var minSize = Size( - minWidthType == TaffyDimensionTag.points ? minWidth : 0, - minHeightType == TaffyDimensionTag.points ? minHeight : 0, - ); - var maxSize = Size( - maxWidthType == TaffyDimensionTag.points - ? maxWidth - : double.infinity, - maxHeightType == TaffyDimensionTag.points - ? maxHeight - : double.infinity, - ); - - var size = (child as Sizable).computeIntrinsicSize(minSize, maxSize); - intrinsicSize = Size(max(intrinsicSize.width, size.width), - max(intrinsicSize.height, size.height)); - foundIntrinsicSize = true; - } - return true; - }); - if (foundIntrinsicSize) { - if (widthType == TaffyDimensionTag.auto) { - setIntrinsicWidth = true; - style.size.width.tag = TaffyDimensionTag.points; - style.size.width.value = intrinsicSize.width; - } - if (heightType == TaffyDimensionTag.auto) { - setIntrinsicHeight = true; - style.size.height.tag = TaffyDimensionTag.points; - style.size.height.value = intrinsicSize.height; - } - } - } - - style.display = display; - style.position = position; - - if (!setIntrinsicWidth) { - style.size.width.tag = widthType; - style.size.width.value = width; - } - if (!setIntrinsicHeight) { - style.size.height.tag = heightType; - style.size.height.value = height; - } - style.minSize.width.tag = minWidthType; - style.minSize.width.value = minWidth; - style.minSize.height.tag = minHeightType; - style.minSize.height.value = minHeight; - - style.maxSize.width.tag = maxWidthType; - style.maxSize.width.value = maxWidth; - style.maxSize.height.tag = maxHeightType; - style.maxSize.height.value = maxHeight; - - style.gap.width.tag = gapWidthType; - style.gap.height.tag = gapHeightType; - - style.flexDirection = flexDirection; - style.flexWrap = flexWrap; - style.alignItems = alignItems; - style.alignSelf = alignSelf; - style.justifyItems = justifyItems; - style.justifySelf = justifySelf; - style.alignContent = alignContent; - style.justifyContent = justifyContent; - - style.gap.width.value = gapWidth; - style.gap.height.value = gapHeight; - - style.flexGrow = flexGrow; - style.flexShrink = flexShrink; - //style.aspectRatio = aspectRatio; - - style.margin.left.tag = marginLeftType; - style.margin.left.value = marginLeft; - style.margin.right.tag = marginRightType; - style.margin.right.value = marginRight; - style.margin.top.tag = marginTopType; - style.margin.top.value = marginTop; - style.margin.bottom.tag = marginBottomType; - style.margin.bottom.value = marginBottom; - - style.padding.left.tag = paddingLeftType; - style.padding.left.value = paddingLeft; - style.padding.right.tag = paddingRightType; - style.padding.right.value = paddingRight; - style.padding.top.tag = paddingTopType; - style.padding.top.value = paddingTop; - style.padding.bottom.tag = paddingBottomType; - style.padding.bottom.value = paddingBottom; - - style.inset.left.tag = insetLeftType; - style.inset.left.value = insetLeft; - style.inset.right.tag = insetRightType; - style.inset.right.value = insetRight; - style.inset.top.tag = insetTopType; - style.inset.top.value = insetTop; - style.inset.bottom.tag = insetBottomType; - style.inset.bottom.value = insetBottom; - - // Grid container properties - style.gridAutoFlow = gridAutoFlow; - - style.gridTemplateRows = _convertToRepeatableModels(_gridTemplateRowSizing); - style.gridTemplateColumns = - _convertToRepeatableModels(_gridTemplateColumnSizing); - - style.gridAutoRows = _convertToSingleModels(_gridAutoRowSizing); - style.gridAutoColumns = _convertToSingleModels(_gridAutoColumnSizing); - - // Grid child properties - style.gridRow.start.tag = gridRowStartType; - style.gridRow.start.lineIndex = - gridRowStartType == TaffyGridPlacementTag.line ? gridRowStart : 1; - style.gridRow.start.span = - gridRowStartType == TaffyGridPlacementTag.span ? gridRowStart : 1; - style.gridRow.end.tag = gridRowEndType; - style.gridRow.end.lineIndex = - gridRowEndType == TaffyGridPlacementTag.line ? gridRowEnd : 1; - style.gridRow.end.span = - gridRowEndType == TaffyGridPlacementTag.span ? gridRowEnd : 1; - style.gridColumn.start.tag = gridColumnStartType; - style.gridColumn.start.lineIndex = - gridColumnStartType == TaffyGridPlacementTag.line ? gridColumnStart : 1; - style.gridColumn.start.span = - gridColumnStartType == TaffyGridPlacementTag.span ? gridColumnStart : 1; - style.gridColumn.end.tag = gridColumnEndType; - style.gridColumn.end.lineIndex = - gridColumnEndType == TaffyGridPlacementTag.line ? gridColumnEnd : 1; - style.gridColumn.end.span = - gridColumnEndType == TaffyGridPlacementTag.span ? gridColumnEnd : 1; - - taffy.setStyle(node: taffyNode, style: style); - } - - List _convertToRepeatableModels( - List from) { - List to = []; - for (final func in from) { - var converted = _convertToRepeatableModel(func); - to.add(converted); - } - return to; - } - - List _convertToSingleModels( - List from) { - List to = []; - for (final func in from) { - if (func.sizingFunctions.isNotEmpty) { - var converted = _convertToSingleModel(func.sizingFunctions.first); - to.add(converted); - } - } - return to; - } - - TaffyRepeatableTrackSizingModel _convertToRepeatableModel( - GridTrackSizingGroup from) { - var type = from.isRepeating - ? TaffyTrackSizingFunctionTag.repeat - : TaffyTrackSizingFunctionTag.single; - var converted = TaffyRepeatableTrackSizingModel(type: type); - if (from.isRepeating) { - converted.repeatType = from.repeatType; - converted.repeatCount = from.repeatCount; - List funcs = []; - for (final func in from.sizingFunctions) { - var converted = _convertToSingleModel(func); - funcs.add(converted); - } - converted.repeatModels = funcs; - } else { - converted.singleModel = _convertToSingleModel(from.sizingFunctions.first); - } - return converted; - } - - TaffySingleTrackSizingModel _convertToSingleModel(TrackSizingFunction from) { - var converted = TaffySingleTrackSizingModel( - minType: from.minType, - minValueType: from.minValueType, - minValue: from.minValue, - maxType: from.maxType, - maxValueType: from.maxValueType, - maxValue: from.maxValue); - return converted; - } - - void makeTaffyNode(Taffy taffy) { - var result = taffy.node(); - if (result.tag == TaffyResultTag.ok) { - _taffyNode = result.node; - var style = taffy.defaultStyle(); - _style?.dispose(); - _style = style; - } - } + @override + void clipChanged(bool from, bool to) {} @override - void changeArtboard(Artboard? value) { - _removeTaffyNode(); - var taffy = value?.taffy; - if (taffy != null) { - makeTaffyNode(taffy); - } - super.changeArtboard(value); - artboard?.markLayoutDirty(this); - if (parent is LayoutComponent) { - (parent as LayoutComponent).syncLayoutChildren(); - } - } + void gapHeightChanged(double from, double to) {} @override - void clipChanged(bool from, bool to) => markTaffyNodeDirty(); + void gapWidthChanged(double from, double to) {} @override - void gapHeightChanged(double from, double to) => markTaffyNodeDirty(); + void layoutFlags0Changed(int from, int to) {} @override - void gapWidthChanged(double from, double to) => markTaffyNodeDirty(); + void layoutFlags1Changed(int from, int to) {} @override - void layoutFlags0Changed(int from, int to) => markTaffyNodeDirty(); + void layoutFlags2Changed(int from, int to) {} @override - void layoutFlags1Changed(int from, int to) => markTaffyNodeDirty(); + void heightChanged(double from, double to) {} @override - void layoutFlags2Changed(int from, int to) => markTaffyNodeDirty(); + void widthChanged(double from, double to) {} @override - void heightChanged(double from, double to) => markTaffyNodeDirty(); + void maxHeightChanged(double from, double to) {} @override - void widthChanged(double from, double to) => markTaffyNodeDirty(); + void maxWidthChanged(double from, double to) {} @override - void maxHeightChanged(double from, double to) => markTaffyNodeDirty(); + void minHeightChanged(double from, double to) {} @override - void maxWidthChanged(double from, double to) => markTaffyNodeDirty(); + void minWidthChanged(double from, double to) {} @override - void minHeightChanged(double from, double to) => markTaffyNodeDirty(); + void flexGrowChanged(double from, double to) {} @override - void minWidthChanged(double from, double to) => markTaffyNodeDirty(); + void flexShrinkChanged(double from, double to) {} @override - void flexGrowChanged(double from, double to) => markTaffyNodeDirty(); + void aspectRatioChanged(double from, double to) {} @override - void flexShrinkChanged(double from, double to) => markTaffyNodeDirty(); + void marginBottomChanged(double from, double to) {} @override - void aspectRatioChanged(double from, double to) => markTaffyNodeDirty(); + void marginLeftChanged(double from, double to) {} @override - void marginBottomChanged(double from, double to) => markTaffyNodeDirty(); + void marginRightChanged(double from, double to) {} @override - void marginLeftChanged(double from, double to) => markTaffyNodeDirty(); + void marginTopChanged(double from, double to) {} @override - void marginRightChanged(double from, double to) => markTaffyNodeDirty(); + void paddingBottomChanged(double from, double to) {} @override - void marginTopChanged(double from, double to) => markTaffyNodeDirty(); + void paddingLeftChanged(double from, double to) {} @override - void paddingBottomChanged(double from, double to) => markTaffyNodeDirty(); + void paddingRightChanged(double from, double to) {} @override - void paddingLeftChanged(double from, double to) => markTaffyNodeDirty(); + void paddingTopChanged(double from, double to) {} @override - void paddingRightChanged(double from, double to) => markTaffyNodeDirty(); + void insetBottomChanged(double from, double to) {} @override - void paddingTopChanged(double from, double to) => markTaffyNodeDirty(); + void insetLeftChanged(double from, double to) {} @override - void insetBottomChanged(double from, double to) => markTaffyNodeDirty(); + void insetRightChanged(double from, double to) {} @override - void insetLeftChanged(double from, double to) => markTaffyNodeDirty(); + void insetTopChanged(double from, double to) {} @override - void insetRightChanged(double from, double to) => markTaffyNodeDirty(); + void gridRowStartChanged(int from, int to) {} @override - void insetTopChanged(double from, double to) => markTaffyNodeDirty(); + void gridRowEndChanged(int from, int to) {} @override - void gridRowStartChanged(int from, int to) => markTaffyNodeDirty(); + void gridColumnStartChanged(int from, int to) {} @override - void gridRowEndChanged(int from, int to) => markTaffyNodeDirty(); - - @override - void gridColumnStartChanged(int from, int to) => markTaffyNodeDirty(); - - @override - void gridColumnEndChanged(int from, int to) => markTaffyNodeDirty(); - - // We should call this whenever any property on any of the sizing objects - // is updated - void gridSizingUpdated() { - markTaffyNodeDirty(); - } + void gridColumnEndChanged(int from, int to) {} @override void update(int dirt) { @@ -640,90 +167,8 @@ class LayoutComponent extends LayoutComponentBase { } } - void syncLayoutChildren() { - var node = _taffyNode; - if (node == null) { - return; - } - taffy?.setChildren( - parent: node, - children: children - .whereType() - .map((child) => child.taffyNode) - .whereNotNull() - .toList()); - } - - @override - void childAdded(Component child) { - super.childAdded(child); - switch (child.coreType) { - case GridTrackSizingGroupBase.typeKey: - var group = child as GridTrackSizingGroup; - group.valueChanged.addListener(_gridContainerValueChanged); - switch (group.trackType) { - case GridTrackSizingType.templateRow: - _gridTemplateRowSizing.add(child); - - break; - case GridTrackSizingType.templateColumn: - _gridTemplateColumnSizing.add(child); - - break; - case GridTrackSizingType.autoRow: - _gridAutoRowSizing.add(child); - - break; - case GridTrackSizingType.autoColumn: - _gridAutoColumnSizing.add(child); - - break; - } - } - markTaffyNodeDirty(); - } - - @override - void childRemoved(Component child) { - super.childRemoved(child); - switch (child.coreType) { - case GridTrackSizingGroupBase.typeKey: - var group = child as GridTrackSizingGroup; - group.valueChanged.removeListener(_gridContainerValueChanged); - switch (group.trackType) { - case GridTrackSizingType.templateRow: - _gridTemplateRowSizing.remove(child); - - break; - case GridTrackSizingType.templateColumn: - _gridTemplateColumnSizing.remove(child); - - break; - case GridTrackSizingType.autoRow: - _gridAutoRowSizing.remove(child); - - break; - case GridTrackSizingType.autoColumn: - _gridAutoColumnSizing.remove(child); - - break; - } - } - markTaffyNodeDirty(); - } - - void _gridContainerValueChanged() { - markTaffyNodeDirty(); - } - - @override - void onAdded() { - super.onAdded(); - syncLayoutChildren(); - } - - Offset _layoutLocation = Offset.zero; - Size _layoutSize = Size.zero; + final Offset _layoutLocation = Offset.zero; + final Size _layoutSize = Size.zero; AABB get localBounds { return AABB.fromValues( @@ -753,51 +198,6 @@ class LayoutComponent extends LayoutComponentBase { }); } - void updateLayoutBounds(Taffy taffy) { - var taffyNode = _taffyNode; - if (taffyNode == null) { - return; - } - - var layoutValueResult = taffy.layout(node: taffyNode); - if (layoutValueResult.tag == TaffyResultTag.ok) { - var layout = layoutValueResult.layout!; - - if (layout.location != _layoutLocation || layout.size != _layoutSize) { - // TODO: Sometimes taffy returns NaN for these values, we need to handle - // this/show an error. - _layoutLocation = - layout.location.isFinite ? layout.location : Offset.zero; - _layoutSize = layout.size.isFinite ? layout.size : Size.zero; - propagateSize(); - markWorldTransformDirty(); - } else if (false /*was content resized*/) { - markWorldTransformDirty(); - } - } else { - print('hmm no layout?!'); - } - } - - void _removeTaffyNode() { - if (_taffyNode != null) { - artboard?.taffy.remove(node: _taffyNode!); - _taffyNode = null; - _style?.dispose(); - _style = null; - } - var parent = this.parent; - if (parent is LayoutComponent) { - parent.markTaffyNodeDirty(); - } - } - - @override - void onRemoved() { - _removeTaffyNode(); - super.onRemoved(); - } - @override void buildDependencies() { super.buildDependencies(); diff --git a/lib/src/rive_core/text/text.dart b/lib/src/rive_core/text/text.dart index 72f7636..a4ae5bd 100644 --- a/lib/src/rive_core/text/text.dart +++ b/lib/src/rive_core/text/text.dart @@ -547,7 +547,6 @@ class Text extends TextBase with TextStyleContainer implements Sizable { if (sendToLayout) { for (ContainerComponent? p = parent; p != null; p = p.parent) { if (p is LayoutComponent) { - p.markTaffyNodeDirty(); // break; } } diff --git a/update_dependencies.sh b/update_dependencies.sh index e63e3e3..e97720f 100755 --- a/update_dependencies.sh +++ b/update_dependencies.sh @@ -68,12 +68,6 @@ function installRiveCpp { git checkout v2.6 . popd fi - - if [ $FORCE == "true" ]; then - echo "Installing rustup" - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - $HOME/.cargo/bin/rustup component add rust-src --toolchain nightly-2023-05-27-aarch64-apple-darwin - fi } pushd macos