Prepping for publish 0.6.6.

This commit is contained in:
Luigi Rosso
2021-01-18 17:01:00 -08:00
parent ad068f24f3
commit a152b940bf
8 changed files with 31 additions and 53 deletions

View File

@ -1,6 +1,8 @@
## [0.6.6] - Not yet released ## [0.6.6] - 2021-01-18 16:40:10
- Adds getters for start/endTime and reset() in LinearAnimationInstance - Adds getters for start/endTime and reset() in LinearAnimationInstance
- Fixes an issue with artboard background gradients when rendering with non-default origin values.
- Fixes an issue with trim paths across open paths.
## [0.6.5] - 2020-12-22 16:49:39 ## [0.6.5] - 2020-12-22 16:49:39

View File

@ -26,10 +26,6 @@
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
33D1A10422148B71006C7A3E /* FlutterMacOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */; };
33D1A10522148B93006C7A3E /* FlutterMacOS.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
D73912F022F37F9E000D13A0 /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D73912EF22F37F9E000D13A0 /* App.framework */; };
D73912F222F3801D000D13A0 /* App.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = D73912EF22F37F9E000D13A0 /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
@ -49,8 +45,6 @@
dstPath = ""; dstPath = "";
dstSubfolderSpec = 10; dstSubfolderSpec = 10;
files = ( files = (
D73912F222F3801D000D13A0 /* App.framework in Bundle Framework */,
33D1A10522148B93006C7A3E /* FlutterMacOS.framework in Bundle Framework */,
); );
name = "Bundle Framework"; name = "Bundle Framework";
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -69,13 +63,11 @@
33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = "<group>"; }; 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = "<group>"; };
33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = "<group>"; }; 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = "<group>"; };
33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = "<group>"; }; 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = "<group>"; };
33D1A10322148B71006C7A3E /* FlutterMacOS.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FlutterMacOS.framework; path = Flutter/ephemeral/FlutterMacOS.framework; sourceTree = SOURCE_ROOT; };
33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; }; 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
D73912EF22F37F9E000D13A0 /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/ephemeral/App.framework; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@ -83,8 +75,6 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
D73912F022F37F9E000D13A0 /* App.framework in Frameworks */,
33D1A10422148B71006C7A3E /* FlutterMacOS.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -138,8 +128,6 @@
33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */,
33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */,
33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */,
D73912EF22F37F9E000D13A0 /* App.framework */,
33D1A10322148B71006C7A3E /* FlutterMacOS.framework */,
); );
path = Flutter; path = Flutter;
sourceTree = "<group>"; sourceTree = "<group>";
@ -260,7 +248,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename\n"; shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
}; };
33CC111E2044C6BF0003C045 /* ShellScript */ = { 33CC111E2044C6BF0003C045 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;

View File

@ -93,10 +93,7 @@ class KeyedProperty extends KeyedPropertyBase<RuntimeArtboard>
int get numFrames => _keyframes.length; int get numFrames => _keyframes.length;
KeyFrame getFrameAt(int index) => _keyframes[index]; KeyFrame getFrameAt(int index) => _keyframes[index];
void apply(double seconds, double mix, Core object) { int closestFrameIndex(double seconds) {
if (_keyframes.isEmpty) {
return;
}
int idx = 0; int idx = 0;
int mid = 0; int mid = 0;
double closestSeconds = 0; double closestSeconds = 0;
@ -115,6 +112,14 @@ class KeyedProperty extends KeyedPropertyBase<RuntimeArtboard>
} }
idx = start; idx = start;
} }
return idx;
}
void apply(double seconds, double mix, Core object) {
if (_keyframes.isEmpty) {
return;
}
int idx = closestFrameIndex(seconds);
int pk = propertyKey; int pk = propertyKey;
if (idx == 0) { if (idx == 0) {
var first = _keyframes[0]; var first = _keyframes[0];

View File

@ -3,16 +3,12 @@ import 'package:rive/src/rive_core/animation/loop.dart';
class LinearAnimationInstance { class LinearAnimationInstance {
final LinearAnimation animation; final LinearAnimation animation;
double _time; double _time = 0;
int _direction = 1; int _direction = 1;
LinearAnimationInstance(this.animation) LinearAnimationInstance(this.animation)
: assert(animation != null), : _time =
_time =
(animation.enableWorkArea ? animation.workStart : 0).toDouble() / (animation.enableWorkArea ? animation.workStart : 0).toDouble() /
animation.fps; animation.fps;
/// Note that when time is set, the direction will be changed to 1
set time(double value) { set time(double value) {
if (_time == value) { if (_time == value) {
return; return;
@ -21,30 +17,17 @@ class LinearAnimationInstance {
_direction = 1; _direction = 1;
} }
/// Returns the current time position of the animation in seconds
double get time => _time; double get time => _time;
/// Direction should only be +1 or -1
set direction(int value) => _direction = value == -1 ? -1 : 1; set direction(int value) => _direction = value == -1 ? -1 : 1;
/// Returns the animation's play direction: 1 for forwards, -1 for backwards
int get direction => _direction; int get direction => _direction;
/// Returns the end time of the animation in seconds
double get endTime => double get endTime =>
(animation.enableWorkArea ? animation.workEnd : animation.duration) (animation.enableWorkArea ? animation.workEnd : animation.duration)
.toDouble() / .toDouble() /
animation.fps; animation.fps;
/// Returns the start time of the animation in seconds
double get startTime => double get startTime =>
(animation.enableWorkArea ? animation.workStart : 0).toDouble() / (animation.enableWorkArea ? animation.workStart : 0).toDouble() /
animation.fps; animation.fps;
/// Resets the animation to the starting frame
void reset() => _time = startTime; void reset() => _time = startTime;
/// Advances the animation by the time provided
bool advance(double elapsedSeconds) { bool advance(double elapsedSeconds) {
_time += elapsedSeconds * animation.speed * _direction; _time += elapsedSeconds * animation.speed * _direction;
double frames = _time * animation.fps; double frames = _time * animation.fps;

View File

@ -118,7 +118,8 @@ class Artboard extends ArtboardBase with ShapePaintContainer {
@override @override
void update(int dirt) { void update(int dirt) {
if (dirt & ComponentDirt.worldTransform != 0) { if (dirt & ComponentDirt.worldTransform != 0) {
var rect = Rect.fromLTWH(0, 0, width, height); var rect = Rect.fromLTWH(
width * (-originX ?? 0), height * (-originY ?? 0), width, height);
path.reset(); path.reset();
path.addRect(rect); path.addRect(rect);
} }
@ -163,12 +164,12 @@ class Artboard extends ArtboardBase with ShapePaintContainer {
} }
void draw(Canvas canvas) { void draw(Canvas canvas) {
for (final fill in fills) {
fill.draw(canvas, path);
}
canvas.save(); canvas.save();
canvas.clipRect(Rect.fromLTWH(0, 0, width, height)); canvas.clipRect(Rect.fromLTWH(0, 0, width, height));
canvas.translate(width * (originX ?? 0), height * (originY ?? 0)); canvas.translate(width * (originX ?? 0), height * (originY ?? 0));
for (final fill in fills) {
fill.draw(canvas, path);
}
for (var drawable = _firstDrawable; for (var drawable = _firstDrawable;
drawable != null; drawable != null;
drawable = drawable.prev) { drawable = drawable.prev) {

View File

@ -26,7 +26,11 @@ _FirstExtractedPath _appendPathSegmentSequential(
first = _FirstExtractedPath(extracted, metric, extractLength); first = _FirstExtractedPath(extracted, metric, extractLength);
} else if (first.metric == metric) { } else if (first.metric == metric) {
first.length += extractLength; first.length += extractLength;
first.path.extendWithPath(extracted, Offset.zero); if (metric.isClosed) {
first.path.extendWithPath(extracted, Offset.zero);
} else {
result.addPath(extracted, Offset.zero);
}
} else { } else {
if (metric.isClosed && extractLength == metric.length) { if (metric.isClosed && extractLength == metric.length) {
extracted.close(); extracted.close();

View File

@ -41,6 +41,8 @@ class Shape extends ShapeBase with ShapePaintContainer {
void pathChanged(Path path) => _markComposerDirty(); void pathChanged(Path path) => _markComposerDirty();
void paintChanged() { void paintChanged() {
addDirt(ComponentDirt.path); addDirt(ComponentDirt.path);
_markBlendModeDirty();
_markRenderOpacityDirty();
for (final d in dependents) { for (final d in dependents) {
d.addDirt(ComponentDirt.worldTransform); d.addDirt(ComponentDirt.worldTransform);
} }
@ -155,21 +157,14 @@ class Shape extends ShapeBase with ShapePaintContainer {
} }
void _markBlendModeDirty() => addDirt(ComponentDirt.blendMode); void _markBlendModeDirty() => addDirt(ComponentDirt.blendMode);
void _markRenderOpacityDirty() => addDirt(ComponentDirt.worldTransform);
@override @override
void onPaintMutatorChanged(ShapePaintMutator mutator) { void onPaintMutatorChanged(ShapePaintMutator mutator) {
paintChanged(); paintChanged();
_markBlendModeDirty();
} }
@override @override
void onStrokesChanged() { void onStrokesChanged() => paintChanged();
paintChanged();
_markBlendModeDirty();
}
@override @override
void onFillsChanged() { void onFillsChanged() => paintChanged();
paintChanged();
_markBlendModeDirty();
}
} }

View File

@ -1,6 +1,6 @@
name: rive name: rive
description: Rive 2 Flutter Runtime. This package provides runtime functionality for playing back and interacting with animations built with the Rive editor available at https://rive.app. description: Rive 2 Flutter Runtime. This package provides runtime functionality for playing back and interacting with animations built with the Rive editor available at https://rive.app.
version: 0.6.5 version: 0.6.6
repository: https://github.com/rive-app/rive-flutter repository: https://github.com/rive-app/rive-flutter
homepage: https://rive.app homepage: https://rive.app