From fe30e350684af30d2db83ff50979fc40694ff36c Mon Sep 17 00:00:00 2001 From: mjtalbot Date: Thu, 29 Jun 2023 08:29:17 +0000 Subject: [PATCH] Run generate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit just trying to flush through some of the bits coming out of running generate core runtime & generate core runtime without making a mess in other pr's . this is split into four commits which might be helpful when looking at the changes here. Diffs= ad72cfce5 Run generate (#5490) 7ee5f7d5a Increases the margin for the approx call to some of the wangs formula… (#5506) 2f224da7f Runtime ellipsis (#5482) Co-authored-by: Maxwell Talbot --- .rive_head | 2 +- .../animation/advanceable_state_base.dart | 4 ++ .../animation/animation_state_base.dart | 4 ++ .../generated/animation/any_state_base.dart | 4 ++ .../animation/blend_animation_1d_base.dart | 4 ++ .../blend_animation_direct_base.dart | 4 ++ .../animation/blend_state_1d_base.dart | 4 ++ .../generated/animation/blend_state_base.dart | 4 ++ .../animation/blend_state_direct_base.dart | 4 ++ .../cubic_ease_interpolator_base.dart | 4 ++ .../cubic_interpolator_component_base.dart | 4 ++ .../cubic_value_interpolator_base.dart | 4 ++ .../generated/animation/entry_state_base.dart | 4 ++ .../generated/animation/exit_state_base.dart | 4 ++ .../animation/keyframe_bool_base.dart | 4 ++ .../animation/keyframe_color_base.dart | 4 ++ .../animation/keyframe_double_base.dart | 4 ++ .../generated/animation/keyframe_id_base.dart | 4 ++ .../animation/keyframe_string_base.dart | 4 ++ .../generated/animation/layer_state_base.dart | 4 ++ .../animation/linear_animation_base.dart | 4 ++ .../animation/listener_align_target_base.dart | 4 ++ .../animation/listener_input_change_base.dart | 4 ++ .../generated/animation/nested_bool_base.dart | 4 ++ .../animation/nested_input_base.dart | 4 ++ .../animation/nested_number_base.dart | 4 ++ .../nested_remap_animation_base.dart | 4 ++ .../nested_simple_animation_base.dart | 4 ++ .../animation/nested_trigger_base.dart | 4 ++ .../animation/state_machine_base.dart | 4 ++ .../animation/state_machine_input_base.dart | 4 ++ .../animation/state_machine_layer_base.dart | 4 ++ .../state_machine_listener_base.dart | 4 ++ .../animation/state_transition_base.dart | 4 ++ .../transition_trigger_condition_base.dart | 4 ++ .../transition_value_condition_base.dart | 4 ++ lib/src/generated/assets/file_asset_base.dart | 3 + lib/src/generated/assets/folder_base.dart | 3 + lib/src/generated/bones/bone_base.dart | 3 + .../generated/bones/cubic_weight_base.dart | 3 + lib/src/generated/bones/root_bone_base.dart | 3 + lib/src/generated/bones/tendon_base.dart | 3 + lib/src/generated/bones/weight_base.dart | 3 + .../constraints/constraint_base.dart | 4 ++ .../generated/container_component_base.dart | 4 ++ .../custom_property_boolean_base.dart | 4 ++ .../custom_property_number_base.dart | 4 ++ .../custom_property_string_base.dart | 4 ++ lib/src/generated/draw_target_base.dart | 3 + lib/src/generated/joystick_base.dart | 3 + lib/src/generated/rive_core_context.dart | 29 ++++++++ .../generated/shapes/clipping_shape_base.dart | 4 ++ lib/src/generated/shapes/mesh_base.dart | 3 + .../shapes/paint/gradient_stop_base.dart | 4 ++ .../shapes/paint/solid_color_base.dart | 4 ++ .../shapes/paint/trim_path_base.dart | 4 ++ .../generated/text/text_modifier_base.dart | 3 + .../generated/text/text_style_axis_base.dart | 4 ++ .../text/text_style_feature_base.dart | 66 +++++++++++++++++++ .../generated/text/text_value_run_base.dart | 4 ++ lib/src/rive_core/artboard.dart | 37 +++++------ lib/src/rive_core/backboard.dart | 9 --- lib/src/rive_core/text/text.dart | 4 +- .../rive_core/text/text_modifier_group.dart | 19 ++++-- .../rive_core/text/text_modifier_range.dart | 3 +- lib/src/rive_core/text/text_style.dart | 50 +++++++++++--- lib/src/rive_core/text/text_style_axis.dart | 4 -- .../rive_core/text/text_style_feature.dart | 20 ++++++ lib/src/rive_core/text/text_value_run.dart | 3 +- 69 files changed, 410 insertions(+), 53 deletions(-) create mode 100644 lib/src/generated/text/text_style_feature_base.dart create mode 100644 lib/src/rive_core/text/text_style_feature.dart diff --git a/.rive_head b/.rive_head index a2b625d..61ebb73 100644 --- a/.rive_head +++ b/.rive_head @@ -1 +1 @@ -ca58847887a2b2588d9bcc208314c7319db13a2a +ad72cfce52f8d419dba13e578224736bd682593c diff --git a/lib/src/generated/animation/advanceable_state_base.dart b/lib/src/generated/animation/advanceable_state_base.dart index 7d84a3b..736535d 100644 --- a/lib/src/generated/animation/advanceable_state_base.dart +++ b/lib/src/generated/animation/advanceable_state_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/advanceable_state_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; import 'package:rive/src/rive_core/animation/layer_state.dart'; diff --git a/lib/src/generated/animation/animation_state_base.dart b/lib/src/generated/animation/animation_state_base.dart index 23ccccf..4e83f92 100644 --- a/lib/src/generated/animation/animation_state_base.dart +++ b/lib/src/generated/animation/animation_state_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/animation_state_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/animation/layer_state_base.dart'; import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; import 'package:rive/src/rive_core/animation/advanceable_state.dart'; diff --git a/lib/src/generated/animation/any_state_base.dart b/lib/src/generated/animation/any_state_base.dart index 40b4657..a4a8c6f 100644 --- a/lib/src/generated/animation/any_state_base.dart +++ b/lib/src/generated/animation/any_state_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/any_state_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; import 'package:rive/src/rive_core/animation/layer_state.dart'; diff --git a/lib/src/generated/animation/blend_animation_1d_base.dart b/lib/src/generated/animation/blend_animation_1d_base.dart index 6777d2e..c4a7c7a 100644 --- a/lib/src/generated/animation/blend_animation_1d_base.dart +++ b/lib/src/generated/animation/blend_animation_1d_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/blend_animation_1d_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/blend_animation.dart'; abstract class BlendAnimation1DBase extends BlendAnimation { diff --git a/lib/src/generated/animation/blend_animation_direct_base.dart b/lib/src/generated/animation/blend_animation_direct_base.dart index 76168ef..66fd12e 100644 --- a/lib/src/generated/animation/blend_animation_direct_base.dart +++ b/lib/src/generated/animation/blend_animation_direct_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/blend_animation_direct_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/blend_animation.dart'; abstract class BlendAnimationDirectBase extends BlendAnimation { diff --git a/lib/src/generated/animation/blend_state_1d_base.dart b/lib/src/generated/animation/blend_state_1d_base.dart index bfa2879..0efd643 100644 --- a/lib/src/generated/animation/blend_state_1d_base.dart +++ b/lib/src/generated/animation/blend_state_1d_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/blend_state_1d_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/animation/layer_state_base.dart'; import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; import 'package:rive/src/rive_core/animation/blend_animation_1d.dart'; diff --git a/lib/src/generated/animation/blend_state_base.dart b/lib/src/generated/animation/blend_state_base.dart index e36d45e..73cf6ff 100644 --- a/lib/src/generated/animation/blend_state_base.dart +++ b/lib/src/generated/animation/blend_state_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/blend_state_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; import 'package:rive/src/rive_core/animation/layer_state.dart'; diff --git a/lib/src/generated/animation/blend_state_direct_base.dart b/lib/src/generated/animation/blend_state_direct_base.dart index 87a80fe..9366be0 100644 --- a/lib/src/generated/animation/blend_state_direct_base.dart +++ b/lib/src/generated/animation/blend_state_direct_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/blend_state_direct_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/animation/layer_state_base.dart'; import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; import 'package:rive/src/rive_core/animation/blend_animation_direct.dart'; diff --git a/lib/src/generated/animation/cubic_ease_interpolator_base.dart b/lib/src/generated/animation/cubic_ease_interpolator_base.dart index 9896329..df1934a 100644 --- a/lib/src/generated/animation/cubic_ease_interpolator_base.dart +++ b/lib/src/generated/animation/cubic_ease_interpolator_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/cubic_ease_interpolator_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/cubic_interpolator.dart'; abstract class CubicEaseInterpolatorBase extends CubicInterpolator { diff --git a/lib/src/generated/animation/cubic_interpolator_component_base.dart b/lib/src/generated/animation/cubic_interpolator_component_base.dart index 031cca8..3d47a5a 100644 --- a/lib/src/generated/animation/cubic_interpolator_component_base.dart +++ b/lib/src/generated/animation/cubic_interpolator_component_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/cubic_interpolator_component_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class CubicInterpolatorComponentBase extends Component { diff --git a/lib/src/generated/animation/cubic_value_interpolator_base.dart b/lib/src/generated/animation/cubic_value_interpolator_base.dart index dd11150..f9b3ab6 100644 --- a/lib/src/generated/animation/cubic_value_interpolator_base.dart +++ b/lib/src/generated/animation/cubic_value_interpolator_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/cubic_value_interpolator_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/cubic_interpolator.dart'; abstract class CubicValueInterpolatorBase extends CubicInterpolator { diff --git a/lib/src/generated/animation/entry_state_base.dart b/lib/src/generated/animation/entry_state_base.dart index 67c47a5..8f26acf 100644 --- a/lib/src/generated/animation/entry_state_base.dart +++ b/lib/src/generated/animation/entry_state_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/entry_state_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; import 'package:rive/src/rive_core/animation/layer_state.dart'; diff --git a/lib/src/generated/animation/exit_state_base.dart b/lib/src/generated/animation/exit_state_base.dart index 5912bdd..157a2d0 100644 --- a/lib/src/generated/animation/exit_state_base.dart +++ b/lib/src/generated/animation/exit_state_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/exit_state_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; import 'package:rive/src/rive_core/animation/layer_state.dart'; diff --git a/lib/src/generated/animation/keyframe_bool_base.dart b/lib/src/generated/animation/keyframe_bool_base.dart index 9b61617..c745ea3 100644 --- a/lib/src/generated/animation/keyframe_bool_base.dart +++ b/lib/src/generated/animation/keyframe_bool_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/keyframe_bool_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/keyframe.dart'; abstract class KeyFrameBoolBase extends KeyFrame { diff --git a/lib/src/generated/animation/keyframe_color_base.dart b/lib/src/generated/animation/keyframe_color_base.dart index 20ab8f2..fc14359 100644 --- a/lib/src/generated/animation/keyframe_color_base.dart +++ b/lib/src/generated/animation/keyframe_color_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/keyframe_color_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/keyframe.dart'; abstract class KeyFrameColorBase extends KeyFrame { diff --git a/lib/src/generated/animation/keyframe_double_base.dart b/lib/src/generated/animation/keyframe_double_base.dart index 1bcaaee..cb53cc6 100644 --- a/lib/src/generated/animation/keyframe_double_base.dart +++ b/lib/src/generated/animation/keyframe_double_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/keyframe_double_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/keyframe.dart'; abstract class KeyFrameDoubleBase extends KeyFrame { diff --git a/lib/src/generated/animation/keyframe_id_base.dart b/lib/src/generated/animation/keyframe_id_base.dart index d050593..34ca9d0 100644 --- a/lib/src/generated/animation/keyframe_id_base.dart +++ b/lib/src/generated/animation/keyframe_id_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/keyframe_id_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/keyframe.dart'; abstract class KeyFrameIdBase extends KeyFrame { diff --git a/lib/src/generated/animation/keyframe_string_base.dart b/lib/src/generated/animation/keyframe_string_base.dart index 5283095..0886da3 100644 --- a/lib/src/generated/animation/keyframe_string_base.dart +++ b/lib/src/generated/animation/keyframe_string_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/keyframe_string_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/keyframe.dart'; abstract class KeyFrameStringBase extends KeyFrame { diff --git a/lib/src/generated/animation/layer_state_base.dart b/lib/src/generated/animation/layer_state_base.dart index 2016666..43e9abf 100644 --- a/lib/src/generated/animation/layer_state_base.dart +++ b/lib/src/generated/animation/layer_state_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/layer_state_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/state_machine_layer_component.dart'; abstract class LayerStateBase extends StateMachineLayerComponent { diff --git a/lib/src/generated/animation/linear_animation_base.dart b/lib/src/generated/animation/linear_animation_base.dart index dfe3939..9b5a021 100644 --- a/lib/src/generated/animation/linear_animation_base.dart +++ b/lib/src/generated/animation/linear_animation_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/linear_animation_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/animation.dart'; abstract class LinearAnimationBase extends Animation { diff --git a/lib/src/generated/animation/listener_align_target_base.dart b/lib/src/generated/animation/listener_align_target_base.dart index a7ac31f..5243d13 100644 --- a/lib/src/generated/animation/listener_align_target_base.dart +++ b/lib/src/generated/animation/listener_align_target_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/listener_align_target_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/listener_action.dart'; abstract class ListenerAlignTargetBase extends ListenerAction { diff --git a/lib/src/generated/animation/listener_input_change_base.dart b/lib/src/generated/animation/listener_input_change_base.dart index e252595..82a7b20 100644 --- a/lib/src/generated/animation/listener_input_change_base.dart +++ b/lib/src/generated/animation/listener_input_change_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/listener_input_change_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/listener_action.dart'; abstract class ListenerInputChangeBase extends ListenerAction { diff --git a/lib/src/generated/animation/nested_bool_base.dart b/lib/src/generated/animation/nested_bool_base.dart index 3abbdf6..2ba132d 100644 --- a/lib/src/generated/animation/nested_bool_base.dart +++ b/lib/src/generated/animation/nested_bool_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/nested_bool_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/rive_core/animation/nested_input.dart'; diff --git a/lib/src/generated/animation/nested_input_base.dart b/lib/src/generated/animation/nested_input_base.dart index b520ad6..3b594c5 100644 --- a/lib/src/generated/animation/nested_input_base.dart +++ b/lib/src/generated/animation/nested_input_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/nested_input_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class NestedInputBase extends Component { diff --git a/lib/src/generated/animation/nested_number_base.dart b/lib/src/generated/animation/nested_number_base.dart index 5289472..72d77bd 100644 --- a/lib/src/generated/animation/nested_number_base.dart +++ b/lib/src/generated/animation/nested_number_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/nested_number_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/rive_core/animation/nested_input.dart'; diff --git a/lib/src/generated/animation/nested_remap_animation_base.dart b/lib/src/generated/animation/nested_remap_animation_base.dart index a7e6836..bde3809 100644 --- a/lib/src/generated/animation/nested_remap_animation_base.dart +++ b/lib/src/generated/animation/nested_remap_animation_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/nested_remap_animation_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/nested_animation_base.dart'; diff --git a/lib/src/generated/animation/nested_simple_animation_base.dart b/lib/src/generated/animation/nested_simple_animation_base.dart index f4853ee..9a187d8 100644 --- a/lib/src/generated/animation/nested_simple_animation_base.dart +++ b/lib/src/generated/animation/nested_simple_animation_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/nested_simple_animation_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/nested_animation_base.dart'; diff --git a/lib/src/generated/animation/nested_trigger_base.dart b/lib/src/generated/animation/nested_trigger_base.dart index b2a968f..c869389 100644 --- a/lib/src/generated/animation/nested_trigger_base.dart +++ b/lib/src/generated/animation/nested_trigger_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/nested_trigger_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/rive_core/animation/nested_input.dart'; diff --git a/lib/src/generated/animation/state_machine_base.dart b/lib/src/generated/animation/state_machine_base.dart index b608bb2..875e9e4 100644 --- a/lib/src/generated/animation/state_machine_base.dart +++ b/lib/src/generated/animation/state_machine_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/state_machine_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/animation.dart'; abstract class StateMachineBase extends Animation { diff --git a/lib/src/generated/animation/state_machine_input_base.dart b/lib/src/generated/animation/state_machine_input_base.dart index 1273c01..7d03997 100644 --- a/lib/src/generated/animation/state_machine_input_base.dart +++ b/lib/src/generated/animation/state_machine_input_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/state_machine_input_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/state_machine_component.dart'; abstract class StateMachineInputBase extends StateMachineComponent { diff --git a/lib/src/generated/animation/state_machine_layer_base.dart b/lib/src/generated/animation/state_machine_layer_base.dart index fa9108a..3727ecc 100644 --- a/lib/src/generated/animation/state_machine_layer_base.dart +++ b/lib/src/generated/animation/state_machine_layer_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/state_machine_layer_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/state_machine_component.dart'; abstract class StateMachineLayerBase extends StateMachineComponent { diff --git a/lib/src/generated/animation/state_machine_listener_base.dart b/lib/src/generated/animation/state_machine_listener_base.dart index 046bbdd..5306612 100644 --- a/lib/src/generated/animation/state_machine_listener_base.dart +++ b/lib/src/generated/animation/state_machine_listener_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/state_machine_listener_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/state_machine_component.dart'; abstract class StateMachineListenerBase extends StateMachineComponent { diff --git a/lib/src/generated/animation/state_transition_base.dart b/lib/src/generated/animation/state_transition_base.dart index 1526eb3..06dc7f3 100644 --- a/lib/src/generated/animation/state_transition_base.dart +++ b/lib/src/generated/animation/state_transition_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/state_transition_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/state_machine_layer_component.dart'; abstract class StateTransitionBase extends StateMachineLayerComponent { diff --git a/lib/src/generated/animation/transition_trigger_condition_base.dart b/lib/src/generated/animation/transition_trigger_condition_base.dart index fdce144..fbc9012 100644 --- a/lib/src/generated/animation/transition_trigger_condition_base.dart +++ b/lib/src/generated/animation/transition_trigger_condition_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/transition_trigger_condition_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/transition_condition.dart'; abstract class TransitionTriggerConditionBase extends TransitionCondition { diff --git a/lib/src/generated/animation/transition_value_condition_base.dart b/lib/src/generated/animation/transition_value_condition_base.dart index 12a36a0..f42da8e 100644 --- a/lib/src/generated/animation/transition_value_condition_base.dart +++ b/lib/src/generated/animation/transition_value_condition_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/animation/transition_value_condition_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/animation/transition_condition.dart'; abstract class TransitionValueConditionBase extends TransitionCondition { diff --git a/lib/src/generated/assets/file_asset_base.dart b/lib/src/generated/assets/file_asset_base.dart index efa369e..c10a767 100644 --- a/lib/src/generated/assets/file_asset_base.dart +++ b/lib/src/generated/assets/file_asset_base.dart @@ -1,3 +1,6 @@ +/// Core automatically generated lib/src/generated/assets/file_asset_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/assets/asset.dart'; abstract class FileAssetBase extends Asset { diff --git a/lib/src/generated/assets/folder_base.dart b/lib/src/generated/assets/folder_base.dart index ee62b75..83fff39 100644 --- a/lib/src/generated/assets/folder_base.dart +++ b/lib/src/generated/assets/folder_base.dart @@ -1,3 +1,6 @@ +/// Core automatically generated lib/src/generated/assets/folder_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/assets/asset.dart'; abstract class FolderBase extends Asset { diff --git a/lib/src/generated/bones/bone_base.dart b/lib/src/generated/bones/bone_base.dart index 9762418..8c38d17 100644 --- a/lib/src/generated/bones/bone_base.dart +++ b/lib/src/generated/bones/bone_base.dart @@ -1,3 +1,6 @@ +/// Core automatically generated lib/src/generated/bones/bone_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/transform_component_base.dart'; diff --git a/lib/src/generated/bones/cubic_weight_base.dart b/lib/src/generated/bones/cubic_weight_base.dart index 2e05682..6226b9f 100644 --- a/lib/src/generated/bones/cubic_weight_base.dart +++ b/lib/src/generated/bones/cubic_weight_base.dart @@ -1,3 +1,6 @@ +/// Core automatically generated lib/src/generated/bones/cubic_weight_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/rive_core/bones/weight.dart'; diff --git a/lib/src/generated/bones/root_bone_base.dart b/lib/src/generated/bones/root_bone_base.dart index cc8a889..ef19210 100644 --- a/lib/src/generated/bones/root_bone_base.dart +++ b/lib/src/generated/bones/root_bone_base.dart @@ -1,3 +1,6 @@ +/// Core automatically generated lib/src/generated/bones/root_bone_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/bones/skeletal_component_base.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; diff --git a/lib/src/generated/bones/tendon_base.dart b/lib/src/generated/bones/tendon_base.dart index a3ffe69..b4c9fa7 100644 --- a/lib/src/generated/bones/tendon_base.dart +++ b/lib/src/generated/bones/tendon_base.dart @@ -1,3 +1,6 @@ +/// Core automatically generated lib/src/generated/bones/tendon_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class TendonBase extends Component { diff --git a/lib/src/generated/bones/weight_base.dart b/lib/src/generated/bones/weight_base.dart index 5565704..5062df4 100644 --- a/lib/src/generated/bones/weight_base.dart +++ b/lib/src/generated/bones/weight_base.dart @@ -1,3 +1,6 @@ +/// Core automatically generated lib/src/generated/bones/weight_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class WeightBase extends Component { diff --git a/lib/src/generated/constraints/constraint_base.dart b/lib/src/generated/constraints/constraint_base.dart index bfce54e..3f9f250 100644 --- a/lib/src/generated/constraints/constraint_base.dart +++ b/lib/src/generated/constraints/constraint_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/constraints/constraint_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class ConstraintBase extends Component { diff --git a/lib/src/generated/container_component_base.dart b/lib/src/generated/container_component_base.dart index 12143f7..8148428 100644 --- a/lib/src/generated/container_component_base.dart +++ b/lib/src/generated/container_component_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/container_component_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class ContainerComponentBase extends Component { diff --git a/lib/src/generated/custom_property_boolean_base.dart b/lib/src/generated/custom_property_boolean_base.dart index c581ec4..adec65d 100644 --- a/lib/src/generated/custom_property_boolean_base.dart +++ b/lib/src/generated/custom_property_boolean_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/custom_property_boolean_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class CustomPropertyBooleanBase extends Component { diff --git a/lib/src/generated/custom_property_number_base.dart b/lib/src/generated/custom_property_number_base.dart index e18cc4c..d1cc2f2 100644 --- a/lib/src/generated/custom_property_number_base.dart +++ b/lib/src/generated/custom_property_number_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/custom_property_number_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class CustomPropertyNumberBase extends Component { diff --git a/lib/src/generated/custom_property_string_base.dart b/lib/src/generated/custom_property_string_base.dart index 602403e..e5821ac 100644 --- a/lib/src/generated/custom_property_string_base.dart +++ b/lib/src/generated/custom_property_string_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/custom_property_string_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class CustomPropertyStringBase extends Component { diff --git a/lib/src/generated/draw_target_base.dart b/lib/src/generated/draw_target_base.dart index e70f541..2f41150 100644 --- a/lib/src/generated/draw_target_base.dart +++ b/lib/src/generated/draw_target_base.dart @@ -1,3 +1,6 @@ +/// Core automatically generated lib/src/generated/draw_target_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class DrawTargetBase extends Component { diff --git a/lib/src/generated/joystick_base.dart b/lib/src/generated/joystick_base.dart index be63ae8..1f38edb 100644 --- a/lib/src/generated/joystick_base.dart +++ b/lib/src/generated/joystick_base.dart @@ -1,3 +1,6 @@ +/// Core automatically generated lib/src/generated/joystick_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class JoystickBase extends Component { diff --git a/lib/src/generated/rive_core_context.dart b/lib/src/generated/rive_core_context.dart index e4a4a9f..739021e 100644 --- a/lib/src/generated/rive_core_context.dart +++ b/lib/src/generated/rive_core_context.dart @@ -131,6 +131,7 @@ import 'package:rive/src/rive_core/text/text_modifier_group.dart'; import 'package:rive/src/rive_core/text/text_modifier_range.dart'; import 'package:rive/src/rive_core/text/text_style.dart'; import 'package:rive/src/rive_core/text/text_style_axis.dart'; +import 'package:rive/src/rive_core/text/text_style_feature.dart'; import 'package:rive/src/rive_core/text/text_value_run.dart'; import 'package:rive/src/rive_core/text/text_variation_modifier.dart'; @@ -312,6 +313,8 @@ class RiveCoreContext { return Tendon(); case TextModifierRangeBase.typeKey: return TextModifierRange(); + case TextStyleFeatureBase.typeKey: + return TextStyleFeature(); case TextVariationModifierBase.typeKey: return TextVariationModifier(); case TextModifierGroupBase.typeKey: @@ -1356,6 +1359,16 @@ class RiveCoreContext { object.offset = value; } break; + case TextStyleFeatureBase.tagPropertyKey: + if (object is TextStyleFeatureBase && value is int) { + object.tag = value; + } + break; + case TextStyleFeatureBase.featureValuePropertyKey: + if (object is TextStyleFeatureBase && value is int) { + object.featureValue = value; + } + break; case TextVariationModifierBase.axisTagPropertyKey: if (object is TextVariationModifierBase && value is int) { object.axisTag = value; @@ -1585,6 +1598,8 @@ class RiveCoreContext { case TextModifierRangeBase.unitsValuePropertyKey: case TextModifierRangeBase.typeValuePropertyKey: case TextModifierRangeBase.modeValuePropertyKey: + case TextStyleFeatureBase.tagPropertyKey: + case TextStyleFeatureBase.featureValuePropertyKey: case TextVariationModifierBase.axisTagPropertyKey: case TextModifierGroupBase.modifierFlagsPropertyKey: case TextStyleBase.fontAssetIdPropertyKey: @@ -1911,6 +1926,10 @@ class RiveCoreContext { return (object as TextModifierRangeBase).typeValue; case TextModifierRangeBase.modeValuePropertyKey: return (object as TextModifierRangeBase).modeValue; + case TextStyleFeatureBase.tagPropertyKey: + return (object as TextStyleFeatureBase).tag; + case TextStyleFeatureBase.featureValuePropertyKey: + return (object as TextStyleFeatureBase).featureValue; case TextVariationModifierBase.axisTagPropertyKey: return (object as TextVariationModifierBase).axisTag; case TextModifierGroupBase.modifierFlagsPropertyKey: @@ -2639,6 +2658,16 @@ class RiveCoreContext { object.modeValue = value; } break; + case TextStyleFeatureBase.tagPropertyKey: + if (object is TextStyleFeatureBase) { + object.tag = value; + } + break; + case TextStyleFeatureBase.featureValuePropertyKey: + if (object is TextStyleFeatureBase) { + object.featureValue = value; + } + break; case TextVariationModifierBase.axisTagPropertyKey: if (object is TextVariationModifierBase) { object.axisTag = value; diff --git a/lib/src/generated/shapes/clipping_shape_base.dart b/lib/src/generated/shapes/clipping_shape_base.dart index d3b3aad..d920c19 100644 --- a/lib/src/generated/shapes/clipping_shape_base.dart +++ b/lib/src/generated/shapes/clipping_shape_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/shapes/clipping_shape_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class ClippingShapeBase extends Component { diff --git a/lib/src/generated/shapes/mesh_base.dart b/lib/src/generated/shapes/mesh_base.dart index bb26abc..cd0fbd2 100644 --- a/lib/src/generated/shapes/mesh_base.dart +++ b/lib/src/generated/shapes/mesh_base.dart @@ -1,3 +1,6 @@ +/// Core automatically generated lib/src/generated/shapes/mesh_base.dart. +/// Do not modify manually. + import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/rive_core/container_component.dart'; diff --git a/lib/src/generated/shapes/paint/gradient_stop_base.dart b/lib/src/generated/shapes/paint/gradient_stop_base.dart index 7d4e8e3..87d72e6 100644 --- a/lib/src/generated/shapes/paint/gradient_stop_base.dart +++ b/lib/src/generated/shapes/paint/gradient_stop_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/shapes/paint/gradient_stop_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class GradientStopBase extends Component { diff --git a/lib/src/generated/shapes/paint/solid_color_base.dart b/lib/src/generated/shapes/paint/solid_color_base.dart index 174916c..c08d496 100644 --- a/lib/src/generated/shapes/paint/solid_color_base.dart +++ b/lib/src/generated/shapes/paint/solid_color_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/shapes/paint/solid_color_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class SolidColorBase extends Component { diff --git a/lib/src/generated/shapes/paint/trim_path_base.dart b/lib/src/generated/shapes/paint/trim_path_base.dart index 547e317..12ece02 100644 --- a/lib/src/generated/shapes/paint/trim_path_base.dart +++ b/lib/src/generated/shapes/paint/trim_path_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/shapes/paint/trim_path_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class TrimPathBase extends Component { diff --git a/lib/src/generated/text/text_modifier_base.dart b/lib/src/generated/text/text_modifier_base.dart index 479e25d..d541f77 100644 --- a/lib/src/generated/text/text_modifier_base.dart +++ b/lib/src/generated/text/text_modifier_base.dart @@ -1,3 +1,6 @@ +/// Core automatically generated lib/src/generated/text/text_modifier_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class TextModifierBase extends Component { diff --git a/lib/src/generated/text/text_style_axis_base.dart b/lib/src/generated/text/text_style_axis_base.dart index 0e45311..aa0d64c 100644 --- a/lib/src/generated/text/text_style_axis_base.dart +++ b/lib/src/generated/text/text_style_axis_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/text/text_style_axis_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class TextStyleAxisBase extends Component { diff --git a/lib/src/generated/text/text_style_feature_base.dart b/lib/src/generated/text/text_style_feature_base.dart new file mode 100644 index 0000000..5a9dc0a --- /dev/null +++ b/lib/src/generated/text/text_style_feature_base.dart @@ -0,0 +1,66 @@ +/// Core automatically generated +/// lib/src/generated/text/text_style_feature_base.dart. +/// Do not modify manually. + +import 'package:rive/src/rive_core/component.dart'; + +abstract class TextStyleFeatureBase extends Component { + static const int typeKey = 164; + @override + int get coreType => TextStyleFeatureBase.typeKey; + @override + Set get coreTypes => + {TextStyleFeatureBase.typeKey, ComponentBase.typeKey}; + + /// -------------------------------------------------------------------------- + /// Tag field with key 356. + static const int tagInitialValue = 0; + int _tag = tagInitialValue; + static const int tagPropertyKey = 356; + int get tag => _tag; + + /// Change the [_tag] field value. + /// [tagChanged] will be invoked only if the field's value has changed. + set tag(int value) { + if (_tag == value) { + return; + } + int from = _tag; + _tag = value; + if (hasValidated) { + tagChanged(from, value); + } + } + + void tagChanged(int from, int to); + + /// -------------------------------------------------------------------------- + /// FeatureValue field with key 357. + static const int featureValueInitialValue = 1; + int _featureValue = featureValueInitialValue; + static const int featureValuePropertyKey = 357; + int get featureValue => _featureValue; + + /// Change the [_featureValue] field value. + /// [featureValueChanged] will be invoked only if the field's value has + /// changed. + set featureValue(int value) { + if (_featureValue == value) { + return; + } + int from = _featureValue; + _featureValue = value; + if (hasValidated) { + featureValueChanged(from, value); + } + } + + void featureValueChanged(int from, int to); + + @override + void copy(covariant TextStyleFeatureBase source) { + super.copy(source); + _tag = source._tag; + _featureValue = source._featureValue; + } +} diff --git a/lib/src/generated/text/text_value_run_base.dart b/lib/src/generated/text/text_value_run_base.dart index 168d50b..8bfe758 100644 --- a/lib/src/generated/text/text_value_run_base.dart +++ b/lib/src/generated/text/text_value_run_base.dart @@ -1,3 +1,7 @@ +/// Core automatically generated +/// lib/src/generated/text/text_value_run_base.dart. +/// Do not modify manually. + import 'package:rive/src/rive_core/component.dart'; abstract class TextValueRunBase extends Component { diff --git a/lib/src/rive_core/artboard.dart b/lib/src/rive_core/artboard.dart index 88788c7..7e46b77 100644 --- a/lib/src/rive_core/artboard.dart +++ b/lib/src/rive_core/artboard.dart @@ -22,11 +22,6 @@ import 'package:rive_common/utilities.dart'; export 'package:rive/src/generated/artboard_base.dart'; -class DrawFlags { - static const int foreground = 1 << 0; - static const int background = 1 << 1; -} - class Artboard extends ArtboardBase with ShapePaintContainer { bool _frameOrigin = true; @@ -358,9 +353,8 @@ class Artboard extends ArtboardBase with ShapePaintContainer { /// Draw the drawable components in this artboard. void draw( - Canvas canvas, [ - int flags = DrawFlags.foreground | DrawFlags.background, - ]) { + Canvas canvas, + ) { canvas.save(); if (clip) { if (_frameOrigin) { @@ -383,22 +377,21 @@ class Artboard extends ArtboardBase with ShapePaintContainer { if (_frameOrigin) { canvas.translate(width * originX, height * originY); } - if (flags & (DrawFlags.background) != 0) { - for (final fill in fills) { - fill.draw(canvas, path); - } - } - if (flags & (DrawFlags.foreground) != 0) { - for (var drawable = _firstDrawable; - drawable != null; - drawable = drawable.prev) { - if (drawable.isHidden || drawable.renderOpacity == 0) { - continue; - } - drawable.draw(canvas); - } + for (final fill in fills) { + fill.draw(canvas, path); } + + for (var drawable = _firstDrawable; + drawable != null; + drawable = drawable.prev) { + if (drawable.isHidden || drawable.renderOpacity == 0) { + continue; + } + + drawable.draw(canvas); + } + canvas.restore(); } diff --git a/lib/src/rive_core/backboard.dart b/lib/src/rive_core/backboard.dart index 6a1f567..671bfb2 100644 --- a/lib/src/rive_core/backboard.dart +++ b/lib/src/rive_core/backboard.dart @@ -4,15 +4,6 @@ import 'package:rive/src/rive_core/assets/asset.dart'; export 'package:rive/src/generated/backboard_base.dart'; -class AssetPanelState { - static const int collapseImages = 1 << 0; - static const int collapselottie = 1 << 1; - static const int collapseFonts = 1 << 2; - static const int sortImages = 1 << 3; - static const int sortLottie = 1 << 4; - static const int sortFonts = 1 << 5; -} - class Backboard extends BackboardBase { static final Backboard unknown = Backboard(); diff --git a/lib/src/rive_core/text/text.dart b/lib/src/rive_core/text/text.dart index ec52ea3..419f7cb 100644 --- a/lib/src/rive_core/text/text.dart +++ b/lib/src/rive_core/text/text.dart @@ -439,7 +439,6 @@ class Text extends TextBase with TextStyleContainer { ); _unicharCount = styled.value.length; _cleanupShapes.add(_shape!); - _lines = _shape?.breakLines(sizing == TextSizing.autoWidth ? -1 : width, align); @@ -532,4 +531,7 @@ class Text extends TextBase with TextStyleContainer { markShapeDirty(); } } + + @override + String toString() => 'Text(id: $id, text: $text)'; } diff --git a/lib/src/rive_core/text/text_modifier_group.dart b/lib/src/rive_core/text/text_modifier_group.dart index 94593df..e893b92 100644 --- a/lib/src/rive_core/text/text_modifier_group.dart +++ b/lib/src/rive_core/text/text_modifier_group.dart @@ -1,12 +1,13 @@ import 'dart:collection'; -import 'dart:typed_data'; +import 'package:flutter/foundation.dart'; import 'package:rive/src/generated/text/text_modifier_group_base.dart'; import 'package:rive/src/rive_core/component_dirt.dart'; import 'package:rive/src/rive_core/text/text.dart'; import 'package:rive/src/rive_core/text/text_modifier.dart'; import 'package:rive/src/rive_core/text/text_modifier_range.dart'; import 'package:rive/src/rive_core/text/text_shape_modifier.dart'; +import 'package:rive/src/rive_core/text/text_variation_modifier.dart'; import 'package:rive_common/math.dart'; import 'package:rive_common/rive_text.dart'; @@ -76,12 +77,16 @@ class TextModifierGroup extends TextModifierGroupBase { for (final range in _ranges) { range.clearRangeMap(); } + addDirt(ComponentDirt.textCoverage); } /// Coverage is ultimately always expressed per unicode codepoint. Float32List _coverage = Float32List(1); int _textSize = -1; + @visibleForTesting + Float32List get coverageValues => _coverage; + void computeRangeMap(String text, TextShapeResult? shape, BreakLinesResult? lines, GlyphLookup glyphLookup) { _textSize = text.length; @@ -137,6 +142,7 @@ class TextModifierGroup extends TextModifierGroupBase { if (font == null) { return run; } + HashMap axisVariations = run.userData is HashMap ? run.userData as HashMap : HashMap(); @@ -149,9 +155,10 @@ class TextModifierGroup extends TextModifierGroupBase { if (axisVariations.isNotEmpty) { var varFont = font.withOptions( - axisVariations.entries - .map((entry) => FontAxisCoord(entry.key, entry.value)), - []); + axisVariations.entries + .map((entry) => FontAxisCoord(entry.key, entry.value)), + [], + ); if (varFont != null) { _cleanupFonts.add(varFont); font = varFont; @@ -190,6 +197,10 @@ class TextModifierGroup extends TextModifierGroupBase { TextModifierFlags.modifyOrigin)) != 0; + bool modifiesAxes(int tag) => modifiers + .whereType() + .any((modifier) => modifier.axisTag == tag); + double computeOpacity(double current, double t) { if (opacityInverted) { return current * (1 - t) + opacity * t; diff --git a/lib/src/rive_core/text/text_modifier_range.dart b/lib/src/rive_core/text/text_modifier_range.dart index 52c0e21..b4888c1 100644 --- a/lib/src/rive_core/text/text_modifier_range.dart +++ b/lib/src/rive_core/text/text_modifier_range.dart @@ -143,8 +143,7 @@ class TextModifierRange extends TextModifierRangeBase { _computeRangeMappedCoverage(coverage, _rangeMapper!); } - // void _computeCharacterCoverage(Float32List coverage, TextShapeResult shape) - // { + // void _computeCharacterCoverage(Float32List coverage, TextShapeResult shape) { // var length = coverage.length; // _indexFrom = length * offsetModifyFrom; // _indexTo = length * offsetModifyTo; diff --git a/lib/src/rive_core/text/text_style.dart b/lib/src/rive_core/text/text_style.dart index b38677c..51cc451 100644 --- a/lib/src/rive_core/text/text_style.dart +++ b/lib/src/rive_core/text/text_style.dart @@ -12,6 +12,7 @@ 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/src/rive_core/text/text.dart'; import 'package:rive/src/rive_core/text/text_style_axis.dart'; +import 'package:rive/src/rive_core/text/text_style_feature.dart'; import 'package:rive/src/rive_core/text/text_value_run.dart'; import 'package:rive_common/math.dart'; import 'package:rive_common/rive_text.dart'; @@ -34,7 +35,7 @@ class TextVariationHelper extends Component { @override void update(int dirt) { _font?.dispose(); - _font = style._makeVariableFont(); + _font = style._makeFontVariation(); } void dispose() { @@ -57,7 +58,9 @@ class TextStyle extends TextStyleBase final Set _referencers = {}; Text? get text => parent as Text?; final Set _variations = {}; + final Set _features = {}; Iterable get variations => _variations; + Iterable get features => _features; Iterable get variableAxes => asset?.font?.axes ?? []; bool get hasVariableAxes => asset?.font?.axes.isNotEmpty ?? false; @@ -65,8 +68,22 @@ class TextStyle extends TextStyleBase TextVariationHelper? _variationHelper; TextVariationHelper? get variationHelper => _variationHelper; - Font? _makeVariableFont() => asset?.font?.withOptions( - _variations.map((axis) => FontAxisCoord(axis.tag, axis.axisValue)), []); + Iterable get fontFeatures => asset?.font?.features ?? []; + + Font? _makeFontVariation() => asset?.font?.withOptions( + _variations.map( + (axis) => FontAxisCoord( + axis.tag, + axis.axisValue, + ), + ), + _features.map( + (feature) => FontFeature( + feature.tag, + feature.featureValue, + ), + ), + ); Font? get font => _variationHelper?.font ?? asset?.font; @@ -99,7 +116,8 @@ class TextStyle extends TextStyleBase } @override - String toString() => '${super.toString()} -> FontSize($fontSize)'; + String toString() => 'TextStyle(id: $id, size: $fontSize' + ')'; @override void buildDependencies() { @@ -178,19 +196,33 @@ class TextStyle extends TextStyleBase _variationHelper ??= TextVariationHelper(this); addDirt(ComponentDirt.textShape); } + } else if (component is TextStyleFeature) { + if (_features.add(component)) { + _variationHelper ??= TextVariationHelper(this); + addDirt(ComponentDirt.textShape); + } } } @override void childRemoved(Component component) { super.childRemoved(component); + bool changed = false; if (component is TextStyleAxis) { if (_variations.remove(component)) { - addDirt(ComponentDirt.textShape); - if (_variations.isEmpty) { - _variationHelper?.dispose(); - _variationHelper = null; - } + changed = true; + } + } else if (component is TextStyleFeature) { + if (_features.remove(component)) { + changed = true; + } + } + + if (changed) { + addDirt(ComponentDirt.textShape); + if (_variations.isEmpty && _features.isEmpty) { + _variationHelper?.dispose(); + _variationHelper = null; } } } diff --git a/lib/src/rive_core/text/text_style_axis.dart b/lib/src/rive_core/text/text_style_axis.dart index f5a1ce3..9784e2b 100644 --- a/lib/src/rive_core/text/text_style_axis.dart +++ b/lib/src/rive_core/text/text_style_axis.dart @@ -1,14 +1,10 @@ import 'package:rive/src/generated/text/text_style_axis_base.dart'; import 'package:rive/src/rive_core/component_dirt.dart'; -import 'package:rive/src/rive_core/text/text_style.dart'; import 'package:rive_common/rive_text.dart'; export 'package:rive/src/generated/text/text_style_axis_base.dart'; class TextStyleAxis extends TextStyleAxisBase { - @override - bool validate() => super.validate() && parent is TextStyle; - String get tagName => FontTag.tagToName(tag); @override diff --git a/lib/src/rive_core/text/text_style_feature.dart b/lib/src/rive_core/text/text_style_feature.dart new file mode 100644 index 0000000..0db70eb --- /dev/null +++ b/lib/src/rive_core/text/text_style_feature.dart @@ -0,0 +1,20 @@ +import 'package:rive/src/generated/text/text_style_feature_base.dart'; +import 'package:rive/src/rive_core/component_dirt.dart'; +import 'package:rive_common/rive_text.dart'; + +export 'package:rive/src/generated/text/text_style_feature_base.dart'; + +class TextStyleFeature extends TextStyleFeatureBase { + String get tagName => FontTag.tagToName(tag); + + @override + void update(int dirt) {} + + @override + void featureValueChanged(int from, int to) { + parent?.addDirt(ComponentDirt.textShape); + } + + @override + void tagChanged(int from, int to) => parent?.addDirt(ComponentDirt.textShape); +} diff --git a/lib/src/rive_core/text/text_value_run.dart b/lib/src/rive_core/text/text_value_run.dart index f6f9eb0..41552ab 100644 --- a/lib/src/rive_core/text/text_value_run.dart +++ b/lib/src/rive_core/text/text_value_run.dart @@ -1,8 +1,9 @@ import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/text/text_value_run_base.dart'; +import 'package:rive/src/rive_core/container_component.dart'; import 'package:rive/src/rive_core/text/text.dart'; - import 'package:rive/src/rive_core/text/text_style.dart'; + export 'package:rive/src/generated/text/text_value_run_base.dart'; class TextValueRun extends TextValueRunBase {