mirror of
https://github.com/rive-app/rive-flutter.git
synced 2025-07-15 06:30:53 +08:00
Bumping to version 4 with first cut of bones.
This commit is contained in:
Binary file not shown.
41
lib/src/generated/bones/bone_base.dart
Normal file
41
lib/src/generated/bones/bone_base.dart
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
/// Core automatically generated lib/src/generated/bones/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';
|
||||||
|
import 'package:rive/src/generated/transform_component_base.dart';
|
||||||
|
import 'package:rive/src/rive_core/bones/skeletal_component.dart';
|
||||||
|
|
||||||
|
abstract class BoneBase extends SkeletalComponent {
|
||||||
|
static const int typeKey = 40;
|
||||||
|
@override
|
||||||
|
int get coreType => BoneBase.typeKey;
|
||||||
|
@override
|
||||||
|
Set<int> get coreTypes => {
|
||||||
|
BoneBase.typeKey,
|
||||||
|
SkeletalComponentBase.typeKey,
|
||||||
|
TransformComponentBase.typeKey,
|
||||||
|
ContainerComponentBase.typeKey,
|
||||||
|
ComponentBase.typeKey
|
||||||
|
};
|
||||||
|
|
||||||
|
/// --------------------------------------------------------------------------
|
||||||
|
/// Length field with key 89.
|
||||||
|
double _length = 0;
|
||||||
|
static const int lengthPropertyKey = 89;
|
||||||
|
double get length => _length;
|
||||||
|
|
||||||
|
/// Change the [_length] field value.
|
||||||
|
/// [lengthChanged] will be invoked only if the field's value has changed.
|
||||||
|
set length(double value) {
|
||||||
|
if (_length == value) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
double from = _length;
|
||||||
|
_length = value;
|
||||||
|
lengthChanged(from, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void lengthChanged(double from, double to);
|
||||||
|
}
|
66
lib/src/generated/bones/root_bone_base.dart
Normal file
66
lib/src/generated/bones/root_bone_base.dart
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
/// Core automatically generated lib/src/generated/bones/root_bone_base.dart.
|
||||||
|
/// Do not modify manually.
|
||||||
|
|
||||||
|
import 'package:rive/src/generated/bones/bone_base.dart';
|
||||||
|
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';
|
||||||
|
import 'package:rive/src/generated/transform_component_base.dart';
|
||||||
|
import 'package:rive/src/rive_core/bones/bone.dart';
|
||||||
|
|
||||||
|
abstract class RootBoneBase extends Bone {
|
||||||
|
static const int typeKey = 41;
|
||||||
|
@override
|
||||||
|
int get coreType => RootBoneBase.typeKey;
|
||||||
|
@override
|
||||||
|
Set<int> get coreTypes => {
|
||||||
|
RootBoneBase.typeKey,
|
||||||
|
BoneBase.typeKey,
|
||||||
|
SkeletalComponentBase.typeKey,
|
||||||
|
TransformComponentBase.typeKey,
|
||||||
|
ContainerComponentBase.typeKey,
|
||||||
|
ComponentBase.typeKey
|
||||||
|
};
|
||||||
|
|
||||||
|
/// --------------------------------------------------------------------------
|
||||||
|
/// X field with key 90.
|
||||||
|
double _x = 0;
|
||||||
|
static const int xPropertyKey = 90;
|
||||||
|
@override
|
||||||
|
double get x => _x;
|
||||||
|
|
||||||
|
/// Change the [_x] field value.
|
||||||
|
/// [xChanged] will be invoked only if the field's value has changed.
|
||||||
|
@override
|
||||||
|
set x(double value) {
|
||||||
|
if (_x == value) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
double from = _x;
|
||||||
|
_x = value;
|
||||||
|
xChanged(from, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void xChanged(double from, double to);
|
||||||
|
|
||||||
|
/// --------------------------------------------------------------------------
|
||||||
|
/// Y field with key 91.
|
||||||
|
double _y = 0;
|
||||||
|
static const int yPropertyKey = 91;
|
||||||
|
@override
|
||||||
|
double get y => _y;
|
||||||
|
|
||||||
|
/// Change the [_y] field value.
|
||||||
|
/// [yChanged] will be invoked only if the field's value has changed.
|
||||||
|
@override
|
||||||
|
set y(double value) {
|
||||||
|
if (_y == value) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
double from = _y;
|
||||||
|
_y = value;
|
||||||
|
yChanged(from, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void yChanged(double from, double to);
|
||||||
|
}
|
21
lib/src/generated/bones/skeletal_component_base.dart
Normal file
21
lib/src/generated/bones/skeletal_component_base.dart
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/// Core automatically generated
|
||||||
|
/// lib/src/generated/bones/skeletal_component_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';
|
||||||
|
import 'package:rive/src/rive_core/transform_component.dart';
|
||||||
|
|
||||||
|
abstract class SkeletalComponentBase extends TransformComponent {
|
||||||
|
static const int typeKey = 39;
|
||||||
|
@override
|
||||||
|
int get coreType => SkeletalComponentBase.typeKey;
|
||||||
|
@override
|
||||||
|
Set<int> get coreTypes => {
|
||||||
|
SkeletalComponentBase.typeKey,
|
||||||
|
TransformComponentBase.typeKey,
|
||||||
|
ContainerComponentBase.typeKey,
|
||||||
|
ComponentBase.typeKey
|
||||||
|
};
|
||||||
|
}
|
@ -4,6 +4,7 @@
|
|||||||
import 'package:rive/src/generated/component_base.dart';
|
import 'package:rive/src/generated/component_base.dart';
|
||||||
import 'package:rive/src/generated/container_component_base.dart';
|
import 'package:rive/src/generated/container_component_base.dart';
|
||||||
import 'package:rive/src/generated/node_base.dart';
|
import 'package:rive/src/generated/node_base.dart';
|
||||||
|
import 'package:rive/src/generated/transform_component_base.dart';
|
||||||
import 'package:rive/src/rive_core/node.dart';
|
import 'package:rive/src/rive_core/node.dart';
|
||||||
|
|
||||||
abstract class DrawableBase extends Node {
|
abstract class DrawableBase extends Node {
|
||||||
@ -14,6 +15,7 @@ abstract class DrawableBase extends Node {
|
|||||||
Set<int> get coreTypes => {
|
Set<int> get coreTypes => {
|
||||||
DrawableBase.typeKey,
|
DrawableBase.typeKey,
|
||||||
NodeBase.typeKey,
|
NodeBase.typeKey,
|
||||||
|
TransformComponentBase.typeKey,
|
||||||
ContainerComponentBase.typeKey,
|
ContainerComponentBase.typeKey,
|
||||||
ComponentBase.typeKey
|
ComponentBase.typeKey
|
||||||
};
|
};
|
||||||
|
@ -3,24 +3,31 @@
|
|||||||
|
|
||||||
import 'package:rive/src/generated/component_base.dart';
|
import 'package:rive/src/generated/component_base.dart';
|
||||||
import 'package:rive/src/generated/container_component_base.dart';
|
import 'package:rive/src/generated/container_component_base.dart';
|
||||||
import 'package:rive/src/rive_core/container_component.dart';
|
import 'package:rive/src/generated/transform_component_base.dart';
|
||||||
|
import 'package:rive/src/rive_core/transform_component.dart';
|
||||||
|
|
||||||
abstract class NodeBase extends ContainerComponent {
|
abstract class NodeBase extends TransformComponent {
|
||||||
static const int typeKey = 2;
|
static const int typeKey = 2;
|
||||||
@override
|
@override
|
||||||
int get coreType => NodeBase.typeKey;
|
int get coreType => NodeBase.typeKey;
|
||||||
@override
|
@override
|
||||||
Set<int> get coreTypes =>
|
Set<int> get coreTypes => {
|
||||||
{NodeBase.typeKey, ContainerComponentBase.typeKey, ComponentBase.typeKey};
|
NodeBase.typeKey,
|
||||||
|
TransformComponentBase.typeKey,
|
||||||
|
ContainerComponentBase.typeKey,
|
||||||
|
ComponentBase.typeKey
|
||||||
|
};
|
||||||
|
|
||||||
/// --------------------------------------------------------------------------
|
/// --------------------------------------------------------------------------
|
||||||
/// X field with key 13.
|
/// X field with key 13.
|
||||||
double _x = 0;
|
double _x = 0;
|
||||||
static const int xPropertyKey = 13;
|
static const int xPropertyKey = 13;
|
||||||
|
@override
|
||||||
double get x => _x;
|
double get x => _x;
|
||||||
|
|
||||||
/// Change the [_x] field value.
|
/// Change the [_x] field value.
|
||||||
/// [xChanged] will be invoked only if the field's value has changed.
|
/// [xChanged] will be invoked only if the field's value has changed.
|
||||||
|
@override
|
||||||
set x(double value) {
|
set x(double value) {
|
||||||
if (_x == value) {
|
if (_x == value) {
|
||||||
return;
|
return;
|
||||||
@ -36,10 +43,12 @@ abstract class NodeBase extends ContainerComponent {
|
|||||||
/// Y field with key 14.
|
/// Y field with key 14.
|
||||||
double _y = 0;
|
double _y = 0;
|
||||||
static const int yPropertyKey = 14;
|
static const int yPropertyKey = 14;
|
||||||
|
@override
|
||||||
double get y => _y;
|
double get y => _y;
|
||||||
|
|
||||||
/// Change the [_y] field value.
|
/// Change the [_y] field value.
|
||||||
/// [yChanged] will be invoked only if the field's value has changed.
|
/// [yChanged] will be invoked only if the field's value has changed.
|
||||||
|
@override
|
||||||
set y(double value) {
|
set y(double value) {
|
||||||
if (_y == value) {
|
if (_y == value) {
|
||||||
return;
|
return;
|
||||||
@ -50,80 +59,4 @@ abstract class NodeBase extends ContainerComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void yChanged(double from, double to);
|
void yChanged(double from, double to);
|
||||||
|
|
||||||
/// --------------------------------------------------------------------------
|
|
||||||
/// Rotation field with key 15.
|
|
||||||
double _rotation = 0;
|
|
||||||
static const int rotationPropertyKey = 15;
|
|
||||||
double get rotation => _rotation;
|
|
||||||
|
|
||||||
/// Change the [_rotation] field value.
|
|
||||||
/// [rotationChanged] will be invoked only if the field's value has changed.
|
|
||||||
set rotation(double value) {
|
|
||||||
if (_rotation == value) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
double from = _rotation;
|
|
||||||
_rotation = value;
|
|
||||||
rotationChanged(from, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
void rotationChanged(double from, double to);
|
|
||||||
|
|
||||||
/// --------------------------------------------------------------------------
|
|
||||||
/// ScaleX field with key 16.
|
|
||||||
double _scaleX = 1;
|
|
||||||
static const int scaleXPropertyKey = 16;
|
|
||||||
double get scaleX => _scaleX;
|
|
||||||
|
|
||||||
/// Change the [_scaleX] field value.
|
|
||||||
/// [scaleXChanged] will be invoked only if the field's value has changed.
|
|
||||||
set scaleX(double value) {
|
|
||||||
if (_scaleX == value) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
double from = _scaleX;
|
|
||||||
_scaleX = value;
|
|
||||||
scaleXChanged(from, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
void scaleXChanged(double from, double to);
|
|
||||||
|
|
||||||
/// --------------------------------------------------------------------------
|
|
||||||
/// ScaleY field with key 17.
|
|
||||||
double _scaleY = 1;
|
|
||||||
static const int scaleYPropertyKey = 17;
|
|
||||||
double get scaleY => _scaleY;
|
|
||||||
|
|
||||||
/// Change the [_scaleY] field value.
|
|
||||||
/// [scaleYChanged] will be invoked only if the field's value has changed.
|
|
||||||
set scaleY(double value) {
|
|
||||||
if (_scaleY == value) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
double from = _scaleY;
|
|
||||||
_scaleY = value;
|
|
||||||
scaleYChanged(from, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
void scaleYChanged(double from, double to);
|
|
||||||
|
|
||||||
/// --------------------------------------------------------------------------
|
|
||||||
/// Opacity field with key 18.
|
|
||||||
double _opacity = 1;
|
|
||||||
static const int opacityPropertyKey = 18;
|
|
||||||
double get opacity => _opacity;
|
|
||||||
|
|
||||||
/// Change the [_opacity] field value.
|
|
||||||
/// [opacityChanged] will be invoked only if the field's value has changed.
|
|
||||||
set opacity(double value) {
|
|
||||||
if (_opacity == value) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
double from = _opacity;
|
|
||||||
_opacity = value;
|
|
||||||
opacityChanged(from, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
void opacityChanged(double from, double to);
|
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,8 @@ import 'package:rive/src/generated/animation/keyframe_draw_order_value_base.dart
|
|||||||
import 'package:rive/src/generated/animation/linear_animation_base.dart';
|
import 'package:rive/src/generated/animation/linear_animation_base.dart';
|
||||||
import 'package:rive/src/generated/artboard_base.dart';
|
import 'package:rive/src/generated/artboard_base.dart';
|
||||||
import 'package:rive/src/generated/backboard_base.dart';
|
import 'package:rive/src/generated/backboard_base.dart';
|
||||||
|
import 'package:rive/src/generated/bones/bone_base.dart';
|
||||||
|
import 'package:rive/src/generated/bones/root_bone_base.dart';
|
||||||
import 'package:rive/src/generated/component_base.dart';
|
import 'package:rive/src/generated/component_base.dart';
|
||||||
import 'package:rive/src/generated/drawable_base.dart';
|
import 'package:rive/src/generated/drawable_base.dart';
|
||||||
import 'package:rive/src/generated/node_base.dart';
|
import 'package:rive/src/generated/node_base.dart';
|
||||||
@ -39,6 +41,7 @@ import 'package:rive/src/generated/shapes/rectangle_base.dart';
|
|||||||
import 'package:rive/src/generated/shapes/shape_base.dart';
|
import 'package:rive/src/generated/shapes/shape_base.dart';
|
||||||
import 'package:rive/src/generated/shapes/straight_vertex_base.dart';
|
import 'package:rive/src/generated/shapes/straight_vertex_base.dart';
|
||||||
import 'package:rive/src/generated/shapes/triangle_base.dart';
|
import 'package:rive/src/generated/shapes/triangle_base.dart';
|
||||||
|
import 'package:rive/src/generated/transform_component_base.dart';
|
||||||
import 'package:rive/src/rive_core/animation/animation.dart';
|
import 'package:rive/src/rive_core/animation/animation.dart';
|
||||||
import 'package:rive/src/rive_core/animation/cubic_interpolator.dart';
|
import 'package:rive/src/rive_core/animation/cubic_interpolator.dart';
|
||||||
import 'package:rive/src/rive_core/animation/keyed_object.dart';
|
import 'package:rive/src/rive_core/animation/keyed_object.dart';
|
||||||
@ -50,6 +53,8 @@ import 'package:rive/src/rive_core/animation/keyframe_draw_order_value.dart';
|
|||||||
import 'package:rive/src/rive_core/animation/linear_animation.dart';
|
import 'package:rive/src/rive_core/animation/linear_animation.dart';
|
||||||
import 'package:rive/src/rive_core/artboard.dart';
|
import 'package:rive/src/rive_core/artboard.dart';
|
||||||
import 'package:rive/src/rive_core/backboard.dart';
|
import 'package:rive/src/rive_core/backboard.dart';
|
||||||
|
import 'package:rive/src/rive_core/bones/bone.dart';
|
||||||
|
import 'package:rive/src/rive_core/bones/root_bone.dart';
|
||||||
import 'package:rive/src/rive_core/node.dart';
|
import 'package:rive/src/rive_core/node.dart';
|
||||||
import 'package:rive/src/rive_core/shapes/cubic_asymmetric_vertex.dart';
|
import 'package:rive/src/rive_core/shapes/cubic_asymmetric_vertex.dart';
|
||||||
import 'package:rive/src/rive_core/shapes/cubic_detached_vertex.dart';
|
import 'package:rive/src/rive_core/shapes/cubic_detached_vertex.dart';
|
||||||
@ -128,6 +133,10 @@ class RiveCoreContext {
|
|||||||
return Artboard();
|
return Artboard();
|
||||||
case BackboardBase.typeKey:
|
case BackboardBase.typeKey:
|
||||||
return Backboard();
|
return Backboard();
|
||||||
|
case BoneBase.typeKey:
|
||||||
|
return Bone();
|
||||||
|
case RootBoneBase.typeKey:
|
||||||
|
return RootBone();
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -324,6 +333,26 @@ class RiveCoreContext {
|
|||||||
object.fillRule = value;
|
object.fillRule = value;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case TransformComponentBase.rotationPropertyKey:
|
||||||
|
if (object is TransformComponentBase && value is double) {
|
||||||
|
object.rotation = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TransformComponentBase.scaleXPropertyKey:
|
||||||
|
if (object is TransformComponentBase && value is double) {
|
||||||
|
object.scaleX = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TransformComponentBase.scaleYPropertyKey:
|
||||||
|
if (object is TransformComponentBase && value is double) {
|
||||||
|
object.scaleY = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TransformComponentBase.opacityPropertyKey:
|
||||||
|
if (object is TransformComponentBase && value is double) {
|
||||||
|
object.opacity = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case NodeBase.xPropertyKey:
|
case NodeBase.xPropertyKey:
|
||||||
if (object is NodeBase && value is double) {
|
if (object is NodeBase && value is double) {
|
||||||
object.x = value;
|
object.x = value;
|
||||||
@ -334,26 +363,6 @@ class RiveCoreContext {
|
|||||||
object.y = value;
|
object.y = value;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NodeBase.rotationPropertyKey:
|
|
||||||
if (object is NodeBase && value is double) {
|
|
||||||
object.rotation = value;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case NodeBase.scaleXPropertyKey:
|
|
||||||
if (object is NodeBase && value is double) {
|
|
||||||
object.scaleX = value;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case NodeBase.scaleYPropertyKey:
|
|
||||||
if (object is NodeBase && value is double) {
|
|
||||||
object.scaleY = value;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case NodeBase.opacityPropertyKey:
|
|
||||||
if (object is NodeBase && value is double) {
|
|
||||||
object.opacity = value;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case DrawableBase.drawOrderPropertyKey:
|
case DrawableBase.drawOrderPropertyKey:
|
||||||
if (object is DrawableBase && value is int) {
|
if (object is DrawableBase && value is int) {
|
||||||
object.drawOrder = value;
|
object.drawOrder = value;
|
||||||
@ -474,6 +483,21 @@ class RiveCoreContext {
|
|||||||
object.originY = value;
|
object.originY = value;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case BoneBase.lengthPropertyKey:
|
||||||
|
if (object is BoneBase && value is double) {
|
||||||
|
object.length = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RootBoneBase.xPropertyKey:
|
||||||
|
if (object is RootBoneBase && value is double) {
|
||||||
|
object.x = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RootBoneBase.yPropertyKey:
|
||||||
|
if (object is RootBoneBase && value is double) {
|
||||||
|
object.y = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -519,12 +543,12 @@ class RiveCoreContext {
|
|||||||
case LinearGradientBase.opacityPropertyKey:
|
case LinearGradientBase.opacityPropertyKey:
|
||||||
case StrokeBase.thicknessPropertyKey:
|
case StrokeBase.thicknessPropertyKey:
|
||||||
case GradientStopBase.positionPropertyKey:
|
case GradientStopBase.positionPropertyKey:
|
||||||
|
case TransformComponentBase.rotationPropertyKey:
|
||||||
|
case TransformComponentBase.scaleXPropertyKey:
|
||||||
|
case TransformComponentBase.scaleYPropertyKey:
|
||||||
|
case TransformComponentBase.opacityPropertyKey:
|
||||||
case NodeBase.xPropertyKey:
|
case NodeBase.xPropertyKey:
|
||||||
case NodeBase.yPropertyKey:
|
case NodeBase.yPropertyKey:
|
||||||
case NodeBase.rotationPropertyKey:
|
|
||||||
case NodeBase.scaleXPropertyKey:
|
|
||||||
case NodeBase.scaleYPropertyKey:
|
|
||||||
case NodeBase.opacityPropertyKey:
|
|
||||||
case PathVertexBase.xPropertyKey:
|
case PathVertexBase.xPropertyKey:
|
||||||
case PathVertexBase.yPropertyKey:
|
case PathVertexBase.yPropertyKey:
|
||||||
case StraightVertexBase.radiusPropertyKey:
|
case StraightVertexBase.radiusPropertyKey:
|
||||||
@ -546,6 +570,9 @@ class RiveCoreContext {
|
|||||||
case ArtboardBase.yPropertyKey:
|
case ArtboardBase.yPropertyKey:
|
||||||
case ArtboardBase.originXPropertyKey:
|
case ArtboardBase.originXPropertyKey:
|
||||||
case ArtboardBase.originYPropertyKey:
|
case ArtboardBase.originYPropertyKey:
|
||||||
|
case BoneBase.lengthPropertyKey:
|
||||||
|
case RootBoneBase.xPropertyKey:
|
||||||
|
case RootBoneBase.yPropertyKey:
|
||||||
return doubleType;
|
return doubleType;
|
||||||
case KeyFrameColorBase.valuePropertyKey:
|
case KeyFrameColorBase.valuePropertyKey:
|
||||||
case SolidColorBase.colorValuePropertyKey:
|
case SolidColorBase.colorValuePropertyKey:
|
||||||
@ -641,18 +668,18 @@ class RiveCoreContext {
|
|||||||
return (object as StrokeBase).thickness;
|
return (object as StrokeBase).thickness;
|
||||||
case GradientStopBase.positionPropertyKey:
|
case GradientStopBase.positionPropertyKey:
|
||||||
return (object as GradientStopBase).position;
|
return (object as GradientStopBase).position;
|
||||||
|
case TransformComponentBase.rotationPropertyKey:
|
||||||
|
return (object as TransformComponentBase).rotation;
|
||||||
|
case TransformComponentBase.scaleXPropertyKey:
|
||||||
|
return (object as TransformComponentBase).scaleX;
|
||||||
|
case TransformComponentBase.scaleYPropertyKey:
|
||||||
|
return (object as TransformComponentBase).scaleY;
|
||||||
|
case TransformComponentBase.opacityPropertyKey:
|
||||||
|
return (object as TransformComponentBase).opacity;
|
||||||
case NodeBase.xPropertyKey:
|
case NodeBase.xPropertyKey:
|
||||||
return (object as NodeBase).x;
|
return (object as NodeBase).x;
|
||||||
case NodeBase.yPropertyKey:
|
case NodeBase.yPropertyKey:
|
||||||
return (object as NodeBase).y;
|
return (object as NodeBase).y;
|
||||||
case NodeBase.rotationPropertyKey:
|
|
||||||
return (object as NodeBase).rotation;
|
|
||||||
case NodeBase.scaleXPropertyKey:
|
|
||||||
return (object as NodeBase).scaleX;
|
|
||||||
case NodeBase.scaleYPropertyKey:
|
|
||||||
return (object as NodeBase).scaleY;
|
|
||||||
case NodeBase.opacityPropertyKey:
|
|
||||||
return (object as NodeBase).opacity;
|
|
||||||
case PathVertexBase.xPropertyKey:
|
case PathVertexBase.xPropertyKey:
|
||||||
return (object as PathVertexBase).x;
|
return (object as PathVertexBase).x;
|
||||||
case PathVertexBase.yPropertyKey:
|
case PathVertexBase.yPropertyKey:
|
||||||
@ -695,6 +722,12 @@ class RiveCoreContext {
|
|||||||
return (object as ArtboardBase).originX;
|
return (object as ArtboardBase).originX;
|
||||||
case ArtboardBase.originYPropertyKey:
|
case ArtboardBase.originYPropertyKey:
|
||||||
return (object as ArtboardBase).originY;
|
return (object as ArtboardBase).originY;
|
||||||
|
case BoneBase.lengthPropertyKey:
|
||||||
|
return (object as BoneBase).length;
|
||||||
|
case RootBoneBase.xPropertyKey:
|
||||||
|
return (object as RootBoneBase).x;
|
||||||
|
case RootBoneBase.yPropertyKey:
|
||||||
|
return (object as RootBoneBase).y;
|
||||||
}
|
}
|
||||||
return 0.0;
|
return 0.0;
|
||||||
}
|
}
|
||||||
@ -836,24 +869,24 @@ class RiveCoreContext {
|
|||||||
case GradientStopBase.positionPropertyKey:
|
case GradientStopBase.positionPropertyKey:
|
||||||
(object as GradientStopBase).position = value;
|
(object as GradientStopBase).position = value;
|
||||||
break;
|
break;
|
||||||
|
case TransformComponentBase.rotationPropertyKey:
|
||||||
|
(object as TransformComponentBase).rotation = value;
|
||||||
|
break;
|
||||||
|
case TransformComponentBase.scaleXPropertyKey:
|
||||||
|
(object as TransformComponentBase).scaleX = value;
|
||||||
|
break;
|
||||||
|
case TransformComponentBase.scaleYPropertyKey:
|
||||||
|
(object as TransformComponentBase).scaleY = value;
|
||||||
|
break;
|
||||||
|
case TransformComponentBase.opacityPropertyKey:
|
||||||
|
(object as TransformComponentBase).opacity = value;
|
||||||
|
break;
|
||||||
case NodeBase.xPropertyKey:
|
case NodeBase.xPropertyKey:
|
||||||
(object as NodeBase).x = value;
|
(object as NodeBase).x = value;
|
||||||
break;
|
break;
|
||||||
case NodeBase.yPropertyKey:
|
case NodeBase.yPropertyKey:
|
||||||
(object as NodeBase).y = value;
|
(object as NodeBase).y = value;
|
||||||
break;
|
break;
|
||||||
case NodeBase.rotationPropertyKey:
|
|
||||||
(object as NodeBase).rotation = value;
|
|
||||||
break;
|
|
||||||
case NodeBase.scaleXPropertyKey:
|
|
||||||
(object as NodeBase).scaleX = value;
|
|
||||||
break;
|
|
||||||
case NodeBase.scaleYPropertyKey:
|
|
||||||
(object as NodeBase).scaleY = value;
|
|
||||||
break;
|
|
||||||
case NodeBase.opacityPropertyKey:
|
|
||||||
(object as NodeBase).opacity = value;
|
|
||||||
break;
|
|
||||||
case PathVertexBase.xPropertyKey:
|
case PathVertexBase.xPropertyKey:
|
||||||
(object as PathVertexBase).x = value;
|
(object as PathVertexBase).x = value;
|
||||||
break;
|
break;
|
||||||
@ -917,6 +950,15 @@ class RiveCoreContext {
|
|||||||
case ArtboardBase.originYPropertyKey:
|
case ArtboardBase.originYPropertyKey:
|
||||||
(object as ArtboardBase).originY = value;
|
(object as ArtboardBase).originY = value;
|
||||||
break;
|
break;
|
||||||
|
case BoneBase.lengthPropertyKey:
|
||||||
|
(object as BoneBase).length = value;
|
||||||
|
break;
|
||||||
|
case RootBoneBase.xPropertyKey:
|
||||||
|
(object as RootBoneBase).x = value;
|
||||||
|
break;
|
||||||
|
case RootBoneBase.yPropertyKey:
|
||||||
|
(object as RootBoneBase).y = value;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import 'package:rive/src/generated/container_component_base.dart';
|
|||||||
import 'package:rive/src/generated/node_base.dart';
|
import 'package:rive/src/generated/node_base.dart';
|
||||||
import 'package:rive/src/generated/shapes/parametric_path_base.dart';
|
import 'package:rive/src/generated/shapes/parametric_path_base.dart';
|
||||||
import 'package:rive/src/generated/shapes/path_base.dart';
|
import 'package:rive/src/generated/shapes/path_base.dart';
|
||||||
|
import 'package:rive/src/generated/transform_component_base.dart';
|
||||||
import 'package:rive/src/rive_core/shapes/parametric_path.dart';
|
import 'package:rive/src/rive_core/shapes/parametric_path.dart';
|
||||||
|
|
||||||
abstract class EllipseBase extends ParametricPath {
|
abstract class EllipseBase extends ParametricPath {
|
||||||
@ -18,6 +19,7 @@ abstract class EllipseBase extends ParametricPath {
|
|||||||
ParametricPathBase.typeKey,
|
ParametricPathBase.typeKey,
|
||||||
PathBase.typeKey,
|
PathBase.typeKey,
|
||||||
NodeBase.typeKey,
|
NodeBase.typeKey,
|
||||||
|
TransformComponentBase.typeKey,
|
||||||
ContainerComponentBase.typeKey,
|
ContainerComponentBase.typeKey,
|
||||||
ComponentBase.typeKey
|
ComponentBase.typeKey
|
||||||
};
|
};
|
||||||
|
@ -6,6 +6,7 @@ import 'package:rive/src/generated/component_base.dart';
|
|||||||
import 'package:rive/src/generated/container_component_base.dart';
|
import 'package:rive/src/generated/container_component_base.dart';
|
||||||
import 'package:rive/src/generated/node_base.dart';
|
import 'package:rive/src/generated/node_base.dart';
|
||||||
import 'package:rive/src/generated/shapes/path_base.dart';
|
import 'package:rive/src/generated/shapes/path_base.dart';
|
||||||
|
import 'package:rive/src/generated/transform_component_base.dart';
|
||||||
import 'package:rive/src/rive_core/shapes/path.dart';
|
import 'package:rive/src/rive_core/shapes/path.dart';
|
||||||
|
|
||||||
abstract class ParametricPathBase extends Path {
|
abstract class ParametricPathBase extends Path {
|
||||||
@ -17,6 +18,7 @@ abstract class ParametricPathBase extends Path {
|
|||||||
ParametricPathBase.typeKey,
|
ParametricPathBase.typeKey,
|
||||||
PathBase.typeKey,
|
PathBase.typeKey,
|
||||||
NodeBase.typeKey,
|
NodeBase.typeKey,
|
||||||
|
TransformComponentBase.typeKey,
|
||||||
ContainerComponentBase.typeKey,
|
ContainerComponentBase.typeKey,
|
||||||
ComponentBase.typeKey
|
ComponentBase.typeKey
|
||||||
};
|
};
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
import 'package:rive/src/generated/component_base.dart';
|
import 'package:rive/src/generated/component_base.dart';
|
||||||
import 'package:rive/src/generated/container_component_base.dart';
|
import 'package:rive/src/generated/container_component_base.dart';
|
||||||
import 'package:rive/src/generated/node_base.dart';
|
import 'package:rive/src/generated/node_base.dart';
|
||||||
|
import 'package:rive/src/generated/transform_component_base.dart';
|
||||||
import 'package:rive/src/rive_core/node.dart';
|
import 'package:rive/src/rive_core/node.dart';
|
||||||
|
|
||||||
abstract class PathBase extends Node {
|
abstract class PathBase extends Node {
|
||||||
@ -14,6 +15,7 @@ abstract class PathBase extends Node {
|
|||||||
Set<int> get coreTypes => {
|
Set<int> get coreTypes => {
|
||||||
PathBase.typeKey,
|
PathBase.typeKey,
|
||||||
NodeBase.typeKey,
|
NodeBase.typeKey,
|
||||||
|
TransformComponentBase.typeKey,
|
||||||
ContainerComponentBase.typeKey,
|
ContainerComponentBase.typeKey,
|
||||||
ComponentBase.typeKey
|
ComponentBase.typeKey
|
||||||
};
|
};
|
||||||
|
@ -5,6 +5,7 @@ import 'package:rive/src/generated/component_base.dart';
|
|||||||
import 'package:rive/src/generated/container_component_base.dart';
|
import 'package:rive/src/generated/container_component_base.dart';
|
||||||
import 'package:rive/src/generated/node_base.dart';
|
import 'package:rive/src/generated/node_base.dart';
|
||||||
import 'package:rive/src/generated/shapes/path_base.dart';
|
import 'package:rive/src/generated/shapes/path_base.dart';
|
||||||
|
import 'package:rive/src/generated/transform_component_base.dart';
|
||||||
import 'package:rive/src/rive_core/shapes/path.dart';
|
import 'package:rive/src/rive_core/shapes/path.dart';
|
||||||
|
|
||||||
abstract class PointsPathBase extends Path {
|
abstract class PointsPathBase extends Path {
|
||||||
@ -16,6 +17,7 @@ abstract class PointsPathBase extends Path {
|
|||||||
PointsPathBase.typeKey,
|
PointsPathBase.typeKey,
|
||||||
PathBase.typeKey,
|
PathBase.typeKey,
|
||||||
NodeBase.typeKey,
|
NodeBase.typeKey,
|
||||||
|
TransformComponentBase.typeKey,
|
||||||
ContainerComponentBase.typeKey,
|
ContainerComponentBase.typeKey,
|
||||||
ComponentBase.typeKey
|
ComponentBase.typeKey
|
||||||
};
|
};
|
||||||
|
@ -6,6 +6,7 @@ import 'package:rive/src/generated/container_component_base.dart';
|
|||||||
import 'package:rive/src/generated/node_base.dart';
|
import 'package:rive/src/generated/node_base.dart';
|
||||||
import 'package:rive/src/generated/shapes/parametric_path_base.dart';
|
import 'package:rive/src/generated/shapes/parametric_path_base.dart';
|
||||||
import 'package:rive/src/generated/shapes/path_base.dart';
|
import 'package:rive/src/generated/shapes/path_base.dart';
|
||||||
|
import 'package:rive/src/generated/transform_component_base.dart';
|
||||||
import 'package:rive/src/rive_core/shapes/parametric_path.dart';
|
import 'package:rive/src/rive_core/shapes/parametric_path.dart';
|
||||||
|
|
||||||
abstract class RectangleBase extends ParametricPath {
|
abstract class RectangleBase extends ParametricPath {
|
||||||
@ -18,6 +19,7 @@ abstract class RectangleBase extends ParametricPath {
|
|||||||
ParametricPathBase.typeKey,
|
ParametricPathBase.typeKey,
|
||||||
PathBase.typeKey,
|
PathBase.typeKey,
|
||||||
NodeBase.typeKey,
|
NodeBase.typeKey,
|
||||||
|
TransformComponentBase.typeKey,
|
||||||
ContainerComponentBase.typeKey,
|
ContainerComponentBase.typeKey,
|
||||||
ComponentBase.typeKey
|
ComponentBase.typeKey
|
||||||
};
|
};
|
||||||
|
@ -5,6 +5,7 @@ import 'package:rive/src/generated/component_base.dart';
|
|||||||
import 'package:rive/src/generated/container_component_base.dart';
|
import 'package:rive/src/generated/container_component_base.dart';
|
||||||
import 'package:rive/src/generated/drawable_base.dart';
|
import 'package:rive/src/generated/drawable_base.dart';
|
||||||
import 'package:rive/src/generated/node_base.dart';
|
import 'package:rive/src/generated/node_base.dart';
|
||||||
|
import 'package:rive/src/generated/transform_component_base.dart';
|
||||||
import 'package:rive/src/rive_core/drawable.dart';
|
import 'package:rive/src/rive_core/drawable.dart';
|
||||||
|
|
||||||
abstract class ShapeBase extends Drawable {
|
abstract class ShapeBase extends Drawable {
|
||||||
@ -16,6 +17,7 @@ abstract class ShapeBase extends Drawable {
|
|||||||
ShapeBase.typeKey,
|
ShapeBase.typeKey,
|
||||||
DrawableBase.typeKey,
|
DrawableBase.typeKey,
|
||||||
NodeBase.typeKey,
|
NodeBase.typeKey,
|
||||||
|
TransformComponentBase.typeKey,
|
||||||
ContainerComponentBase.typeKey,
|
ContainerComponentBase.typeKey,
|
||||||
ComponentBase.typeKey
|
ComponentBase.typeKey
|
||||||
};
|
};
|
||||||
|
@ -6,6 +6,7 @@ import 'package:rive/src/generated/container_component_base.dart';
|
|||||||
import 'package:rive/src/generated/node_base.dart';
|
import 'package:rive/src/generated/node_base.dart';
|
||||||
import 'package:rive/src/generated/shapes/parametric_path_base.dart';
|
import 'package:rive/src/generated/shapes/parametric_path_base.dart';
|
||||||
import 'package:rive/src/generated/shapes/path_base.dart';
|
import 'package:rive/src/generated/shapes/path_base.dart';
|
||||||
|
import 'package:rive/src/generated/transform_component_base.dart';
|
||||||
import 'package:rive/src/rive_core/shapes/parametric_path.dart';
|
import 'package:rive/src/rive_core/shapes/parametric_path.dart';
|
||||||
|
|
||||||
abstract class TriangleBase extends ParametricPath {
|
abstract class TriangleBase extends ParametricPath {
|
||||||
@ -18,6 +19,7 @@ abstract class TriangleBase extends ParametricPath {
|
|||||||
ParametricPathBase.typeKey,
|
ParametricPathBase.typeKey,
|
||||||
PathBase.typeKey,
|
PathBase.typeKey,
|
||||||
NodeBase.typeKey,
|
NodeBase.typeKey,
|
||||||
|
TransformComponentBase.typeKey,
|
||||||
ContainerComponentBase.typeKey,
|
ContainerComponentBase.typeKey,
|
||||||
ComponentBase.typeKey
|
ComponentBase.typeKey
|
||||||
};
|
};
|
||||||
|
95
lib/src/generated/transform_component_base.dart
Normal file
95
lib/src/generated/transform_component_base.dart
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
/// Core automatically generated
|
||||||
|
/// lib/src/generated/transform_component_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';
|
||||||
|
|
||||||
|
abstract class TransformComponentBase extends ContainerComponent {
|
||||||
|
static const int typeKey = 38;
|
||||||
|
@override
|
||||||
|
int get coreType => TransformComponentBase.typeKey;
|
||||||
|
@override
|
||||||
|
Set<int> get coreTypes => {
|
||||||
|
TransformComponentBase.typeKey,
|
||||||
|
ContainerComponentBase.typeKey,
|
||||||
|
ComponentBase.typeKey
|
||||||
|
};
|
||||||
|
|
||||||
|
/// --------------------------------------------------------------------------
|
||||||
|
/// Rotation field with key 15.
|
||||||
|
double _rotation = 0;
|
||||||
|
static const int rotationPropertyKey = 15;
|
||||||
|
double get rotation => _rotation;
|
||||||
|
|
||||||
|
/// Change the [_rotation] field value.
|
||||||
|
/// [rotationChanged] will be invoked only if the field's value has changed.
|
||||||
|
set rotation(double value) {
|
||||||
|
if (_rotation == value) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
double from = _rotation;
|
||||||
|
_rotation = value;
|
||||||
|
rotationChanged(from, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rotationChanged(double from, double to);
|
||||||
|
|
||||||
|
/// --------------------------------------------------------------------------
|
||||||
|
/// ScaleX field with key 16.
|
||||||
|
double _scaleX = 1;
|
||||||
|
static const int scaleXPropertyKey = 16;
|
||||||
|
double get scaleX => _scaleX;
|
||||||
|
|
||||||
|
/// Change the [_scaleX] field value.
|
||||||
|
/// [scaleXChanged] will be invoked only if the field's value has changed.
|
||||||
|
set scaleX(double value) {
|
||||||
|
if (_scaleX == value) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
double from = _scaleX;
|
||||||
|
_scaleX = value;
|
||||||
|
scaleXChanged(from, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void scaleXChanged(double from, double to);
|
||||||
|
|
||||||
|
/// --------------------------------------------------------------------------
|
||||||
|
/// ScaleY field with key 17.
|
||||||
|
double _scaleY = 1;
|
||||||
|
static const int scaleYPropertyKey = 17;
|
||||||
|
double get scaleY => _scaleY;
|
||||||
|
|
||||||
|
/// Change the [_scaleY] field value.
|
||||||
|
/// [scaleYChanged] will be invoked only if the field's value has changed.
|
||||||
|
set scaleY(double value) {
|
||||||
|
if (_scaleY == value) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
double from = _scaleY;
|
||||||
|
_scaleY = value;
|
||||||
|
scaleYChanged(from, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void scaleYChanged(double from, double to);
|
||||||
|
|
||||||
|
/// --------------------------------------------------------------------------
|
||||||
|
/// Opacity field with key 18.
|
||||||
|
double _opacity = 1;
|
||||||
|
static const int opacityPropertyKey = 18;
|
||||||
|
double get opacity => _opacity;
|
||||||
|
|
||||||
|
/// Change the [_opacity] field value.
|
||||||
|
/// [opacityChanged] will be invoked only if the field's value has changed.
|
||||||
|
set opacity(double value) {
|
||||||
|
if (_opacity == value) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
double from = _opacity;
|
||||||
|
_opacity = value;
|
||||||
|
opacityChanged(from, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void opacityChanged(double from, double to);
|
||||||
|
}
|
49
lib/src/rive_core/bones/bone.dart
Normal file
49
lib/src/rive_core/bones/bone.dart
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
import 'package:rive/src/generated/bones/bone_base.dart';
|
||||||
|
export 'package:rive/src/generated/bones/bone_base.dart';
|
||||||
|
|
||||||
|
typedef bool BoneCallback(Bone bone);
|
||||||
|
|
||||||
|
class Bone extends BoneBase {
|
||||||
|
@override
|
||||||
|
void lengthChanged(double from, double to) {
|
||||||
|
for (final child in children) {
|
||||||
|
if (child.coreType == BoneBase.typeKey) {
|
||||||
|
(child as Bone).markTransformDirty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Bone get firstChildBone {
|
||||||
|
for (final child in children) {
|
||||||
|
if (child.coreType == BoneBase.typeKey) {
|
||||||
|
return child as Bone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool forEachBone(BoneCallback callback) {
|
||||||
|
for (final child in children) {
|
||||||
|
if (child.coreType == BoneBase.typeKey) {
|
||||||
|
if (!callback(child as Bone)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
double get x => (parent as Bone).length;
|
||||||
|
@override
|
||||||
|
set x(double value) {
|
||||||
|
throw UnsupportedError('not expected to set x on a bone.');
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
double get y => 0;
|
||||||
|
@override
|
||||||
|
set y(double value) {
|
||||||
|
throw UnsupportedError('not expected to set y on a bone.');
|
||||||
|
}
|
||||||
|
}
|
14
lib/src/rive_core/bones/root_bone.dart
Normal file
14
lib/src/rive_core/bones/root_bone.dart
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import 'package:rive/src/generated/bones/root_bone_base.dart';
|
||||||
|
export 'package:rive/src/generated/bones/root_bone_base.dart';
|
||||||
|
|
||||||
|
class RootBone extends RootBoneBase {
|
||||||
|
@override
|
||||||
|
void xChanged(double from, double to) {
|
||||||
|
markTransformDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void yChanged(double from, double to) {
|
||||||
|
markTransformDirty();
|
||||||
|
}
|
||||||
|
}
|
4
lib/src/rive_core/bones/skeletal_component.dart
Normal file
4
lib/src/rive_core/bones/skeletal_component.dart
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import 'package:rive/src/generated/bones/skeletal_component_base.dart';
|
||||||
|
export 'package:rive/src/generated/bones/skeletal_component_base.dart';
|
||||||
|
|
||||||
|
abstract class SkeletalComponent extends SkeletalComponentBase {}
|
@ -48,8 +48,13 @@ class AABB {
|
|||||||
var transformedPoint = transform == null
|
var transformedPoint = transform == null
|
||||||
? point
|
? point
|
||||||
: Vec2D.transformMat2D(Vec2D(), point, transform);
|
: Vec2D.transformMat2D(Vec2D(), point, transform);
|
||||||
var x = transformedPoint[0];
|
expandToPoint(transformedPoint);
|
||||||
var y = transformedPoint[1];
|
return transformedPoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
void expandToPoint(Vec2D point) {
|
||||||
|
var x = point[0];
|
||||||
|
var y = point[1];
|
||||||
if (x < _buffer[0]) {
|
if (x < _buffer[0]) {
|
||||||
_buffer[0] = x;
|
_buffer[0] = x;
|
||||||
}
|
}
|
||||||
@ -62,7 +67,6 @@ class AABB {
|
|||||||
if (y > _buffer[3]) {
|
if (y > _buffer[3]) {
|
||||||
_buffer[3] = y;
|
_buffer[3] = y;
|
||||||
}
|
}
|
||||||
return transformedPoint;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AABB.fromMinMax(Vec2D min, Vec2D max) {
|
AABB.fromMinMax(Vec2D min, Vec2D max) {
|
||||||
|
@ -1,98 +1,14 @@
|
|||||||
import 'package:flutter/foundation.dart';
|
|
||||||
import 'package:rive/src/rive_core/component_dirt.dart';
|
|
||||||
import 'package:rive/src/rive_core/container_component.dart';
|
|
||||||
import 'package:rive/src/rive_core/math/aabb.dart';
|
import 'package:rive/src/rive_core/math/aabb.dart';
|
||||||
import 'package:rive/src/rive_core/math/mat2d.dart';
|
|
||||||
import 'package:rive/src/rive_core/math/vec2d.dart';
|
import 'package:rive/src/rive_core/math/vec2d.dart';
|
||||||
import 'package:rive/src/generated/node_base.dart';
|
import 'package:rive/src/generated/node_base.dart';
|
||||||
import 'package:meta/meta.dart';
|
|
||||||
export 'package:rive/src/generated/node_base.dart';
|
export 'package:rive/src/generated/node_base.dart';
|
||||||
|
|
||||||
class Node extends NodeBase {
|
class Node extends NodeBase {
|
||||||
final Mat2D transform = Mat2D();
|
|
||||||
final Mat2D worldTransform = Mat2D();
|
|
||||||
double _renderOpacity = 0;
|
|
||||||
double get renderOpacity => _renderOpacity;
|
|
||||||
@override
|
|
||||||
void update(int dirt) {
|
|
||||||
if (dirt & ComponentDirt.transform != 0) {
|
|
||||||
updateTransform();
|
|
||||||
}
|
|
||||||
if (dirt & ComponentDirt.worldTransform != 0) {
|
|
||||||
updateWorldTransform();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Vec2D get translation => Vec2D.fromValues(x, y);
|
|
||||||
Vec2D get worldTranslation =>
|
|
||||||
Vec2D.fromValues(worldTransform[4], worldTransform[5]);
|
|
||||||
set translation(Vec2D pos) {
|
set translation(Vec2D pos) {
|
||||||
x = pos[0];
|
x = pos[0];
|
||||||
y = pos[1];
|
y = pos[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
Vec2D get scale => Vec2D.fromValues(scaleX, scaleY);
|
|
||||||
set scale(Vec2D value) {
|
|
||||||
scaleX = value[0];
|
|
||||||
scaleY = value[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
void updateTransform() {
|
|
||||||
if (rotation != 0) {
|
|
||||||
Mat2D.fromRotation(transform, rotation);
|
|
||||||
} else {
|
|
||||||
Mat2D.identity(transform);
|
|
||||||
}
|
|
||||||
transform[4] = x;
|
|
||||||
transform[5] = y;
|
|
||||||
Mat2D.scaleByValues(transform, scaleX, scaleY);
|
|
||||||
}
|
|
||||||
|
|
||||||
double get childOpacity => _renderOpacity;
|
|
||||||
@mustCallSuper
|
|
||||||
void updateWorldTransform() {
|
|
||||||
_renderOpacity = opacity;
|
|
||||||
if (parent is Node) {
|
|
||||||
var parentNode = parent as Node;
|
|
||||||
_renderOpacity *= parentNode.childOpacity;
|
|
||||||
Mat2D.multiply(worldTransform, parentNode.worldTransform, transform);
|
|
||||||
} else {
|
|
||||||
Mat2D.copy(worldTransform, transform);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void calculateWorldTransform() {
|
|
||||||
var parent = this.parent;
|
|
||||||
final chain = <Node>[this];
|
|
||||||
while (parent != null) {
|
|
||||||
if (parent is Node) {
|
|
||||||
chain.insert(0, parent);
|
|
||||||
}
|
|
||||||
parent = parent.parent;
|
|
||||||
}
|
|
||||||
for (final item in chain) {
|
|
||||||
item.updateTransform();
|
|
||||||
item.updateWorldTransform();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void buildDependencies() {
|
|
||||||
super.buildDependencies();
|
|
||||||
parent?.addDependent(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
void markTransformDirty() {
|
|
||||||
if (!addDirt(ComponentDirt.transform)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
markWorldTransformDirty();
|
|
||||||
}
|
|
||||||
|
|
||||||
void markWorldTransformDirty() {
|
|
||||||
addDirt(ComponentDirt.worldTransform, recurse: true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void xChanged(double from, double to) {
|
void xChanged(double from, double to) {
|
||||||
markTransformDirty();
|
markTransformDirty();
|
||||||
@ -103,31 +19,5 @@ class Node extends NodeBase {
|
|||||||
markTransformDirty();
|
markTransformDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
void rotationChanged(double from, double to) {
|
|
||||||
markTransformDirty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void scaleXChanged(double from, double to) {
|
|
||||||
markTransformDirty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void scaleYChanged(double from, double to) {
|
|
||||||
markTransformDirty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void opacityChanged(double from, double to) {
|
|
||||||
markTransformDirty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void parentChanged(ContainerComponent from, ContainerComponent to) {
|
|
||||||
super.parentChanged(from, to);
|
|
||||||
markWorldTransformDirty();
|
|
||||||
}
|
|
||||||
|
|
||||||
AABB get localBounds => AABB.fromValues(x, y, x, y);
|
AABB get localBounds => AABB.fromValues(x, y, x, y);
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ import 'package:rive/src/utilities/binary_buffer/binary_reader.dart';
|
|||||||
import 'exceptions/rive_format_error_exception.dart';
|
import 'exceptions/rive_format_error_exception.dart';
|
||||||
|
|
||||||
class RuntimeHeader {
|
class RuntimeHeader {
|
||||||
static const int majorVersion = 3;
|
static const int majorVersion = 4;
|
||||||
static const int minorVersion = 0;
|
static const int minorVersion = 0;
|
||||||
static const String fingerprint = 'RIVE';
|
static const String fingerprint = 'RIVE';
|
||||||
final int ownerId;
|
final int ownerId;
|
||||||
|
118
lib/src/rive_core/transform_component.dart
Normal file
118
lib/src/rive_core/transform_component.dart
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
import 'package:flutter/foundation.dart';
|
||||||
|
import 'package:rive/src/rive_core/component_dirt.dart';
|
||||||
|
import 'package:rive/src/rive_core/container_component.dart';
|
||||||
|
import 'package:rive/src/rive_core/math/mat2d.dart';
|
||||||
|
import 'package:rive/src/rive_core/math/vec2d.dart';
|
||||||
|
import 'package:rive/src/generated/transform_component_base.dart';
|
||||||
|
export 'package:rive/src/generated/transform_component_base.dart';
|
||||||
|
|
||||||
|
abstract class TransformComponent extends TransformComponentBase {
|
||||||
|
double _renderOpacity = 0;
|
||||||
|
double get renderOpacity => _renderOpacity;
|
||||||
|
final Mat2D worldTransform = Mat2D();
|
||||||
|
final Mat2D transform = Mat2D();
|
||||||
|
Vec2D get translation => Vec2D.fromValues(x, y);
|
||||||
|
Vec2D get worldTranslation =>
|
||||||
|
Vec2D.fromValues(worldTransform[4], worldTransform[5]);
|
||||||
|
double get x;
|
||||||
|
double get y;
|
||||||
|
set x(double value);
|
||||||
|
set y(double value);
|
||||||
|
@override
|
||||||
|
void update(int dirt) {
|
||||||
|
if (dirt & ComponentDirt.transform != 0) {
|
||||||
|
updateTransform();
|
||||||
|
}
|
||||||
|
if (dirt & ComponentDirt.worldTransform != 0) {
|
||||||
|
updateWorldTransform();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateTransform() {
|
||||||
|
if (rotation != 0) {
|
||||||
|
Mat2D.fromRotation(transform, rotation);
|
||||||
|
} else {
|
||||||
|
Mat2D.identity(transform);
|
||||||
|
}
|
||||||
|
transform[4] = x;
|
||||||
|
transform[5] = y;
|
||||||
|
Mat2D.scaleByValues(transform, scaleX, scaleY);
|
||||||
|
}
|
||||||
|
|
||||||
|
double get childOpacity => _renderOpacity;
|
||||||
|
Vec2D get scale => Vec2D.fromValues(scaleX, scaleY);
|
||||||
|
set scale(Vec2D value) {
|
||||||
|
scaleX = value[0];
|
||||||
|
scaleY = value[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
@mustCallSuper
|
||||||
|
void updateWorldTransform() {
|
||||||
|
_renderOpacity = opacity;
|
||||||
|
if (parent is TransformComponent) {
|
||||||
|
var parentNode = parent as TransformComponent;
|
||||||
|
_renderOpacity *= parentNode.childOpacity;
|
||||||
|
Mat2D.multiply(worldTransform, parentNode.worldTransform, transform);
|
||||||
|
} else {
|
||||||
|
Mat2D.copy(worldTransform, transform);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void calculateWorldTransform() {
|
||||||
|
var parent = this.parent;
|
||||||
|
final chain = <TransformComponent>[this];
|
||||||
|
while (parent != null) {
|
||||||
|
if (parent is TransformComponent) {
|
||||||
|
chain.insert(0, parent);
|
||||||
|
}
|
||||||
|
parent = parent.parent;
|
||||||
|
}
|
||||||
|
for (final item in chain) {
|
||||||
|
item.updateTransform();
|
||||||
|
item.updateWorldTransform();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void buildDependencies() {
|
||||||
|
super.buildDependencies();
|
||||||
|
parent?.addDependent(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void markTransformDirty() {
|
||||||
|
if (!addDirt(ComponentDirt.transform)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
markWorldTransformDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
void markWorldTransformDirty() {
|
||||||
|
addDirt(ComponentDirt.worldTransform, recurse: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void rotationChanged(double from, double to) {
|
||||||
|
markTransformDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void scaleXChanged(double from, double to) {
|
||||||
|
markTransformDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void scaleYChanged(double from, double to) {
|
||||||
|
markTransformDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void opacityChanged(double from, double to) {
|
||||||
|
markTransformDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void parentChanged(ContainerComponent from, ContainerComponent to) {
|
||||||
|
super.parentChanged(from, to);
|
||||||
|
markWorldTransformDirty();
|
||||||
|
}
|
||||||
|
}
|
@ -6,8 +6,12 @@ var _utf8Decoder = const Utf8Decoder();
|
|||||||
class BinaryReader {
|
class BinaryReader {
|
||||||
final ByteData buffer;
|
final ByteData buffer;
|
||||||
final Endian endian;
|
final Endian endian;
|
||||||
int _readIndex = 0;
|
|
||||||
int get position => _readIndex;
|
/// TODO: remove setter for readIndex when we remove _readVarInt from
|
||||||
|
/// core_double_type.dart
|
||||||
|
int readIndex = 0;
|
||||||
|
|
||||||
|
int get position => readIndex;
|
||||||
|
|
||||||
BinaryReader(this.buffer, {this.endian = Endian.little});
|
BinaryReader(this.buffer, {this.endian = Endian.little});
|
||||||
|
|
||||||
@ -15,65 +19,65 @@ class BinaryReader {
|
|||||||
: buffer =
|
: buffer =
|
||||||
ByteData.view(list.buffer, list.offsetInBytes, list.lengthInBytes);
|
ByteData.view(list.buffer, list.offsetInBytes, list.lengthInBytes);
|
||||||
|
|
||||||
bool get isEOF => _readIndex >= buffer.lengthInBytes;
|
bool get isEOF => readIndex >= buffer.lengthInBytes;
|
||||||
|
|
||||||
double readFloat32() {
|
double readFloat32() {
|
||||||
double value = buffer.getFloat32(_readIndex, endian);
|
double value = buffer.getFloat32(readIndex, endian);
|
||||||
_readIndex += 4;
|
readIndex += 4;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
double readFloat64() {
|
double readFloat64() {
|
||||||
double value = buffer.getFloat64(_readIndex, endian);
|
double value = buffer.getFloat64(readIndex, endian);
|
||||||
_readIndex += 8;
|
readIndex += 8;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
int readInt8() {
|
int readInt8() {
|
||||||
int value = buffer.getInt8(_readIndex);
|
int value = buffer.getInt8(readIndex);
|
||||||
_readIndex += 1;
|
readIndex += 1;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
int readUint8() {
|
int readUint8() {
|
||||||
int value = buffer.getUint8(_readIndex);
|
int value = buffer.getUint8(readIndex);
|
||||||
_readIndex += 1;
|
readIndex += 1;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
int readInt16() {
|
int readInt16() {
|
||||||
int value = buffer.getInt16(_readIndex, endian);
|
int value = buffer.getInt16(readIndex, endian);
|
||||||
_readIndex += 2;
|
readIndex += 2;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
int readUint16() {
|
int readUint16() {
|
||||||
int value = buffer.getUint16(_readIndex, endian);
|
int value = buffer.getUint16(readIndex, endian);
|
||||||
_readIndex += 2;
|
readIndex += 2;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
int readInt32() {
|
int readInt32() {
|
||||||
int value = buffer.getInt32(_readIndex, endian);
|
int value = buffer.getInt32(readIndex, endian);
|
||||||
_readIndex += 4;
|
readIndex += 4;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
int readUint32() {
|
int readUint32() {
|
||||||
int value = buffer.getUint32(_readIndex, endian);
|
int value = buffer.getUint32(readIndex, endian);
|
||||||
_readIndex += 4;
|
readIndex += 4;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
int readInt64() {
|
int readInt64() {
|
||||||
int value = buffer.getInt64(_readIndex, endian);
|
int value = buffer.getInt64(readIndex, endian);
|
||||||
_readIndex += 8;
|
readIndex += 8;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
int readUint64() {
|
int readUint64() {
|
||||||
int value = buffer.getUint64(_readIndex, endian);
|
int value = buffer.getUint64(readIndex, endian);
|
||||||
_readIndex += 8;
|
readIndex += 8;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,7 +87,7 @@ class BinaryReader {
|
|||||||
int result = 0;
|
int result = 0;
|
||||||
int shift = 0;
|
int shift = 0;
|
||||||
while (true) {
|
while (true) {
|
||||||
int byte = buffer.getUint8(_readIndex++) & 0xff;
|
int byte = buffer.getUint8(readIndex++) & 0xff;
|
||||||
result |= (byte & 0x7f) << shift;
|
result |= (byte & 0x7f) << shift;
|
||||||
if ((byte & 0x80) == 0) break;
|
if ((byte & 0x80) == 0) break;
|
||||||
shift += 7;
|
shift += 7;
|
||||||
@ -97,15 +101,15 @@ class BinaryReader {
|
|||||||
String readString({bool explicitLength = true}) {
|
String readString({bool explicitLength = true}) {
|
||||||
int length = explicitLength ? readVarUint() : buffer.lengthInBytes;
|
int length = explicitLength ? readVarUint() : buffer.lengthInBytes;
|
||||||
String value = _utf8Decoder.convert(Uint8List.view(
|
String value = _utf8Decoder.convert(Uint8List.view(
|
||||||
buffer.buffer, buffer.offsetInBytes + _readIndex, length));
|
buffer.buffer, buffer.offsetInBytes + readIndex, length));
|
||||||
_readIndex += length;
|
readIndex += length;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Uint8List read(int length, [bool allocNew = false]) {
|
Uint8List read(int length, [bool allocNew = false]) {
|
||||||
var view = Uint8List.view(
|
var view =
|
||||||
buffer.buffer, buffer.offsetInBytes + _readIndex, length);
|
Uint8List.view(buffer.buffer, buffer.offsetInBytes + readIndex, length);
|
||||||
_readIndex += length;
|
readIndex += length;
|
||||||
return allocNew ? Uint8List.fromList(view) : view;
|
return allocNew ? Uint8List.fromList(view) : view;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,3 +17,12 @@ Set<T> tops<T extends Parentable<T>>(Iterable<T> parentables) {
|
|||||||
}
|
}
|
||||||
return tips;
|
return tips;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isChildOf<T extends Parentable<T>>(T child, Iterable<T> parents) {
|
||||||
|
for (var parent = child; parent != null; parent = parent.parent) {
|
||||||
|
if (parents.contains(parent)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user