From 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 24 Apr 2019 10:14:38 -0700 Subject: [PATCH 01/59] Updating flare_dart dependency to dev branch of Flare-Flutter. --- flare_flutter/pubspec.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index cff35cc..30a749c 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -9,7 +9,10 @@ dependencies: flutter: sdk: flutter flare_dart: - path: ../flare_dart + git: + url: git://github.com/2d-inc/Flare-Flutter.git + ref: dev + path: flare_flutter dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From d8defc4c07571ce8287f26791cf38992fffaef75 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 24 Apr 2019 10:15:51 -0700 Subject: [PATCH 02/59] Fixing relative path for flare_dart. --- flare_flutter/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 30a749c..127f3ed 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -12,7 +12,7 @@ dependencies: git: url: git://github.com/2d-inc/Flare-Flutter.git ref: dev - path: flare_flutter + path: flare_dart dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From 56cea07339c72f7abb7dbc8354c4982157805035 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Mon, 8 Jul 2019 21:15:07 -0700 Subject: [PATCH 03/59] Updating stable to latest flare_flutter from dev. --- README.md | 2 +- flare_dart/CHANGELOG.md | 9 +++++++++ flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 14 ++++++++++++++ flare_flutter/pubspec.yaml | 8 ++------ 5 files changed, 27 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index cb17e04..277e671 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ This repository has three primary branches: - This is the branch we publish to pub from. - This branch and the associated pub packages are guaranteed to work on the flutter stable channel. ``` - flare_flutter: ^1.5.0 + flare_flutter: ^1.5.4 ``` - dev - This branch has the latest changes should work with the flutter dev channel. diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index e49bf90..861898f 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,12 @@ +## [1.4.3] - 2019-07-06 11:08:53 + + Some cleanup done while fixing issue #104 (using intrinsic artboard size as an option). + + ## [1.4.2] - 2019-06-20 16:30:37 + + Fixing issue with rounded rectangles not rendering correctly #107 +Shapes that are collapsed are not when building up the clip path.. + ## [1.4.1] - 2019-05-20 10:40:04 Adding an areEquals method to Mat2D. diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index c0299a2..887a8d5 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 1.4.1 +version: 1.4.3 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index ce67023..2b8952b 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,17 @@ +## [1.5.4] - 2019-07-08 21:10:50 + + - Using Uint16List for vertex indices now that Flutter Stable has been updated. + +## [1.5.3] - 2019-07-06 11:09:44 + + - Fixing an intialization error when a node has null children. + - FlareActor widget can now size itself via the sizeFromArtboard named parameter, based on feedback from issue #104. + + ## [1.5.2] - 2019-06-20 16:33:52 + + Using latest version of flare_dart which has fixes for rounded rectangles and clipping paths. + + ## [1.5.1] - 2019-05-20 10:38:30 Added missing call to setViewTransform for controllers. This is now done more efficiently as it is only called when the view transform changes. diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 6b8649c..68d2ae5 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.1 +version: 1.5.4 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: @@ -8,11 +8,7 @@ environment: dependencies: flutter: sdk: flutter - flare_dart: - git: - url: git://github.com/2d-inc/Flare-Flutter.git - ref: dev - path: flare_dart + flare_dart: ^1.4.3 dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From f24a688baf29916ae070404fe0c656c96e5c144e Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Mon, 8 Jul 2019 21:18:32 -0700 Subject: [PATCH 04/59] Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. --- README.md | 2 +- flare_dart/CHANGELOG.md | 9 +++++++++ flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 14 ++++++++++++++ flare_flutter/pubspec.yaml | 2 +- 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cb17e04..277e671 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ This repository has three primary branches: - This is the branch we publish to pub from. - This branch and the associated pub packages are guaranteed to work on the flutter stable channel. ``` - flare_flutter: ^1.5.0 + flare_flutter: ^1.5.4 ``` - dev - This branch has the latest changes should work with the flutter dev channel. diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index e49bf90..88b1440 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,12 @@ +## [1.4.3] - 2019-07-06 11:08:53 + + Some cleanup done while fixing issue #104 (using intrinsic artboard size as an option). + +## [1.4.2] - 2019-06-20 16:30:37 + +Fixing issue with rounded rectangles not rendering correctly #107 +Shapes that are collapsed are not when building up the clip path.. + ## [1.4.1] - 2019-05-20 10:40:04 Adding an areEquals method to Mat2D. diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index c0299a2..887a8d5 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 1.4.1 +version: 1.4.3 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index ce67023..19fe297 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,17 @@ +## [1.5.4] - 2019-07-08 21:10:50 + + - Using Uint16List for vertex indices now that Flutter Stable has been updated. + +## [1.5.3] - 2019-07-06 11:09:44 + + - Fixing an intialization error when a node has null children. + - FlareActor widget can now size itself via the sizeFromArtboard named parameter, based on feedback from issue #104. + +## [1.5.2] - 2019-06-20 16:33:52 + + Using latest version of flare_dart which has fixes for rounded rectangles and clipping paths. + + ## [1.5.1] - 2019-05-20 10:38:30 Added missing call to setViewTransform for controllers. This is now done more efficiently as it is only called when the view transform changes. diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 6b8649c..abe1fa0 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.1 +version: 1.5.4 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From 307d63f824042d61059edf1cec54b96789625d97 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Mon, 8 Jul 2019 21:20:38 -0700 Subject: [PATCH 05/59] Squashed commit of the following: commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. --- flare_dart/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 88b1440..deea0f1 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,6 +1,6 @@ ## [1.4.3] - 2019-07-06 11:08:53 - Some cleanup done while fixing issue #104 (using intrinsic artboard size as an option). +Some cleanup done while fixing issue #104 (using intrinsic artboard size as an option). ## [1.4.2] - 2019-06-20 16:30:37 From 629866a90ef0d2c02b77e349cc43dc2f24456756 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Tue, 16 Jul 2019 12:16:00 -0400 Subject: [PATCH 06/59] Squashed commit of the following: commit 307d63f824042d61059edf1cec54b96789625d97 Author: Luigi Rosso Date: Mon Jul 8 21:20:38 2019 -0700 Squashed commit of the following: commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. --- flare_dart/CHANGELOG.md | 6 +++--- flare_flutter/CHANGELOG.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 861898f..deea0f1 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,10 +1,10 @@ ## [1.4.3] - 2019-07-06 11:08:53 - Some cleanup done while fixing issue #104 (using intrinsic artboard size as an option). +Some cleanup done while fixing issue #104 (using intrinsic artboard size as an option). - ## [1.4.2] - 2019-06-20 16:30:37 +## [1.4.2] - 2019-06-20 16:30:37 - Fixing issue with rounded rectangles not rendering correctly #107 +Fixing issue with rounded rectangles not rendering correctly #107 Shapes that are collapsed are not when building up the clip path.. ## [1.4.1] - 2019-05-20 10:40:04 diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 2b8952b..19fe297 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -7,7 +7,7 @@ - Fixing an intialization error when a node has null children. - FlareActor widget can now size itself via the sizeFromArtboard named parameter, based on feedback from issue #104. - ## [1.5.2] - 2019-06-20 16:33:52 +## [1.5.2] - 2019-06-20 16:33:52 Using latest version of flare_dart which has fixes for rounded rectangles and clipping paths. From 92d9dcb9292b090ef11e394bf186e75fd9dcdcb5 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 24 Jul 2019 13:46:46 -0700 Subject: [PATCH 07/59] Squashed commit of the following: commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. --- flare_dart/CHANGELOG.md | 4 + flare_dart/lib/actor.dart | 4 + flare_flutter/CHANGELOG.md | 6 + flare_flutter/lib/flare_actor.dart | 141 +++++++++++++++++------- flare_flutter/lib/flare_render_box.dart | 4 +- 5 files changed, 115 insertions(+), 44 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index deea0f1..e3ff9ea 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.4.4] - 2019-07-24 11:43:51 + +Adding getArtboard method to Actor class. Allows finding artboards by name. + ## [1.4.3] - 2019-07-06 11:08:53 Some cleanup done while fixing issue #104 (using intrinsic artboard size as an option). diff --git a/flare_dart/lib/actor.dart b/flare_dart/lib/actor.dart index e854667..8d7acfd 100644 --- a/flare_dart/lib/actor.dart +++ b/flare_dart/lib/actor.dart @@ -22,6 +22,10 @@ abstract class Actor { Actor(); ActorArtboard get artboard => _artboards.isNotEmpty ? _artboards.first : null; + ActorArtboard getArtboard(String name) => name == null + ? artboard + : _artboards.firstWhere((artboard) => artboard?.name == name, + orElse: () => null); int get version { return _version; diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 19fe297..036497e 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,9 @@ +## [1.5.5] - 2019-07-24 11:44:36 + + - Adding artboard option to FlareActor. Use this to change which artboard gets displayed by the FlareActor widget. + - Fixed incorrect signature of load method. If you were deriving FlareRenderBox, you'll need to update it to match. It's a minor change from void to Future. + - Added some documentation to the FlareActor parameters. + ## [1.5.4] - 2019-07-08 21:10:50 - Using Uint16List for vertex indices now that Flutter Stable has been updated. diff --git a/flare_flutter/lib/flare_actor.dart b/flare_flutter/lib/flare_actor.dart index 818cb20..374804e 100644 --- a/flare_flutter/lib/flare_actor.dart +++ b/flare_flutter/lib/flare_actor.dart @@ -12,31 +12,67 @@ import 'flare_controller.dart'; typedef void FlareCompletedCallback(String name); class FlareActor extends LeafRenderObjectWidget { + /// Name of the Flare file to be loaded from the AssetBundle. final String filename; + + /// The name of the artboard to display. + final String artboard; + + /// The name of the animation to play. final String animation; + + /// When true, the animation will be applied at the end of its duration. final bool snapToEnd; + + /// The BoxFit strategy used to scale the Flare content into the + /// bounds of this widget. final BoxFit fit; + + /// The alignment that will be applied in conjuction to the [fit] to align + /// the Flare content within the bounds of this widget. final Alignment alignment; + + /// When true, animations do not advance. final bool isPaused; + + /// When true, the Flare content will be clipped against the bounds of this + /// widget. final bool shouldClip; + + /// The [FlareController] used to drive animations/mixing/procedural hierarchy + /// manipulation of the Flare contents. final FlareController controller; + + /// Callback invoked when [animation] has completed. If [animation] is looping + /// this callback is never invoked. final FlareCompletedCallback callback; + + /// The color to override any fills/strokes with. final Color color; + + /// The name of the node to use to determine the bounds of the content. + /// When null it will default to the bounds of the artboard. final String boundsNode; + + /// When true the intrinsic size of the artboard will be used as the + /// dimensions of this widget. final bool sizeFromArtboard; - const FlareActor(this.filename, - {this.boundsNode, - this.animation, - this.fit = BoxFit.contain, - this.alignment = Alignment.center, - this.isPaused = false, - this.snapToEnd = false, - this.controller, - this.callback, - this.color, - this.shouldClip = true, - this.sizeFromArtboard = false}); + const FlareActor( + this.filename, { + this.boundsNode, + this.animation, + this.fit = BoxFit.contain, + this.alignment = Alignment.center, + this.isPaused = false, + this.snapToEnd = false, + this.controller, + this.callback, + this.color, + this.shouldClip = true, + this.sizeFromArtboard = false, + this.artboard, + }); @override RenderObject createRenderObject(BuildContext context) { @@ -53,7 +89,8 @@ class FlareActor extends LeafRenderObjectWidget { ..color = color ..shouldClip = shouldClip ..boundsNodeName = boundsNode - ..useIntrinsicSize = sizeFromArtboard; + ..useIntrinsicSize = sizeFromArtboard + ..artboardName = artboard; } @override @@ -70,7 +107,8 @@ class FlareActor extends LeafRenderObjectWidget { ..color = color ..shouldClip = shouldClip ..boundsNodeName = boundsNode - ..useIntrinsicSize = sizeFromArtboard; + ..useIntrinsicSize = sizeFromArtboard + ..artboardName = artboard; } @override @@ -94,12 +132,24 @@ class FlareAnimationLayer { class FlareActorRenderObject extends FlareRenderBox { Mat2D _lastControllerViewTransform; String _filename; + String _artboardName; String _animationName; String _boundsNodeName; FlareController _controller; FlareCompletedCallback _completedCallback; bool snapToEnd = false; bool _isPaused = false; + FlutterActor _actor; + + String get artboardName => _artboardName; + set artboardName(String name) { + if (_artboardName == name) { + return; + } + _artboardName = name; + _instanceArtboard(); + } + bool get isPaused => _isPaused; set isPaused(bool value) { if (_isPaused == value) { @@ -213,38 +263,45 @@ class FlareActorRenderObject extends FlareRenderBox { load(); } + bool _instanceArtboard() { + if (_actor == null || _actor.artboard == null) { + return false; + } + FlutterActorArtboard artboard = _actor + .getArtboard(_artboardName) + .makeInstance() as FlutterActorArtboard; + artboard.initializeGraphics(); + _artboard = artboard; + intrinsicSize = Size(artboard.width, artboard.height); + _artboard.overrideColor = _color == null + ? null + : Float32List.fromList([ + _color.red / 255.0, + _color.green / 255.0, + _color.blue / 255.0, + _color.opacity + ]); + _artboard.advance(0.0); + updateBounds(); + + if (_controller != null) { + _controller.initialize(_artboard); + } + _updateAnimation(onlyWhenMissing: true); + markNeedsPaint(); + return true; + } + @override - void load() { + Future load() async { if (_filename == null) { return; } - super.load(); - loadFlare(_filename).then((FlutterActor actor) { - if (actor == null || actor.artboard == null) { - return; - } - FlutterActorArtboard artboard = - actor.artboard.makeInstance() as FlutterActorArtboard; - artboard.initializeGraphics(); - _artboard = artboard; - intrinsicSize = Size(artboard.width, artboard.height); - _artboard.overrideColor = _color == null - ? null - : Float32List.fromList([ - _color.red / 255.0, - _color.green / 255.0, - _color.blue / 255.0, - _color.opacity - ]); - _artboard.advance(0.0); - updateBounds(); - - if (_controller != null) { - _controller.initialize(_artboard); - } - _updateAnimation(onlyWhenMissing: true); - markNeedsPaint(); - }); + _actor = await loadFlare(_filename); + if (_actor == null || _actor.artboard == null) { + return; + } + _instanceArtboard(); } FlareCompletedCallback get completed => _completedCallback; diff --git a/flare_flutter/lib/flare_render_box.dart b/flare_flutter/lib/flare_render_box.dart index 9b5879f..46be707 100644 --- a/flare_flutter/lib/flare_render_box.dart +++ b/flare_flutter/lib/flare_render_box.dart @@ -236,7 +236,7 @@ abstract class FlareRenderBox extends RenderBox { bool _isLoading = false; bool get isLoading => _isLoading; - void _load() async { + Future _load() async { if (_isLoading) { return; } @@ -247,7 +247,7 @@ abstract class FlareRenderBox extends RenderBox { } /// Perform any loading logic necessary for this scene. - void load() async {} + Future load() async {} void _unload() { for (final FlareCacheAsset asset in _assets) { From 9c2bd8c37e2a6460a46986cbc4e1be898059de82 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 24 Jul 2019 13:48:13 -0700 Subject: [PATCH 08/59] Squashed commit of the following: commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. --- flare_dart/pubspec.yaml | 2 +- flare_flutter/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 887a8d5..e8f8cd5 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 1.4.3 +version: 1.4.4 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index abe1fa0..48ee0cd 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.4 +version: 1.5.5 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From b5e86e90bf7b0be156d947a320a0e8970b1b0233 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Thu, 25 Jul 2019 17:07:58 -0700 Subject: [PATCH 09/59] Squashed commit of the following: commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. --- flare_dart/CHANGELOG.md | 4 + flare_dart/lib/actor.dart | 4 + flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 6 + flare_flutter/lib/flare_actor.dart | 141 +++++++++++++++++------- flare_flutter/lib/flare_render_box.dart | 4 +- flare_flutter/pubspec.yaml | 4 +- 7 files changed, 118 insertions(+), 47 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index deea0f1..e3ff9ea 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.4.4] - 2019-07-24 11:43:51 + +Adding getArtboard method to Actor class. Allows finding artboards by name. + ## [1.4.3] - 2019-07-06 11:08:53 Some cleanup done while fixing issue #104 (using intrinsic artboard size as an option). diff --git a/flare_dart/lib/actor.dart b/flare_dart/lib/actor.dart index e854667..8d7acfd 100644 --- a/flare_dart/lib/actor.dart +++ b/flare_dart/lib/actor.dart @@ -22,6 +22,10 @@ abstract class Actor { Actor(); ActorArtboard get artboard => _artboards.isNotEmpty ? _artboards.first : null; + ActorArtboard getArtboard(String name) => name == null + ? artboard + : _artboards.firstWhere((artboard) => artboard?.name == name, + orElse: () => null); int get version { return _version; diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 887a8d5..e8f8cd5 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 1.4.3 +version: 1.4.4 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 19fe297..036497e 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,9 @@ +## [1.5.5] - 2019-07-24 11:44:36 + + - Adding artboard option to FlareActor. Use this to change which artboard gets displayed by the FlareActor widget. + - Fixed incorrect signature of load method. If you were deriving FlareRenderBox, you'll need to update it to match. It's a minor change from void to Future. + - Added some documentation to the FlareActor parameters. + ## [1.5.4] - 2019-07-08 21:10:50 - Using Uint16List for vertex indices now that Flutter Stable has been updated. diff --git a/flare_flutter/lib/flare_actor.dart b/flare_flutter/lib/flare_actor.dart index 818cb20..374804e 100644 --- a/flare_flutter/lib/flare_actor.dart +++ b/flare_flutter/lib/flare_actor.dart @@ -12,31 +12,67 @@ import 'flare_controller.dart'; typedef void FlareCompletedCallback(String name); class FlareActor extends LeafRenderObjectWidget { + /// Name of the Flare file to be loaded from the AssetBundle. final String filename; + + /// The name of the artboard to display. + final String artboard; + + /// The name of the animation to play. final String animation; + + /// When true, the animation will be applied at the end of its duration. final bool snapToEnd; + + /// The BoxFit strategy used to scale the Flare content into the + /// bounds of this widget. final BoxFit fit; + + /// The alignment that will be applied in conjuction to the [fit] to align + /// the Flare content within the bounds of this widget. final Alignment alignment; + + /// When true, animations do not advance. final bool isPaused; + + /// When true, the Flare content will be clipped against the bounds of this + /// widget. final bool shouldClip; + + /// The [FlareController] used to drive animations/mixing/procedural hierarchy + /// manipulation of the Flare contents. final FlareController controller; + + /// Callback invoked when [animation] has completed. If [animation] is looping + /// this callback is never invoked. final FlareCompletedCallback callback; + + /// The color to override any fills/strokes with. final Color color; + + /// The name of the node to use to determine the bounds of the content. + /// When null it will default to the bounds of the artboard. final String boundsNode; + + /// When true the intrinsic size of the artboard will be used as the + /// dimensions of this widget. final bool sizeFromArtboard; - const FlareActor(this.filename, - {this.boundsNode, - this.animation, - this.fit = BoxFit.contain, - this.alignment = Alignment.center, - this.isPaused = false, - this.snapToEnd = false, - this.controller, - this.callback, - this.color, - this.shouldClip = true, - this.sizeFromArtboard = false}); + const FlareActor( + this.filename, { + this.boundsNode, + this.animation, + this.fit = BoxFit.contain, + this.alignment = Alignment.center, + this.isPaused = false, + this.snapToEnd = false, + this.controller, + this.callback, + this.color, + this.shouldClip = true, + this.sizeFromArtboard = false, + this.artboard, + }); @override RenderObject createRenderObject(BuildContext context) { @@ -53,7 +89,8 @@ class FlareActor extends LeafRenderObjectWidget { ..color = color ..shouldClip = shouldClip ..boundsNodeName = boundsNode - ..useIntrinsicSize = sizeFromArtboard; + ..useIntrinsicSize = sizeFromArtboard + ..artboardName = artboard; } @override @@ -70,7 +107,8 @@ class FlareActor extends LeafRenderObjectWidget { ..color = color ..shouldClip = shouldClip ..boundsNodeName = boundsNode - ..useIntrinsicSize = sizeFromArtboard; + ..useIntrinsicSize = sizeFromArtboard + ..artboardName = artboard; } @override @@ -94,12 +132,24 @@ class FlareAnimationLayer { class FlareActorRenderObject extends FlareRenderBox { Mat2D _lastControllerViewTransform; String _filename; + String _artboardName; String _animationName; String _boundsNodeName; FlareController _controller; FlareCompletedCallback _completedCallback; bool snapToEnd = false; bool _isPaused = false; + FlutterActor _actor; + + String get artboardName => _artboardName; + set artboardName(String name) { + if (_artboardName == name) { + return; + } + _artboardName = name; + _instanceArtboard(); + } + bool get isPaused => _isPaused; set isPaused(bool value) { if (_isPaused == value) { @@ -213,38 +263,45 @@ class FlareActorRenderObject extends FlareRenderBox { load(); } + bool _instanceArtboard() { + if (_actor == null || _actor.artboard == null) { + return false; + } + FlutterActorArtboard artboard = _actor + .getArtboard(_artboardName) + .makeInstance() as FlutterActorArtboard; + artboard.initializeGraphics(); + _artboard = artboard; + intrinsicSize = Size(artboard.width, artboard.height); + _artboard.overrideColor = _color == null + ? null + : Float32List.fromList([ + _color.red / 255.0, + _color.green / 255.0, + _color.blue / 255.0, + _color.opacity + ]); + _artboard.advance(0.0); + updateBounds(); + + if (_controller != null) { + _controller.initialize(_artboard); + } + _updateAnimation(onlyWhenMissing: true); + markNeedsPaint(); + return true; + } + @override - void load() { + Future load() async { if (_filename == null) { return; } - super.load(); - loadFlare(_filename).then((FlutterActor actor) { - if (actor == null || actor.artboard == null) { - return; - } - FlutterActorArtboard artboard = - actor.artboard.makeInstance() as FlutterActorArtboard; - artboard.initializeGraphics(); - _artboard = artboard; - intrinsicSize = Size(artboard.width, artboard.height); - _artboard.overrideColor = _color == null - ? null - : Float32List.fromList([ - _color.red / 255.0, - _color.green / 255.0, - _color.blue / 255.0, - _color.opacity - ]); - _artboard.advance(0.0); - updateBounds(); - - if (_controller != null) { - _controller.initialize(_artboard); - } - _updateAnimation(onlyWhenMissing: true); - markNeedsPaint(); - }); + _actor = await loadFlare(_filename); + if (_actor == null || _actor.artboard == null) { + return; + } + _instanceArtboard(); } FlareCompletedCallback get completed => _completedCallback; diff --git a/flare_flutter/lib/flare_render_box.dart b/flare_flutter/lib/flare_render_box.dart index 9b5879f..46be707 100644 --- a/flare_flutter/lib/flare_render_box.dart +++ b/flare_flutter/lib/flare_render_box.dart @@ -236,7 +236,7 @@ abstract class FlareRenderBox extends RenderBox { bool _isLoading = false; bool get isLoading => _isLoading; - void _load() async { + Future _load() async { if (_isLoading) { return; } @@ -247,7 +247,7 @@ abstract class FlareRenderBox extends RenderBox { } /// Perform any loading logic necessary for this scene. - void load() async {} + Future load() async {} void _unload() { for (final FlareCacheAsset asset in _assets) { diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 68d2ae5..e22c578 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.4 +version: 1.5.5 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: @@ -8,7 +8,7 @@ environment: dependencies: flutter: sdk: flutter - flare_dart: ^1.4.3 + flare_dart: ^1.4.4 dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From 74f372fac61e2c8577a85ce5b98a80d443951abd Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Fri, 26 Jul 2019 08:53:54 -0700 Subject: [PATCH 10/59] Adding flutter environment requirement for #126 --- flare_flutter/pubspec.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index e22c578..59a3daf 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -5,6 +5,7 @@ author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: sdk: ">=2.1.0 <3.0.0" + flutter: ">=1.7.8+hotfix.3" dependencies: flutter: sdk: flutter From 998dc6f7c3efc8e7e3f8dbfa69ed77b92ed61465 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Fri, 23 Aug 2019 09:55:06 -0700 Subject: [PATCH 11/59] Squashed commit of the following: commit 894a97ccc6aa42f5bb7c113499f06d1aff901a18 Author: Luigi Rosso Date: Fri Aug 23 09:53:43 2019 -0700 Updating changelog and pubspec. commit ef7d75ca9440073eb2789c427877598dc756af06 Author: Umberto Sonnino Date: Thu Aug 22 19:04:04 2019 +0200 Few updates to conform with Dart style commit 4a0ce44c1463496af477e3f825b6c0819956c4f6 Author: Umberto Sonnino Date: Thu Aug 22 19:01:01 2019 +0200 Clamp paint opacity to ensure correct paint value commit 1543c33c39f26363b4317d2c22b24c323920bfb1 Author: Luigi Rosso Date: Sun Aug 4 13:38:04 2019 -0700 Adding a check for NaN numeric keyframe values. Mitigates #134. Still need to find out what Flare is exporting. commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. --- flare_dart/CHANGELOG.md | 4 + flare_dart/lib/actor.dart | 15 ++-- flare_dart/lib/actor_artboard.dart | 43 ++++++----- flare_dart/lib/actor_color.dart | 39 ++++++---- flare_dart/lib/actor_event.dart | 8 +- flare_dart/lib/animation/actor_animation.dart | 4 +- flare_dart/lib/animation/keyframe.dart | 4 + flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 4 + flare_flutter/lib/flare.dart | 76 +++++++++++-------- flare_flutter/pubspec.yaml | 2 +- 11 files changed, 125 insertions(+), 76 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index e3ff9ea..3d84d91 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.4.5] - 2019-08-23 09:51:30 + +Small changes to fix warnings caught by the Dart static analyzer. + ## [1.4.4] - 2019-07-24 11:43:51 Adding getArtboard method to Actor class. Allows finding artboards by name. diff --git a/flare_dart/lib/actor.dart b/flare_dart/lib/actor.dart index 8d7acfd..084817d 100644 --- a/flare_dart/lib/actor.dart +++ b/flare_dart/lib/actor.dart @@ -1,18 +1,19 @@ import 'dart:async'; -import "dart:typed_data"; import "dart:convert"; -import "actor_image.dart"; -import "actor_shape.dart"; +import "dart:typed_data"; + +import "actor_artboard.dart"; +import "actor_color.dart"; import "actor_ellipse.dart"; +import "actor_image.dart"; +import "actor_path.dart"; import "actor_polygon.dart"; import "actor_rectangle.dart"; +import "actor_shape.dart"; import "actor_star.dart"; import "actor_triangle.dart"; -import "actor_path.dart"; -import "actor_color.dart"; -import "stream_reader.dart"; import "block_types.dart"; -import "actor_artboard.dart"; +import "stream_reader.dart"; abstract class Actor { int maxTextureIndex = 0; diff --git a/flare_dart/lib/actor_artboard.dart b/flare_dart/lib/actor_artboard.dart index 779ccd2..349aa27 100644 --- a/flare_dart/lib/actor_artboard.dart +++ b/flare_dart/lib/actor_artboard.dart @@ -1,38 +1,39 @@ -import "actor_flags.dart"; -import "block_types.dart"; -import "actor_node.dart"; +import "dart:math"; +import "dart:typed_data"; + +import "actor.dart"; import "actor_bone.dart"; +import "actor_color.dart"; import "actor_component.dart"; import "actor_distance_constraint.dart"; +import "actor_drawable.dart"; +import "actor_ellipse.dart"; import "actor_event.dart"; +import "actor_flags.dart"; +import "actor_ik_constraint.dart"; +import "actor_image.dart"; +import "actor_jelly_bone.dart"; +import "actor_node.dart"; import "actor_node_solo.dart"; +import "actor_path.dart"; +import "actor_polygon.dart"; +import "actor_rectangle.dart"; import "actor_root_bone.dart"; -import "actor_jelly_bone.dart"; +import "actor_rotation_constraint.dart"; import "actor_scale_constraint.dart"; +import "actor_shape.dart"; import "actor_skin.dart"; -import "actor_path.dart"; +import "actor_star.dart"; import "actor_transform_constraint.dart"; import "actor_translation_constraint.dart"; -import "jelly_component.dart"; -import "actor_ik_constraint.dart"; -import "actor_rotation_constraint.dart"; -import "actor_image.dart"; -import "actor_drawable.dart"; -import "actor_shape.dart"; -import "actor_ellipse.dart"; -import "actor_polygon.dart"; -import "actor_rectangle.dart"; -import "actor_star.dart"; import "actor_triangle.dart"; -import "actor_color.dart"; import "animation/actor_animation.dart"; +import "block_types.dart"; import "dependency_sorter.dart"; -import "actor.dart"; -import "stream_reader.dart"; -import "math/vec2d.dart"; -import "dart:typed_data"; +import "jelly_component.dart"; import "math/aabb.dart"; -import "dart:math"; +import "math/vec2d.dart"; +import "stream_reader.dart"; class ActorArtboard { int _flags = ActorFlags.IsDrawOrderDirty; diff --git a/flare_dart/lib/actor_color.dart b/flare_dart/lib/actor_color.dart index 7b4b89b..d904d92 100644 --- a/flare_dart/lib/actor_color.dart +++ b/flare_dart/lib/actor_color.dart @@ -1,15 +1,14 @@ +import "dart:collection"; import "dart:typed_data"; -import 'math/mat2d.dart'; -import "actor_node.dart"; -import "actor_shape.dart"; import "actor_artboard.dart"; - import "actor_component.dart"; -import "dart:collection"; -import "stream_reader.dart"; -import "math/vec2d.dart"; import "actor_flags.dart"; +import "actor_node.dart"; +import "actor_shape.dart"; +import 'math/mat2d.dart'; +import "math/vec2d.dart"; +import "stream_reader.dart"; enum FillRule { EvenOdd, NonZero } enum StrokeCap { Butt, Round, Square } @@ -53,6 +52,7 @@ abstract class ActorPaint extends ActorComponent { return component; } + @override void completeResolve() { artboard.addDependency(this, parent); } @@ -103,7 +103,10 @@ abstract class ActorColor extends ActorPaint { return component; } + @override void onDirty(int dirt) {} + + @override void update(int dirt) {} } @@ -221,6 +224,7 @@ abstract class ColorFill extends ActorColor with ActorFill { return component; } + @override void completeResolve() { super.completeResolve(); @@ -244,6 +248,7 @@ abstract class ColorStroke extends ActorColor with ActorStroke { return component; } + @override void completeResolve() { super.completeResolve(); @@ -256,11 +261,12 @@ abstract class ColorStroke extends ActorColor with ActorStroke { abstract class GradientColor extends ActorPaint { Float32List _colorStops = Float32List(10); - Vec2D _start = Vec2D(); - Vec2D _end = Vec2D(); - Vec2D _renderStart = Vec2D(); - Vec2D _renderEnd = Vec2D(); - double opacity = 1.0; + final Vec2D _start = Vec2D(); + final Vec2D _end = Vec2D(); + final Vec2D _renderStart = Vec2D(); + final Vec2D _renderEnd = Vec2D(); + @override + final double opacity = 1.0; Vec2D get start => _start; Vec2D get end => _end; @@ -293,9 +299,12 @@ abstract class GradientColor extends ActorPaint { return component; } + @override void onDirty(int dirt) {} + + @override void update(int dirt) { - ActorShape shape = parent; + ActorShape shape = parent as ActorShape; Mat2D world = shape.worldTransform; Vec2D.transformMat2D(_renderStart, _start, world); Vec2D.transformMat2D(_renderEnd, _end, world); @@ -315,6 +324,7 @@ abstract class GradientFill extends GradientColor with ActorFill { return component; } + @override void completeResolve() { super.completeResolve(); @@ -338,6 +348,7 @@ abstract class GradientStroke extends GradientColor with ActorStroke { return component; } + @override void completeResolve() { super.completeResolve(); @@ -381,6 +392,7 @@ abstract class RadialGradientFill extends RadialGradientColor with ActorFill { return component; } + @override void completeResolve() { super.completeResolve(); @@ -406,6 +418,7 @@ abstract class RadialGradientStroke extends RadialGradientColor return component; } + @override void completeResolve() { super.completeResolve(); diff --git a/flare_dart/lib/actor_event.dart b/flare_dart/lib/actor_event.dart index 2c577f1..755cd20 100644 --- a/flare_dart/lib/actor_event.dart +++ b/flare_dart/lib/actor_event.dart @@ -1,5 +1,5 @@ -import "actor_component.dart"; import "actor_artboard.dart"; +import "actor_component.dart"; import "stream_reader.dart"; class ActorEvent extends ActorComponent { @@ -14,13 +14,19 @@ class ActorEvent extends ActorComponent { return component; } + @override ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorEvent instanceEvent = ActorEvent(); instanceEvent.copyComponent(this, resetArtboard); return instanceEvent; } + @override void completeResolve() {} + + @override void onDirty(int dirt) {} + + @override void update(int dirt) {} } diff --git a/flare_dart/lib/animation/actor_animation.dart b/flare_dart/lib/animation/actor_animation.dart index ce15bbc..5703864 100644 --- a/flare_dart/lib/animation/actor_animation.dart +++ b/flare_dart/lib/animation/actor_animation.dart @@ -397,8 +397,8 @@ class ActorAnimation { // We distinguish between animated and triggered components as ActorEvents // are currently only used to trigger events and don't need the full - // animation cycle. This lets them optimize them out of the regular animation - // cycle. + // animation cycle. This lets them optimize them out of the regular + // animation cycle. int animatedComponentCount = 0; int triggerComponentCount = 0; diff --git a/flare_dart/lib/animation/keyframe.dart b/flare_dart/lib/animation/keyframe.dart index 4c02d4c..55c77e2 100644 --- a/flare_dart/lib/animation/keyframe.dart +++ b/flare_dart/lib/animation/keyframe.dart @@ -111,6 +111,10 @@ abstract class KeyFrameNumeric extends KeyFrameWithInterpolation { return false; } frame._value = reader.readFloat32("value"); + if (frame._value.isNaN) { + // Do we want to warn the user the animation contains invalid values? + frame._value = 1.0; + } return true; } diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index e8f8cd5..bac74af 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 1.4.4 +version: 1.4.5 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 036497e..a433551 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.6] - 2019-08-23 09:52:13 + +- Clamp opacity values into 0..1 range before creating color for paint. + ## [1.5.5] - 2019-07-24 11:44:36 - Adding artboard option to FlareActor. Use this to change which artboard gets displayed by the FlareActor widget. diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index b22891f..f80c2b2 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -285,11 +285,11 @@ class FlutterColorFill extends ColorFill with FlutterFill { Color get uiColor { Float32List c = displayColor; - return Color.fromRGBO( - (c[0] * 255.0).round(), - (c[1] * 255.0).round(), - (c[2] * 255.0).round(), - c[3] * artboard.modulateOpacity * opacity * shape.renderOpacity); + double o = (artboard.modulateOpacity * opacity * shape.renderOpacity) + .clamp(0.0, 1.0) + .toDouble(); + return Color.fromRGBO((c[0] * 255.0).round(), (c[1] * 255.0).round(), + (c[2] * 255.0).round(), c[3] * o); } set uiColor(Color c) { @@ -317,11 +317,11 @@ class FlutterColorStroke extends ColorStroke with FlutterStroke { Color get uiColor { Float32List c = displayColor; - return Color.fromRGBO( - (c[0] * 255.0).round(), - (c[1] * 255.0).round(), - (c[2] * 255.0).round(), - c[3] * artboard.modulateOpacity * opacity * shape.renderOpacity); + double o = (artboard.modulateOpacity * opacity * shape.renderOpacity) + .clamp(0.0, 1.0) + .toDouble(); + return Color.fromRGBO((c[0] * 255.0).round(), (c[1] * 255.0).round(), + (c[2] * 255.0).round(), c[3] * o); } set uiColor(Color c) { @@ -350,11 +350,12 @@ class FlutterGradientFill extends GradientFill with FlutterFill { int idx = 0; for (int i = 0; i < numStops; i++) { + double o = colorStops[idx + 3].clamp(0.0, 1.0).toDouble(); ui.Color color = ui.Color.fromRGBO( (colorStops[idx] * 255.0).round(), (colorStops[idx + 1] * 255.0).round(), (colorStops[idx + 2] * 255.0).round(), - colorStops[idx + 3]); + o); colors.add(color); stops.add(colorStops[idx + 4]); idx += 5; @@ -368,14 +369,17 @@ class FlutterGradientFill extends GradientFill with FlutterFill { .toDouble()); } else { Float32List overrideColor = artboard.overrideColor; + double o = (overrideColor[3] * + artboard.modulateOpacity * + opacity * + shape.renderOpacity) + .clamp(0.0, 1.0) + .toDouble(); paintColor = ui.Color.fromRGBO( (overrideColor[0] * 255.0).round(), (overrideColor[1] * 255.0).round(), (overrideColor[2] * 255.0).round(), - overrideColor[3] * - artboard.modulateOpacity * - opacity * - shape.renderOpacity); + o); } _paint ..color = paintColor @@ -403,11 +407,12 @@ class FlutterGradientStroke extends GradientStroke with FlutterStroke { int idx = 0; for (int i = 0; i < numStops; i++) { + double o = colorStops[idx + 3].clamp(0.0, 1.0).toDouble(); ui.Color color = ui.Color.fromRGBO( (colorStops[idx] * 255.0).round(), (colorStops[idx + 1] * 255.0).round(), (colorStops[idx + 2] * 255.0).round(), - colorStops[idx + 3]); + o); colors.add(color); stops.add(colorStops[idx + 4]); idx += 5; @@ -421,14 +426,17 @@ class FlutterGradientStroke extends GradientStroke with FlutterStroke { .toDouble()); } else { Float32List overrideColor = artboard.overrideColor; + double o = (overrideColor[3] * + artboard.modulateOpacity * + opacity * + shape.renderOpacity) + .clamp(0.0, 1.0) + .toDouble(); paintColor = ui.Color.fromRGBO( (overrideColor[0] * 255.0).round(), (overrideColor[1] * 255.0).round(), (overrideColor[2] * 255.0).round(), - overrideColor[3] * - artboard.modulateOpacity * - opacity * - shape.renderOpacity); + o); } _paint ..color = paintColor @@ -458,11 +466,12 @@ class FlutterRadialFill extends RadialGradientFill with FlutterFill { int idx = 0; for (int i = 0; i < numStops; i++) { + double o = colorStops[idx + 3].clamp(0.0, 1.0).toDouble(); ui.Color color = ui.Color.fromRGBO( (colorStops[idx] * 255.0).round(), (colorStops[idx + 1] * 255.0).round(), (colorStops[idx + 2] * 255.0).round(), - colorStops[idx + 3]); + o); colors.add(color); stops.add(colorStops[idx + 4]); idx += 5; @@ -482,14 +491,17 @@ class FlutterRadialFill extends RadialGradientFill with FlutterFill { .toDouble()); } else { Float32List overrideColor = artboard.overrideColor; + double o = (overrideColor[3] * + artboard.modulateOpacity * + opacity * + shape.renderOpacity) + .clamp(0.0, 1.0) + .toDouble(); paintColor = ui.Color.fromRGBO( (overrideColor[0] * 255.0).round(), (overrideColor[1] * 255.0).round(), (overrideColor[2] * 255.0).round(), - overrideColor[3] * - artboard.modulateOpacity * - opacity * - shape.renderOpacity); + o); } _paint @@ -518,11 +530,12 @@ class FlutterRadialStroke extends RadialGradientStroke with FlutterStroke { int idx = 0; for (int i = 0; i < numStops; i++) { + double o = colorStops[idx + 3].clamp(0.0, 1.0).toDouble(); ui.Color color = ui.Color.fromRGBO( (colorStops[idx] * 255.0).round(), (colorStops[idx + 1] * 255.0).round(), (colorStops[idx + 2] * 255.0).round(), - colorStops[idx + 3]); + o); colors.add(color); stops.add(colorStops[idx + 4]); idx += 5; @@ -536,14 +549,17 @@ class FlutterRadialStroke extends RadialGradientStroke with FlutterStroke { .toDouble()); } else { Float32List overrideColor = artboard.overrideColor; + double o = (overrideColor[3] * + artboard.modulateOpacity * + opacity * + shape.renderOpacity) + .clamp(0.0, 1.0) + .toDouble(); paintColor = ui.Color.fromRGBO( (overrideColor[0] * 255.0).round(), (overrideColor[1] * 255.0).round(), (overrideColor[2] * 255.0).round(), - overrideColor[3] * - artboard.modulateOpacity * - opacity * - shape.renderOpacity); + o); } _paint diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 48ee0cd..9809d8b 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.5 +version: 1.5.6 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From c82e81efc4a7622b9c0b3d7ec08d6b3d4d3bbd17 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Fri, 23 Aug 2019 09:59:39 -0700 Subject: [PATCH 12/59] Squashed commit of the following: commit 998dc6f7c3efc8e7e3f8dbfa69ed77b92ed61465 Author: Luigi Rosso Date: Fri Aug 23 09:55:06 2019 -0700 Squashed commit of the following: commit 894a97ccc6aa42f5bb7c113499f06d1aff901a18 Author: Luigi Rosso Date: Fri Aug 23 09:53:43 2019 -0700 Updating changelog and pubspec. commit ef7d75ca9440073eb2789c427877598dc756af06 Author: Umberto Sonnino Date: Thu Aug 22 19:04:04 2019 +0200 Few updates to conform with Dart style commit 4a0ce44c1463496af477e3f825b6c0819956c4f6 Author: Umberto Sonnino Date: Thu Aug 22 19:01:01 2019 +0200 Clamp paint opacity to ensure correct paint value commit 1543c33c39f26363b4317d2c22b24c323920bfb1 Author: Luigi Rosso Date: Sun Aug 4 13:38:04 2019 -0700 Adding a check for NaN numeric keyframe values. Mitigates #134. Still need to find out what Flare is exporting. commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 9c2bd8c37e2a6460a46986cbc4e1be898059de82 Author: Luigi Rosso Date: Wed Jul 24 13:48:13 2019 -0700 Squashed commit of the following: commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 92d9dcb9292b090ef11e394bf186e75fd9dcdcb5 Author: Luigi Rosso Date: Wed Jul 24 13:46:46 2019 -0700 Squashed commit of the following: commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 307d63f824042d61059edf1cec54b96789625d97 Author: Luigi Rosso Date: Mon Jul 8 21:20:38 2019 -0700 Squashed commit of the following: commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. --- flare_dart/CHANGELOG.md | 4 + flare_dart/lib/actor.dart | 15 ++-- flare_dart/lib/actor_artboard.dart | 43 ++++++----- flare_dart/lib/actor_color.dart | 39 ++++++---- flare_dart/lib/actor_event.dart | 8 +- flare_dart/lib/animation/actor_animation.dart | 4 +- flare_dart/lib/animation/keyframe.dart | 4 + flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 4 + flare_flutter/lib/flare.dart | 76 +++++++++++-------- flare_flutter/pubspec.yaml | 4 +- 11 files changed, 126 insertions(+), 77 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index e3ff9ea..3d84d91 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.4.5] - 2019-08-23 09:51:30 + +Small changes to fix warnings caught by the Dart static analyzer. + ## [1.4.4] - 2019-07-24 11:43:51 Adding getArtboard method to Actor class. Allows finding artboards by name. diff --git a/flare_dart/lib/actor.dart b/flare_dart/lib/actor.dart index 8d7acfd..084817d 100644 --- a/flare_dart/lib/actor.dart +++ b/flare_dart/lib/actor.dart @@ -1,18 +1,19 @@ import 'dart:async'; -import "dart:typed_data"; import "dart:convert"; -import "actor_image.dart"; -import "actor_shape.dart"; +import "dart:typed_data"; + +import "actor_artboard.dart"; +import "actor_color.dart"; import "actor_ellipse.dart"; +import "actor_image.dart"; +import "actor_path.dart"; import "actor_polygon.dart"; import "actor_rectangle.dart"; +import "actor_shape.dart"; import "actor_star.dart"; import "actor_triangle.dart"; -import "actor_path.dart"; -import "actor_color.dart"; -import "stream_reader.dart"; import "block_types.dart"; -import "actor_artboard.dart"; +import "stream_reader.dart"; abstract class Actor { int maxTextureIndex = 0; diff --git a/flare_dart/lib/actor_artboard.dart b/flare_dart/lib/actor_artboard.dart index 779ccd2..349aa27 100644 --- a/flare_dart/lib/actor_artboard.dart +++ b/flare_dart/lib/actor_artboard.dart @@ -1,38 +1,39 @@ -import "actor_flags.dart"; -import "block_types.dart"; -import "actor_node.dart"; +import "dart:math"; +import "dart:typed_data"; + +import "actor.dart"; import "actor_bone.dart"; +import "actor_color.dart"; import "actor_component.dart"; import "actor_distance_constraint.dart"; +import "actor_drawable.dart"; +import "actor_ellipse.dart"; import "actor_event.dart"; +import "actor_flags.dart"; +import "actor_ik_constraint.dart"; +import "actor_image.dart"; +import "actor_jelly_bone.dart"; +import "actor_node.dart"; import "actor_node_solo.dart"; +import "actor_path.dart"; +import "actor_polygon.dart"; +import "actor_rectangle.dart"; import "actor_root_bone.dart"; -import "actor_jelly_bone.dart"; +import "actor_rotation_constraint.dart"; import "actor_scale_constraint.dart"; +import "actor_shape.dart"; import "actor_skin.dart"; -import "actor_path.dart"; +import "actor_star.dart"; import "actor_transform_constraint.dart"; import "actor_translation_constraint.dart"; -import "jelly_component.dart"; -import "actor_ik_constraint.dart"; -import "actor_rotation_constraint.dart"; -import "actor_image.dart"; -import "actor_drawable.dart"; -import "actor_shape.dart"; -import "actor_ellipse.dart"; -import "actor_polygon.dart"; -import "actor_rectangle.dart"; -import "actor_star.dart"; import "actor_triangle.dart"; -import "actor_color.dart"; import "animation/actor_animation.dart"; +import "block_types.dart"; import "dependency_sorter.dart"; -import "actor.dart"; -import "stream_reader.dart"; -import "math/vec2d.dart"; -import "dart:typed_data"; +import "jelly_component.dart"; import "math/aabb.dart"; -import "dart:math"; +import "math/vec2d.dart"; +import "stream_reader.dart"; class ActorArtboard { int _flags = ActorFlags.IsDrawOrderDirty; diff --git a/flare_dart/lib/actor_color.dart b/flare_dart/lib/actor_color.dart index 7b4b89b..d904d92 100644 --- a/flare_dart/lib/actor_color.dart +++ b/flare_dart/lib/actor_color.dart @@ -1,15 +1,14 @@ +import "dart:collection"; import "dart:typed_data"; -import 'math/mat2d.dart'; -import "actor_node.dart"; -import "actor_shape.dart"; import "actor_artboard.dart"; - import "actor_component.dart"; -import "dart:collection"; -import "stream_reader.dart"; -import "math/vec2d.dart"; import "actor_flags.dart"; +import "actor_node.dart"; +import "actor_shape.dart"; +import 'math/mat2d.dart'; +import "math/vec2d.dart"; +import "stream_reader.dart"; enum FillRule { EvenOdd, NonZero } enum StrokeCap { Butt, Round, Square } @@ -53,6 +52,7 @@ abstract class ActorPaint extends ActorComponent { return component; } + @override void completeResolve() { artboard.addDependency(this, parent); } @@ -103,7 +103,10 @@ abstract class ActorColor extends ActorPaint { return component; } + @override void onDirty(int dirt) {} + + @override void update(int dirt) {} } @@ -221,6 +224,7 @@ abstract class ColorFill extends ActorColor with ActorFill { return component; } + @override void completeResolve() { super.completeResolve(); @@ -244,6 +248,7 @@ abstract class ColorStroke extends ActorColor with ActorStroke { return component; } + @override void completeResolve() { super.completeResolve(); @@ -256,11 +261,12 @@ abstract class ColorStroke extends ActorColor with ActorStroke { abstract class GradientColor extends ActorPaint { Float32List _colorStops = Float32List(10); - Vec2D _start = Vec2D(); - Vec2D _end = Vec2D(); - Vec2D _renderStart = Vec2D(); - Vec2D _renderEnd = Vec2D(); - double opacity = 1.0; + final Vec2D _start = Vec2D(); + final Vec2D _end = Vec2D(); + final Vec2D _renderStart = Vec2D(); + final Vec2D _renderEnd = Vec2D(); + @override + final double opacity = 1.0; Vec2D get start => _start; Vec2D get end => _end; @@ -293,9 +299,12 @@ abstract class GradientColor extends ActorPaint { return component; } + @override void onDirty(int dirt) {} + + @override void update(int dirt) { - ActorShape shape = parent; + ActorShape shape = parent as ActorShape; Mat2D world = shape.worldTransform; Vec2D.transformMat2D(_renderStart, _start, world); Vec2D.transformMat2D(_renderEnd, _end, world); @@ -315,6 +324,7 @@ abstract class GradientFill extends GradientColor with ActorFill { return component; } + @override void completeResolve() { super.completeResolve(); @@ -338,6 +348,7 @@ abstract class GradientStroke extends GradientColor with ActorStroke { return component; } + @override void completeResolve() { super.completeResolve(); @@ -381,6 +392,7 @@ abstract class RadialGradientFill extends RadialGradientColor with ActorFill { return component; } + @override void completeResolve() { super.completeResolve(); @@ -406,6 +418,7 @@ abstract class RadialGradientStroke extends RadialGradientColor return component; } + @override void completeResolve() { super.completeResolve(); diff --git a/flare_dart/lib/actor_event.dart b/flare_dart/lib/actor_event.dart index 2c577f1..755cd20 100644 --- a/flare_dart/lib/actor_event.dart +++ b/flare_dart/lib/actor_event.dart @@ -1,5 +1,5 @@ -import "actor_component.dart"; import "actor_artboard.dart"; +import "actor_component.dart"; import "stream_reader.dart"; class ActorEvent extends ActorComponent { @@ -14,13 +14,19 @@ class ActorEvent extends ActorComponent { return component; } + @override ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorEvent instanceEvent = ActorEvent(); instanceEvent.copyComponent(this, resetArtboard); return instanceEvent; } + @override void completeResolve() {} + + @override void onDirty(int dirt) {} + + @override void update(int dirt) {} } diff --git a/flare_dart/lib/animation/actor_animation.dart b/flare_dart/lib/animation/actor_animation.dart index ce15bbc..5703864 100644 --- a/flare_dart/lib/animation/actor_animation.dart +++ b/flare_dart/lib/animation/actor_animation.dart @@ -397,8 +397,8 @@ class ActorAnimation { // We distinguish between animated and triggered components as ActorEvents // are currently only used to trigger events and don't need the full - // animation cycle. This lets them optimize them out of the regular animation - // cycle. + // animation cycle. This lets them optimize them out of the regular + // animation cycle. int animatedComponentCount = 0; int triggerComponentCount = 0; diff --git a/flare_dart/lib/animation/keyframe.dart b/flare_dart/lib/animation/keyframe.dart index 4c02d4c..55c77e2 100644 --- a/flare_dart/lib/animation/keyframe.dart +++ b/flare_dart/lib/animation/keyframe.dart @@ -111,6 +111,10 @@ abstract class KeyFrameNumeric extends KeyFrameWithInterpolation { return false; } frame._value = reader.readFloat32("value"); + if (frame._value.isNaN) { + // Do we want to warn the user the animation contains invalid values? + frame._value = 1.0; + } return true; } diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index e8f8cd5..bac74af 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 1.4.4 +version: 1.4.5 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 036497e..a433551 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.6] - 2019-08-23 09:52:13 + +- Clamp opacity values into 0..1 range before creating color for paint. + ## [1.5.5] - 2019-07-24 11:44:36 - Adding artboard option to FlareActor. Use this to change which artboard gets displayed by the FlareActor widget. diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index b22891f..f80c2b2 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -285,11 +285,11 @@ class FlutterColorFill extends ColorFill with FlutterFill { Color get uiColor { Float32List c = displayColor; - return Color.fromRGBO( - (c[0] * 255.0).round(), - (c[1] * 255.0).round(), - (c[2] * 255.0).round(), - c[3] * artboard.modulateOpacity * opacity * shape.renderOpacity); + double o = (artboard.modulateOpacity * opacity * shape.renderOpacity) + .clamp(0.0, 1.0) + .toDouble(); + return Color.fromRGBO((c[0] * 255.0).round(), (c[1] * 255.0).round(), + (c[2] * 255.0).round(), c[3] * o); } set uiColor(Color c) { @@ -317,11 +317,11 @@ class FlutterColorStroke extends ColorStroke with FlutterStroke { Color get uiColor { Float32List c = displayColor; - return Color.fromRGBO( - (c[0] * 255.0).round(), - (c[1] * 255.0).round(), - (c[2] * 255.0).round(), - c[3] * artboard.modulateOpacity * opacity * shape.renderOpacity); + double o = (artboard.modulateOpacity * opacity * shape.renderOpacity) + .clamp(0.0, 1.0) + .toDouble(); + return Color.fromRGBO((c[0] * 255.0).round(), (c[1] * 255.0).round(), + (c[2] * 255.0).round(), c[3] * o); } set uiColor(Color c) { @@ -350,11 +350,12 @@ class FlutterGradientFill extends GradientFill with FlutterFill { int idx = 0; for (int i = 0; i < numStops; i++) { + double o = colorStops[idx + 3].clamp(0.0, 1.0).toDouble(); ui.Color color = ui.Color.fromRGBO( (colorStops[idx] * 255.0).round(), (colorStops[idx + 1] * 255.0).round(), (colorStops[idx + 2] * 255.0).round(), - colorStops[idx + 3]); + o); colors.add(color); stops.add(colorStops[idx + 4]); idx += 5; @@ -368,14 +369,17 @@ class FlutterGradientFill extends GradientFill with FlutterFill { .toDouble()); } else { Float32List overrideColor = artboard.overrideColor; + double o = (overrideColor[3] * + artboard.modulateOpacity * + opacity * + shape.renderOpacity) + .clamp(0.0, 1.0) + .toDouble(); paintColor = ui.Color.fromRGBO( (overrideColor[0] * 255.0).round(), (overrideColor[1] * 255.0).round(), (overrideColor[2] * 255.0).round(), - overrideColor[3] * - artboard.modulateOpacity * - opacity * - shape.renderOpacity); + o); } _paint ..color = paintColor @@ -403,11 +407,12 @@ class FlutterGradientStroke extends GradientStroke with FlutterStroke { int idx = 0; for (int i = 0; i < numStops; i++) { + double o = colorStops[idx + 3].clamp(0.0, 1.0).toDouble(); ui.Color color = ui.Color.fromRGBO( (colorStops[idx] * 255.0).round(), (colorStops[idx + 1] * 255.0).round(), (colorStops[idx + 2] * 255.0).round(), - colorStops[idx + 3]); + o); colors.add(color); stops.add(colorStops[idx + 4]); idx += 5; @@ -421,14 +426,17 @@ class FlutterGradientStroke extends GradientStroke with FlutterStroke { .toDouble()); } else { Float32List overrideColor = artboard.overrideColor; + double o = (overrideColor[3] * + artboard.modulateOpacity * + opacity * + shape.renderOpacity) + .clamp(0.0, 1.0) + .toDouble(); paintColor = ui.Color.fromRGBO( (overrideColor[0] * 255.0).round(), (overrideColor[1] * 255.0).round(), (overrideColor[2] * 255.0).round(), - overrideColor[3] * - artboard.modulateOpacity * - opacity * - shape.renderOpacity); + o); } _paint ..color = paintColor @@ -458,11 +466,12 @@ class FlutterRadialFill extends RadialGradientFill with FlutterFill { int idx = 0; for (int i = 0; i < numStops; i++) { + double o = colorStops[idx + 3].clamp(0.0, 1.0).toDouble(); ui.Color color = ui.Color.fromRGBO( (colorStops[idx] * 255.0).round(), (colorStops[idx + 1] * 255.0).round(), (colorStops[idx + 2] * 255.0).round(), - colorStops[idx + 3]); + o); colors.add(color); stops.add(colorStops[idx + 4]); idx += 5; @@ -482,14 +491,17 @@ class FlutterRadialFill extends RadialGradientFill with FlutterFill { .toDouble()); } else { Float32List overrideColor = artboard.overrideColor; + double o = (overrideColor[3] * + artboard.modulateOpacity * + opacity * + shape.renderOpacity) + .clamp(0.0, 1.0) + .toDouble(); paintColor = ui.Color.fromRGBO( (overrideColor[0] * 255.0).round(), (overrideColor[1] * 255.0).round(), (overrideColor[2] * 255.0).round(), - overrideColor[3] * - artboard.modulateOpacity * - opacity * - shape.renderOpacity); + o); } _paint @@ -518,11 +530,12 @@ class FlutterRadialStroke extends RadialGradientStroke with FlutterStroke { int idx = 0; for (int i = 0; i < numStops; i++) { + double o = colorStops[idx + 3].clamp(0.0, 1.0).toDouble(); ui.Color color = ui.Color.fromRGBO( (colorStops[idx] * 255.0).round(), (colorStops[idx + 1] * 255.0).round(), (colorStops[idx + 2] * 255.0).round(), - colorStops[idx + 3]); + o); colors.add(color); stops.add(colorStops[idx + 4]); idx += 5; @@ -536,14 +549,17 @@ class FlutterRadialStroke extends RadialGradientStroke with FlutterStroke { .toDouble()); } else { Float32List overrideColor = artboard.overrideColor; + double o = (overrideColor[3] * + artboard.modulateOpacity * + opacity * + shape.renderOpacity) + .clamp(0.0, 1.0) + .toDouble(); paintColor = ui.Color.fromRGBO( (overrideColor[0] * 255.0).round(), (overrideColor[1] * 255.0).round(), (overrideColor[2] * 255.0).round(), - overrideColor[3] * - artboard.modulateOpacity * - opacity * - shape.renderOpacity); + o); } _paint diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 59a3daf..d35fbc3 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.5 +version: 1.5.6 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: @@ -9,7 +9,7 @@ environment: dependencies: flutter: sdk: flutter - flare_dart: ^1.4.4 + flare_dart: ^1.4.5 dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From 2fddc7d55ea497d5380b73fa91793251b21b6407 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Mon, 26 Aug 2019 10:38:42 -0700 Subject: [PATCH 13/59] Squashed commit of the following: commit a0b1bdbf8c8f5de54e3d9a63d2fe177c013ab549 Author: Umberto Sonnino Date: Mon Aug 26 18:07:33 2019 +0200 Clip artboard rect commit 894a97ccc6aa42f5bb7c113499f06d1aff901a18 Author: Luigi Rosso Date: Fri Aug 23 09:53:43 2019 -0700 Updating changelog and pubspec. commit ef7d75ca9440073eb2789c427877598dc756af06 Author: Umberto Sonnino Date: Thu Aug 22 19:04:04 2019 +0200 Few updates to conform with Dart style commit 4a0ce44c1463496af477e3f825b6c0819956c4f6 Author: Umberto Sonnino Date: Thu Aug 22 19:01:01 2019 +0200 Clamp paint opacity to ensure correct paint value commit 1543c33c39f26363b4317d2c22b24c323920bfb1 Author: Luigi Rosso Date: Sun Aug 4 13:38:04 2019 -0700 Adding a check for NaN numeric keyframe values. Mitigates #134. Still need to find out what Flare is exporting. commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. --- flare_flutter/lib/flare.dart | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index f80c2b2..6f10760 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -723,11 +723,19 @@ class FlutterActorArtboard extends ActorArtboard { FlutterActorArtboard(FlutterActor actor) : super(actor); void draw(ui.Canvas canvas) { + if(clipContents) { + canvas.save(); + AABB aabb = artboardAABB(); + canvas.clipRect(Rect.fromLTRB(aabb[0], aabb[1], aabb[2], aabb[3])); + } for (final ActorDrawable drawable in drawableNodes) { if (drawable is FlutterActorDrawable) { (drawable as FlutterActorDrawable).draw(canvas); } } + if(clipContents) { + canvas.restore(); + } } void dispose() {} From 5d6ab3d7f5c832d8bd0579f135ea92525df6a1b5 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Mon, 26 Aug 2019 10:39:06 -0700 Subject: [PATCH 14/59] Squashed commit of the following: commit 2fddc7d55ea497d5380b73fa91793251b21b6407 Author: Luigi Rosso Date: Mon Aug 26 10:38:42 2019 -0700 Squashed commit of the following: commit a0b1bdbf8c8f5de54e3d9a63d2fe177c013ab549 Author: Umberto Sonnino Date: Mon Aug 26 18:07:33 2019 +0200 Clip artboard rect commit 894a97ccc6aa42f5bb7c113499f06d1aff901a18 Author: Luigi Rosso Date: Fri Aug 23 09:53:43 2019 -0700 Updating changelog and pubspec. commit ef7d75ca9440073eb2789c427877598dc756af06 Author: Umberto Sonnino Date: Thu Aug 22 19:04:04 2019 +0200 Few updates to conform with Dart style commit 4a0ce44c1463496af477e3f825b6c0819956c4f6 Author: Umberto Sonnino Date: Thu Aug 22 19:01:01 2019 +0200 Clamp paint opacity to ensure correct paint value commit 1543c33c39f26363b4317d2c22b24c323920bfb1 Author: Luigi Rosso Date: Sun Aug 4 13:38:04 2019 -0700 Adding a check for NaN numeric keyframe values. Mitigates #134. Still need to find out what Flare is exporting. commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 998dc6f7c3efc8e7e3f8dbfa69ed77b92ed61465 Author: Luigi Rosso Date: Fri Aug 23 09:55:06 2019 -0700 Squashed commit of the following: commit 894a97ccc6aa42f5bb7c113499f06d1aff901a18 Author: Luigi Rosso Date: Fri Aug 23 09:53:43 2019 -0700 Updating changelog and pubspec. commit ef7d75ca9440073eb2789c427877598dc756af06 Author: Umberto Sonnino Date: Thu Aug 22 19:04:04 2019 +0200 Few updates to conform with Dart style commit 4a0ce44c1463496af477e3f825b6c0819956c4f6 Author: Umberto Sonnino Date: Thu Aug 22 19:01:01 2019 +0200 Clamp paint opacity to ensure correct paint value commit 1543c33c39f26363b4317d2c22b24c323920bfb1 Author: Luigi Rosso Date: Sun Aug 4 13:38:04 2019 -0700 Adding a check for NaN numeric keyframe values. Mitigates #134. Still need to find out what Flare is exporting. commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 9c2bd8c37e2a6460a46986cbc4e1be898059de82 Author: Luigi Rosso Date: Wed Jul 24 13:48:13 2019 -0700 Squashed commit of the following: commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 92d9dcb9292b090ef11e394bf186e75fd9dcdcb5 Author: Luigi Rosso Date: Wed Jul 24 13:46:46 2019 -0700 Squashed commit of the following: commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 307d63f824042d61059edf1cec54b96789625d97 Author: Luigi Rosso Date: Mon Jul 8 21:20:38 2019 -0700 Squashed commit of the following: commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. --- flare_flutter/lib/flare.dart | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index f80c2b2..6f10760 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -723,11 +723,19 @@ class FlutterActorArtboard extends ActorArtboard { FlutterActorArtboard(FlutterActor actor) : super(actor); void draw(ui.Canvas canvas) { + if(clipContents) { + canvas.save(); + AABB aabb = artboardAABB(); + canvas.clipRect(Rect.fromLTRB(aabb[0], aabb[1], aabb[2], aabb[3])); + } for (final ActorDrawable drawable in drawableNodes) { if (drawable is FlutterActorDrawable) { (drawable as FlutterActorDrawable).draw(canvas); } } + if(clipContents) { + canvas.restore(); + } } void dispose() {} From d26a59c3f712bff0b964bc25b434cfe608b051e4 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Mon, 26 Aug 2019 10:41:03 -0700 Subject: [PATCH 15/59] Squashed commit of the following: commit 798ec8dfd0fbba40e0672f95ec10a0d683adb699 Author: Luigi Rosso Date: Mon Aug 26 10:40:27 2019 -0700 Updating version and changelog. commit a0b1bdbf8c8f5de54e3d9a63d2fe177c013ab549 Author: Umberto Sonnino Date: Mon Aug 26 18:07:33 2019 +0200 Clip artboard rect commit 894a97ccc6aa42f5bb7c113499f06d1aff901a18 Author: Luigi Rosso Date: Fri Aug 23 09:53:43 2019 -0700 Updating changelog and pubspec. commit ef7d75ca9440073eb2789c427877598dc756af06 Author: Umberto Sonnino Date: Thu Aug 22 19:04:04 2019 +0200 Few updates to conform with Dart style commit 4a0ce44c1463496af477e3f825b6c0819956c4f6 Author: Umberto Sonnino Date: Thu Aug 22 19:01:01 2019 +0200 Clamp paint opacity to ensure correct paint value commit 1543c33c39f26363b4317d2c22b24c323920bfb1 Author: Luigi Rosso Date: Sun Aug 4 13:38:04 2019 -0700 Adding a check for NaN numeric keyframe values. Mitigates #134. Still need to find out what Flare is exporting. commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. --- flare_flutter/CHANGELOG.md | 4 ++++ flare_flutter/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index a433551..20566d8 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.7] - 2019-08-26 10:39:49 + +- Clip the artboard based on settings from Flare. + ## [1.5.6] - 2019-08-23 09:52:13 - Clamp opacity values into 0..1 range before creating color for paint. diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 9809d8b..c2c0675 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.6 +version: 1.5.7 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From fa043d8cdd0767fdb2414f83bfca38ca668cdda3 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Mon, 26 Aug 2019 10:41:36 -0700 Subject: [PATCH 16/59] Squashed commit of the following: commit d26a59c3f712bff0b964bc25b434cfe608b051e4 Author: Luigi Rosso Date: Mon Aug 26 10:41:03 2019 -0700 Squashed commit of the following: commit 798ec8dfd0fbba40e0672f95ec10a0d683adb699 Author: Luigi Rosso Date: Mon Aug 26 10:40:27 2019 -0700 Updating version and changelog. commit a0b1bdbf8c8f5de54e3d9a63d2fe177c013ab549 Author: Umberto Sonnino Date: Mon Aug 26 18:07:33 2019 +0200 Clip artboard rect commit 894a97ccc6aa42f5bb7c113499f06d1aff901a18 Author: Luigi Rosso Date: Fri Aug 23 09:53:43 2019 -0700 Updating changelog and pubspec. commit ef7d75ca9440073eb2789c427877598dc756af06 Author: Umberto Sonnino Date: Thu Aug 22 19:04:04 2019 +0200 Few updates to conform with Dart style commit 4a0ce44c1463496af477e3f825b6c0819956c4f6 Author: Umberto Sonnino Date: Thu Aug 22 19:01:01 2019 +0200 Clamp paint opacity to ensure correct paint value commit 1543c33c39f26363b4317d2c22b24c323920bfb1 Author: Luigi Rosso Date: Sun Aug 4 13:38:04 2019 -0700 Adding a check for NaN numeric keyframe values. Mitigates #134. Still need to find out what Flare is exporting. commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 2fddc7d55ea497d5380b73fa91793251b21b6407 Author: Luigi Rosso Date: Mon Aug 26 10:38:42 2019 -0700 Squashed commit of the following: commit a0b1bdbf8c8f5de54e3d9a63d2fe177c013ab549 Author: Umberto Sonnino Date: Mon Aug 26 18:07:33 2019 +0200 Clip artboard rect commit 894a97ccc6aa42f5bb7c113499f06d1aff901a18 Author: Luigi Rosso Date: Fri Aug 23 09:53:43 2019 -0700 Updating changelog and pubspec. commit ef7d75ca9440073eb2789c427877598dc756af06 Author: Umberto Sonnino Date: Thu Aug 22 19:04:04 2019 +0200 Few updates to conform with Dart style commit 4a0ce44c1463496af477e3f825b6c0819956c4f6 Author: Umberto Sonnino Date: Thu Aug 22 19:01:01 2019 +0200 Clamp paint opacity to ensure correct paint value commit 1543c33c39f26363b4317d2c22b24c323920bfb1 Author: Luigi Rosso Date: Sun Aug 4 13:38:04 2019 -0700 Adding a check for NaN numeric keyframe values. Mitigates #134. Still need to find out what Flare is exporting. commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 998dc6f7c3efc8e7e3f8dbfa69ed77b92ed61465 Author: Luigi Rosso Date: Fri Aug 23 09:55:06 2019 -0700 Squashed commit of the following: commit 894a97ccc6aa42f5bb7c113499f06d1aff901a18 Author: Luigi Rosso Date: Fri Aug 23 09:53:43 2019 -0700 Updating changelog and pubspec. commit ef7d75ca9440073eb2789c427877598dc756af06 Author: Umberto Sonnino Date: Thu Aug 22 19:04:04 2019 +0200 Few updates to conform with Dart style commit 4a0ce44c1463496af477e3f825b6c0819956c4f6 Author: Umberto Sonnino Date: Thu Aug 22 19:01:01 2019 +0200 Clamp paint opacity to ensure correct paint value commit 1543c33c39f26363b4317d2c22b24c323920bfb1 Author: Luigi Rosso Date: Sun Aug 4 13:38:04 2019 -0700 Adding a check for NaN numeric keyframe values. Mitigates #134. Still need to find out what Flare is exporting. commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 9c2bd8c37e2a6460a46986cbc4e1be898059de82 Author: Luigi Rosso Date: Wed Jul 24 13:48:13 2019 -0700 Squashed commit of the following: commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 92d9dcb9292b090ef11e394bf186e75fd9dcdcb5 Author: Luigi Rosso Date: Wed Jul 24 13:46:46 2019 -0700 Squashed commit of the following: commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 307d63f824042d61059edf1cec54b96789625d97 Author: Luigi Rosso Date: Mon Jul 8 21:20:38 2019 -0700 Squashed commit of the following: commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. --- flare_flutter/CHANGELOG.md | 4 ++++ flare_flutter/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index a433551..20566d8 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.7] - 2019-08-26 10:39:49 + +- Clip the artboard based on settings from Flare. + ## [1.5.6] - 2019-08-23 09:52:13 - Clamp opacity values into 0..1 range before creating color for paint. diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index d35fbc3..045abee 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.6 +version: 1.5.7 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From 6c905cdaad3102a98993564a9e6f03af9af0afb0 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 4 Sep 2019 08:51:45 -0700 Subject: [PATCH 17/59] Squashed commit of the following: commit 2bf6b43ca6babfcfa6915cd11972c1d6f909c159 Author: Luigi Rosso Date: Wed Sep 4 08:49:00 2019 -0700 Safety checks. commit 2c078c1d9dbf0ab6c6130d159b0664756126855d Author: Luigi Rosso Date: Wed Sep 4 08:48:35 2019 -0700 Prevent iterating null children. Fixes issue #146. commit 798ec8dfd0fbba40e0672f95ec10a0d683adb699 Author: Luigi Rosso Date: Mon Aug 26 10:40:27 2019 -0700 Updating version and changelog. commit a0b1bdbf8c8f5de54e3d9a63d2fe177c013ab549 Author: Umberto Sonnino Date: Mon Aug 26 18:07:33 2019 +0200 Clip artboard rect commit 894a97ccc6aa42f5bb7c113499f06d1aff901a18 Author: Luigi Rosso Date: Fri Aug 23 09:53:43 2019 -0700 Updating changelog and pubspec. commit ef7d75ca9440073eb2789c427877598dc756af06 Author: Umberto Sonnino Date: Thu Aug 22 19:04:04 2019 +0200 Few updates to conform with Dart style commit 4a0ce44c1463496af477e3f825b6c0819956c4f6 Author: Umberto Sonnino Date: Thu Aug 22 19:01:01 2019 +0200 Clamp paint opacity to ensure correct paint value commit 1543c33c39f26363b4317d2c22b24c323920bfb1 Author: Luigi Rosso Date: Sun Aug 4 13:38:04 2019 -0700 Adding a check for NaN numeric keyframe values. Mitigates #134. Still need to find out what Flare is exporting. commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. --- flare_dart/CHANGELOG.md | 4 ++++ flare_dart/lib/actor_node.dart | 12 +++++++----- flare_dart/lib/animation/actor_animation.dart | 9 +++++---- flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 4 ++++ flare_flutter/pubspec.yaml | 2 +- 6 files changed, 22 insertions(+), 11 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 3d84d91..273c0f0 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.4.6] - 2019-09-04 08:48:11 + +- Prevent iterating null children. Fixes issue #146. + ## [1.4.5] - 2019-08-23 09:51:30 Small changes to fix warnings caught by the Dart static analyzer. diff --git a/flare_dart/lib/actor_node.dart b/flare_dart/lib/actor_node.dart index b9244d8..9b51a72 100644 --- a/flare_dart/lib/actor_node.dart +++ b/flare_dart/lib/actor_node.dart @@ -378,12 +378,14 @@ class ActorNode extends ActorComponent { return false; } - for (ActorNode child in _children) { - if (cb(child) == false) { - return false; - } + if (_children != null) { + for (final ActorNode child in _children) { + if (cb(child) == false) { + return false; + } - child.eachChildRecursive(cb); + child.eachChildRecursive(cb); + } } return true; diff --git a/flare_dart/lib/animation/actor_animation.dart b/flare_dart/lib/animation/actor_animation.dart index 5703864..7daeeac 100644 --- a/flare_dart/lib/animation/actor_animation.dart +++ b/flare_dart/lib/animation/actor_animation.dart @@ -5,7 +5,6 @@ import "../stream_reader.dart"; import "keyframe.dart"; import "property_types.dart"; - typedef KeyFrame KeyFrameReader(StreamReader reader, ActorComponent component); class PropertyAnimation { @@ -228,6 +227,7 @@ class ComponentAnimation { int numProperties = reader.readUint16Length(); componentAnimation._properties = List(numProperties); for (int i = 0; i < numProperties; i++) { + assert(componentAnimation._componentIndex < components.length); componentAnimation._properties[i] = PropertyAnimation.read( reader, components[componentAnimation._componentIndex]); } @@ -396,8 +396,8 @@ class ActorAnimation { int numKeyedComponents = reader.readUint16Length(); // We distinguish between animated and triggered components as ActorEvents - // are currently only used to trigger events and don't need the full - // animation cycle. This lets them optimize them out of the regular + // are currently only used to trigger events and don't need the full + // animation cycle. This lets them optimize them out of the regular // animation cycle. int animatedComponentCount = 0; int triggerComponentCount = 0; @@ -408,7 +408,8 @@ class ActorAnimation { ComponentAnimation componentAnimation = ComponentAnimation.read(reader, components); animatedComponents[i] = componentAnimation; - if (componentAnimation != null) { + if (componentAnimation != null && + componentAnimation.componentIndex < components.length) { ActorComponent actorComponent = components[componentAnimation.componentIndex]; if (actorComponent != null) { diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index bac74af..c6df821 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 1.4.5 +version: 1.4.6 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 20566d8..000be5e 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.8] - 2019-09-04 08:47:31 + +- Bump flare_dart dependency version to get fix for iterating null children. Issue #146. + ## [1.5.7] - 2019-08-26 10:39:49 - Clip the artboard based on settings from Flare. diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index c2c0675..e894ce0 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.7 +version: 1.5.8 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From 5340270de396258d0f2d67e6ad850c74711128b2 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 4 Sep 2019 08:53:50 -0700 Subject: [PATCH 18/59] Squashed commit of the following: commit 6c905cdaad3102a98993564a9e6f03af9af0afb0 Author: Luigi Rosso Date: Wed Sep 4 08:51:45 2019 -0700 Squashed commit of the following: commit 2bf6b43ca6babfcfa6915cd11972c1d6f909c159 Author: Luigi Rosso Date: Wed Sep 4 08:49:00 2019 -0700 Safety checks. commit 2c078c1d9dbf0ab6c6130d159b0664756126855d Author: Luigi Rosso Date: Wed Sep 4 08:48:35 2019 -0700 Prevent iterating null children. Fixes issue #146. commit 798ec8dfd0fbba40e0672f95ec10a0d683adb699 Author: Luigi Rosso Date: Mon Aug 26 10:40:27 2019 -0700 Updating version and changelog. commit a0b1bdbf8c8f5de54e3d9a63d2fe177c013ab549 Author: Umberto Sonnino Date: Mon Aug 26 18:07:33 2019 +0200 Clip artboard rect commit 894a97ccc6aa42f5bb7c113499f06d1aff901a18 Author: Luigi Rosso Date: Fri Aug 23 09:53:43 2019 -0700 Updating changelog and pubspec. commit ef7d75ca9440073eb2789c427877598dc756af06 Author: Umberto Sonnino Date: Thu Aug 22 19:04:04 2019 +0200 Few updates to conform with Dart style commit 4a0ce44c1463496af477e3f825b6c0819956c4f6 Author: Umberto Sonnino Date: Thu Aug 22 19:01:01 2019 +0200 Clamp paint opacity to ensure correct paint value commit 1543c33c39f26363b4317d2c22b24c323920bfb1 Author: Luigi Rosso Date: Sun Aug 4 13:38:04 2019 -0700 Adding a check for NaN numeric keyframe values. Mitigates #134. Still need to find out what Flare is exporting. commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit d26a59c3f712bff0b964bc25b434cfe608b051e4 Author: Luigi Rosso Date: Mon Aug 26 10:41:03 2019 -0700 Squashed commit of the following: commit 798ec8dfd0fbba40e0672f95ec10a0d683adb699 Author: Luigi Rosso Date: Mon Aug 26 10:40:27 2019 -0700 Updating version and changelog. commit a0b1bdbf8c8f5de54e3d9a63d2fe177c013ab549 Author: Umberto Sonnino Date: Mon Aug 26 18:07:33 2019 +0200 Clip artboard rect commit 894a97ccc6aa42f5bb7c113499f06d1aff901a18 Author: Luigi Rosso Date: Fri Aug 23 09:53:43 2019 -0700 Updating changelog and pubspec. commit ef7d75ca9440073eb2789c427877598dc756af06 Author: Umberto Sonnino Date: Thu Aug 22 19:04:04 2019 +0200 Few updates to conform with Dart style commit 4a0ce44c1463496af477e3f825b6c0819956c4f6 Author: Umberto Sonnino Date: Thu Aug 22 19:01:01 2019 +0200 Clamp paint opacity to ensure correct paint value commit 1543c33c39f26363b4317d2c22b24c323920bfb1 Author: Luigi Rosso Date: Sun Aug 4 13:38:04 2019 -0700 Adding a check for NaN numeric keyframe values. Mitigates #134. Still need to find out what Flare is exporting. commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 2fddc7d55ea497d5380b73fa91793251b21b6407 Author: Luigi Rosso Date: Mon Aug 26 10:38:42 2019 -0700 Squashed commit of the following: commit a0b1bdbf8c8f5de54e3d9a63d2fe177c013ab549 Author: Umberto Sonnino Date: Mon Aug 26 18:07:33 2019 +0200 Clip artboard rect commit 894a97ccc6aa42f5bb7c113499f06d1aff901a18 Author: Luigi Rosso Date: Fri Aug 23 09:53:43 2019 -0700 Updating changelog and pubspec. commit ef7d75ca9440073eb2789c427877598dc756af06 Author: Umberto Sonnino Date: Thu Aug 22 19:04:04 2019 +0200 Few updates to conform with Dart style commit 4a0ce44c1463496af477e3f825b6c0819956c4f6 Author: Umberto Sonnino Date: Thu Aug 22 19:01:01 2019 +0200 Clamp paint opacity to ensure correct paint value commit 1543c33c39f26363b4317d2c22b24c323920bfb1 Author: Luigi Rosso Date: Sun Aug 4 13:38:04 2019 -0700 Adding a check for NaN numeric keyframe values. Mitigates #134. Still need to find out what Flare is exporting. commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 998dc6f7c3efc8e7e3f8dbfa69ed77b92ed61465 Author: Luigi Rosso Date: Fri Aug 23 09:55:06 2019 -0700 Squashed commit of the following: commit 894a97ccc6aa42f5bb7c113499f06d1aff901a18 Author: Luigi Rosso Date: Fri Aug 23 09:53:43 2019 -0700 Updating changelog and pubspec. commit ef7d75ca9440073eb2789c427877598dc756af06 Author: Umberto Sonnino Date: Thu Aug 22 19:04:04 2019 +0200 Few updates to conform with Dart style commit 4a0ce44c1463496af477e3f825b6c0819956c4f6 Author: Umberto Sonnino Date: Thu Aug 22 19:01:01 2019 +0200 Clamp paint opacity to ensure correct paint value commit 1543c33c39f26363b4317d2c22b24c323920bfb1 Author: Luigi Rosso Date: Sun Aug 4 13:38:04 2019 -0700 Adding a check for NaN numeric keyframe values. Mitigates #134. Still need to find out what Flare is exporting. commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 9c2bd8c37e2a6460a46986cbc4e1be898059de82 Author: Luigi Rosso Date: Wed Jul 24 13:48:13 2019 -0700 Squashed commit of the following: commit 562ac0b644ae965b50d2b3e229c501c471ad01d1 Author: Luigi Rosso Date: Wed Jul 24 13:47:25 2019 -0700 Updating versions. commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 92d9dcb9292b090ef11e394bf186e75fd9dcdcb5 Author: Luigi Rosso Date: Wed Jul 24 13:46:46 2019 -0700 Squashed commit of the following: commit 1e5394b37bdb08e023ebef58ccf40c89add80087 Author: Luigi Rosso Date: Wed Jul 24 11:47:01 2019 -0700 Adding artboard option. commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 307d63f824042d61059edf1cec54b96789625d97 Author: Luigi Rosso Date: Mon Jul 8 21:20:38 2019 -0700 Squashed commit of the following: commit 6f6000f3600a3f20c7a605cf6b20df5380c88d44 Author: Luigi Rosso Date: Mon Jul 8 21:19:43 2019 -0700 Squashed commit of the following: commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. commit f24a688baf29916ae070404fe0c656c96e5c144e Author: Luigi Rosso Date: Mon Jul 8 21:18:32 2019 -0700 Squashed commit of the following: commit 085a15c38e883149b2269eb5809c5e00b1b848b9 Author: Luigi Rosso Date: Mon Jul 8 21:17:28 2019 -0700 Squashed commit of the following: commit 56cea07339c72f7abb7dbc8354c4982157805035 Author: Luigi Rosso Date: Mon Jul 8 21:15:07 2019 -0700 Updating stable to latest flare_flutter from dev. commit 28846c58bec6cee40a23b9ab9412bd291987e0b1 Merge: e1a55f9 52d5e6e Author: Luigi Rosso Date: Sat Jul 6 11:06:01 2019 -0700 Merge pull request #121 from 2d-inc/master Merging intrinsic_size_experiment changes commit e1a55f91331e0b7cd47ec43203b594b986395523 Merge: 5533e73 15682ac Author: Luigi Rosso Date: Sat Jul 6 10:28:42 2019 -0700 Merge pull request #119 from 2d-inc/master Check for null children before iterating for initialization. commit 5533e73cbb2322a4267485c5ac13bf21f9f2da68 Merge: 01387cd a17469b Author: Luigi Rosso Date: Wed Jul 3 10:40:12 2019 -0700 Merge pull request #116 from 2d-inc/master Remove console spam. commit 01387cdb2df3c46119179feacae43f28f2b11257 Merge: 0ee2efe 525613e Author: Luigi Rosso Date: Tue Jul 2 18:13:31 2019 -0700 Merge pull request #115 from 2d-inc/master Instance shape node from actor. commit 0ee2efeb22ee2c2ecbc6a265383b337ad02768c9 Merge: 8f04aa6 0230aab Author: Luigi Rosso Date: Thu Jun 20 16:27:00 2019 -0700 Merge pull request #108 from 2d-inc/master Fixing rectangle and clips. commit 8f04aa6d355b3b5c0ed1ba515988347510cefbb6 Merge: 6606b73 865e090 Author: Luigi Rosso Date: Thu Jun 13 16:07:43 2019 -0700 Merge pull request #102 from 2d-inc/master Updating dev branch. commit 6606b73bf4f7b87105a6febfbb5f2167cf8b8977 Merge: 396cd88 f147157 Author: Luigi Rosso Date: Tue Jun 4 11:59:29 2019 -0700 Merge branch 'master' into dev commit 396cd88df7638b86e55b4467364fa2c41cde1558 Merge: 006d85b 9db2d97 Author: Luigi Rosso Date: Mon May 20 10:56:46 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 006d85bc53a61174bd2e2c2cf3321ff85312c1c7 Merge: c51192d 850ea83 Author: Luigi Rosso Date: Mon May 20 10:45:58 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit c51192dec50dec034d121f6aad7d2e8733c7e279 Merge: 4aebb0f 4e9961b Author: Luigi Rosso Date: Thu May 9 11:44:40 2019 -0700 Merge pull request #89 from 2d-inc/master Update indices to 16 bit unsigned, compatibility with flutter master. commit 4aebb0ff5b98c7bcf2183c6bac8226cc7ddf5402 Merge: 113d791 63c1d05 Author: Luigi Rosso Date: Fri Apr 26 13:42:11 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 113d791606c6b6fb7b19ca616e8b7282e4f0b610 Merge: 2ec15af 4416a67 Author: Luigi Rosso Date: Fri Apr 26 12:33:04 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit 2ec15af0042696de7d997cbfdcb6deaf55463af2 Merge: d8defc4 2dbb7ab Author: Luigi Rosso Date: Wed Apr 24 12:07:45 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter into dev commit d8defc4c07571ce8287f26791cf38992fffaef75 Author: Luigi Rosso Date: Wed Apr 24 10:15:51 2019 -0700 Fixing relative path for flare_dart. commit 2e1fcaaa944d4d795d21382418935b8ffa6c1615 Author: Luigi Rosso Date: Wed Apr 24 10:14:38 2019 -0700 Updating flare_dart dependency to dev branch of Flare-Flutter. --- flare_dart/CHANGELOG.md | 4 ++++ flare_dart/lib/actor_node.dart | 12 +++++++----- flare_dart/lib/animation/actor_animation.dart | 9 +++++---- flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 4 ++++ flare_flutter/pubspec.yaml | 4 ++-- 6 files changed, 23 insertions(+), 12 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 3d84d91..273c0f0 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.4.6] - 2019-09-04 08:48:11 + +- Prevent iterating null children. Fixes issue #146. + ## [1.4.5] - 2019-08-23 09:51:30 Small changes to fix warnings caught by the Dart static analyzer. diff --git a/flare_dart/lib/actor_node.dart b/flare_dart/lib/actor_node.dart index b9244d8..9b51a72 100644 --- a/flare_dart/lib/actor_node.dart +++ b/flare_dart/lib/actor_node.dart @@ -378,12 +378,14 @@ class ActorNode extends ActorComponent { return false; } - for (ActorNode child in _children) { - if (cb(child) == false) { - return false; - } + if (_children != null) { + for (final ActorNode child in _children) { + if (cb(child) == false) { + return false; + } - child.eachChildRecursive(cb); + child.eachChildRecursive(cb); + } } return true; diff --git a/flare_dart/lib/animation/actor_animation.dart b/flare_dart/lib/animation/actor_animation.dart index 5703864..7daeeac 100644 --- a/flare_dart/lib/animation/actor_animation.dart +++ b/flare_dart/lib/animation/actor_animation.dart @@ -5,7 +5,6 @@ import "../stream_reader.dart"; import "keyframe.dart"; import "property_types.dart"; - typedef KeyFrame KeyFrameReader(StreamReader reader, ActorComponent component); class PropertyAnimation { @@ -228,6 +227,7 @@ class ComponentAnimation { int numProperties = reader.readUint16Length(); componentAnimation._properties = List(numProperties); for (int i = 0; i < numProperties; i++) { + assert(componentAnimation._componentIndex < components.length); componentAnimation._properties[i] = PropertyAnimation.read( reader, components[componentAnimation._componentIndex]); } @@ -396,8 +396,8 @@ class ActorAnimation { int numKeyedComponents = reader.readUint16Length(); // We distinguish between animated and triggered components as ActorEvents - // are currently only used to trigger events and don't need the full - // animation cycle. This lets them optimize them out of the regular + // are currently only used to trigger events and don't need the full + // animation cycle. This lets them optimize them out of the regular // animation cycle. int animatedComponentCount = 0; int triggerComponentCount = 0; @@ -408,7 +408,8 @@ class ActorAnimation { ComponentAnimation componentAnimation = ComponentAnimation.read(reader, components); animatedComponents[i] = componentAnimation; - if (componentAnimation != null) { + if (componentAnimation != null && + componentAnimation.componentIndex < components.length) { ActorComponent actorComponent = components[componentAnimation.componentIndex]; if (actorComponent != null) { diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index bac74af..c6df821 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 1.4.5 +version: 1.4.6 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 20566d8..000be5e 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.8] - 2019-09-04 08:47:31 + +- Bump flare_dart dependency version to get fix for iterating null children. Issue #146. + ## [1.5.7] - 2019-08-26 10:39:49 - Clip the artboard based on settings from Flare. diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 045abee..8d02009 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.7 +version: 1.5.8 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: @@ -9,7 +9,7 @@ environment: dependencies: flutter: sdk: flutter - flare_dart: ^1.4.5 + flare_dart: ^1.4.6 dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From e550a5e55a95209a3cbfba70336bcb2dba17c1d2 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Mon, 23 Sep 2019 17:52:52 +0200 Subject: [PATCH 19/59] Bumping flare_dart version in flare_flutter pubspec.. --- flare_flutter/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index cc87ae9..4570a1e 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -9,7 +9,7 @@ environment: dependencies: flutter: sdk: flutter - flare_dart: ^1.4.6 + flare_dart: ^1.4.7 dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From 68ae10c9b4320f30f8d0151a13ac368ba40307cc Mon Sep 17 00:00:00 2001 From: Mehmet Fidanboylu Date: Sat, 28 Sep 2019 06:46:03 -0700 Subject: [PATCH 20/59] Fix critical lints --- flare_dart/lib/actor_drawable.dart | 1 + flare_dart/lib/actor_skin.dart | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/flare_dart/lib/actor_drawable.dart b/flare_dart/lib/actor_drawable.dart index 0ffa79f..9f53d5e 100644 --- a/flare_dart/lib/actor_drawable.dart +++ b/flare_dart/lib/actor_drawable.dart @@ -65,6 +65,7 @@ abstract class ActorDrawable extends ActorNode { if (node is ActorShape) { shapes.add(node); } + return true; }); } if (shapes.length > 0) { diff --git a/flare_dart/lib/actor_skin.dart b/flare_dart/lib/actor_skin.dart index 6234661..f58d72b 100644 --- a/flare_dart/lib/actor_skin.dart +++ b/flare_dart/lib/actor_skin.dart @@ -1,5 +1,4 @@ import "dart:typed_data"; -import "actor_path.dart"; import "actor_skinnable.dart"; import "actor_artboard.dart"; import "actor_component.dart"; From 93863375b3dd55c11a2d85ae9620dcdafd3e9ae6 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Mon, 30 Sep 2019 21:22:49 +0200 Subject: [PATCH 21/59] Squashed commit of the following: commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_dart/CHANGELOG.md | 4 ++++ flare_dart/lib/actor_drawable.dart | 1 + flare_dart/lib/actor_skin.dart | 1 - flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 4 ++++ flare_flutter/pubspec.yaml | 2 +- 6 files changed, 11 insertions(+), 3 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 0293828..bb7cc98 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.4.8] - 2019-09-30 21:19:37 + +- Fixing linting problems in ActorDrawable and ActorSkin. + ## [1.4.7] - 2019-09-23 16:42:53 - Added support for transformAffectsStroke property on ActorShape. diff --git a/flare_dart/lib/actor_drawable.dart b/flare_dart/lib/actor_drawable.dart index 0ffa79f..9f53d5e 100644 --- a/flare_dart/lib/actor_drawable.dart +++ b/flare_dart/lib/actor_drawable.dart @@ -65,6 +65,7 @@ abstract class ActorDrawable extends ActorNode { if (node is ActorShape) { shapes.add(node); } + return true; }); } if (shapes.length > 0) { diff --git a/flare_dart/lib/actor_skin.dart b/flare_dart/lib/actor_skin.dart index 6234661..f58d72b 100644 --- a/flare_dart/lib/actor_skin.dart +++ b/flare_dart/lib/actor_skin.dart @@ -1,5 +1,4 @@ import "dart:typed_data"; -import "actor_path.dart"; import "actor_skinnable.dart"; import "actor_artboard.dart"; import "actor_component.dart"; diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index b6a4c1b..6562483 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 1.4.7 +version: 1.4.8 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index bce3619..f2408b7 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.10] - 2019-09-30 21:20:50 + +- Bump flare_dart dependency. + ## [1.5.9] - 2019-09-23 16:43:42 - Added support for transformAffectsStroke property on ActorShape. Internally this requires a new concrete type for the FlutterActorShape as the transformAffectsStroke property requires a slightly more complex version of FlutterActorShape. In order to keep existing animations (and future ones that don't use this) streamlined, a new FlutterActorShapeWithTransformedStroke class was added that extends from FlutterActorShape. diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index c218a2c..9886ff5 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.9 +version: 1.5.10 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From 177c4411f3cca848cd4dfe74ad48ec8155886cd0 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 2 Oct 2019 13:11:07 +0200 Subject: [PATCH 22/59] Squashed commit of the following: commit 93863375b3dd55c11a2d85ae9620dcdafd3e9ae6 Author: Luigi Rosso Date: Mon Sep 30 21:22:49 2019 +0200 Squashed commit of the following: commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_dart/CHANGELOG.md | 4 ++++ flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 4 ++++ flare_flutter/pubspec.yaml | 4 ++-- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 0293828..bb7cc98 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.4.8] - 2019-09-30 21:19:37 + +- Fixing linting problems in ActorDrawable and ActorSkin. + ## [1.4.7] - 2019-09-23 16:42:53 - Added support for transformAffectsStroke property on ActorShape. diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index b6a4c1b..6562483 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 1.4.7 +version: 1.4.8 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index bce3619..f2408b7 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.10] - 2019-09-30 21:20:50 + +- Bump flare_dart dependency. + ## [1.5.9] - 2019-09-23 16:43:42 - Added support for transformAffectsStroke property on ActorShape. Internally this requires a new concrete type for the FlutterActorShape as the transformAffectsStroke property requires a slightly more complex version of FlutterActorShape. In order to keep existing animations (and future ones that don't use this) streamlined, a new FlutterActorShapeWithTransformedStroke class was added that extends from FlutterActorShape. diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 4570a1e..72467a1 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.9 +version: 1.5.10 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: @@ -9,7 +9,7 @@ environment: dependencies: flutter: sdk: flutter - flare_dart: ^1.4.7 + flare_dart: ^1.4.8 dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From b1ae611761093fbde1ef41083e33681baaffa878 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Fri, 4 Oct 2019 13:45:16 -0700 Subject: [PATCH 23/59] Squashed commit of the following: commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_flutter/CHANGELOG.md | 4 ++++ flare_flutter/lib/flare.dart | 4 ++-- flare_flutter/pubspec.yaml | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index f2408b7..0aebd81 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.11] - 2019-10-04 13:44:04 + +- Clamping trim start/end values to 0-1. + ## [1.5.10] - 2019-09-30 21:20:50 - Bump flare_dart dependency. diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index 70f216e..9683b18 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -128,8 +128,8 @@ abstract class FlutterStroke { if (stroke.isTrimmed) { if (effectPath == null) { bool isSequential = stroke.trim == TrimPath.Sequential; - double start = stroke.trimStart; - double end = stroke.trimEnd; + double start = stroke.trimStart.clamp(0, 1).toDouble(); + double end = stroke.trimEnd.clamp(0, 1).toDouble(); double offset = stroke.trimOffset; bool inverted = start > end; if ((start - end).abs() != 1.0) { diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 9886ff5..d078c6a 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.10 +version: 1.5.11 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From 13759e2afc4b0df54c4644faf1196d2feb052e0a Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Fri, 4 Oct 2019 13:45:51 -0700 Subject: [PATCH 24/59] Squashed commit of the following: commit b1ae611761093fbde1ef41083e33681baaffa878 Author: Luigi Rosso Date: Fri Oct 4 13:45:16 2019 -0700 Squashed commit of the following: commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 93863375b3dd55c11a2d85ae9620dcdafd3e9ae6 Author: Luigi Rosso Date: Mon Sep 30 21:22:49 2019 +0200 Squashed commit of the following: commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_flutter/CHANGELOG.md | 4 ++++ flare_flutter/lib/flare.dart | 4 ++-- flare_flutter/pubspec.yaml | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index f2408b7..0aebd81 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.11] - 2019-10-04 13:44:04 + +- Clamping trim start/end values to 0-1. + ## [1.5.10] - 2019-09-30 21:20:50 - Bump flare_dart dependency. diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index 70f216e..9683b18 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -128,8 +128,8 @@ abstract class FlutterStroke { if (stroke.isTrimmed) { if (effectPath == null) { bool isSequential = stroke.trim == TrimPath.Sequential; - double start = stroke.trimStart; - double end = stroke.trimEnd; + double start = stroke.trimStart.clamp(0, 1).toDouble(); + double end = stroke.trimEnd.clamp(0, 1).toDouble(); double offset = stroke.trimOffset; bool inverted = start > end; if ((start - end).abs() != 1.0) { diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 72467a1..a642af0 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.10 +version: 1.5.11 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From e3d2414dfbd25e632510dad6959a1c18c2d585f8 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Fri, 4 Oct 2019 18:06:42 -0700 Subject: [PATCH 25/59] Squashed commit of the following: commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_flutter/CHANGELOG.md | 4 +++ flare_flutter/lib/flare_cache_asset.dart | 31 +++++++++++++++++------- flare_flutter/lib/flare_testing.dart | 9 +++++++ flare_flutter/pubspec.yaml | 2 +- 4 files changed, 36 insertions(+), 10 deletions(-) create mode 100644 flare_flutter/lib/flare_testing.dart diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 0aebd81..7f9a34d 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.12] - 2019-10-04 17:56:54 + +- Introduce FlareTesting.setup(); call this prior to running any tests using Flare content. + ## [1.5.11] - 2019-10-04 13:44:04 - Clamping trim start/end values to 0-1. diff --git a/flare_flutter/lib/flare_cache_asset.dart b/flare_flutter/lib/flare_cache_asset.dart index a6a08a4..fbc40a5 100644 --- a/flare_flutter/lib/flare_cache_asset.dart +++ b/flare_flutter/lib/flare_cache_asset.dart @@ -11,21 +11,34 @@ class FlareCacheAsset extends CacheAsset { FlutterActor _actor; FlutterActor get actor => _actor; + static bool useCompute = true; + + void loadedActor(FlutterActor actor, String filename) { + actor.loadImages().then((_) { + if (actor != null) { + _actor = actor; + completeLoad(); + } else { + print("Failed to load flare file from $filename."); + } + }); + } + @override void load(Cache cache, String filename) { super.load(cache, filename); if (cache is AssetBundleCache) { cache.bundle.load(filename).then((ByteData data) { - compute(FlutterActor.loadFromByteData, data).then((FlutterActor actor) { - actor.loadImages().then((_) { - if (actor != null) { - _actor = actor; - completeLoad(); - } else { - print("Failed to load flare file from $filename."); - } + if (useCompute) { + compute(FlutterActor.loadFromByteData, data) + .then((FlutterActor actor) { + loadedActor(actor, filename); + }); + } else { + FlutterActor.loadFromByteData(data).then((FlutterActor actor) { + loadedActor(actor, filename); }); - }); + } }); } } diff --git a/flare_flutter/lib/flare_testing.dart b/flare_flutter/lib/flare_testing.dart new file mode 100644 index 0000000..f86f654 --- /dev/null +++ b/flare_flutter/lib/flare_testing.dart @@ -0,0 +1,9 @@ +import 'flare_cache.dart'; +import 'flare_cache_asset.dart'; + +class FlareTesting { + static void setup() { + FlareCache.doesPrune = false; + FlareCacheAsset.useCompute = false; + } +} diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index d078c6a..2a78eb3 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.11 +version: 1.5.12 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From cfa4b99a725215eb0e8bf786e4020ee4c0e5fd17 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Fri, 4 Oct 2019 18:07:24 -0700 Subject: [PATCH 26/59] Squashed commit of the following: commit e3d2414dfbd25e632510dad6959a1c18c2d585f8 Author: Luigi Rosso Date: Fri Oct 4 18:06:42 2019 -0700 Squashed commit of the following: commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit b1ae611761093fbde1ef41083e33681baaffa878 Author: Luigi Rosso Date: Fri Oct 4 13:45:16 2019 -0700 Squashed commit of the following: commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 93863375b3dd55c11a2d85ae9620dcdafd3e9ae6 Author: Luigi Rosso Date: Mon Sep 30 21:22:49 2019 +0200 Squashed commit of the following: commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_flutter/CHANGELOG.md | 4 +++ flare_flutter/lib/flare_cache_asset.dart | 31 +++++++++++++++++------- flare_flutter/lib/flare_testing.dart | 9 +++++++ flare_flutter/pubspec.yaml | 2 +- 4 files changed, 36 insertions(+), 10 deletions(-) create mode 100644 flare_flutter/lib/flare_testing.dart diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 0aebd81..7f9a34d 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.12] - 2019-10-04 17:56:54 + +- Introduce FlareTesting.setup(); call this prior to running any tests using Flare content. + ## [1.5.11] - 2019-10-04 13:44:04 - Clamping trim start/end values to 0-1. diff --git a/flare_flutter/lib/flare_cache_asset.dart b/flare_flutter/lib/flare_cache_asset.dart index a6a08a4..fbc40a5 100644 --- a/flare_flutter/lib/flare_cache_asset.dart +++ b/flare_flutter/lib/flare_cache_asset.dart @@ -11,21 +11,34 @@ class FlareCacheAsset extends CacheAsset { FlutterActor _actor; FlutterActor get actor => _actor; + static bool useCompute = true; + + void loadedActor(FlutterActor actor, String filename) { + actor.loadImages().then((_) { + if (actor != null) { + _actor = actor; + completeLoad(); + } else { + print("Failed to load flare file from $filename."); + } + }); + } + @override void load(Cache cache, String filename) { super.load(cache, filename); if (cache is AssetBundleCache) { cache.bundle.load(filename).then((ByteData data) { - compute(FlutterActor.loadFromByteData, data).then((FlutterActor actor) { - actor.loadImages().then((_) { - if (actor != null) { - _actor = actor; - completeLoad(); - } else { - print("Failed to load flare file from $filename."); - } + if (useCompute) { + compute(FlutterActor.loadFromByteData, data) + .then((FlutterActor actor) { + loadedActor(actor, filename); + }); + } else { + FlutterActor.loadFromByteData(data).then((FlutterActor actor) { + loadedActor(actor, filename); }); - }); + } }); } } diff --git a/flare_flutter/lib/flare_testing.dart b/flare_flutter/lib/flare_testing.dart new file mode 100644 index 0000000..f86f654 --- /dev/null +++ b/flare_flutter/lib/flare_testing.dart @@ -0,0 +1,9 @@ +import 'flare_cache.dart'; +import 'flare_cache_asset.dart'; + +class FlareTesting { + static void setup() { + FlareCache.doesPrune = false; + FlareCacheAsset.useCompute = false; + } +} diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index a642af0..9703450 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.11 +version: 1.5.12 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From e59d88d1c1e73006319735233e70a49be4ba0bdc Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Mon, 7 Oct 2019 11:23:24 -0700 Subject: [PATCH 27/59] Squashed commit of the following: commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- example/simple/android/app/build.gradle | 2 +- example/simple/android/build.gradle | 2 +- example/simple/android/gradle.properties | 1 + flare_dart/CHANGELOG.md | 4 ++ flare_dart/lib/actor_node.dart | 11 +++- flare_dart/lib/actor_path.dart | 83 ++++++++++++++++-------- flare_dart/lib/actor_shape.dart | 16 ++++- flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 4 ++ flare_flutter/lib/flare.dart | 43 ++++-------- flare_flutter/pubspec.yaml | 2 +- 11 files changed, 106 insertions(+), 64 deletions(-) diff --git a/example/simple/android/app/build.gradle b/example/simple/android/app/build.gradle index bea1eaf..f62880b 100644 --- a/example/simple/android/app/build.gradle +++ b/example/simple/android/app/build.gradle @@ -15,7 +15,7 @@ apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 27 + compileSdkVersion 28 lintOptions { disable 'InvalidPackage' diff --git a/example/simple/android/build.gradle b/example/simple/android/build.gradle index 4476887..136bad2 100644 --- a/example/simple/android/build.gradle +++ b/example/simple/android/build.gradle @@ -26,4 +26,4 @@ subprojects { task clean(type: Delete) { delete rootProject.buildDir -} +} \ No newline at end of file diff --git a/example/simple/android/gradle.properties b/example/simple/android/gradle.properties index 8bd86f6..7be3d8b 100644 --- a/example/simple/android/gradle.properties +++ b/example/simple/android/gradle.properties @@ -1 +1,2 @@ org.gradle.jvmargs=-Xmx1536M +android.enableR8=true diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index bb7cc98..10ea2d8 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.4.9] - 2019-10-07 11:20:58 + +- Supporting Nodes inside of Shapes, effectively adding multiple transform spaces inside of a shape. + ## [1.4.8] - 2019-09-30 21:19:37 - Fixing linting problems in ActorDrawable and ActorSkin. diff --git a/flare_dart/lib/actor_node.dart b/flare_dart/lib/actor_node.dart index 9b51a72..7e81097 100644 --- a/flare_dart/lib/actor_node.dart +++ b/flare_dart/lib/actor_node.dart @@ -342,6 +342,7 @@ class ActorNode extends ActorComponent { } } + @override void resolveComponentIndices(List components) { super.resolveComponentIndices(components); @@ -349,18 +350,22 @@ class ActorNode extends ActorComponent { return; } - for (ActorClip clip in _clips) { - clip.node = components[clip.clipIdx]; + for (final ActorClip clip in _clips) { + final ActorComponent component = components[clip.clipIdx]; + if (component is ActorNode) { + clip.node = component; + } } } + @override void completeResolve() { // Nothing to complete for actornode. } bool eachChildRecursive(NodeWalkCallback cb) { if (_children != null) { - for (ActorNode child in _children) { + for (final ActorNode child in _children) { if (cb(child) == false) { return false; } diff --git a/flare_dart/lib/actor_path.dart b/flare_dart/lib/actor_path.dart index d5fa4bd..44ed3ae 100644 --- a/flare_dart/lib/actor_path.dart +++ b/flare_dart/lib/actor_path.dart @@ -1,23 +1,27 @@ import "dart:typed_data"; -import "actor_shape.dart"; +import "actor_artboard.dart"; import "actor_component.dart"; import "actor_node.dart"; +import "actor_shape.dart"; import "actor_skinnable.dart"; -import "actor_artboard.dart"; -import "stream_reader.dart"; -import "path_point.dart"; -import "math/vec2d.dart"; -import "math/mat2d.dart"; import "math/aabb.dart"; +import "math/mat2d.dart"; +import "math/vec2d.dart"; +import "path_point.dart"; +import "stream_reader.dart"; abstract class ActorBasePath { - //bool get isClosed; + ActorShape _shape; + ActorShape get shape => _shape; + bool _isRootPath = false; + bool get isRootPath => _isRootPath; List get points; ActorNode get parent; void invalidatePath(); bool get isPathInWorldSpace => false; Mat2D get pathTransform; Mat2D get transform; + Mat2D get worldTransform; List> get allClips; List get deformedPoints => points; @@ -41,11 +45,16 @@ abstract class ActorBasePath { // convert the path coordinates into local parent space. localTransform = Mat2D(); Mat2D.invert(localTransform, parent.worldTransform); + } else if (!_isRootPath) { + // Path isn't root, so get transform in shape space. + if (Mat2D.invert(localTransform, shape.worldTransform)) { + Mat2D.multiply(localTransform, localTransform, worldTransform); + } } else { localTransform = transform; } - for (Vec2D p in pts) { + for (final Vec2D p in pts) { Vec2D wp = Vec2D.transformMat2D(p, p, localTransform); if (wp[0] < minX) { minX = wp[0]; @@ -64,10 +73,10 @@ abstract class ActorBasePath { return AABB.fromValues(minX, minY, maxX, maxY); } - invalidateDrawable() { + void invalidateDrawable() { invalidatePath(); - if (parent is ActorShape) { - parent.invalidateShape(); + if (shape != null) { + shape.invalidateShape(); } } @@ -78,7 +87,7 @@ abstract class ActorBasePath { double maxY = -double.maxFinite; List renderPoints = points; - for (PathPoint point in renderPoints) { + for (final PathPoint point in renderPoints) { Vec2D t = point.translation; double x = t[0]; double y = t[1]; @@ -132,6 +141,27 @@ abstract class ActorBasePath { return AABB.fromValues(minX, minY, maxX, maxY); } + + void updateShape() { + if (_shape != null) { + _shape.removePath(this); + } + ActorNode possibleShape = parent; + while (possibleShape != null && possibleShape is! ActorShape) { + possibleShape = possibleShape.parent; + } + if (possibleShape != null) { + _shape = possibleShape as ActorShape; + _shape.addPath(this); + } else { + _shape = null; + } + _isRootPath = _shape == parent; + } + + void completeResolve() { + updateShape(); + } } abstract class ActorProceduralPath extends ActorNode with ActorBasePath { @@ -168,8 +198,8 @@ abstract class ActorProceduralPath extends ActorNode with ActorBasePath { void onDirty(int dirt) { super.onDirty(dirt); // We transformed, make sure parent is invalidated. - if (parent is ActorShape) { - parent.invalidateShape(); + if (shape != null) { + shape.invalidateShape(); } } } @@ -204,7 +234,7 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { Float32List boneMatrices = skin.boneMatrices; List deformed = []; - for (PathPoint point in _points) { + for (final PathPoint point in _points) { deformed.add(point.skin(worldTransform, boneMatrices)); } return deformed; @@ -218,8 +248,8 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { void onDirty(int dirt) { super.onDirty(dirt); // We transformed, make sure parent is invalidated. - if (parent is ActorShape) { - parent.invalidateShape(); + if (shape != null) { + shape.invalidateShape(); } } @@ -232,7 +262,7 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { }); Float32List vertices = Float32List(length); int readIdx = 0; - for (PathPoint point in points) { + for (final PathPoint point in points) { vertices[readIdx++] = point.translation[0]; vertices[readIdx++] = point.translation[1]; if (point.pointType == PointType.Straight) { @@ -257,11 +287,12 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { artboard.addDirt(this, VertexDeformDirty, false); } + @override void update(int dirt) { if (vertexDeform != null && (dirt & VertexDeformDirty) == VertexDeformDirty) { int readIdx = 0; - for (PathPoint point in _points) { + for (final PathPoint point in _points) { point.translation[0] = vertexDeform[readIdx++]; point.translation[1] = vertexDeform[readIdx++]; switch (point.pointType) { @@ -286,10 +317,8 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { static ActorPath read( ActorArtboard artboard, StreamReader reader, ActorPath component) { - if (component == null) { - component = ActorPath(); - } - ActorNode.read(artboard, reader, component); + component ??= ActorPath(); + ActorNode.read(artboard, reader, component); ActorSkinnable.read(artboard, reader, component); component._isHidden = !reader.readBool("isVisible"); @@ -333,14 +362,14 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { return instanceEvent; } - @override + @override void resolveComponentIndices(List components) { - super.resolveComponentIndices(components); - resolveSkinnable(components); + super.resolveComponentIndices(components); + resolveSkinnable(components); } void copyPath(ActorPath node, ActorArtboard resetArtboard) { - copyNode(node, resetArtboard); + copyNode(node, resetArtboard); copySkinnable(node, resetArtboard); _isHidden = node._isHidden; _isClosed = node._isClosed; diff --git a/flare_dart/lib/actor_shape.dart b/flare_dart/lib/actor_shape.dart index 45eef36..24e7f91 100644 --- a/flare_dart/lib/actor_shape.dart +++ b/flare_dart/lib/actor_shape.dart @@ -11,6 +11,7 @@ import "math/vec2d.dart"; import "stream_reader.dart"; class ActorShape extends ActorDrawable { + final List _paths = []; final List _strokes = []; final List _fills = []; bool _transformAffectsStroke = false; @@ -20,6 +21,7 @@ class ActorShape extends ActorDrawable { ActorStroke get stroke => _strokes.isNotEmpty ? _strokes.first : null; List get fills => _fills; List get strokes => _strokes; + List get paths => _paths; @override void update(int dirt) { @@ -47,7 +49,7 @@ class ActorShape extends ActorDrawable { void copyShape(ActorShape node, ActorArtboard resetArtboard) { copyDrawable(node, resetArtboard); - node._transformAffectsStroke = _transformAffectsStroke; + node._transformAffectsStroke = _transformAffectsStroke; } @override @@ -177,4 +179,16 @@ class ActorShape extends ActorDrawable { @override set blendModeId(int value) {} + + bool addPath(ActorBasePath path) { + if (_paths.contains(path)) { + return false; + } + _paths.add(path); + return true; + } + + bool removePath(ActorBasePath path) { + return _paths.remove(path); + } } diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 6562483..45334e9 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 1.4.8 +version: 1.4.9 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 7f9a34d..031fc0a 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.13] - 2019-10-07 11:21:29 + +- Using latest flare_dart with support for Nodes inside of Shapes (Paths with multiple transform spaces). + ## [1.5.12] - 2019-10-04 17:56:54 - Introduce FlareTesting.setup(); call this prior to running any tests using Flare content. diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index 9683b18..2609d03 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -174,13 +174,8 @@ class FlutterActorShape extends ActorShape with FlutterActorDrawable { void initializeGraphics() { super.initializeGraphics(); _path = ui.Path(); - if (children != null) { - for (final ActorNode node in children) { - FlutterPath flutterPath = node as FlutterPath; - if (flutterPath != null) { - flutterPath.initializeGraphics(); - } - } + for (final ActorBasePath path in paths) { + (path as FlutterPath).initializeGraphics(); } } @@ -211,15 +206,10 @@ class FlutterActorShape extends ActorShape with FlutterActorDrawable { _isValid = true; _path.reset(); - if (children != null) { - for (final ActorNode node in children) { - FlutterPath flutterPath = node as FlutterPath; - if (flutterPath != null) { - Mat2D transform = (node as ActorBasePath).pathTransform; - _path.addPath(flutterPath.path, ui.Offset.zero, - matrix4: transform?.mat4); - } - } + for (final ActorBasePath path in paths) { + Mat2D transform = path.pathTransform; + _path.addPath((path as FlutterPath).path, ui.Offset.zero, + matrix4: transform?.mat4); } return _path; } @@ -308,21 +298,16 @@ class FlutterActorShapeWithTransformedStroke extends FlutterActorShape { Mat2D.identity(inverseWorld); } - if (children != null) { - for (final ActorNode node in children) { - FlutterPath flutterPath = node as FlutterPath; - if (flutterPath != null) { - Mat2D transform = (node as ActorBasePath).pathTransform; + for (final ActorBasePath path in paths) { + Mat2D transform = path.pathTransform; - Mat2D localTransform; - if (transform != null) { - localTransform = Mat2D(); - Mat2D.multiply(localTransform, inverseWorld, transform); - } - _localPath.addPath(flutterPath.path, ui.Offset.zero, - matrix4: localTransform?.mat4); - } + Mat2D localTransform; + if (transform != null) { + localTransform = Mat2D(); + Mat2D.multiply(localTransform, inverseWorld, transform); } + _localPath.addPath((path as FlutterPath).path, ui.Offset.zero, + matrix4: localTransform?.mat4); } return _localPath; } diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 2a78eb3..9985d82 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.12 +version: 1.5.13 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From 18fda210de78d86b4bc1ba7e988bba2c8077999f Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Mon, 7 Oct 2019 11:33:59 -0700 Subject: [PATCH 28/59] Squashed commit of the following: commit e59d88d1c1e73006319735233e70a49be4ba0bdc Author: Luigi Rosso Date: Mon Oct 7 11:23:24 2019 -0700 Squashed commit of the following: commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit e3d2414dfbd25e632510dad6959a1c18c2d585f8 Author: Luigi Rosso Date: Fri Oct 4 18:06:42 2019 -0700 Squashed commit of the following: commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit b1ae611761093fbde1ef41083e33681baaffa878 Author: Luigi Rosso Date: Fri Oct 4 13:45:16 2019 -0700 Squashed commit of the following: commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 93863375b3dd55c11a2d85ae9620dcdafd3e9ae6 Author: Luigi Rosso Date: Mon Sep 30 21:22:49 2019 +0200 Squashed commit of the following: commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- example/simple/android/app/build.gradle | 2 +- example/simple/android/build.gradle | 2 +- example/simple/android/gradle.properties | 1 + flare_dart/CHANGELOG.md | 4 ++ flare_dart/lib/actor_node.dart | 11 +++- flare_dart/lib/actor_path.dart | 83 ++++++++++++++++-------- flare_dart/lib/actor_shape.dart | 16 ++++- flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 4 ++ flare_flutter/lib/flare.dart | 43 ++++-------- flare_flutter/pubspec.yaml | 4 +- 11 files changed, 107 insertions(+), 65 deletions(-) diff --git a/example/simple/android/app/build.gradle b/example/simple/android/app/build.gradle index bea1eaf..f62880b 100644 --- a/example/simple/android/app/build.gradle +++ b/example/simple/android/app/build.gradle @@ -15,7 +15,7 @@ apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 27 + compileSdkVersion 28 lintOptions { disable 'InvalidPackage' diff --git a/example/simple/android/build.gradle b/example/simple/android/build.gradle index 4476887..136bad2 100644 --- a/example/simple/android/build.gradle +++ b/example/simple/android/build.gradle @@ -26,4 +26,4 @@ subprojects { task clean(type: Delete) { delete rootProject.buildDir -} +} \ No newline at end of file diff --git a/example/simple/android/gradle.properties b/example/simple/android/gradle.properties index 8bd86f6..7be3d8b 100644 --- a/example/simple/android/gradle.properties +++ b/example/simple/android/gradle.properties @@ -1 +1,2 @@ org.gradle.jvmargs=-Xmx1536M +android.enableR8=true diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index bb7cc98..10ea2d8 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.4.9] - 2019-10-07 11:20:58 + +- Supporting Nodes inside of Shapes, effectively adding multiple transform spaces inside of a shape. + ## [1.4.8] - 2019-09-30 21:19:37 - Fixing linting problems in ActorDrawable and ActorSkin. diff --git a/flare_dart/lib/actor_node.dart b/flare_dart/lib/actor_node.dart index 9b51a72..7e81097 100644 --- a/flare_dart/lib/actor_node.dart +++ b/flare_dart/lib/actor_node.dart @@ -342,6 +342,7 @@ class ActorNode extends ActorComponent { } } + @override void resolveComponentIndices(List components) { super.resolveComponentIndices(components); @@ -349,18 +350,22 @@ class ActorNode extends ActorComponent { return; } - for (ActorClip clip in _clips) { - clip.node = components[clip.clipIdx]; + for (final ActorClip clip in _clips) { + final ActorComponent component = components[clip.clipIdx]; + if (component is ActorNode) { + clip.node = component; + } } } + @override void completeResolve() { // Nothing to complete for actornode. } bool eachChildRecursive(NodeWalkCallback cb) { if (_children != null) { - for (ActorNode child in _children) { + for (final ActorNode child in _children) { if (cb(child) == false) { return false; } diff --git a/flare_dart/lib/actor_path.dart b/flare_dart/lib/actor_path.dart index d5fa4bd..44ed3ae 100644 --- a/flare_dart/lib/actor_path.dart +++ b/flare_dart/lib/actor_path.dart @@ -1,23 +1,27 @@ import "dart:typed_data"; -import "actor_shape.dart"; +import "actor_artboard.dart"; import "actor_component.dart"; import "actor_node.dart"; +import "actor_shape.dart"; import "actor_skinnable.dart"; -import "actor_artboard.dart"; -import "stream_reader.dart"; -import "path_point.dart"; -import "math/vec2d.dart"; -import "math/mat2d.dart"; import "math/aabb.dart"; +import "math/mat2d.dart"; +import "math/vec2d.dart"; +import "path_point.dart"; +import "stream_reader.dart"; abstract class ActorBasePath { - //bool get isClosed; + ActorShape _shape; + ActorShape get shape => _shape; + bool _isRootPath = false; + bool get isRootPath => _isRootPath; List get points; ActorNode get parent; void invalidatePath(); bool get isPathInWorldSpace => false; Mat2D get pathTransform; Mat2D get transform; + Mat2D get worldTransform; List> get allClips; List get deformedPoints => points; @@ -41,11 +45,16 @@ abstract class ActorBasePath { // convert the path coordinates into local parent space. localTransform = Mat2D(); Mat2D.invert(localTransform, parent.worldTransform); + } else if (!_isRootPath) { + // Path isn't root, so get transform in shape space. + if (Mat2D.invert(localTransform, shape.worldTransform)) { + Mat2D.multiply(localTransform, localTransform, worldTransform); + } } else { localTransform = transform; } - for (Vec2D p in pts) { + for (final Vec2D p in pts) { Vec2D wp = Vec2D.transformMat2D(p, p, localTransform); if (wp[0] < minX) { minX = wp[0]; @@ -64,10 +73,10 @@ abstract class ActorBasePath { return AABB.fromValues(minX, minY, maxX, maxY); } - invalidateDrawable() { + void invalidateDrawable() { invalidatePath(); - if (parent is ActorShape) { - parent.invalidateShape(); + if (shape != null) { + shape.invalidateShape(); } } @@ -78,7 +87,7 @@ abstract class ActorBasePath { double maxY = -double.maxFinite; List renderPoints = points; - for (PathPoint point in renderPoints) { + for (final PathPoint point in renderPoints) { Vec2D t = point.translation; double x = t[0]; double y = t[1]; @@ -132,6 +141,27 @@ abstract class ActorBasePath { return AABB.fromValues(minX, minY, maxX, maxY); } + + void updateShape() { + if (_shape != null) { + _shape.removePath(this); + } + ActorNode possibleShape = parent; + while (possibleShape != null && possibleShape is! ActorShape) { + possibleShape = possibleShape.parent; + } + if (possibleShape != null) { + _shape = possibleShape as ActorShape; + _shape.addPath(this); + } else { + _shape = null; + } + _isRootPath = _shape == parent; + } + + void completeResolve() { + updateShape(); + } } abstract class ActorProceduralPath extends ActorNode with ActorBasePath { @@ -168,8 +198,8 @@ abstract class ActorProceduralPath extends ActorNode with ActorBasePath { void onDirty(int dirt) { super.onDirty(dirt); // We transformed, make sure parent is invalidated. - if (parent is ActorShape) { - parent.invalidateShape(); + if (shape != null) { + shape.invalidateShape(); } } } @@ -204,7 +234,7 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { Float32List boneMatrices = skin.boneMatrices; List deformed = []; - for (PathPoint point in _points) { + for (final PathPoint point in _points) { deformed.add(point.skin(worldTransform, boneMatrices)); } return deformed; @@ -218,8 +248,8 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { void onDirty(int dirt) { super.onDirty(dirt); // We transformed, make sure parent is invalidated. - if (parent is ActorShape) { - parent.invalidateShape(); + if (shape != null) { + shape.invalidateShape(); } } @@ -232,7 +262,7 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { }); Float32List vertices = Float32List(length); int readIdx = 0; - for (PathPoint point in points) { + for (final PathPoint point in points) { vertices[readIdx++] = point.translation[0]; vertices[readIdx++] = point.translation[1]; if (point.pointType == PointType.Straight) { @@ -257,11 +287,12 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { artboard.addDirt(this, VertexDeformDirty, false); } + @override void update(int dirt) { if (vertexDeform != null && (dirt & VertexDeformDirty) == VertexDeformDirty) { int readIdx = 0; - for (PathPoint point in _points) { + for (final PathPoint point in _points) { point.translation[0] = vertexDeform[readIdx++]; point.translation[1] = vertexDeform[readIdx++]; switch (point.pointType) { @@ -286,10 +317,8 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { static ActorPath read( ActorArtboard artboard, StreamReader reader, ActorPath component) { - if (component == null) { - component = ActorPath(); - } - ActorNode.read(artboard, reader, component); + component ??= ActorPath(); + ActorNode.read(artboard, reader, component); ActorSkinnable.read(artboard, reader, component); component._isHidden = !reader.readBool("isVisible"); @@ -333,14 +362,14 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { return instanceEvent; } - @override + @override void resolveComponentIndices(List components) { - super.resolveComponentIndices(components); - resolveSkinnable(components); + super.resolveComponentIndices(components); + resolveSkinnable(components); } void copyPath(ActorPath node, ActorArtboard resetArtboard) { - copyNode(node, resetArtboard); + copyNode(node, resetArtboard); copySkinnable(node, resetArtboard); _isHidden = node._isHidden; _isClosed = node._isClosed; diff --git a/flare_dart/lib/actor_shape.dart b/flare_dart/lib/actor_shape.dart index 45eef36..24e7f91 100644 --- a/flare_dart/lib/actor_shape.dart +++ b/flare_dart/lib/actor_shape.dart @@ -11,6 +11,7 @@ import "math/vec2d.dart"; import "stream_reader.dart"; class ActorShape extends ActorDrawable { + final List _paths = []; final List _strokes = []; final List _fills = []; bool _transformAffectsStroke = false; @@ -20,6 +21,7 @@ class ActorShape extends ActorDrawable { ActorStroke get stroke => _strokes.isNotEmpty ? _strokes.first : null; List get fills => _fills; List get strokes => _strokes; + List get paths => _paths; @override void update(int dirt) { @@ -47,7 +49,7 @@ class ActorShape extends ActorDrawable { void copyShape(ActorShape node, ActorArtboard resetArtboard) { copyDrawable(node, resetArtboard); - node._transformAffectsStroke = _transformAffectsStroke; + node._transformAffectsStroke = _transformAffectsStroke; } @override @@ -177,4 +179,16 @@ class ActorShape extends ActorDrawable { @override set blendModeId(int value) {} + + bool addPath(ActorBasePath path) { + if (_paths.contains(path)) { + return false; + } + _paths.add(path); + return true; + } + + bool removePath(ActorBasePath path) { + return _paths.remove(path); + } } diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 6562483..45334e9 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 1.4.8 +version: 1.4.9 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 7f9a34d..031fc0a 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.13] - 2019-10-07 11:21:29 + +- Using latest flare_dart with support for Nodes inside of Shapes (Paths with multiple transform spaces). + ## [1.5.12] - 2019-10-04 17:56:54 - Introduce FlareTesting.setup(); call this prior to running any tests using Flare content. diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index 9683b18..2609d03 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -174,13 +174,8 @@ class FlutterActorShape extends ActorShape with FlutterActorDrawable { void initializeGraphics() { super.initializeGraphics(); _path = ui.Path(); - if (children != null) { - for (final ActorNode node in children) { - FlutterPath flutterPath = node as FlutterPath; - if (flutterPath != null) { - flutterPath.initializeGraphics(); - } - } + for (final ActorBasePath path in paths) { + (path as FlutterPath).initializeGraphics(); } } @@ -211,15 +206,10 @@ class FlutterActorShape extends ActorShape with FlutterActorDrawable { _isValid = true; _path.reset(); - if (children != null) { - for (final ActorNode node in children) { - FlutterPath flutterPath = node as FlutterPath; - if (flutterPath != null) { - Mat2D transform = (node as ActorBasePath).pathTransform; - _path.addPath(flutterPath.path, ui.Offset.zero, - matrix4: transform?.mat4); - } - } + for (final ActorBasePath path in paths) { + Mat2D transform = path.pathTransform; + _path.addPath((path as FlutterPath).path, ui.Offset.zero, + matrix4: transform?.mat4); } return _path; } @@ -308,21 +298,16 @@ class FlutterActorShapeWithTransformedStroke extends FlutterActorShape { Mat2D.identity(inverseWorld); } - if (children != null) { - for (final ActorNode node in children) { - FlutterPath flutterPath = node as FlutterPath; - if (flutterPath != null) { - Mat2D transform = (node as ActorBasePath).pathTransform; + for (final ActorBasePath path in paths) { + Mat2D transform = path.pathTransform; - Mat2D localTransform; - if (transform != null) { - localTransform = Mat2D(); - Mat2D.multiply(localTransform, inverseWorld, transform); - } - _localPath.addPath(flutterPath.path, ui.Offset.zero, - matrix4: localTransform?.mat4); - } + Mat2D localTransform; + if (transform != null) { + localTransform = Mat2D(); + Mat2D.multiply(localTransform, inverseWorld, transform); } + _localPath.addPath((path as FlutterPath).path, ui.Offset.zero, + matrix4: localTransform?.mat4); } return _localPath; } diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 9703450..890e2d0 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.12 +version: 1.5.13 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: @@ -9,7 +9,7 @@ environment: dependencies: flutter: sdk: flutter - flare_dart: ^1.4.8 + flare_dart: ^1.4.9 dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From 0b9c1733895c4da04fb35da5735ab704647868fb Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Tue, 8 Oct 2019 13:47:43 -0700 Subject: [PATCH 29/59] Squashed commit of the following: commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- example/change_color/android/app/build.gradle | 2 +- .../change_color/android/gradle.properties | 1 + .../ios/Runner.xcodeproj/project.pbxproj | 4 - .../ios/Runner.xcodeproj/project.pbxproj | 4 - example/favorite/test/widget_test.dart | 20 -- .../penguin_dance/android/app/build.gradle | 2 +- .../penguin_dance/android/gradle.properties | 1 + .../ios/Runner.xcodeproj/project.pbxproj | 4 - example/teddy/android/app/build.gradle | 2 +- example/teddy/android/gradle.properties | 1 + flare_dart/CHANGELOG.md | 4 + flare_dart/analysis_options.yaml | 4 +- flare_dart/lib/actor.dart | 14 +- flare_dart/lib/actor_artboard.dart | 116 +++++------ flare_dart/lib/actor_axis_constraint.dart | 42 ++-- flare_dart/lib/actor_bone.dart | 10 +- flare_dart/lib/actor_bone_base.dart | 6 +- flare_dart/lib/actor_color.dart | 30 +-- flare_dart/lib/actor_component.dart | 9 +- flare_dart/lib/actor_constraint.dart | 7 +- flare_dart/lib/actor_distance_constraint.dart | 43 ++-- flare_dart/lib/actor_drawable.dart | 21 +- flare_dart/lib/actor_ellipse.dart | 35 ++-- flare_dart/lib/actor_event.dart | 4 +- flare_dart/lib/actor_flags.dart | 10 +- flare_dart/lib/actor_ik_constraint.dart | 57 +++--- flare_dart/lib/actor_image.dart | 13 +- flare_dart/lib/actor_jelly_bone.dart | 13 +- flare_dart/lib/actor_node.dart | 49 ++--- flare_dart/lib/actor_node_solo.dart | 27 +-- flare_dart/lib/actor_path.dart | 15 +- flare_dart/lib/actor_polygon.dart | 18 +- flare_dart/lib/actor_rectangle.dart | 4 +- flare_dart/lib/actor_root_bone.dart | 12 +- flare_dart/lib/actor_rotation_constraint.dart | 57 +++--- flare_dart/lib/actor_scale_constraint.dart | 68 +++---- flare_dart/lib/actor_skin.dart | 10 +- flare_dart/lib/actor_skinnable.dart | 14 +- flare_dart/lib/actor_star.dart | 4 +- flare_dart/lib/actor_targeted_constraint.dart | 3 +- .../lib/actor_transform_constraint.dart | 41 ++-- .../lib/actor_translation_constraint.dart | 63 +++--- flare_dart/lib/actor_triangle.dart | 17 +- flare_dart/lib/animation/actor_animation.dart | 74 +++---- .../lib/animation/interpolation/cubic.dart | 10 +- .../animation/interpolation/cubic_ease.dart | 36 ++-- flare_dart/lib/animation/keyframe.dart | 20 +- flare_dart/lib/animation/property_types.dart | 146 +++++++------- flare_dart/lib/block_reader.dart | 13 +- flare_dart/lib/block_types.dart | 190 +++++++++--------- flare_dart/lib/dependency_sorter.dart | 4 +- flare_dart/lib/jelly_component.dart | 68 ++++--- flare_dart/lib/json_block_reader.dart | 42 ++-- flare_dart/lib/json_reader.dart | 130 +++++++----- flare_dart/lib/math/aabb.dart | 2 +- flare_dart/lib/math/mat2d.dart | 4 +- flare_dart/lib/math/vec2d.dart | 4 +- flare_dart/lib/path_point.dart | 39 ++-- flare_dart/lib/stream_reader.dart | 2 +- flare_dart/lib/transform_space.dart | 4 +- flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 4 + flare_flutter/analysis_options.yaml | 4 +- flare_flutter/lib/flare.dart | 23 +-- flare_flutter/lib/flare_cache.dart | 2 +- flare_flutter/lib/flare_controller.dart | 6 +- flare_flutter/lib/flare_controls.dart | 19 +- flare_flutter/pubspec.yaml | 2 +- 68 files changed, 870 insertions(+), 861 deletions(-) diff --git a/example/change_color/android/app/build.gradle b/example/change_color/android/app/build.gradle index 8898f0c..d91dc73 100644 --- a/example/change_color/android/app/build.gradle +++ b/example/change_color/android/app/build.gradle @@ -25,7 +25,7 @@ apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 27 + compileSdkVersion 28 lintOptions { disable 'InvalidPackage' diff --git a/example/change_color/android/gradle.properties b/example/change_color/android/gradle.properties index 8bd86f6..7be3d8b 100644 --- a/example/change_color/android/gradle.properties +++ b/example/change_color/android/gradle.properties @@ -1 +1,2 @@ org.gradle.jvmargs=-Xmx1536M +android.enableR8=true diff --git a/example/change_color/ios/Runner.xcodeproj/project.pbxproj b/example/change_color/ios/Runner.xcodeproj/project.pbxproj index 21912b0..d7a8fb3 100644 --- a/example/change_color/ios/Runner.xcodeproj/project.pbxproj +++ b/example/change_color/ios/Runner.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -40,7 +39,6 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -73,7 +71,6 @@ 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( - 2D5378251FAA1A9400D5DBA9 /* flutter_assets */, 3B80C3931E831B6300D905FE /* App.framework */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 9740EEBA1CF902C7004384FC /* Flutter.framework */, @@ -190,7 +187,6 @@ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/example/favorite/ios/Runner.xcodeproj/project.pbxproj b/example/favorite/ios/Runner.xcodeproj/project.pbxproj index 50d60b4..69666c2 100644 --- a/example/favorite/ios/Runner.xcodeproj/project.pbxproj +++ b/example/favorite/ios/Runner.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -40,7 +39,6 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -73,7 +71,6 @@ 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( - 2D5378251FAA1A9400D5DBA9 /* flutter_assets */, 3B80C3931E831B6300D905FE /* App.framework */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 9740EEBA1CF902C7004384FC /* Flutter.framework */, @@ -190,7 +187,6 @@ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/example/favorite/test/widget_test.dart b/example/favorite/test/widget_test.dart index e7b4c82..728bdcc 100644 --- a/example/favorite/test/widget_test.dart +++ b/example/favorite/test/widget_test.dart @@ -5,26 +5,6 @@ // gestures. You can also use WidgetTester to find child widgets in the widget // tree, read text, and verify that the values of widget properties are correct. -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:heart_demo/main.dart'; void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(MyApp()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); } diff --git a/example/penguin_dance/android/app/build.gradle b/example/penguin_dance/android/app/build.gradle index 3ebc742..869280f 100644 --- a/example/penguin_dance/android/app/build.gradle +++ b/example/penguin_dance/android/app/build.gradle @@ -25,7 +25,7 @@ apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 27 + compileSdkVersion 28 lintOptions { disable 'InvalidPackage' diff --git a/example/penguin_dance/android/gradle.properties b/example/penguin_dance/android/gradle.properties index 8bd86f6..7be3d8b 100644 --- a/example/penguin_dance/android/gradle.properties +++ b/example/penguin_dance/android/gradle.properties @@ -1 +1,2 @@ org.gradle.jvmargs=-Xmx1536M +android.enableR8=true diff --git a/example/penguin_dance/ios/Runner.xcodeproj/project.pbxproj b/example/penguin_dance/ios/Runner.xcodeproj/project.pbxproj index 5f752c4..e3e0401 100644 --- a/example/penguin_dance/ios/Runner.xcodeproj/project.pbxproj +++ b/example/penguin_dance/ios/Runner.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -40,7 +39,6 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -73,7 +71,6 @@ 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( - 2D5378251FAA1A9400D5DBA9 /* flutter_assets */, 3B80C3931E831B6300D905FE /* App.framework */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 9740EEBA1CF902C7004384FC /* Flutter.framework */, @@ -190,7 +187,6 @@ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/example/teddy/android/app/build.gradle b/example/teddy/android/app/build.gradle index da9bfe2..3bfafe6 100644 --- a/example/teddy/android/app/build.gradle +++ b/example/teddy/android/app/build.gradle @@ -25,7 +25,7 @@ apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 27 + compileSdkVersion 28 lintOptions { disable 'InvalidPackage' diff --git a/example/teddy/android/gradle.properties b/example/teddy/android/gradle.properties index 8bd86f6..7be3d8b 100644 --- a/example/teddy/android/gradle.properties +++ b/example/teddy/android/gradle.properties @@ -1 +1,2 @@ org.gradle.jvmargs=-Xmx1536M +android.enableR8=true diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 10ea2d8..da4b500 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.4.10] - 2019-10-08 13:38:26 + +- Fixing up various static analysis issues. + ## [1.4.9] - 2019-10-07 11:20:58 - Supporting Nodes inside of Shapes, effectively adding multiple transform spaces inside of a shape. diff --git a/flare_dart/analysis_options.yaml b/flare_dart/analysis_options.yaml index 2da0fe6..7f8d90e 100644 --- a/flare_dart/analysis_options.yaml +++ b/flare_dart/analysis_options.yaml @@ -2,6 +2,8 @@ analyzer: strong-mode: implicit-casts: false implicit-dynamic: false + errors: + unused_import: error linter: rules: @@ -85,7 +87,7 @@ linter: - prefer_is_empty - prefer_is_not_empty - prefer_iterable_whereType - - prefer_mixin + # - prefer_mixin - prefer_null_aware_operators - prefer_typing_uninitialized_variables - prefer_void_to_null diff --git a/flare_dart/lib/actor.dart b/flare_dart/lib/actor.dart index 929fdf2..98ca45a 100644 --- a/flare_dart/lib/actor.dart +++ b/flare_dart/lib/actor.dart @@ -121,8 +121,8 @@ abstract class Actor { if (F != 70 || L != 76 || A != 65 || R != 82 || E != 69) { Uint8List charCodes = data.buffer.asUint8List(); String stringData = String.fromCharCodes(charCodes); - var jsonActor = jsonDecode(stringData); - Map jsonObject = Map(); + dynamic jsonActor = jsonDecode(stringData); + Map jsonObject = {}; jsonObject["container"] = jsonActor; inputData = jsonObject; } @@ -131,13 +131,13 @@ abstract class Actor { _version = reader.readVersion(); StreamReader block; - while ((block = reader.readNextBlock(BlockTypesMap)) != null) { + while ((block = reader.readNextBlock(blockTypesMap)) != null) { switch (block.blockType) { - case BlockTypes.Artboards: + case BlockTypes.artboards: readArtboardsBlock(block); break; - case BlockTypes.Atlases: + case BlockTypes.atlases: List rawAtlases = await readAtlasesBlock(block, context); success = await loadAtlases(rawAtlases); break; @@ -154,12 +154,12 @@ abstract class Actor { for (int artboardIndex = 0, end = _artboards.length; artboardIndex < end; artboardIndex++) { - StreamReader artboardBlock = block.readNextBlock(BlockTypesMap); + StreamReader artboardBlock = block.readNextBlock(blockTypesMap); if (artboardBlock == null) { break; } switch (artboardBlock.blockType) { - case BlockTypes.ActorArtboard: + case BlockTypes.actorArtboard: { ActorArtboard artboard = makeArtboard(); artboard.read(artboardBlock); diff --git a/flare_dart/lib/actor_artboard.dart b/flare_dart/lib/actor_artboard.dart index 841884c..e7c3abb 100644 --- a/flare_dart/lib/actor_artboard.dart +++ b/flare_dart/lib/actor_artboard.dart @@ -36,7 +36,7 @@ import "math/vec2d.dart"; import "stream_reader.dart"; class ActorArtboard { - int _flags = ActorFlags.IsDrawOrderDirty; + int _flags = ActorFlags.isDrawOrderDirty; int _drawableNodeCount = 0; int _nodeCount = 0; int _dirtDepth = 0; @@ -69,14 +69,14 @@ class ActorArtboard { set overrideColor(Float32List value) { _overrideColor = value; for (final ActorDrawable drawable in _drawableNodes) { - addDirt(drawable, DirtyFlags.PaintDirty, true); + addDirt(drawable, DirtyFlags.paintDirty, true); } } set modulateOpacity(double value) { _modulateOpacity = value; for (final ActorDrawable drawable in _drawableNodes) { - addDirt(drawable, DirtyFlags.PaintDirty, true); + addDirt(drawable, DirtyFlags.paintDirty, true); } } @@ -119,7 +119,7 @@ class ActorArtboard { component.graphOrder = graphOrder++; component.dirtMask = 255; } - _flags |= ActorFlags.IsDirty; + _flags |= ActorFlags.isDirty; } bool addDirt(ActorComponent component, int value, bool recurse) { @@ -132,7 +132,7 @@ class ActorArtboard { int dirt = component.dirtMask | value; component.dirtMask = dirt; - _flags |= ActorFlags.IsDirty; + _flags |= ActorFlags.isDirty; component.onDirty(dirt); @@ -147,7 +147,7 @@ class ActorArtboard { } List dependents = component.dependents; if (dependents != null) { - for (ActorComponent d in dependents) { + for (final ActorComponent d in dependents) { addDirt(d, value, recurse); } } @@ -174,7 +174,7 @@ class ActorArtboard { } void markDrawOrderDirty() { - _flags |= ActorFlags.IsDrawOrderDirty; + _flags |= ActorFlags.isDrawOrderDirty; } ActorArtboard makeInstance() { @@ -267,12 +267,12 @@ class ActorArtboard { } void advance(double seconds) { - if ((_flags & ActorFlags.IsDirty) != 0) { + if ((_flags & ActorFlags.isDirty) != 0) { const int maxSteps = 100; int step = 0; int count = _dependencyOrder.length; - while ((_flags & ActorFlags.IsDirty) != 0 && step < maxSteps) { - _flags &= ~ActorFlags.IsDirty; + while ((_flags & ActorFlags.isDirty) != 0 && step < maxSteps) { + _flags &= ~ActorFlags.isDirty; // Track dirt depth here so that if something else marks // dirty, we restart. for (int i = 0; i < count; i++) { @@ -292,8 +292,8 @@ class ActorArtboard { } } - if ((_flags & ActorFlags.IsDrawOrderDirty) != 0) { - _flags &= ~ActorFlags.IsDrawOrderDirty; + if ((_flags & ActorFlags.isDrawOrderDirty) != 0) { + _flags &= ~ActorFlags.isDrawOrderDirty; if (_drawableNodes != null) { _drawableNodes.sort((a, b) => a.drawOrder.compareTo(b.drawOrder)); @@ -319,12 +319,12 @@ class ActorArtboard { _color[3] = color[3]; StreamReader block; - while ((block = reader.readNextBlock(BlockTypesMap)) != null) { + while ((block = reader.readNextBlock(blockTypesMap)) != null) { switch (block.blockType) { - case BlockTypes.Components: + case BlockTypes.components: readComponentsBlock(block); break; - case BlockTypes.Animations: + case BlockTypes.animations: readAnimationsBlock(block); break; } @@ -341,21 +341,21 @@ class ActorArtboard { for (int componentIndex = 1, end = componentCount + 1; componentIndex < end; componentIndex++) { - StreamReader nodeBlock = block.readNextBlock(BlockTypesMap); + StreamReader nodeBlock = block.readNextBlock(blockTypesMap); if (nodeBlock == null) { break; } ActorComponent component; switch (nodeBlock.blockType) { - case BlockTypes.ActorNode: + case BlockTypes.actorNode: component = ActorNode.read(this, nodeBlock, null); break; - case BlockTypes.ActorBone: + case BlockTypes.actorBone: component = ActorBone.read(this, nodeBlock, null); break; - case BlockTypes.ActorRootBone: + case BlockTypes.actorRootBone: component = ActorRootBone.read(this, nodeBlock, null); break; @@ -368,152 +368,152 @@ class ActorArtboard { // .sequenceFrames.last.atlasIndex; // Last atlasIndex is the biggest // break; - case BlockTypes.ActorImage: + case BlockTypes.actorImage: component = ActorImage.read(this, nodeBlock, actor.makeImageNode()); if ((component as ActorImage).textureIndex > actor.maxTextureIndex) { actor.maxTextureIndex = (component as ActorImage).textureIndex; } break; - case BlockTypes.ActorIKTarget: + case BlockTypes.actorIKTarget: //component = ActorIKTarget.Read(this, nodeBlock); break; - case BlockTypes.ActorEvent: + case BlockTypes.actorEvent: component = ActorEvent.read(this, nodeBlock, null); break; - case BlockTypes.CustomIntProperty: + case BlockTypes.customIntProperty: //component = CustomIntProperty.Read(this, nodeBlock); break; - case BlockTypes.CustomFloatProperty: + case BlockTypes.customFloatProperty: //component = CustomFloatProperty.Read(this, nodeBlock); break; - case BlockTypes.CustomStringProperty: + case BlockTypes.customStringProperty: //component = CustomStringProperty.Read(this, nodeBlock); break; - case BlockTypes.CustomBooleanProperty: + case BlockTypes.customBooleanProperty: //component = CustomBooleanProperty.Read(this, nodeBlock); break; - case BlockTypes.ActorColliderRectangle: + case BlockTypes.actorColliderRectangle: //component = ActorColliderRectangle.Read(this, nodeBlock); break; - case BlockTypes.ActorColliderTriangle: + case BlockTypes.actorColliderTriangle: //component = ActorColliderTriangle.Read(this, nodeBlock); break; - case BlockTypes.ActorColliderCircle: + case BlockTypes.actorColliderCircle: //component = ActorColliderCircle.Read(this, nodeBlock); break; - case BlockTypes.ActorColliderPolygon: + case BlockTypes.actorColliderPolygon: //component = ActorColliderPolygon.Read(this, nodeBlock); break; - case BlockTypes.ActorColliderLine: + case BlockTypes.actorColliderLine: //component = ActorColliderLine.Read(this, nodeBlock); break; - case BlockTypes.ActorNodeSolo: + case BlockTypes.actorNodeSolo: component = ActorNodeSolo.read(this, nodeBlock, null); break; - case BlockTypes.ActorJellyBone: + case BlockTypes.actorJellyBone: component = ActorJellyBone.read(this, nodeBlock, null); break; - case BlockTypes.JellyComponent: + case BlockTypes.jellyComponent: component = JellyComponent.read(this, nodeBlock, null); break; - case BlockTypes.ActorIKConstraint: + case BlockTypes.actorIKConstraint: component = ActorIKConstraint.read(this, nodeBlock, null); break; - case BlockTypes.ActorDistanceConstraint: + case BlockTypes.actorDistanceConstraint: component = ActorDistanceConstraint.read(this, nodeBlock, null); break; - case BlockTypes.ActorTranslationConstraint: + case BlockTypes.actorTranslationConstraint: component = ActorTranslationConstraint.read(this, nodeBlock, null); break; - case BlockTypes.ActorScaleConstraint: + case BlockTypes.actorScaleConstraint: component = ActorScaleConstraint.read(this, nodeBlock, null); break; - case BlockTypes.ActorRotationConstraint: + case BlockTypes.actorRotationConstraint: component = ActorRotationConstraint.read(this, nodeBlock, null); break; - case BlockTypes.ActorTransformConstraint: + case BlockTypes.actorTransformConstraint: component = ActorTransformConstraint.read(this, nodeBlock, null); break; - case BlockTypes.ActorShape: + case BlockTypes.actorShape: component = ActorShape.read(this, nodeBlock, actor.makeShapeNode(null)); break; - case BlockTypes.ActorPath: + case BlockTypes.actorPath: component = ActorPath.read(this, nodeBlock, actor.makePathNode()); break; - case BlockTypes.ColorFill: + case BlockTypes.colorFill: component = ColorFill.read(this, nodeBlock, actor.makeColorFill()); break; - case BlockTypes.ColorStroke: + case BlockTypes.colorStroke: component = ColorStroke.read(this, nodeBlock, actor.makeColorStroke()); break; - case BlockTypes.GradientFill: + case BlockTypes.gradientFill: component = GradientFill.read(this, nodeBlock, actor.makeGradientFill()); break; - case BlockTypes.GradientStroke: + case BlockTypes.gradientStroke: component = GradientStroke.read(this, nodeBlock, actor.makeGradientStroke()); break; - case BlockTypes.RadialGradientFill: + case BlockTypes.radialGradientFill: component = RadialGradientFill.read(this, nodeBlock, actor.makeRadialFill()); break; - case BlockTypes.RadialGradientStroke: + case BlockTypes.radialGradientStroke: component = RadialGradientStroke.read( this, nodeBlock, actor.makeRadialStroke()); break; - case BlockTypes.ActorEllipse: + case BlockTypes.actorEllipse: component = ActorEllipse.read(this, nodeBlock, actor.makeEllipse()); break; - case BlockTypes.ActorRectangle: + case BlockTypes.actorRectangle: component = ActorRectangle.read(this, nodeBlock, actor.makeRectangle()); break; - case BlockTypes.ActorTriangle: + case BlockTypes.actorTriangle: component = ActorTriangle.read(this, nodeBlock, actor.makeTriangle()); break; - case BlockTypes.ActorStar: + case BlockTypes.actorStar: component = ActorStar.read(this, nodeBlock, actor.makeStar()); break; - case BlockTypes.ActorPolygon: + case BlockTypes.actorPolygon: component = ActorPolygon.read(this, nodeBlock, actor.makePolygon()); break; - case BlockTypes.ActorSkin: + case BlockTypes.actorSkin: component = ActorComponent.read(this, nodeBlock, ActorSkin()); break; } @@ -582,9 +582,9 @@ class ActorArtboard { StreamReader animationBlock; int animationIndex = 0; - while ((animationBlock = block.readNextBlock(BlockTypesMap)) != null) { + while ((animationBlock = block.readNextBlock(blockTypesMap)) != null) { switch (animationBlock.blockType) { - case BlockTypes.Animation: + case BlockTypes.animation: ActorAnimation anim = ActorAnimation.read(animationBlock, _components); _animations[animationIndex++] = anim; @@ -594,8 +594,8 @@ class ActorArtboard { } AABB artboardAABB() { - double minX = -_origin[0] * width; - double minY = -_origin[1] * height; + double minX = -1 * _origin[0] * width; + double minY = -1 * _origin[1] * height; return AABB.fromValues(minX, minY, minX + _width, minY + height); } diff --git a/flare_dart/lib/actor_axis_constraint.dart b/flare_dart/lib/actor_axis_constraint.dart index 54b9606..a4266b3 100644 --- a/flare_dart/lib/actor_axis_constraint.dart +++ b/flare_dart/lib/actor_axis_constraint.dart @@ -1,7 +1,7 @@ import "actor_artboard.dart"; import "actor_targeted_constraint.dart"; -import "transform_space.dart"; import "stream_reader.dart"; +import "transform_space.dart"; abstract class ActorAxisConstraint extends ActorTargetedConstraint { bool _copyX = false; @@ -19,9 +19,9 @@ abstract class ActorAxisConstraint extends ActorTargetedConstraint { double _minY = 0.0; double _maxY = 0.0; - int _sourceSpace = TransformSpace.World; - int _destSpace = TransformSpace.World; - int _minMaxSpace = TransformSpace.World; + int _sourceSpace = TransformSpace.world; + int _destSpace = TransformSpace.world; + int _minMaxSpace = TransformSpace.world; ActorAxisConstraint() : super(); @@ -91,24 +91,24 @@ abstract class ActorAxisConstraint extends ActorTargetedConstraint { } @override - onDirty(int dirt) { + void onDirty(int dirt) { markDirty(); } - get copyX => _copyX; - get copyY => _copyY; - get destSpace => _destSpace; - get enableMaxX => _enableMaxX; - get enableMaxY => _enableMaxY; - get enableMinX => _enableMinX; - get enableMinY => _enableMinY; - get maxX => _maxX; - get maxY => _maxY; - get minMaxSpace => _minMaxSpace; - get minX => _minX; - get minY => _minY; - get offset => _offset; - get scaleX => _scaleX; - get scaleY => _scaleY; - get sourceSpace => _sourceSpace; + bool get copyX => _copyX; + bool get copyY => _copyY; + int get destSpace => _destSpace; + bool get enableMaxX => _enableMaxX; + bool get enableMaxY => _enableMaxY; + bool get enableMinX => _enableMinX; + bool get enableMinY => _enableMinY; + double get maxX => _maxX; + double get maxY => _maxY; + int get minMaxSpace => _minMaxSpace; + double get minX => _minX; + double get minY => _minY; + bool get offset => _offset; + double get scaleX => _scaleX; + double get scaleY => _scaleY; + int get sourceSpace => _sourceSpace; } diff --git a/flare_dart/lib/actor_bone.dart b/flare_dart/lib/actor_bone.dart index 9b2a737..9895bfa 100644 --- a/flare_dart/lib/actor_bone.dart +++ b/flare_dart/lib/actor_bone.dart @@ -1,9 +1,9 @@ -import "stream_reader.dart"; import "actor_artboard.dart"; import "actor_bone_base.dart"; import "actor_component.dart"; import "actor_node.dart"; import "jelly_component.dart"; +import "stream_reader.dart"; class ActorBone extends ActorBoneBase { ActorBone _firstBone; @@ -13,18 +13,20 @@ class ActorBone extends ActorBoneBase { return _firstBone; } + @override ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorBone instanceNode = ActorBone(); instanceNode.copyBoneBase(this, resetArtboard); return instanceNode; } + @override void completeResolve() { super.completeResolve(); if (children == null) { return; } - for (ActorNode node in children) { + for (final ActorNode node in children) { if (node is ActorBone) { _firstBone = node; return; @@ -34,9 +36,7 @@ class ActorBone extends ActorBoneBase { static ActorBone read( ActorArtboard artboard, StreamReader reader, ActorBone node) { - if (node == null) { - node = ActorBone(); - } + node ??= ActorBone(); ActorBoneBase.read(artboard, reader, node); return node; } diff --git a/flare_dart/lib/actor_bone_base.dart b/flare_dart/lib/actor_bone_base.dart index 815ea37..e12fb25 100644 --- a/flare_dart/lib/actor_bone_base.dart +++ b/flare_dart/lib/actor_bone_base.dart @@ -1,8 +1,8 @@ -import "stream_reader.dart"; import "actor_artboard.dart"; import "actor_node.dart"; -import "math/vec2d.dart"; import "math/mat2d.dart"; +import "math/vec2d.dart"; +import "stream_reader.dart"; class ActorBoneBase extends ActorNode { double _length; @@ -19,7 +19,7 @@ class ActorBoneBase extends ActorNode { if (children == null) { return; } - for (ActorNode node in children) { + for (final ActorNode node in children) { if (node is ActorBoneBase) { node.x = value; } diff --git a/flare_dart/lib/actor_color.dart b/flare_dart/lib/actor_color.dart index d904d92..e962712 100644 --- a/flare_dart/lib/actor_color.dart +++ b/flare_dart/lib/actor_color.dart @@ -10,23 +10,23 @@ import 'math/mat2d.dart'; import "math/vec2d.dart"; import "stream_reader.dart"; -enum FillRule { EvenOdd, NonZero } -enum StrokeCap { Butt, Round, Square } -enum StrokeJoin { Miter, Round, Bevel } -enum TrimPath { Off, Sequential, Synced } +enum FillRule { evenOdd, nonZero } +enum StrokeCap { butt, round, square } +enum StrokeJoin { miter, round, bevel } +enum TrimPath { off, sequential, synced } final HashMap fillRuleLookup = HashMap.fromIterables( - [0, 1], [FillRule.EvenOdd, FillRule.NonZero]); + [0, 1], [FillRule.evenOdd, FillRule.nonZero]); final HashMap strokeCapLookup = HashMap.fromIterables( - [0, 1, 2], [StrokeCap.Butt, StrokeCap.Round, StrokeCap.Square]); + [0, 1, 2], [StrokeCap.butt, StrokeCap.round, StrokeCap.square]); final HashMap strokeJoinLookup = HashMap.fromIterables( - [0, 1, 2], [StrokeJoin.Miter, StrokeJoin.Round, StrokeJoin.Bevel]); + [0, 1, 2], [StrokeJoin.miter, StrokeJoin.round, StrokeJoin.bevel]); final HashMap trimPathLookup = HashMap.fromIterables( - [0, 1, 2], [TrimPath.Off, TrimPath.Sequential, TrimPath.Synced]); + [0, 1, 2], [TrimPath.off, TrimPath.sequential, TrimPath.synced]); abstract class ActorPaint extends ActorComponent { double _opacity = 1.0; @@ -60,7 +60,7 @@ abstract class ActorPaint extends ActorComponent { ActorShape get shape => parent as ActorShape; void markPaintDirty() { - artboard.addDirt(this, DirtyFlags.PaintDirty, false); + artboard.addDirt(this, DirtyFlags.paintDirty, false); } } @@ -111,7 +111,7 @@ abstract class ActorColor extends ActorPaint { } abstract class ActorFill { - FillRule _fillRule = FillRule.EvenOdd; + FillRule _fillRule = FillRule.evenOdd; FillRule get fillRule => _fillRule; static void read( @@ -137,15 +137,15 @@ abstract class ActorStroke { markPaintDirty(); } - StrokeCap _cap = StrokeCap.Butt; - StrokeJoin _join = StrokeJoin.Miter; + StrokeCap _cap = StrokeCap.butt; + StrokeJoin _join = StrokeJoin.miter; StrokeCap get cap => _cap; StrokeJoin get join => _join; - TrimPath _trim = TrimPath.Off; + TrimPath _trim = TrimPath.off; TrimPath get trim => _trim; - bool get isTrimmed => _trim != TrimPath.Off; + bool get isTrimmed => _trim != TrimPath.off; double _trimStart = 0.0; double get trimStart => _trimStart; @@ -188,7 +188,7 @@ abstract class ActorStroke { component._join = strokeJoinLookup[reader.readUint8("join")]; if (artboard.actor.version >= 20) { component._trim = - trimPathLookup[reader.readUint8("trim")] ?? TrimPath.Off; + trimPathLookup[reader.readUint8("trim")] ?? TrimPath.off; if (component.isTrimmed) { component._trimStart = reader.readFloat32("start"); component._trimEnd = reader.readFloat32("end"); diff --git a/flare_dart/lib/actor_component.dart b/flare_dart/lib/actor_component.dart index b3a5fa5..ae6543f 100644 --- a/flare_dart/lib/actor_component.dart +++ b/flare_dart/lib/actor_component.dart @@ -1,6 +1,6 @@ -import "stream_reader.dart"; import "actor_artboard.dart"; import "actor_node.dart"; +import "stream_reader.dart"; abstract class ActorComponent { String _name = "Unnamed"; @@ -12,11 +12,8 @@ abstract class ActorComponent { int dirtMask = 0; List dependents; - ActorComponent.withArtboard(ActorArtboard artboard) { - this.artboard = artboard; - } - - ActorComponent() {} + ActorComponent(); + ActorComponent.withArtboard(this.artboard); String get name { return _name; diff --git a/flare_dart/lib/actor_constraint.dart b/flare_dart/lib/actor_constraint.dart index 3389680..9282c79 100644 --- a/flare_dart/lib/actor_constraint.dart +++ b/flare_dart/lib/actor_constraint.dart @@ -1,6 +1,6 @@ +import "actor_artboard.dart"; import "actor_component.dart"; import "actor_node.dart"; -import "actor_artboard.dart"; import "stream_reader.dart"; abstract class ActorConstraint extends ActorComponent { @@ -19,6 +19,7 @@ abstract class ActorConstraint extends ActorComponent { markDirty(); } + @override void onDirty(int dirt) { markDirty(); } @@ -41,10 +42,12 @@ abstract class ActorConstraint extends ActorComponent { void constrain(ActorNode node); + @override void resolveComponentIndices(List components) { super.resolveComponentIndices(components); if (parent != null) { - // This works because nodes are exported in hierarchy order, so we are assured constraints get added in order as we resolve indices. + // This works because nodes are exported in hierarchy order, + // so we are assured constraints get added in order as we resolve indices. parent.addConstraint(this); } } diff --git a/flare_dart/lib/actor_distance_constraint.dart b/flare_dart/lib/actor_distance_constraint.dart index 34bf607..5ff91d5 100644 --- a/flare_dart/lib/actor_distance_constraint.dart +++ b/flare_dart/lib/actor_distance_constraint.dart @@ -1,27 +1,25 @@ import "actor_artboard.dart"; import "actor_node.dart"; import "actor_targeted_constraint.dart"; -import "stream_reader.dart"; -import "math/vec2d.dart"; import "math/mat2d.dart"; +import "math/vec2d.dart"; +import "stream_reader.dart"; class DistanceMode { - static const int Closer = 0; - static const int Further = 1; - static const int Exact = 2; + static const int closer = 0; + static const int further = 1; + static const int exact = 2; } class ActorDistanceConstraint extends ActorTargetedConstraint { double _distance = 100.0; - int _mode = DistanceMode.Closer; + int _mode = DistanceMode.closer; ActorDistanceConstraint() : super(); static ActorDistanceConstraint read(ActorArtboard artboard, StreamReader reader, ActorDistanceConstraint component) { - if (component == null) { - component = ActorDistanceConstraint(); - } + component ??= ActorDistanceConstraint(); ActorTargetedConstraint.read(artboard, reader, component); component._distance = reader.readFloat32("distance"); @@ -45,26 +43,26 @@ class ActorDistanceConstraint extends ActorTargetedConstraint { } @override - constrain(ActorNode node) { - ActorNode t = this.target; + void constrain(ActorNode node) { + ActorNode t = target as ActorNode; if (t == null) { return; } - ActorNode p = this.parent; + ActorNode p = parent; Vec2D targetTranslation = t.getWorldTranslation(Vec2D()); Vec2D ourTranslation = p.getWorldTranslation(Vec2D()); Vec2D toTarget = Vec2D.subtract(Vec2D(), ourTranslation, targetTranslation); double currentDistance = Vec2D.length(toTarget); switch (_mode) { - case DistanceMode.Closer: + case DistanceMode.closer: if (currentDistance < _distance) { return; } break; - case DistanceMode.Further: + case DistanceMode.further: if (currentDistance > _distance) { return; } @@ -85,23 +83,26 @@ class ActorDistanceConstraint extends ActorTargetedConstraint { world[5] = position[1]; } - void update(int dirt) {} - void completeResolve() {} - - get distance => _distance; - get mode => _mode; + double get distance => _distance; + int get mode => _mode; set distance(double d) { if (_distance != d) { _distance = d; - this.markDirty(); + markDirty(); } } set mode(int m) { if (_mode != m) { _mode = m; - this.markDirty(); + markDirty(); } } + + @override + void completeResolve() {} + + @override + void update(int dirt) {} } diff --git a/flare_dart/lib/actor_drawable.dart b/flare_dart/lib/actor_drawable.dart index 9f53d5e..fa8116e 100644 --- a/flare_dart/lib/actor_drawable.dart +++ b/flare_dart/lib/actor_drawable.dart @@ -2,10 +2,10 @@ import 'package:flare_dart/actor_artboard.dart'; import 'package:flare_dart/actor_shape.dart'; import 'package:flare_dart/stream_reader.dart'; -import "math/aabb.dart"; import "actor_node.dart"; +import "math/aabb.dart"; -enum BlendModes { Normal, Multiply, Screen, Additive } +enum BlendModes { normal, multiply, screen, additive } abstract class ActorDrawable extends ActorNode { List> _clipShapes; @@ -38,7 +38,11 @@ abstract class ActorDrawable extends ActorNode { ActorNode.read(artboard, reader, component); component.isHidden = !reader.readBool("isVisible"); - component.blendModeId = artboard.actor.version < 21 ? 3 : reader.readUint8("blendMode"); + if (artboard.actor.version < 21) { + component.blendModeId = 3; + } else { + component.blendModeId = reader.readUint8("blendMode"); + } component.drawOrder = reader.readUint16("drawOrder"); return component; @@ -55,12 +59,13 @@ abstract class ActorDrawable extends ActorNode { AABB computeAABB(); void initializeGraphics() {} + @override void completeResolve() { - _clipShapes = List>(); + _clipShapes = >[]; List> clippers = allClips; - for (List clips in clippers) { - List shapes = List(); - for (ActorClip clip in clips) { + for (final List clips in clippers) { + List shapes = []; + for (final ActorClip clip in clips) { clip.node.all((ActorNode node) { if (node is ActorShape) { shapes.add(node); @@ -68,7 +73,7 @@ abstract class ActorDrawable extends ActorNode { return true; }); } - if (shapes.length > 0) { + if (shapes.isNotEmpty) { _clipShapes.add(shapes); } } diff --git a/flare_dart/lib/actor_ellipse.dart b/flare_dart/lib/actor_ellipse.dart index 5550f0f..84ce985 100644 --- a/flare_dart/lib/actor_ellipse.dart +++ b/flare_dart/lib/actor_ellipse.dart @@ -1,14 +1,15 @@ -import "actor_component.dart"; import "actor_artboard.dart"; +import "actor_component.dart"; import "actor_node.dart"; -import "math/vec2d.dart"; -import "stream_reader.dart"; import "actor_path.dart"; +import "math/vec2d.dart"; import "path_point.dart"; +import "stream_reader.dart"; -const double CircleConstant = 0.55; +const double circleConstant = 0.55; class ActorEllipse extends ActorProceduralPath { + @override ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorEllipse instance = ActorEllipse(); instance.copyPath(this, resetArtboard); @@ -20,9 +21,7 @@ class ActorEllipse extends ActorProceduralPath { static ActorEllipse read( ActorArtboard artboard, StreamReader reader, ActorEllipse component) { - if (component == null) { - component = ActorEllipse(); - } + component ??= ActorEllipse(); ActorNode.read(artboard, reader, component); @@ -36,20 +35,20 @@ class ActorEllipse extends ActorProceduralPath { List _ellipsePathPoints = []; _ellipsePathPoints.add(CubicPathPoint.fromValues( Vec2D.fromValues(0.0, -radiusY), - Vec2D.fromValues(-radiusX * CircleConstant, -radiusY), - Vec2D.fromValues(radiusX * CircleConstant, -radiusY))); + Vec2D.fromValues(-radiusX * circleConstant, -radiusY), + Vec2D.fromValues(radiusX * circleConstant, -radiusY))); _ellipsePathPoints.add(CubicPathPoint.fromValues( Vec2D.fromValues(radiusX, 0.0), - Vec2D.fromValues(radiusX, CircleConstant * -radiusY), - Vec2D.fromValues(radiusX, CircleConstant * radiusY))); + Vec2D.fromValues(radiusX, circleConstant * -radiusY), + Vec2D.fromValues(radiusX, circleConstant * radiusY))); _ellipsePathPoints.add(CubicPathPoint.fromValues( Vec2D.fromValues(0.0, radiusY), - Vec2D.fromValues(radiusX * CircleConstant, radiusY), - Vec2D.fromValues(-radiusX * CircleConstant, radiusY))); + Vec2D.fromValues(radiusX * circleConstant, radiusY), + Vec2D.fromValues(-radiusX * circleConstant, radiusY))); _ellipsePathPoints.add(CubicPathPoint.fromValues( Vec2D.fromValues(-radiusX, 0.0), - Vec2D.fromValues(-radiusX, radiusY * CircleConstant), - Vec2D.fromValues(-radiusX, -radiusY * CircleConstant))); + Vec2D.fromValues(-radiusX, radiusY * circleConstant), + Vec2D.fromValues(-radiusX, -radiusY * circleConstant))); return _ellipsePathPoints; } @@ -57,9 +56,9 @@ class ActorEllipse extends ActorProceduralPath { bool get isClosed => true; bool get doesDraw { - return !this.renderCollapsed; + return !renderCollapsed; } - double get radiusX => this.width / 2; - double get radiusY => this.height / 2; + double get radiusX => width / 2; + double get radiusY => height / 2; } diff --git a/flare_dart/lib/actor_event.dart b/flare_dart/lib/actor_event.dart index 755cd20..857e433 100644 --- a/flare_dart/lib/actor_event.dart +++ b/flare_dart/lib/actor_event.dart @@ -5,9 +5,7 @@ import "stream_reader.dart"; class ActorEvent extends ActorComponent { static ActorComponent read( ActorArtboard artboard, StreamReader reader, ActorEvent component) { - if (component == null) { - component = ActorEvent(); - } + component ??= ActorEvent(); ActorComponent.read(artboard, reader, component); diff --git a/flare_dart/lib/actor_flags.dart b/flare_dart/lib/actor_flags.dart index 448473b..d990261 100644 --- a/flare_dart/lib/actor_flags.dart +++ b/flare_dart/lib/actor_flags.dart @@ -1,10 +1,10 @@ class ActorFlags { - static const int IsDrawOrderDirty = 1 << 0; - static const int IsDirty = 1 << 1; + static const int isDrawOrderDirty = 1 << 0; + static const int isDirty = 1 << 1; } class DirtyFlags { - static const int TransformDirty = 1 << 0; - static const int WorldTransformDirty = 1 << 1; - static const int PaintDirty = 1 << 2; + static const int transformDirty = 1 << 0; + static const int worldTransformDirty = 1 << 1; + static const int paintDirty = 1 << 2; } \ No newline at end of file diff --git a/flare_dart/lib/actor_ik_constraint.dart b/flare_dart/lib/actor_ik_constraint.dart index 513e3f5..f740ef1 100644 --- a/flare_dart/lib/actor_ik_constraint.dart +++ b/flare_dart/lib/actor_ik_constraint.dart @@ -1,13 +1,13 @@ -import "actor_targeted_constraint.dart"; -import "actor_node.dart"; +import "dart:math"; +import "actor_artboard.dart"; import "actor_bone.dart"; import "actor_component.dart"; -import "actor_artboard.dart"; -import "stream_reader.dart"; -import "math/transform_components.dart"; +import "actor_node.dart"; +import "actor_targeted_constraint.dart"; import "math/mat2d.dart"; +import "math/transform_components.dart"; import "math/vec2d.dart"; -import "dart:math"; +import "stream_reader.dart"; class InfluencedBone { int boneIdx; @@ -30,14 +30,15 @@ class ActorIKConstraint extends ActorTargetedConstraint { List _fkChain; List _boneData; + @override void resolveComponentIndices(List components) { super.resolveComponentIndices(components); if (_influencedBones != null) { - for (InfluencedBone influenced in _influencedBones) { + for (final InfluencedBone influenced in _influencedBones) { influenced.bone = components[influenced.boneIdx] as ActorBone; - // Mark peer constraints, N.B. that we're not adding it to the parent bone - // as we're constraining it anyway. + // Mark peer constraints, N.B. that we're not adding it to the + // parent bone as we're constraining it anyway. if (influenced.bone != parent) { influenced.bone.addPeerConstraint(this); } @@ -45,8 +46,9 @@ class ActorIKConstraint extends ActorTargetedConstraint { } } + @override void completeResolve() { - if (_influencedBones == null || _influencedBones.length == 0) { + if (_influencedBones == null || _influencedBones.isEmpty) { return; } @@ -65,7 +67,7 @@ class ActorIKConstraint extends ActorTargetedConstraint { int idx = count - 1; while (end != null && end != start.parent) { BoneChain bc = BoneChain(); - bc.bone = end; + bc.bone = end as ActorBone; bc.angle = 0.0; bc.included = allIn; bc.transformComponents = TransformComponents(); @@ -76,8 +78,8 @@ class ActorIKConstraint extends ActorTargetedConstraint { } // Make sure bones are good. - _boneData = List(); - for (InfluencedBone bone in _influencedBones) { + _boneData = []; + for (final InfluencedBone bone in _influencedBones) { BoneChain item = _fkChain.firstWhere( (chainItem) => chainItem.bone == bone.bone, orElse: () => null); @@ -97,7 +99,7 @@ class ActorIKConstraint extends ActorTargetedConstraint { } // Finally mark dependencies. - for (InfluencedBone bone in _influencedBones) { + for (final InfluencedBone bone in _influencedBones) { // Don't mark dependency on parent as ActorComponent already does this. if (bone.bone == parent) { continue; @@ -110,15 +112,16 @@ class ActorIKConstraint extends ActorTargetedConstraint { artboard.addDependency(this, target); } - // All the first level children of the influenced bones should depend on the final bone. + // All the first level children of the influenced bones should + // depend on the final bone. BoneChain tip = _fkChain[_fkChain.length - 1]; - for (BoneChain fk in _fkChain) { + for (final BoneChain fk in _fkChain) { if (fk == tip) { continue; } ActorBone bone = fk.bone; - for (ActorNode node in bone.children) { + for (final ActorNode node in bone.children) { BoneChain item = _fkChain.firstWhere( (chainItem) => chainItem.bone == node, orElse: () => null); @@ -133,9 +136,7 @@ class ActorIKConstraint extends ActorTargetedConstraint { static ActorIKConstraint read(ActorArtboard artboard, StreamReader reader, ActorIKConstraint component) { - if (component == null) { - component = ActorIKConstraint(); - } + component ??= ActorIKConstraint(); ActorTargetedConstraint.read(artboard, reader, component); component._invertDirection = reader.readBool("isInverted"); @@ -147,7 +148,8 @@ class ActorIKConstraint extends ActorTargetedConstraint { for (int i = 0; i < numInfluencedBones; i++) { InfluencedBone ib = InfluencedBone(); ib.boneIdx = reader.readId( - ""); // No label here, we're just clearing the elements from the array. + // No label here, we're just clearing the elements from the array. + ""); component._influencedBones[i] = ib; } } @@ -155,20 +157,21 @@ class ActorIKConstraint extends ActorTargetedConstraint { return component; } + @override void constrain(ActorNode node) { - ActorNode target = this.target; + ActorNode target = this.target as ActorNode; if (target == null) { return; } Vec2D worldTargetTranslation = Vec2D(); target.getWorldTranslation(worldTargetTranslation); - if (_influencedBones.length == 0) { + if (_influencedBones.isEmpty) { return; } // Decompose the chain. - for (BoneChain item in _fkChain) { + for (final BoneChain item in _fkChain) { ActorBone bone = item.bone; Mat2D parentWorld = bone.parent.worldTransform; Mat2D.invert(item.parentWorldInverse, parentWorld); @@ -196,7 +199,7 @@ class ActorIKConstraint extends ActorTargetedConstraint { // At the end, mix the FK angle with the IK angle by strength if (strength != 1.0) { - for (BoneChain fk in _fkChain) { + for (final BoneChain fk in _fkChain) { if (!fk.included) { ActorBone bone = fk.bone; Mat2D.multiply( @@ -274,7 +277,7 @@ class ActorIKConstraint extends ActorTargetedConstraint { Vec2D pA = b1.getWorldTranslation(Vec2D()); Vec2D pC = firstChild.bone.getWorldTranslation(Vec2D()); Vec2D pB = b2.getTipWorldTranslation(Vec2D()); - ; + Vec2D pBT = Vec2D.clone(worldTargetTranslation); pA = Vec2D.transformMat2D(pA, pA, iworld); @@ -337,6 +340,7 @@ class ActorIKConstraint extends ActorTargetedConstraint { firstChild.angle = r2; } + @override ActorComponent makeInstance(ActorArtboard artboard) { ActorIKConstraint instance = ActorIKConstraint(); instance.copyIKConstraint(this, artboard); @@ -357,5 +361,6 @@ class ActorIKConstraint extends ActorTargetedConstraint { } } + @override void update(int dirt) {} } diff --git a/flare_dart/lib/actor_image.dart b/flare_dart/lib/actor_image.dart index 2d00985..9a96446 100644 --- a/flare_dart/lib/actor_image.dart +++ b/flare_dart/lib/actor_image.dart @@ -1,12 +1,12 @@ import 'dart:typed_data'; import 'package:flare_dart/actor_skinnable.dart'; -import "stream_reader.dart"; -import "math/mat2d.dart"; import "actor_artboard.dart"; import "actor_component.dart"; import "actor_drawable.dart"; import "math/aabb.dart"; +import "math/mat2d.dart"; +import "stream_reader.dart"; class SequenceFrame { final int _atlasIndex; @@ -23,9 +23,6 @@ class SequenceFrame { } class ActorImage extends ActorDrawable with ActorSkinnable { - @override - int drawIndex; - @override int drawOrder; @@ -130,9 +127,7 @@ class ActorImage extends ActorDrawable with ActorSkinnable { static ActorImage read( ActorArtboard artboard, StreamReader reader, ActorImage node) { - if (node == null) { - node = ActorImage(); - } + node ??= ActorImage(); ActorDrawable.read(artboard, reader, node); ActorSkinnable.read(artboard, reader, node); @@ -200,11 +195,13 @@ class ActorImage extends ActorDrawable with ActorSkinnable { // return node; // } + @override void resolveComponentIndices(List components) { super.resolveComponentIndices(components); resolveSkinnable(components); } + @override ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorImage instanceNode = resetArtboard.actor.makeImageNode(); instanceNode.copyImage(this, resetArtboard); diff --git a/flare_dart/lib/actor_jelly_bone.dart b/flare_dart/lib/actor_jelly_bone.dart index ab8ccd8..648bf54 100644 --- a/flare_dart/lib/actor_jelly_bone.dart +++ b/flare_dart/lib/actor_jelly_bone.dart @@ -1,9 +1,10 @@ -import "stream_reader.dart"; import "actor_artboard.dart"; import "actor_bone_base.dart"; import "actor_component.dart"; +import "stream_reader.dart"; class ActorJellyBone extends ActorBoneBase { + @override ActorComponent makeInstance(ActorArtboard artboard) { ActorJellyBone instanceNode = ActorJellyBone(); instanceNode.copyBoneBase(this, artboard); @@ -12,12 +13,12 @@ class ActorJellyBone extends ActorBoneBase { static ActorJellyBone read( ActorArtboard artboard, StreamReader reader, ActorJellyBone node) { - if (node == null) { - node = ActorJellyBone(); - } + node ??= ActorJellyBone(); - // The Jelly Bone has a specialized read that doesn't go down the typical node path, this is because majority of the transform properties - // of the Jelly Bone are controlled by the Jelly Controller and are unnecessary for serialization. + // The Jelly Bone has a specialized read that doesn't go down the typical + // node path, this is because majority of the transform properties + // of the Jelly Bone are controlled by the Jelly Controller and are + // unnecessary for serialization. ActorComponent.read(artboard, reader, node); node.opacity = reader.readFloat32("opacity"); node.collapsedVisibility = reader.readBool("isCollapsed"); diff --git a/flare_dart/lib/actor_node.dart b/flare_dart/lib/actor_node.dart index 7e81097..ab5f6d8 100644 --- a/flare_dart/lib/actor_node.dart +++ b/flare_dart/lib/actor_node.dart @@ -1,10 +1,10 @@ -import "stream_reader.dart"; import "actor_artboard.dart"; -import "math/mat2d.dart"; -import "math/vec2d.dart"; import "actor_component.dart"; import "actor_constraint.dart"; import "actor_flags.dart"; +import "math/mat2d.dart"; +import "math/vec2d.dart"; +import "stream_reader.dart"; typedef bool NodeWalkCallback(ActorNode node); @@ -12,9 +12,7 @@ class ActorClip { int clipIdx; ActorNode node; - ActorClip(int idx) { - clipIdx = idx; - } + ActorClip(this.clipIdx); } class ActorNode extends ActorComponent { @@ -38,8 +36,8 @@ class ActorNode extends ActorComponent { List _constraints; List _peerConstraints; - static const int TransformDirty = DirtyFlags.TransformDirty; - static const int WorldTransformDirty = DirtyFlags.WorldTransformDirty; + static const int transformDirty = DirtyFlags.transformDirty; + static const int worldTransformDirty = DirtyFlags.worldTransformDirty; ActorNode(); ActorNode.withArtboard(ActorArtboard artboard) : super.withArtboard(artboard); @@ -70,7 +68,9 @@ class ActorNode extends ActorComponent { return _worldTransform; } - // N.B. this should only be done if you really know what you're doing. Generally you want to manipulate the local translation, rotation, and scale of a Node. + // N.B. this should only be done if you really know what you're doing. + // Generally you want to manipulate the local translation, rotation, + // and scale of a Node. set worldTransform(Mat2D value) { Mat2D.copy(_worldTransform, value); } @@ -177,7 +177,7 @@ class ActorNode extends ActorComponent { List> get allClips { // Find clips. - List> all = List>(); + List> all = >[]; ActorNode clipSearch = this; while (clipSearch != null) { if (clipSearch.clips != null) { @@ -194,10 +194,10 @@ class ActorNode extends ActorComponent { // Still loading? return; } - if (!artboard.addDirt(this, TransformDirty, false)) { + if (!artboard.addDirt(this, transformDirty, false)) { return; } - artboard.addDirt(this, WorldTransformDirty, true); + artboard.addDirt(this, worldTransformDirty, true); } void updateTransform() { @@ -229,9 +229,7 @@ class ActorNode extends ActorComponent { static ActorNode read( ActorArtboard artboard, StreamReader reader, ActorNode node) { - if (node == null) { - node = ActorNode(); - } + node ??= ActorNode(); ActorComponent.read(artboard, reader, node); Vec2D.copyFromList( node._translation, reader.readFloat32Array(2, "translation")); @@ -257,9 +255,7 @@ class ActorNode extends ActorComponent { node.parent._children.remove(node); } node.parent = this; - if (_children == null) { - _children = List(); - } + _children ??= []; _children.add(node); } @@ -267,6 +263,7 @@ class ActorNode extends ActorComponent { return _children; } + @override ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorNode instanceNode = ActorNode(); instanceNode.copyNode(this, resetArtboard); @@ -294,12 +291,11 @@ class ActorNode extends ActorComponent { } } + @override void onDirty(int dirt) {} bool addConstraint(ActorConstraint constraint) { - if (_constraints == null) { - _constraints = List(); - } + _constraints ??= []; if (_constraints.contains(constraint)) { return false; } @@ -308,9 +304,7 @@ class ActorNode extends ActorComponent { } bool addPeerConstraint(ActorConstraint constraint) { - if (_peerConstraints == null) { - _peerConstraints = List(); - } + _peerConstraints ??= []; if (_peerConstraints.contains(constraint)) { return false; } @@ -326,14 +320,15 @@ class ActorNode extends ActorComponent { : _constraints + _peerConstraints) ?? []; + @override void update(int dirt) { - if ((dirt & TransformDirty) == TransformDirty) { + if ((dirt & transformDirty) == transformDirty) { updateTransform(); } - if ((dirt & WorldTransformDirty) == WorldTransformDirty) { + if ((dirt & worldTransformDirty) == worldTransformDirty) { updateWorldTransform(); if (_constraints != null) { - for (ActorConstraint constraint in _constraints) { + for (final ActorConstraint constraint in _constraints) { if (constraint.isEnabled) { constraint.constrain(this); } diff --git a/flare_dart/lib/actor_node_solo.dart b/flare_dart/lib/actor_node_solo.dart index ef33b51..da8ce52 100644 --- a/flare_dart/lib/actor_node_solo.dart +++ b/flare_dart/lib/actor_node_solo.dart @@ -1,33 +1,35 @@ +import "dart:math"; + import "actor_artboard.dart"; import "actor_component.dart"; import "actor_node.dart"; import "stream_reader.dart"; -import "dart:math"; class ActorNodeSolo extends ActorNode { int _activeChildIndex = 0; set activeChildIndex(int idx) { - if (idx != this._activeChildIndex) { - this.setActiveChildIndex(idx); + if (idx != _activeChildIndex) { + setActiveChildIndex(idx); } } int get activeChildIndex { - return this._activeChildIndex; + return _activeChildIndex; } void setActiveChildIndex(int idx) { - if (this.children != null) { - this._activeChildIndex = min(this.children.length, max(0, idx)); - for (int i = 0; i < this.children.length; i++) { - var child = this.children[i]; - bool cv = (i != (this._activeChildIndex - 1)); + if (children != null) { + _activeChildIndex = min(children.length, max(0, idx)); + for (int i = 0; i < children.length; i++) { + var child = children[i]; + bool cv = i != (_activeChildIndex - 1); child.collapsedVisibility = cv; // Setter } } } + @override ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorNodeSolo soloInstance = ActorNodeSolo(); soloInstance.copySolo(this, resetArtboard); @@ -41,17 +43,16 @@ class ActorNodeSolo extends ActorNode { static ActorNodeSolo read( ActorArtboard artboard, StreamReader reader, ActorNodeSolo node) { - if (node == null) { - node = ActorNodeSolo(); - } + node ??= ActorNodeSolo(); ActorNode.read(artboard, reader, node); node._activeChildIndex = reader.readUint32("activeChild"); return node; } + @override void completeResolve() { super.completeResolve(); - this.setActiveChildIndex(this.activeChildIndex); + setActiveChildIndex(activeChildIndex); } } diff --git a/flare_dart/lib/actor_path.dart b/flare_dart/lib/actor_path.dart index 44ed3ae..8c795ca 100644 --- a/flare_dart/lib/actor_path.dart +++ b/flare_dart/lib/actor_path.dart @@ -221,7 +221,7 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { @override Mat2D get pathTransform => isConnectedToBones ? null : worldTransform; - static const int VertexDeformDirty = 1 << 1; + static const int vertexDeformDirty = 1 << 1; @override List get points => _points; @@ -258,14 +258,14 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { return; } int length = points.fold(0, (int previous, PathPoint point) { - return previous + 2 + (point.pointType == PointType.Straight ? 1 : 4); + return previous + 2 + (point.pointType == PointType.straight ? 1 : 4); }); Float32List vertices = Float32List(length); int readIdx = 0; for (final PathPoint point in points) { vertices[readIdx++] = point.translation[0]; vertices[readIdx++] = point.translation[1]; - if (point.pointType == PointType.Straight) { + if (point.pointType == PointType.straight) { // radius vertices[readIdx++] = (point as StraightPathPoint).radius; } else { @@ -284,19 +284,19 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { if (artboard == null) { return; } - artboard.addDirt(this, VertexDeformDirty, false); + artboard.addDirt(this, vertexDeformDirty, false); } @override void update(int dirt) { if (vertexDeform != null && - (dirt & VertexDeformDirty) == VertexDeformDirty) { + (dirt & vertexDeformDirty) == vertexDeformDirty) { int readIdx = 0; for (final PathPoint point in _points) { point.translation[0] = vertexDeform[readIdx++]; point.translation[1] = vertexDeform[readIdx++]; switch (point.pointType) { - case PointType.Straight: + case PointType.straight: (point as StraightPathPoint).radius = vertexDeform[readIdx++]; break; @@ -332,7 +332,7 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { PathPoint point; PointType type = pointTypeLookup[reader.readUint8("pointType")]; switch (type) { - case PointType.Straight: + case PointType.straight: { point = StraightPathPoint(); break; @@ -356,6 +356,7 @@ class ActorPath extends ActorNode with ActorSkinnable, ActorBasePath { return component; } + @override ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorPath instanceEvent = ActorPath(); instanceEvent.copyPath(this, resetArtboard); diff --git a/flare_dart/lib/actor_polygon.dart b/flare_dart/lib/actor_polygon.dart index 06a312a..2cf1dc4 100644 --- a/flare_dart/lib/actor_polygon.dart +++ b/flare_dart/lib/actor_polygon.dart @@ -1,17 +1,19 @@ import "dart:math"; + import "actor_artboard.dart"; +import "actor_component.dart"; import "actor_node.dart"; -import "math/vec2d.dart"; -import "stream_reader.dart"; import "actor_path.dart"; +import "math/vec2d.dart"; import "path_point.dart"; -import "actor_component.dart"; +import "stream_reader.dart"; class ActorPolygon extends ActorProceduralPath { int sides = 5; @override void invalidatePath() {} + @override ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorPolygon instance = ActorPolygon(); instance.copyPolygon(this, resetArtboard); @@ -25,9 +27,7 @@ class ActorPolygon extends ActorProceduralPath { static ActorPolygon read( ActorArtboard artboard, StreamReader reader, ActorPolygon component) { - if (component == null) { - component = ActorPolygon(); - } + component ??= ActorPolygon(); ActorNode.read(artboard, reader, component); @@ -53,7 +53,7 @@ class ActorPolygon extends ActorProceduralPath { } bool get isClosed => true; - bool get doesDraw => !this.renderCollapsed; - double get radiusX => this.width / 2; - double get radiusY => this.height / 2; + bool get doesDraw => !renderCollapsed; + double get radiusX => width / 2; + double get radiusY => height / 2; } diff --git a/flare_dart/lib/actor_rectangle.dart b/flare_dart/lib/actor_rectangle.dart index 4a6a838..24f9d14 100644 --- a/flare_dart/lib/actor_rectangle.dart +++ b/flare_dart/lib/actor_rectangle.dart @@ -28,9 +28,7 @@ class ActorRectangle extends ActorProceduralPath { static ActorRectangle read( ActorArtboard artboard, StreamReader reader, ActorRectangle component) { - if (component == null) { - component = ActorRectangle(); - } + component ??= ActorRectangle(); ActorNode.read(artboard, reader, component); diff --git a/flare_dart/lib/actor_root_bone.dart b/flare_dart/lib/actor_root_bone.dart index a244646..c47f6cb 100644 --- a/flare_dart/lib/actor_root_bone.dart +++ b/flare_dart/lib/actor_root_bone.dart @@ -1,8 +1,8 @@ -import "stream_reader.dart"; import "actor_artboard.dart"; -import "actor_node.dart"; import "actor_bone.dart"; import "actor_component.dart"; +import "actor_node.dart"; +import "stream_reader.dart"; class ActorRootBone extends ActorNode { ActorBone _firstBone; @@ -11,12 +11,13 @@ class ActorRootBone extends ActorNode { return _firstBone; } + @override void completeResolve() { super.completeResolve(); if (children == null) { return; } - for (ActorNode node in children) { + for (final ActorNode node in children) { if (node is ActorBone) { _firstBone = node; return; @@ -24,6 +25,7 @@ class ActorRootBone extends ActorNode { } } + @override ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorRootBone instanceNode = ActorRootBone(); instanceNode.copyNode(this, resetArtboard); @@ -32,9 +34,7 @@ class ActorRootBone extends ActorNode { static ActorRootBone read( ActorArtboard artboard, StreamReader reader, ActorRootBone node) { - if (node == null) { - node = ActorRootBone(); - } + node ??= ActorRootBone(); ActorNode.read(artboard, reader, node); return node; } diff --git a/flare_dart/lib/actor_rotation_constraint.dart b/flare_dart/lib/actor_rotation_constraint.dart index 23cb680..05b967c 100644 --- a/flare_dart/lib/actor_rotation_constraint.dart +++ b/flare_dart/lib/actor_rotation_constraint.dart @@ -1,34 +1,32 @@ -import "actor_targeted_constraint.dart"; -import "actor_node.dart"; -import "actor_component.dart"; +import "dart:math"; import "actor_artboard.dart"; -import "stream_reader.dart"; -import "math/transform_components.dart"; +import "actor_component.dart"; +import "actor_node.dart"; +import "actor_targeted_constraint.dart"; import "math/mat2d.dart"; -import "dart:math"; +import "math/transform_components.dart"; +import "stream_reader.dart"; import "transform_space.dart"; class ActorRotationConstraint extends ActorTargetedConstraint { - static const double PI2 = pi * 2.0; + static const double pi2 = pi * 2.0; bool _copy = false; double _scale = 1.0; bool _enableMin = false; bool _enableMax = false; - double _max = PI2; - double _min = -PI2; + double _max = pi2; + double _min = -pi2; bool _offset = false; - int _sourceSpace = TransformSpace.World; - int _destSpace = TransformSpace.World; - int _minMaxSpace = TransformSpace.World; - TransformComponents _componentsA = TransformComponents(); - TransformComponents _componentsB = TransformComponents(); + int _sourceSpace = TransformSpace.world; + int _destSpace = TransformSpace.world; + int _minMaxSpace = TransformSpace.world; + final TransformComponents _componentsA = TransformComponents(); + final TransformComponents _componentsB = TransformComponents(); static ActorRotationConstraint read(ActorArtboard artboard, StreamReader reader, ActorRotationConstraint component) { - if (component == null) { - component = ActorRotationConstraint(); - } + component ??= ActorRotationConstraint(); ActorTargetedConstraint.read(artboard, reader, component); component._copy = reader.readBool("copy"); if (component._copy) { @@ -51,8 +49,9 @@ class ActorRotationConstraint extends ActorTargetedConstraint { return component; } + @override void constrain(ActorNode node) { - ActorNode target = this.target; + ActorNode target = this.target as ActorNode; ActorNode grandParent = parent.parent; Mat2D transformA = parent.worldTransform; @@ -68,7 +67,7 @@ class ActorRotationConstraint extends ActorTargetedConstraint { _componentsB[5] = _componentsA[5]; } else { Mat2D.copy(transformB, target.worldTransform); - if (_sourceSpace == TransformSpace.Local) { + if (_sourceSpace == TransformSpace.local) { ActorNode sourceGrandParent = target.parent; if (sourceGrandParent != null) { Mat2D inverse = Mat2D(); @@ -82,7 +81,7 @@ class ActorRotationConstraint extends ActorTargetedConstraint { if (!_copy) { _componentsB.rotation = - _destSpace == TransformSpace.Local ? 1.0 : _componentsA.rotation; + _destSpace == TransformSpace.local ? 1.0 : _componentsA.rotation; } else { _componentsB.rotation *= _scale; if (_offset) { @@ -90,9 +89,10 @@ class ActorRotationConstraint extends ActorTargetedConstraint { } } - if (_destSpace == TransformSpace.Local) { + if (_destSpace == TransformSpace.local) { // Destination space is in parent transform coordinates. - // Recompose the parent local transform and get it in world, then decompose the world for interpolation. + // Recompose the parent local transform and get it in world, + // then decompose the world for interpolation. if (grandParent != null) { Mat2D.compose(transformB, _componentsB); Mat2D.multiply(transformB, grandParent.worldTransform, transformB); @@ -102,7 +102,7 @@ class ActorRotationConstraint extends ActorTargetedConstraint { } bool clampLocal = - _minMaxSpace == TransformSpace.Local && grandParent != null; + _minMaxSpace == TransformSpace.local && grandParent != null; if (clampLocal) { // Apply min max in local space, so transform to local coordinates first. Mat2D.compose(transformB, _componentsB); @@ -126,14 +126,14 @@ class ActorRotationConstraint extends ActorTargetedConstraint { Mat2D.decompose(transformB, _componentsB); } - double angleA = _componentsA.rotation % PI2; - double angleB = _componentsB.rotation % PI2; + double angleA = _componentsA.rotation % pi2; + double angleB = _componentsB.rotation % pi2; double diff = angleB - angleA; if (diff > pi) { - diff -= PI2; + diff -= pi2; } else if (diff < -pi) { - diff += PI2; + diff += pi2; } _componentsB.rotation = _componentsA.rotation + diff * strength; _componentsB.x = _componentsA.x; @@ -145,6 +145,7 @@ class ActorRotationConstraint extends ActorTargetedConstraint { Mat2D.compose(parent.worldTransform, _componentsB); } + @override ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorRotationConstraint instance = ActorRotationConstraint(); instance.copyRotationConstraint(this, resetArtboard); @@ -168,6 +169,8 @@ class ActorRotationConstraint extends ActorTargetedConstraint { _minMaxSpace = node._minMaxSpace; } + @override void update(int dirt) {} + @override void completeResolve() {} } diff --git a/flare_dart/lib/actor_scale_constraint.dart b/flare_dart/lib/actor_scale_constraint.dart index 9386f0c..3e62066 100644 --- a/flare_dart/lib/actor_scale_constraint.dart +++ b/flare_dart/lib/actor_scale_constraint.dart @@ -1,37 +1,36 @@ import "actor_artboard.dart"; -import "actor_node.dart"; -import "stream_reader.dart"; import "actor_axis_constraint.dart"; +import 'actor_component.dart'; +import "actor_node.dart"; import "math/mat2d.dart"; import "math/transform_components.dart"; +import "stream_reader.dart"; import "transform_space.dart"; class ActorScaleConstraint extends ActorAxisConstraint { - TransformComponents _componentsA = TransformComponents(); - TransformComponents _componentsB = TransformComponents(); + final TransformComponents _componentsA = TransformComponents(); + final TransformComponents _componentsB = TransformComponents(); ActorScaleConstraint() : super(); static ActorScaleConstraint read(ActorArtboard artboard, StreamReader reader, ActorScaleConstraint component) { - if (component == null) { - component = ActorScaleConstraint(); - } + component ??= ActorScaleConstraint(); ActorAxisConstraint.read(artboard, reader, component); return component; } @override - makeInstance(ActorArtboard resetArtboard) { + ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorScaleConstraint node = ActorScaleConstraint(); node.copyAxisConstraint(this, resetArtboard); return node; } @override - constrain(ActorNode node) { - ActorNode t = this.target; - ActorNode p = this.parent; + void constrain(ActorNode node) { + ActorNode t = target as ActorNode; + ActorNode p = parent; ActorNode grandParent = p.parent; Mat2D transformA = parent.worldTransform; @@ -47,7 +46,7 @@ class ActorScaleConstraint extends ActorAxisConstraint { _componentsB[5] = _componentsA[5]; } else { Mat2D.copy(transformB, t.worldTransform); - if (sourceSpace == TransformSpace.Local) { + if (sourceSpace == TransformSpace.local) { ActorNode sourceGrandParent = t.parent; if (sourceGrandParent != null) { Mat2D inverse = Mat2D(); @@ -57,30 +56,31 @@ class ActorScaleConstraint extends ActorAxisConstraint { } Mat2D.decompose(transformB, _componentsB); - if (!this.copyX) { + if (!copyX) { _componentsB[2] = - this.destSpace == TransformSpace.Local ? 1.0 : _componentsA[2]; + destSpace == TransformSpace.local ? 1.0 : _componentsA[2]; } else { - _componentsB[2] *= this.scaleX; - if (this.offset) { + _componentsB[2] *= scaleX; + if (offset) { _componentsB[2] *= parent.scaleX; } } - if (!this.copyY) { + if (!copyY) { _componentsB[3] = - this.destSpace == TransformSpace.Local ? 0.0 : _componentsA[3]; + destSpace == TransformSpace.local ? 0.0 : _componentsA[3]; } else { - _componentsB[3] *= this.scaleY; + _componentsB[3] *= scaleY; - if (this.offset) { + if (offset) { _componentsB[3] *= parent.scaleY; } } - if (destSpace == TransformSpace.Local) { + if (destSpace == TransformSpace.local) { // Destination space is in parent transform coordinates. - // Recompose the parent local transform and get it in world, then decompose the world for interpolation. + // Recompose the parent local transform and get it in world, + // then decompose the world for interpolation. if (grandParent != null) { Mat2D.compose(transformB, _componentsB); Mat2D.multiply(transformB, grandParent.worldTransform, transformB); @@ -90,7 +90,7 @@ class ActorScaleConstraint extends ActorAxisConstraint { } bool clampLocal = - (minMaxSpace == TransformSpace.Local && grandParent != null); + minMaxSpace == TransformSpace.local && grandParent != null; if (clampLocal) { // Apply min max in local space, so transform to local coordinates first. Mat2D.compose(transformB, _componentsB); @@ -99,17 +99,17 @@ class ActorScaleConstraint extends ActorAxisConstraint { Mat2D.multiply(transformB, inverse, transformB); Mat2D.decompose(transformB, _componentsB); } - if (this.enableMaxX && _componentsB[2] > this.maxX) { - _componentsB[2] = this.maxX; + if (enableMaxX && _componentsB[2] > maxX) { + _componentsB[2] = maxX; } - if (this.enableMinX && _componentsB[2] < this.minX) { - _componentsB[2] = this.minX; + if (enableMinX && _componentsB[2] < minX) { + _componentsB[2] = minX; } - if (this.enableMaxY && _componentsB[3] > this.maxY) { - _componentsB[3] = this.maxY; + if (enableMaxY && _componentsB[3] > maxY) { + _componentsB[3] = maxY; } - if (this.enableMinY && _componentsB[3] < this.minY) { - _componentsB[3] = this.minY; + if (enableMinY && _componentsB[3] < minY) { + _componentsB[3] = minY; } if (clampLocal) { // Transform back to world. @@ -118,13 +118,13 @@ class ActorScaleConstraint extends ActorAxisConstraint { Mat2D.decompose(transformB, _componentsB); } - double ti = 1.0 - this.strength; + double ti = 1.0 - strength; _componentsB[4] = _componentsA[4]; _componentsB[0] = _componentsA[0]; _componentsB[1] = _componentsA[1]; - _componentsB[2] = _componentsA[2] * ti + _componentsB[2] * this.strength; - _componentsB[3] = _componentsA[3] * ti + _componentsB[3] * this.strength; + _componentsB[2] = _componentsA[2] * ti + _componentsB[2] * strength; + _componentsB[3] = _componentsA[3] * ti + _componentsB[3] * strength; _componentsB[5] = _componentsA[5]; Mat2D.compose(parent.worldTransform, _componentsB); diff --git a/flare_dart/lib/actor_skin.dart b/flare_dart/lib/actor_skin.dart index f58d72b..f81a4d0 100644 --- a/flare_dart/lib/actor_skin.dart +++ b/flare_dart/lib/actor_skin.dart @@ -1,9 +1,9 @@ import "dart:typed_data"; -import "actor_skinnable.dart"; import "actor_artboard.dart"; import "actor_component.dart"; -import "math/mat2d.dart"; import "actor_constraint.dart"; +import "actor_skinnable.dart"; +import "math/mat2d.dart"; class ActorSkin extends ActorComponent { Float32List _boneMatrices; @@ -39,7 +39,7 @@ class ActorSkin extends ActorComponent { Mat2D mat = Mat2D(); - for (SkinnedBone cb in connectedBones) { + for (final SkinnedBone cb in connectedBones) { if (cb.node == null) { _boneMatrices[bidx++] = 1.0; _boneMatrices[bidx++] = 0.0; @@ -74,12 +74,12 @@ class ActorSkin extends ActorComponent { artboard.addDependency(this, skinnable as ActorComponent); if (skinnable.isConnectedToBones) { List connectedBones = skinnable.connectedBones; - for (SkinnedBone skinnedBone in connectedBones) { + for (final SkinnedBone skinnedBone in connectedBones) { artboard.addDependency(this, skinnedBone.node); List constraints = skinnedBone.node.allConstraints; if (constraints != null) { - for (ActorConstraint constraint in constraints) { + for (final ActorConstraint constraint in constraints) { artboard.addDependency(this, constraint); } } diff --git a/flare_dart/lib/actor_skinnable.dart b/flare_dart/lib/actor_skinnable.dart index d9868e9..8509394 100644 --- a/flare_dart/lib/actor_skinnable.dart +++ b/flare_dart/lib/actor_skinnable.dart @@ -1,10 +1,9 @@ import 'package:flare_dart/actor_skin.dart'; - -import "stream_reader.dart"; import "actor_artboard.dart"; -import "math/mat2d.dart"; -import "actor_node.dart"; import "actor_component.dart"; +import "actor_node.dart"; +import "math/mat2d.dart"; +import "stream_reader.dart"; class SkinnedBone { int boneIdx; @@ -20,7 +19,7 @@ abstract class ActorSkinnable { List get connectedBones => _connectedBones; bool get isConnectedToBones => - _connectedBones != null && _connectedBones.length > 0; + _connectedBones != null && _connectedBones.isNotEmpty; static ActorSkinnable read( ActorArtboard artboard, StreamReader reader, ActorSkinnable node) { @@ -33,14 +32,15 @@ abstract class ActorSkinnable { SkinnedBone bc = SkinnedBone(); reader.openObject("bone"); bc.boneIdx = reader.readId("component"); - Mat2D.copyFromList(bc.bind, reader.readFloat32Array(6, "bind")); + Mat2D.copyFromList(bc.bind, reader.readFloat32Array(6, "bind")); reader.closeObject(); Mat2D.invert(bc.inverseBind, bc.bind); node._connectedBones[i] = bc; } reader.closeArray(); Mat2D worldOverride = Mat2D(); - Mat2D.copyFromList(worldOverride, reader.readFloat32Array(6, "worldTransform")); + Mat2D.copyFromList( + worldOverride, reader.readFloat32Array(6, "worldTransform")); node.worldTransformOverride = worldOverride; } else { reader.closeArray(); diff --git a/flare_dart/lib/actor_star.dart b/flare_dart/lib/actor_star.dart index 16d11de..e7cb1c4 100644 --- a/flare_dart/lib/actor_star.dart +++ b/flare_dart/lib/actor_star.dart @@ -29,9 +29,7 @@ class ActorStar extends ActorProceduralPath { static ActorStar read( ActorArtboard artboard, StreamReader reader, ActorStar component) { - if (component == null) { - component = ActorStar(); - } + component ??= ActorStar(); ActorNode.read(artboard, reader, component); diff --git a/flare_dart/lib/actor_targeted_constraint.dart b/flare_dart/lib/actor_targeted_constraint.dart index a8b8b35..c50e0dc 100644 --- a/flare_dart/lib/actor_targeted_constraint.dart +++ b/flare_dart/lib/actor_targeted_constraint.dart @@ -1,6 +1,6 @@ +import "actor_artboard.dart"; import "actor_component.dart"; import "actor_constraint.dart"; -import "actor_artboard.dart"; import "stream_reader.dart"; abstract class ActorTargetedConstraint extends ActorConstraint { @@ -11,6 +11,7 @@ abstract class ActorTargetedConstraint extends ActorConstraint { return _target; } + @override void resolveComponentIndices(List components) { super.resolveComponentIndices(components); if (_targetIdx != 0) { diff --git a/flare_dart/lib/actor_transform_constraint.dart b/flare_dart/lib/actor_transform_constraint.dart index cec2b8f..a577fac 100644 --- a/flare_dart/lib/actor_transform_constraint.dart +++ b/flare_dart/lib/actor_transform_constraint.dart @@ -1,27 +1,26 @@ import "dart:math"; import "actor_artboard.dart"; +import 'actor_component.dart'; import "actor_node.dart"; import "actor_targeted_constraint.dart"; import "math/mat2d.dart"; import "math/transform_components.dart"; -import "transform_space.dart"; import "stream_reader.dart"; +import "transform_space.dart"; const pi2 = pi * 2; class ActorTransformConstraint extends ActorTargetedConstraint { - int _sourceSpace = TransformSpace.World; - int _destSpace = TransformSpace.World; - TransformComponents _componentsA = TransformComponents(); - TransformComponents _componentsB = TransformComponents(); + int _sourceSpace = TransformSpace.world; + int _destSpace = TransformSpace.world; + final TransformComponents _componentsA = TransformComponents(); + final TransformComponents _componentsB = TransformComponents(); ActorTransformConstraint() : super(); static ActorTransformConstraint read(ActorArtboard artboard, StreamReader reader, ActorTransformConstraint component) { - if (component == null) { - component = ActorTransformConstraint(); - } + component ??= ActorTransformConstraint(); ActorTargetedConstraint.read(artboard, reader, component); component._sourceSpace = reader.readUint8("sourceSpaceId"); @@ -31,13 +30,13 @@ class ActorTransformConstraint extends ActorTargetedConstraint { } @override - makeInstance(ActorArtboard resetArtboard) { + ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorTransformConstraint node = ActorTransformConstraint(); node.copyTransformConstraint(this, resetArtboard); return node; } - copyTransformConstraint( + void copyTransformConstraint( ActorTransformConstraint node, ActorArtboard resetArtboard) { copyTargetedConstraint(node, resetArtboard); _sourceSpace = node._sourceSpace; @@ -45,8 +44,8 @@ class ActorTransformConstraint extends ActorTargetedConstraint { } @override - constrain(ActorNode node) { - ActorNode t = this.target; + void constrain(ActorNode node) { + ActorNode t = target as ActorNode; if (t == null) { return; } @@ -55,7 +54,7 @@ class ActorTransformConstraint extends ActorTargetedConstraint { Mat2D transformA = parent.worldTransform; Mat2D transformB = Mat2D.clone(t.worldTransform); - if (_sourceSpace == TransformSpace.Local) { + if (_sourceSpace == TransformSpace.local) { ActorNode grandParent = target.parent; if (grandParent != null) { Mat2D inverse = Mat2D(); @@ -63,7 +62,7 @@ class ActorTransformConstraint extends ActorTargetedConstraint { Mat2D.multiply(transformB, inverse, transformB); } } - if (_destSpace == TransformSpace.Local) { + if (_destSpace == TransformSpace.local) { ActorNode grandParent = parent.parent; if (grandParent != null) { Mat2D.multiply(transformB, grandParent.worldTransform, transformB); @@ -81,14 +80,14 @@ class ActorTransformConstraint extends ActorTargetedConstraint { diff += pi2; } - double ti = 1.0 - this.strength; + double ti = 1.0 - strength; - _componentsB[4] = angleA + diff * this.strength; - _componentsB[0] = _componentsA[0] * ti + _componentsB[0] * this.strength; - _componentsB[1] = _componentsA[1] * ti + _componentsB[1] * this.strength; - _componentsB[2] = _componentsA[2] * ti + _componentsB[2] * this.strength; - _componentsB[3] = _componentsA[3] * ti + _componentsB[3] * this.strength; - _componentsB[5] = _componentsA[5] * ti + _componentsB[5] * this.strength; + _componentsB[4] = angleA + diff * strength; + _componentsB[0] = _componentsA[0] * ti + _componentsB[0] * strength; + _componentsB[1] = _componentsA[1] * ti + _componentsB[1] * strength; + _componentsB[2] = _componentsA[2] * ti + _componentsB[2] * strength; + _componentsB[3] = _componentsA[3] * ti + _componentsB[3] * strength; + _componentsB[5] = _componentsA[5] * ti + _componentsB[5] * strength; Mat2D.compose(parent.worldTransform, _componentsB); } diff --git a/flare_dart/lib/actor_translation_constraint.dart b/flare_dart/lib/actor_translation_constraint.dart index d086d6f..05c5d9f 100644 --- a/flare_dart/lib/actor_translation_constraint.dart +++ b/flare_dart/lib/actor_translation_constraint.dart @@ -1,35 +1,34 @@ import "actor_artboard.dart"; -import "actor_node.dart"; import "actor_axis_constraint.dart"; -import "math/vec2d.dart"; +import "actor_component.dart"; +import "actor_node.dart"; import "math/mat2d.dart"; -import "transform_space.dart"; +import "math/vec2d.dart"; import "stream_reader.dart"; +import "transform_space.dart"; class ActorTranslationConstraint extends ActorAxisConstraint { ActorTranslationConstraint() : super(); static ActorTranslationConstraint read(ActorArtboard artboard, StreamReader reader, ActorTranslationConstraint component) { - if (component == null) { - component = ActorTranslationConstraint(); - } + component ??= ActorTranslationConstraint(); ActorAxisConstraint.read(artboard, reader, component); return component; } @override - makeInstance(ActorArtboard resetArtboard) { + ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorTranslationConstraint node = ActorTranslationConstraint(); node.copyAxisConstraint(this, resetArtboard); return node; } @override - constrain(ActorNode node) { - ActorNode t = this.target; - ActorNode p = this.parent; + void constrain(ActorNode node) { + ActorNode t = target as ActorNode; + ActorNode p = parent; ActorNode grandParent = p.parent; Mat2D transformA = parent.worldTransform; @@ -40,7 +39,7 @@ class ActorTranslationConstraint extends ActorAxisConstraint { Vec2D.copy(translationB, translationA); } else { Mat2D transformB = Mat2D.clone(t.worldTransform); - if (this.sourceSpace == TransformSpace.Local) { + if (sourceSpace == TransformSpace.local) { ActorNode sourceGrandParent = t.parent; if (sourceGrandParent != null) { Mat2D inverse = Mat2D(); @@ -51,27 +50,27 @@ class ActorTranslationConstraint extends ActorAxisConstraint { translationB[0] = transformB[4]; translationB[1] = transformB[5]; - if (!this.copyX) { + if (!copyX) { translationB[0] = - destSpace == TransformSpace.Local ? 0.0 : translationA[0]; + destSpace == TransformSpace.local ? 0.0 : translationA[0]; } else { - translationB[0] *= this.scaleX; - if (this.offset) { + translationB[0] *= scaleX; + if (offset) { translationB[0] += parent.translation[0]; } } - if (!this.copyY) { + if (!copyY) { translationB[1] = - destSpace == TransformSpace.Local ? 0.0 : translationA[1]; + destSpace == TransformSpace.local ? 0.0 : translationA[1]; } else { - translationB[1] *= this.scaleY; - if (this.offset) { + translationB[1] *= scaleY; + if (offset) { translationB[1] += parent.translation[1]; } } - if (destSpace == TransformSpace.Local) { + if (destSpace == TransformSpace.local) { if (grandParent != null) { Vec2D.transformMat2D( translationB, translationB, grandParent.worldTransform); @@ -80,7 +79,7 @@ class ActorTranslationConstraint extends ActorAxisConstraint { } bool clampLocal = - (minMaxSpace == TransformSpace.Local && grandParent != null); + minMaxSpace == TransformSpace.local && grandParent != null; if (clampLocal) { // Apply min max in local space, so transform to local coordinates first. Mat2D temp = Mat2D(); @@ -88,17 +87,17 @@ class ActorTranslationConstraint extends ActorAxisConstraint { // Get our target world coordinates in parent local. Vec2D.transformMat2D(translationB, translationB, temp); } - if (this.enableMaxX && translationB[0] > this.maxX) { - translationB[0] = this.maxX; + if (enableMaxX && translationB[0] > maxX) { + translationB[0] = maxX; } - if (this.enableMinX && translationB[0] < this.minX) { - translationB[0] = this.minX; + if (enableMinX && translationB[0] < minX) { + translationB[0] = minX; } - if (this.enableMaxY && translationB[1] > this.maxY) { - translationB[1] = this.maxY; + if (enableMaxY && translationB[1] > maxY) { + translationB[1] = maxY; } - if (this.enableMinY && translationB[1] < this.minY) { - translationB[1] = this.minY; + if (enableMinY && translationB[1] < minY) { + translationB[1] = minY; } if (clampLocal) { // Transform back to world. @@ -106,11 +105,11 @@ class ActorTranslationConstraint extends ActorAxisConstraint { translationB, translationB, grandParent.worldTransform); } - double ti = 1.0 - this.strength; + double ti = 1.0 - strength; // Just interpolate world translation - transformA[4] = translationA[0] * ti + translationB[0] * this.strength; - transformA[5] = translationA[1] * ti + translationB[1] * this.strength; + transformA[4] = translationA[0] * ti + translationB[0] * strength; + transformA[5] = translationA[1] * ti + translationB[1] * strength; } @override diff --git a/flare_dart/lib/actor_triangle.dart b/flare_dart/lib/actor_triangle.dart index 84924bf..ac56e41 100644 --- a/flare_dart/lib/actor_triangle.dart +++ b/flare_dart/lib/actor_triangle.dart @@ -1,15 +1,16 @@ import "actor_artboard.dart"; +import "actor_component.dart"; import "actor_node.dart"; -import "math/vec2d.dart"; -import "stream_reader.dart"; import "actor_path.dart"; +import "math/vec2d.dart"; import "path_point.dart"; -import "actor_component.dart"; +import "stream_reader.dart"; class ActorTriangle extends ActorProceduralPath { @override void invalidatePath() {} + @override ActorComponent makeInstance(ActorArtboard resetArtboard) { ActorTriangle instance = ActorTriangle(); instance.copyPath(this, resetArtboard); @@ -18,9 +19,7 @@ class ActorTriangle extends ActorProceduralPath { static ActorTriangle read( ActorArtboard artboard, StreamReader reader, ActorTriangle component) { - if (component == null) { - component = ActorTriangle(); - } + component ??= ActorTriangle(); ActorNode.read(artboard, reader, component); @@ -43,7 +42,7 @@ class ActorTriangle extends ActorProceduralPath { } bool get isClosed => true; - bool get doesDraw => !this.renderCollapsed; - double get radiusX => this.width / 2; - double get radiusY => this.height / 2; + bool get doesDraw => !renderCollapsed; + double get radiusX => width / 2; + double get radiusY => height / 2; } diff --git a/flare_dart/lib/animation/actor_animation.dart b/flare_dart/lib/animation/actor_animation.dart index 7daeeac..4ecdeaa 100644 --- a/flare_dart/lib/animation/actor_animation.dart +++ b/flare_dart/lib/animation/actor_animation.dart @@ -20,7 +20,7 @@ class PropertyAnimation { } static PropertyAnimation read(StreamReader reader, ActorComponent component) { - StreamReader propertyBlock = reader.readNextBlock(PropertyTypesMap); + StreamReader propertyBlock = reader.readNextBlock(propertyTypesMap); if (propertyBlock == null) { return null; } @@ -30,107 +30,107 @@ class PropertyAnimation { KeyFrameReader keyFrameReader; switch (propertyAnimation._type) { - case PropertyTypes.PosX: + case PropertyTypes.posX: keyFrameReader = KeyFramePosX.read; break; - case PropertyTypes.PosY: + case PropertyTypes.posY: keyFrameReader = KeyFramePosY.read; break; - case PropertyTypes.ScaleX: + case PropertyTypes.scaleX: keyFrameReader = KeyFrameScaleX.read; break; - case PropertyTypes.ScaleY: + case PropertyTypes.scaleY: keyFrameReader = KeyFrameScaleY.read; break; - case PropertyTypes.Rotation: + case PropertyTypes.rotation: keyFrameReader = KeyFrameRotation.read; break; - case PropertyTypes.Opacity: + case PropertyTypes.opacity: keyFrameReader = KeyFrameOpacity.read; break; - case PropertyTypes.DrawOrder: + case PropertyTypes.drawOrder: keyFrameReader = KeyFrameDrawOrder.read; break; - case PropertyTypes.Length: + case PropertyTypes.length: keyFrameReader = KeyFrameLength.read; break; - case PropertyTypes.ImageVertices: + case PropertyTypes.imageVertices: keyFrameReader = KeyFrameImageVertices.read; break; - case PropertyTypes.ConstraintStrength: + case PropertyTypes.constraintStrength: keyFrameReader = KeyFrameConstraintStrength.read; break; - case PropertyTypes.Trigger: + case PropertyTypes.trigger: keyFrameReader = KeyFrameTrigger.read; break; - case PropertyTypes.IntProperty: + case PropertyTypes.intProperty: keyFrameReader = KeyFrameIntProperty.read; break; - case PropertyTypes.FloatProperty: + case PropertyTypes.floatProperty: keyFrameReader = KeyFrameFloatProperty.read; break; - case PropertyTypes.StringProperty: + case PropertyTypes.stringProperty: keyFrameReader = KeyFrameStringProperty.read; break; - case PropertyTypes.BooleanProperty: + case PropertyTypes.booleanProperty: keyFrameReader = KeyFrameBooleanProperty.read; break; - case PropertyTypes.CollisionEnabled: + case PropertyTypes.collisionEnabled: keyFrameReader = KeyFrameCollisionEnabledProperty.read; break; - case PropertyTypes.ActiveChildIndex: + case PropertyTypes.activeChildIndex: keyFrameReader = KeyFrameActiveChild.read; break; - case PropertyTypes.Sequence: + case PropertyTypes.sequence: keyFrameReader = KeyFrameSequence.read; break; - case PropertyTypes.PathVertices: + case PropertyTypes.pathVertices: keyFrameReader = KeyFramePathVertices.read; break; - case PropertyTypes.FillColor: + case PropertyTypes.fillColor: keyFrameReader = KeyFrameFillColor.read; break; - case PropertyTypes.FillGradient: + case PropertyTypes.fillGradient: keyFrameReader = KeyFrameGradient.read; break; - case PropertyTypes.StrokeGradient: + case PropertyTypes.strokeGradient: keyFrameReader = KeyFrameGradient.read; break; - case PropertyTypes.FillRadial: + case PropertyTypes.fillRadial: keyFrameReader = KeyFrameRadial.read; break; - case PropertyTypes.StrokeRadial: + case PropertyTypes.strokeRadial: keyFrameReader = KeyFrameRadial.read; break; - case PropertyTypes.StrokeColor: + case PropertyTypes.strokeColor: keyFrameReader = KeyFrameStrokeColor.read; break; - case PropertyTypes.StrokeWidth: + case PropertyTypes.strokeWidth: keyFrameReader = KeyFrameStrokeWidth.read; break; - case PropertyTypes.StrokeOpacity: - case PropertyTypes.FillOpacity: + case PropertyTypes.strokeOpacity: + case PropertyTypes.fillOpacity: keyFrameReader = KeyFramePaintOpacity.read; break; - case PropertyTypes.ShapeWidth: + case PropertyTypes.shapeWidth: keyFrameReader = KeyFrameShapeWidth.read; break; - case PropertyTypes.ShapeHeight: + case PropertyTypes.shapeHeight: keyFrameReader = KeyFrameShapeHeight.read; break; - case PropertyTypes.CornerRadius: + case PropertyTypes.cornerRadius: keyFrameReader = KeyFrameCornerRadius.read; break; - case PropertyTypes.InnerRadius: + case PropertyTypes.innerRadius: keyFrameReader = KeyFrameInnerRadius.read; break; - case PropertyTypes.StrokeStart: + case PropertyTypes.strokeStart: keyFrameReader = KeyFrameStrokeStart.read; break; - case PropertyTypes.StrokeEnd: + case PropertyTypes.strokeEnd: keyFrameReader = KeyFrameStrokeEnd.read; break; - case PropertyTypes.StrokeOffset: + case PropertyTypes.strokeOffset: keyFrameReader = KeyFrameStrokeOffset.read; break; } @@ -306,7 +306,7 @@ class ActorAnimation { ComponentAnimation keyedComponent = _triggerComponents[i]; for (final PropertyAnimation property in keyedComponent.properties) { switch (property.propertyType) { - case PropertyTypes.Trigger: + case PropertyTypes.trigger: List keyFrames = property.keyFrames; int kfl = keyFrames.length; diff --git a/flare_dart/lib/animation/interpolation/cubic.dart b/flare_dart/lib/animation/interpolation/cubic.dart index 6fac6aa..72d2146 100644 --- a/flare_dart/lib/animation/interpolation/cubic.dart +++ b/flare_dart/lib/animation/interpolation/cubic.dart @@ -1,16 +1,20 @@ -import "./interpolator.dart"; import "../../stream_reader.dart"; +import "./interpolator.dart"; import "cubic_ease.dart"; class CubicInterpolator extends Interpolator { CubicEase _cubic; + @override double getEasedMix(double mix) { return _cubic.ease(mix); } bool read(StreamReader reader) { - _cubic = CubicEase.make(reader.readFloat32("cubicX1"), reader.readFloat32("cubicY1"), - reader.readFloat32("cubicX2"), reader.readFloat32("cubicY2")); + _cubic = CubicEase.make( + reader.readFloat32("cubicX1"), + reader.readFloat32("cubicY1"), + reader.readFloat32("cubicX2"), + reader.readFloat32("cubicY2")); return true; } } diff --git a/flare_dart/lib/animation/interpolation/cubic_ease.dart b/flare_dart/lib/animation/interpolation/cubic_ease.dart index 975aa41..d39b003 100644 --- a/flare_dart/lib/animation/interpolation/cubic_ease.dart +++ b/flare_dart/lib/animation/interpolation/cubic_ease.dart @@ -1,13 +1,13 @@ import 'dart:typed_data'; // Implements https://github.com/gre/bezier-easing/blob/master/src/index.js -const int NewtonIterations = 4; -const double NewtonMinSlope = 0.001; -const double SubdivisionPrecision = 0.0000001; -const int SubdivisionMaxIterations = 10; +const int newtonIterations = 4; +const double newtonMinSlope = 0.001; +const double subdivisionPrecision = 0.0000001; +const int subdivisionMaxIterations = 10; -const int SplineTableSize = 11; -const double SampleStepSize = 1.0 / (SplineTableSize - 1.0); +const int splineTableSize = 11; +const double sampleStepSize = 1.0 / (splineTableSize - 1.0); // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2. double calcBezier(double aT, double aA1, double aA2) { @@ -24,7 +24,7 @@ double getSlope(double aT, double aA1, double aA2) { } double newtonRaphsonIterate(double aX, double aGuessT, double mX1, double mX2) { - for (int i = 0; i < NewtonIterations; ++i) { + for (int i = 0; i < newtonIterations; ++i) { double currentSlope = getSlope(aGuessT, mX1, mX2); if (currentSlope == 0.0) { return aGuessT; @@ -59,32 +59,32 @@ class Cubic extends CubicEase { final double x1, y1, x2, y2; Cubic(this.x1, this.y1, this.x2, this.y2) { // Precompute values table - _values = Float64List(SplineTableSize); - for (int i = 0; i < SplineTableSize; ++i) { - _values[i] = calcBezier(i * SampleStepSize, x1, x2); + _values = Float64List(splineTableSize); + for (int i = 0; i < splineTableSize; ++i) { + _values[i] = calcBezier(i * sampleStepSize, x1, x2); } } double getT(double x) { double intervalStart = 0.0; int currentSample = 1; - int lastSample = SplineTableSize - 1; + int lastSample = splineTableSize - 1; for (; currentSample != lastSample && _values[currentSample] <= x; ++currentSample) { - intervalStart += SampleStepSize; + intervalStart += sampleStepSize; } --currentSample; // Interpolate to provide an initial guess for t var dist = (x - _values[currentSample]) / (_values[currentSample + 1] - _values[currentSample]); - var guessForT = intervalStart + dist * SampleStepSize; + var guessForT = intervalStart + dist * sampleStepSize; var initialSlope = getSlope(guessForT, x1, x2); - if (initialSlope >= NewtonMinSlope) { - for (int i = 0; i < NewtonIterations; ++i) { + if (initialSlope >= newtonMinSlope) { + for (int i = 0; i < newtonIterations; ++i) { double currentSlope = getSlope(guessForT, x1, x2); if (currentSlope == 0.0) { return guessForT; @@ -96,7 +96,7 @@ class Cubic extends CubicEase { } else if (initialSlope == 0.0) { return guessForT; } else { - double aB = intervalStart + SampleStepSize; + double aB = intervalStart + sampleStepSize; double currentX, currentT; int i = 0; do { @@ -107,8 +107,8 @@ class Cubic extends CubicEase { } else { intervalStart = currentT; } - } while (currentX.abs() > SubdivisionPrecision && - ++i < SubdivisionMaxIterations); + } while (currentX.abs() > subdivisionPrecision && + ++i < subdivisionMaxIterations); return currentT; } } diff --git a/flare_dart/lib/animation/keyframe.dart b/flare_dart/lib/animation/keyframe.dart index 55c77e2..a04847c 100644 --- a/flare_dart/lib/animation/keyframe.dart +++ b/flare_dart/lib/animation/keyframe.dart @@ -20,7 +20,7 @@ import "./interpolation/hold.dart"; import "./interpolation/interpolator.dart"; import "./interpolation/linear.dart"; -enum InterpolationTypes { Hold, Linear, Cubic } +enum InterpolationTypes { hold, linear, cubic } HashMap interpolationTypesLookup = HashMap.fromIterables([ @@ -28,9 +28,9 @@ HashMap interpolationTypesLookup = 1, 2 ], [ - InterpolationTypes.Hold, - InterpolationTypes.Linear, - InterpolationTypes.Cubic + InterpolationTypes.hold, + InterpolationTypes.linear, + InterpolationTypes.cubic ]); abstract class KeyFrame { @@ -66,16 +66,16 @@ abstract class KeyFrameWithInterpolation extends KeyFrame { int type = reader.readUint8("interpolatorType"); InterpolationTypes actualType = interpolationTypesLookup[type]; - actualType ??= InterpolationTypes.Linear; + actualType ??= InterpolationTypes.linear; switch (actualType) { - case InterpolationTypes.Hold: + case InterpolationTypes.hold: frame._interpolator = HoldInterpolator.instance; break; - case InterpolationTypes.Linear: + case InterpolationTypes.linear: frame._interpolator = LinearInterpolator.instance; break; - case InterpolationTypes.Cubic: + case InterpolationTypes.cubic: { CubicInterpolator interpolator = CubicInterpolator(); if (interpolator.read(reader)) { @@ -703,7 +703,7 @@ class KeyFramePathVertices extends KeyFrameWithInterpolation { ActorPath pathNode = component as ActorPath; int length = pathNode.points.fold(0, (int previous, PathPoint point) { - return previous + 2 + (point.pointType == PointType.Straight ? 1 : 4); + return previous + 2 + (point.pointType == PointType.straight ? 1 : 4); }); frame._vertices = Float32List(length); int readIdx = 0; @@ -711,7 +711,7 @@ class KeyFramePathVertices extends KeyFrameWithInterpolation { for (final PathPoint point in pathNode.points) { frame._vertices[readIdx++] = reader.readFloat32("translationX"); frame._vertices[readIdx++] = reader.readFloat32("translationY"); - if (point.pointType == PointType.Straight) { + if (point.pointType == PointType.straight) { // radius frame._vertices[readIdx++] = reader.readFloat32("radius"); } else { diff --git a/flare_dart/lib/animation/property_types.dart b/flare_dart/lib/animation/property_types.dart index 2106e07..c2a9e43 100644 --- a/flare_dart/lib/animation/property_types.dart +++ b/flare_dart/lib/animation/property_types.dart @@ -1,77 +1,77 @@ class PropertyTypes { - static const int Unknown = 0; - static const int PosX = 1; - static const int PosY = 2; - static const int ScaleX = 3; - static const int ScaleY = 4; - static const int Rotation = 5; - static const int Opacity = 6; - static const int DrawOrder = 7; - static const int Length = 8; - static const int ImageVertices = 9; - static const int ConstraintStrength = 10; - static const int Trigger = 11; - static const int IntProperty = 12; - static const int FloatProperty = 13; - static const int StringProperty = 14; - static const int BooleanProperty = 15; - static const int CollisionEnabled = 16; - static const int Sequence = 17; - static const int ActiveChildIndex = 18; - static const int PathVertices = 19; - static const int FillColor = 20; - static const int FillGradient = 21; - static const int FillRadial = 22; - static const int StrokeColor = 23; - static const int StrokeGradient = 24; - static const int StrokeRadial = 25; - static const int StrokeWidth = 26; - static const int StrokeOpacity = 27; - static const int FillOpacity = 28; - static const int ShapeWidth = 29; - static const int ShapeHeight = 30; - static const int CornerRadius = 31; - static const int InnerRadius = 32; - static const int StrokeStart = 33; - static const int StrokeEnd = 34; - static const int StrokeOffset = 35; + static const int unknown = 0; + static const int posX = 1; + static const int posY = 2; + static const int scaleX = 3; + static const int scaleY = 4; + static const int rotation = 5; + static const int opacity = 6; + static const int drawOrder = 7; + static const int length = 8; + static const int imageVertices = 9; + static const int constraintStrength = 10; + static const int trigger = 11; + static const int intProperty = 12; + static const int floatProperty = 13; + static const int stringProperty = 14; + static const int booleanProperty = 15; + static const int collisionEnabled = 16; + static const int sequence = 17; + static const int activeChildIndex = 18; + static const int pathVertices = 19; + static const int fillColor = 20; + static const int fillGradient = 21; + static const int fillRadial = 22; + static const int strokeColor = 23; + static const int strokeGradient = 24; + static const int strokeRadial = 25; + static const int strokeWidth = 26; + static const int strokeOpacity = 27; + static const int fillOpacity = 28; + static const int shapeWidth = 29; + static const int shapeHeight = 30; + static const int cornerRadius = 31; + static const int innerRadius = 32; + static const int strokeStart = 33; + static const int strokeEnd = 34; + static const int strokeOffset = 35; } -const Map PropertyTypesMap = { - "unknown": PropertyTypes.Unknown, - "posX": PropertyTypes.PosX, - "posY": PropertyTypes.PosY, - "scaleX": PropertyTypes.ScaleX, - "scaleY": PropertyTypes.ScaleY, - "rotation": PropertyTypes.Rotation, - "opacity": PropertyTypes.Opacity, - "drawOrder": PropertyTypes.DrawOrder, - "length": PropertyTypes.Length, - "vertices": PropertyTypes.ImageVertices, - "strength": PropertyTypes.ConstraintStrength, - "trigger": PropertyTypes.Trigger, - "intValue": PropertyTypes.IntProperty, - "floatValue": PropertyTypes.FloatProperty, - "stringValue": PropertyTypes.StringProperty, - "boolValue": PropertyTypes.BooleanProperty, - "isCollisionEnabled": PropertyTypes.CollisionEnabled, - "sequence": PropertyTypes.Sequence, - "activeChild": PropertyTypes.ActiveChildIndex, - "pathVertices": PropertyTypes.PathVertices, - "fillColor": PropertyTypes.FillColor, - "fillGradient": PropertyTypes.FillGradient, - "fillRadial": PropertyTypes.FillRadial, - "strokeColor": PropertyTypes.StrokeColor, - "strokeGradient": PropertyTypes.StrokeGradient, - "strokeRadial": PropertyTypes.StrokeRadial, - "strokeWidth": PropertyTypes.StrokeWidth, - "strokeOpacity": PropertyTypes.StrokeOpacity, - "fillOpacity": PropertyTypes.FillOpacity, - "width": PropertyTypes.ShapeWidth, - "height": PropertyTypes.ShapeHeight, - "cornerRadius": PropertyTypes.CornerRadius, - "innerRadius": PropertyTypes.InnerRadius, - "strokeStart": PropertyTypes.StrokeStart, - "strokeEnd": PropertyTypes.StrokeEnd, - "strokeOffset": PropertyTypes.StrokeOffset, +const Map propertyTypesMap = { + "unknown": PropertyTypes.unknown, + "posX": PropertyTypes.posX, + "posY": PropertyTypes.posY, + "scaleX": PropertyTypes.scaleX, + "scaleY": PropertyTypes.scaleY, + "rotation": PropertyTypes.rotation, + "opacity": PropertyTypes.opacity, + "drawOrder": PropertyTypes.drawOrder, + "length": PropertyTypes.length, + "vertices": PropertyTypes.imageVertices, + "strength": PropertyTypes.constraintStrength, + "trigger": PropertyTypes.trigger, + "intValue": PropertyTypes.intProperty, + "floatValue": PropertyTypes.floatProperty, + "stringValue": PropertyTypes.stringProperty, + "boolValue": PropertyTypes.booleanProperty, + "isCollisionEnabled": PropertyTypes.collisionEnabled, + "sequence": PropertyTypes.sequence, + "activeChild": PropertyTypes.activeChildIndex, + "pathVertices": PropertyTypes.pathVertices, + "fillColor": PropertyTypes.fillColor, + "fillGradient": PropertyTypes.fillGradient, + "fillRadial": PropertyTypes.fillRadial, + "strokeColor": PropertyTypes.strokeColor, + "strokeGradient": PropertyTypes.strokeGradient, + "strokeRadial": PropertyTypes.strokeRadial, + "strokeWidth": PropertyTypes.strokeWidth, + "strokeOpacity": PropertyTypes.strokeOpacity, + "fillOpacity": PropertyTypes.fillOpacity, + "width": PropertyTypes.shapeWidth, + "height": PropertyTypes.shapeHeight, + "cornerRadius": PropertyTypes.cornerRadius, + "innerRadius": PropertyTypes.innerRadius, + "strokeStart": PropertyTypes.strokeStart, + "strokeEnd": PropertyTypes.strokeEnd, + "strokeOffset": PropertyTypes.strokeOffset, }; diff --git a/flare_dart/lib/block_reader.dart b/flare_dart/lib/block_reader.dart index 4cc823b..526214b 100644 --- a/flare_dart/lib/block_reader.dart +++ b/flare_dart/lib/block_reader.dart @@ -1,5 +1,5 @@ -import "binary_reader.dart"; import 'dart:typed_data'; +import "binary_reader.dart"; class BlockReader extends BinaryReader { @override @@ -9,18 +9,17 @@ class BlockReader extends BinaryReader { blockType = 0; } - BlockReader.fromBlock(int type, ByteData stream) : super(stream) { - blockType = type; - } + BlockReader.fromBlock(this.blockType, ByteData stream) : super(stream); - // A block is defined as a TLV with type of one byte, length of 4 bytes, and then the value following. + // A block is defined as a TLV with type of one byte, length of 4 bytes, + // and then the value following. + @override BlockReader readNextBlock(Map types) { - if (isEOF()) { return null; } int blockType = readUint8(); int length = readUint32(); - return BlockReader.fromBlock(blockType, readBytes(length)); + return BlockReader.fromBlock(blockType, readBytes(length)); } } diff --git a/flare_dart/lib/block_types.dart b/flare_dart/lib/block_types.dart index 8d5ec68..b62e140 100644 --- a/flare_dart/lib/block_types.dart +++ b/flare_dart/lib/block_types.dart @@ -1,99 +1,99 @@ -const Map BlockTypesMap = { - "unknown": BlockTypes.Unknown, - "nodes": BlockTypes.Components, - "node": BlockTypes.ActorNode, - "bone": BlockTypes.ActorBone, - "rootBone": BlockTypes.ActorRootBone, - "image": BlockTypes.ActorImage, - "view": BlockTypes.View, - "animation": BlockTypes.Animation, - "animations": BlockTypes.Animations, - "atlases": BlockTypes.Atlases, - "atlas": BlockTypes.Atlas, - "event": BlockTypes.ActorEvent, - "customInt": BlockTypes.CustomIntProperty, - "customFloat": BlockTypes.CustomFloatProperty, - "customString": BlockTypes.CustomStringProperty, - "customBoolean": BlockTypes.CustomBooleanProperty, - "rectangleCollider": BlockTypes.ActorColliderRectangle, - "triangleCollider": BlockTypes.ActorColliderTriangle, - "circleCollider": BlockTypes.ActorColliderCircle, - "polygonCollider": BlockTypes.ActorColliderPolygon, - "lineCollider": BlockTypes.ActorColliderLine, - "imageSequence": BlockTypes.ActorImageSequence, - "solo": BlockTypes.ActorNodeSolo, - "jelly": BlockTypes.JellyComponent, - "jellyBone": BlockTypes.ActorJellyBone, - "ikConstraint": BlockTypes.ActorIKConstraint, - "distanceConstraint": BlockTypes.ActorDistanceConstraint, - "translationConstraint": BlockTypes.ActorTranslationConstraint, - "rotationConstraint": BlockTypes.ActorRotationConstraint, - "scaleConstraint": BlockTypes.ActorScaleConstraint, - "transformConstraint": BlockTypes.ActorTransformConstraint, - "shape": BlockTypes.ActorShape, - "path": BlockTypes.ActorPath, - "colorFill": BlockTypes.ColorFill, - "colorStroke": BlockTypes.ColorStroke, - "gradientFill": BlockTypes.GradientFill, - "gradientStroke": BlockTypes.GradientStroke, - "radialGradientFill": BlockTypes.RadialGradientFill, - "radialGradientStroke": BlockTypes.RadialGradientStroke, - "ellipse": BlockTypes.ActorEllipse, - "rectangle": BlockTypes.ActorRectangle, - "triangle": BlockTypes.ActorTriangle, - "star": BlockTypes.ActorStar, - "polygon": BlockTypes.ActorPolygon, - "artboards": BlockTypes.Artboards, - "artboard": BlockTypes.ActorArtboard +const Map blockTypesMap = { + "unknown": BlockTypes.unknown, + "nodes": BlockTypes.components, + "node": BlockTypes.actorNode, + "bone": BlockTypes.actorBone, + "rootBone": BlockTypes.actorRootBone, + "image": BlockTypes.actorImage, + "view": BlockTypes.view, + "animation": BlockTypes.animation, + "animations": BlockTypes.animations, + "atlases": BlockTypes.atlases, + "atlas": BlockTypes.atlas, + "event": BlockTypes.actorEvent, + "customInt": BlockTypes.customIntProperty, + "customFloat": BlockTypes.customFloatProperty, + "customString": BlockTypes.customStringProperty, + "customBoolean": BlockTypes.customBooleanProperty, + "rectangleCollider": BlockTypes.actorColliderRectangle, + "triangleCollider": BlockTypes.actorColliderTriangle, + "circleCollider": BlockTypes.actorColliderCircle, + "polygonCollider": BlockTypes.actorColliderPolygon, + "lineCollider": BlockTypes.actorColliderLine, + "imageSequence": BlockTypes.actorImageSequence, + "solo": BlockTypes.actorNodeSolo, + "jelly": BlockTypes.jellyComponent, + "jellyBone": BlockTypes.actorJellyBone, + "ikConstraint": BlockTypes.actorIKConstraint, + "distanceConstraint": BlockTypes.actorDistanceConstraint, + "translationConstraint": BlockTypes.actorTranslationConstraint, + "rotationConstraint": BlockTypes.actorRotationConstraint, + "scaleConstraint": BlockTypes.actorScaleConstraint, + "transformConstraint": BlockTypes.actorTransformConstraint, + "shape": BlockTypes.actorShape, + "path": BlockTypes.actorPath, + "colorFill": BlockTypes.colorFill, + "colorStroke": BlockTypes.colorStroke, + "gradientFill": BlockTypes.gradientFill, + "gradientStroke": BlockTypes.gradientStroke, + "radialGradientFill": BlockTypes.radialGradientFill, + "radialGradientStroke": BlockTypes.radialGradientStroke, + "ellipse": BlockTypes.actorEllipse, + "rectangle": BlockTypes.actorRectangle, + "triangle": BlockTypes.actorTriangle, + "star": BlockTypes.actorStar, + "polygon": BlockTypes.actorPolygon, + "artboards": BlockTypes.artboards, + "artboard": BlockTypes.actorArtboard }; class BlockTypes { - static const int Unknown = 0; - static const int Components = 1; - static const int ActorNode = 2; - static const int ActorBone = 3; - static const int ActorRootBone = 4; - static const int ActorImage = 5; - static const int View = 6; - static const int Animation = 7; - static const int Animations = 8; - static const int Atlases = 9; - static const int Atlas = 10; - static const int ActorIKTarget = 11; - static const int ActorEvent = 12; - static const int CustomIntProperty = 13; - static const int CustomFloatProperty = 14; - static const int CustomStringProperty = 15; - static const int CustomBooleanProperty = 16; - static const int ActorColliderRectangle = 17; - static const int ActorColliderTriangle = 18; - static const int ActorColliderCircle = 19; - static const int ActorColliderPolygon = 20; - static const int ActorColliderLine = 21; - static const int ActorImageSequence = 22; - static const int ActorNodeSolo = 23; - static const int JellyComponent = 28; - static const int ActorJellyBone = 29; - static const int ActorIKConstraint = 30; - static const int ActorDistanceConstraint = 31; - static const int ActorTranslationConstraint = 32; - static const int ActorRotationConstraint = 33; - static const int ActorScaleConstraint = 34; - static const int ActorTransformConstraint = 35; - static const int ActorShape = 100; - static const int ActorPath = 101; - static const int ColorFill = 102; - static const int ColorStroke = 103; - static const int GradientFill = 104; - static const int GradientStroke = 105; - static const int RadialGradientFill = 106; - static const int RadialGradientStroke = 107; - static const int ActorEllipse = 108; - static const int ActorRectangle = 109; - static const int ActorTriangle = 110; - static const int ActorStar = 111; - static const int ActorPolygon = 112; - static const int ActorSkin = 113; - static const int ActorArtboard = 114; - static const int Artboards = 115; + static const int unknown = 0; + static const int components = 1; + static const int actorNode = 2; + static const int actorBone = 3; + static const int actorRootBone = 4; + static const int actorImage = 5; + static const int view = 6; + static const int animation = 7; + static const int animations = 8; + static const int atlases = 9; + static const int atlas = 10; + static const int actorIKTarget = 11; + static const int actorEvent = 12; + static const int customIntProperty = 13; + static const int customFloatProperty = 14; + static const int customStringProperty = 15; + static const int customBooleanProperty = 16; + static const int actorColliderRectangle = 17; + static const int actorColliderTriangle = 18; + static const int actorColliderCircle = 19; + static const int actorColliderPolygon = 20; + static const int actorColliderLine = 21; + static const int actorImageSequence = 22; + static const int actorNodeSolo = 23; + static const int jellyComponent = 28; + static const int actorJellyBone = 29; + static const int actorIKConstraint = 30; + static const int actorDistanceConstraint = 31; + static const int actorTranslationConstraint = 32; + static const int actorRotationConstraint = 33; + static const int actorScaleConstraint = 34; + static const int actorTransformConstraint = 35; + static const int actorShape = 100; + static const int actorPath = 101; + static const int colorFill = 102; + static const int colorStroke = 103; + static const int gradientFill = 104; + static const int gradientStroke = 105; + static const int radialGradientFill = 106; + static const int radialGradientStroke = 107; + static const int actorEllipse = 108; + static const int actorRectangle = 109; + static const int actorTriangle = 110; + static const int actorStar = 111; + static const int actorPolygon = 112; + static const int actorSkin = 113; + static const int actorArtboard = 114; + static const int artboards = 115; } diff --git a/flare_dart/lib/dependency_sorter.dart b/flare_dart/lib/dependency_sorter.dart index 8cb074a..98df48d 100644 --- a/flare_dart/lib/dependency_sorter.dart +++ b/flare_dart/lib/dependency_sorter.dart @@ -12,7 +12,7 @@ class DependencySorter { } List sort(ActorComponent root) { - _order = List(); + _order = []; if (!visit(root)) { return null; } @@ -32,7 +32,7 @@ class DependencySorter { List dependents = n.dependents; if (dependents != null) { - for (ActorComponent d in dependents) { + for (final ActorComponent d in dependents) { if (!visit(d)) { return false; } diff --git a/flare_dart/lib/jelly_component.dart b/flare_dart/lib/jelly_component.dart index e7815e7..ecf4579 100644 --- a/flare_dart/lib/jelly_component.dart +++ b/flare_dart/lib/jelly_component.dart @@ -1,26 +1,26 @@ -import "stream_reader.dart"; +import "dart:math"; import "actor_artboard.dart"; -import "actor_jelly_bone.dart"; +import "actor_bone.dart"; import "actor_component.dart"; +import "actor_constraint.dart"; +import "actor_jelly_bone.dart"; import "actor_node.dart"; -import "actor_bone.dart"; -import "math/vec2d.dart"; -import "math/mat2d.dart"; -import "dart:math"; import "actor_root_bone.dart"; -import "actor_constraint.dart"; +import "math/mat2d.dart"; +import "math/vec2d.dart"; +import "stream_reader.dart"; class JellyComponent extends ActorComponent { - static const int JellyMax = 16; - static double OptimalDistance = 4.0 * (sqrt(2.0) - 1.0) / 3.0; - static double CurveConstant = OptimalDistance * sqrt(2.0) * 0.5; - static const double Epsilon = 0.001; // Intentionally agressive. + static const int jellyMax = 16; + static double optimalDistance = 4.0 * (sqrt(2.0) - 1.0) / 3.0; + static double curveConstant = optimalDistance * sqrt(2.0) * 0.5; + static const double epsilon = 0.001; // Intentionally agressive. static bool fuzzyEquals(Vec2D a, Vec2D b) { double a0 = a[0], a1 = a[1]; double b0 = b[0], b1 = b[1]; - return ((a0 - b0).abs() <= Epsilon * max(1.0, max(a0.abs(), b0.abs())) && - (a1 - b1).abs() <= Epsilon * max(1.0, max(a1.abs(), b1.abs()))); + return (a0 - b0).abs() <= epsilon * max(1.0, max(a0.abs(), b0.abs())) && + (a1 - b1).abs() <= epsilon * max(1.0, max(a1.abs(), b1.abs())); } static void forwardDiffBezier(double c0, double c1, double c2, double c3, @@ -51,7 +51,7 @@ class JellyComponent extends ActorComponent { } List normalizeCurve(List curve, int numSegments) { - List points = List(); + List points = []; int curvePointCount = curve.length; List distances = List(curvePointCount); distances[0] = 0.0; @@ -121,11 +121,12 @@ class JellyComponent extends ActorComponent { _cachedOut = Vec2D(); _cachedIn = Vec2D(); - _jellyPoints = List(JellyMax + 1); - for (var i = 0; i <= JellyMax; i++) { + _jellyPoints = List(jellyMax + 1); + for (var i = 0; i <= jellyMax; i++) { _jellyPoints[i] = Vec2D(); } } + @override ActorComponent makeInstance(ActorArtboard artboard) { JellyComponent instance = JellyComponent(); instance.copyJelly(this, artboard); @@ -142,6 +143,7 @@ class JellyComponent extends ActorComponent { _outTargetIdx = component._outTargetIdx; } + @override void resolveComponentIndices(List components) { super.resolveComponentIndices(components); @@ -162,8 +164,8 @@ class JellyComponent extends ActorComponent { artboard.addDependency(this, firstBone); dependencyConstraints += firstBone.allConstraints; - // If we don't have an out target and the child jelly does have an in target - // we are dependent on that target's position. + // If we don't have an out target and the child jelly does have an + // in target we are dependent on that target's position. if (_outTarget == null && firstBone.jelly != null && firstBone.jelly.inTarget != null) { @@ -172,7 +174,7 @@ class JellyComponent extends ActorComponent { } } if (bone.parent is ActorBone) { - ActorBone parentBone = bone.parent; + ActorBone parentBone = bone.parent as ActorBone; JellyComponent parentBoneJelly = parentBone.jelly; if (parentBoneJelly != null && parentBoneJelly.outTarget != null) { artboard.addDependency(this, parentBoneJelly.outTarget); @@ -193,11 +195,12 @@ class JellyComponent extends ActorComponent { // We want to depend on any and all constraints that our dependents have. Set constraints = Set.from(dependencyConstraints); - for (ActorConstraint constraint in constraints) { + for (final ActorConstraint constraint in constraints) { artboard.addDependency(this, constraint); } } + @override void completeResolve() { //super.completeResolve(); ActorBone bone = parent as ActorBone; @@ -209,11 +212,12 @@ class JellyComponent extends ActorComponent { return; } - _bones = List(); - for (ActorNode child in children) { + _bones = []; + for (final ActorNode child in children) { if (child is ActorJellyBone) { _bones.add(child); - // Make sure the jelly doesn't update until the jelly component has updated + // Make sure the jelly doesn't update until + // the jelly component has updated artboard.addDependency(child, this); } } @@ -221,9 +225,7 @@ class JellyComponent extends ActorComponent { static JellyComponent read( ActorArtboard artboard, StreamReader reader, JellyComponent node) { - if (node == null) { - node = JellyComponent(); - } + node ??= JellyComponent(); ActorComponent.read(artboard, reader, node); node._easeIn = reader.readFloat32("easeIn"); @@ -263,8 +265,8 @@ class JellyComponent extends ActorComponent { Vec2D q2 = _outPoint; Vec2D q3 = tipPosition; - forwardDiffBezier(q0[0], q1[0], q2[0], q3[0], _jellyPoints, JellyMax, 0); - forwardDiffBezier(q0[1], q1[1], q2[1], q3[1], _jellyPoints, JellyMax, 1); + forwardDiffBezier(q0[0], q1[0], q2[0], q3[0], _jellyPoints, jellyMax, 0); + forwardDiffBezier(q0[1], q1[1], q2[1], q3[1], _jellyPoints, jellyMax, 1); List normalizedPoints = normalizeCurve(_jellyPoints, _bones.length); @@ -337,12 +339,12 @@ class JellyComponent extends ActorComponent { Vec2D.transformMat2(_inDirection, sum, inverseWorld); Vec2D.normalize(_inDirection, _inDirection); } - _inPoint[0] = _inDirection[0] * _easeIn * bone.length * CurveConstant; - _inPoint[1] = _inDirection[1] * _easeIn * bone.length * CurveConstant; + _inPoint[0] = _inDirection[0] * _easeIn * bone.length * curveConstant; + _inPoint[1] = _inDirection[1] * _easeIn * bone.length * curveConstant; } else { _inDirection[0] = 1.0; _inDirection[1] = 0.0; - _inPoint[0] = _inDirection[0] * _easeIn * bone.length * CurveConstant; + _inPoint[0] = _inDirection[0] * _easeIn * bone.length * curveConstant; } if (_outTarget != null) { @@ -374,7 +376,7 @@ class JellyComponent extends ActorComponent { } Vec2D.normalize(_outDirection, _outDirection); Vec2D scaledOut = Vec2D.scale( - Vec2D(), _outDirection, _easeOut * bone.length * CurveConstant); + Vec2D(), _outDirection, _easeOut * bone.length * curveConstant); _outPoint[0] = bone.length; _outPoint[1] = 0.0; Vec2D.add(_outPoint, _outPoint, scaledOut); @@ -383,7 +385,7 @@ class JellyComponent extends ActorComponent { _outDirection[1] = 0.0; Vec2D scaledOut = Vec2D.scale( - Vec2D(), _outDirection, _easeOut * bone.length * CurveConstant); + Vec2D(), _outDirection, _easeOut * bone.length * curveConstant); _outPoint[0] = bone.length; _outPoint[1] = 0.0; Vec2D.add(_outPoint, _outPoint, scaledOut); diff --git a/flare_dart/lib/json_block_reader.dart b/flare_dart/lib/json_block_reader.dart index 2f7774e..6bc6de8 100644 --- a/flare_dart/lib/json_block_reader.dart +++ b/flare_dart/lib/json_block_reader.dart @@ -1,28 +1,24 @@ import "json_reader.dart"; class JSONBlockReader extends JSONReader { - @override - int blockType; - - JSONBlockReader(Map object) - : blockType = 0, - super(object); + JSONBlockReader(Map object) : super(object); JSONBlockReader.fromObject(int type, Map object) : super(object) { blockType = type; } + @override JSONBlockReader readNextBlock([Map blockTypes]) { if (isEOF()) { return null; } - var obj = Map(); - obj["container"] = this._peek(); - var type = this.readBlockType(blockTypes); - var c = this.context.first; + var obj = {}; + obj["container"] = _peek(); + var type = readBlockType(blockTypes); + dynamic c = context.first; if (c is Map) { - c.remove(this.nextKey); + c.remove(nextKey); } else if (c is List) { c.removeAt(0); } @@ -30,35 +26,35 @@ class JSONBlockReader extends JSONReader { return JSONBlockReader.fromObject(type, obj); } - readBlockType(Map blockTypes) { - var next = this._peek(); - var bType; + int readBlockType(Map blockTypes) { + dynamic next = _peek(); + int bType; if (next is Map) { - var c = this.context.first; + dynamic c = context.first; if (c is Map) { - bType = blockTypes[this.nextKey]; + bType = blockTypes[nextKey]; } else if (c is List) { // Objects are serialized with "type" property. - var nType = next["type"]; + dynamic nType = next["type"]; bType = blockTypes[nType]; } } else if (next is List) { // Arrays are serialized as "type": [Array]. - bType = blockTypes[this.nextKey]; + bType = blockTypes[nextKey]; } return bType; } - _peek() { - var stream = this.context.first; - var next; + dynamic _peek() { + dynamic stream = context.first; + dynamic next; if (stream is Map) { - next = stream[this.nextKey]; + next = stream[nextKey]; } else if (stream is List) { next = stream[0]; } return next; } - get nextKey => this.context.first.keys.first; + dynamic get nextKey => context.first.keys.first; } diff --git a/flare_dart/lib/json_reader.dart b/flare_dart/lib/json_reader.dart index b880365..6e95d90 100644 --- a/flare_dart/lib/json_reader.dart +++ b/flare_dart/lib/json_reader.dart @@ -13,58 +13,70 @@ abstract class JSONReader implements StreamReader { JSONReader(Map object) { _readObject = object["container"]; - _context = ListQueue(); + _context = ListQueue(); _context.addFirst(_readObject); } - dynamic readProp(String label) { - var head = _context.first; + T readProp(String label) { + dynamic head = _context.first; if (head is Map) { - var prop = head[label]; + dynamic prop = head[label]; head.remove(label); - return prop; + if (prop is T) { + return prop; + } else { + return null; + } } else if (head is List) { - return head.removeAt(0); + dynamic prop = head.removeAt(0); + if (prop is T) { + return prop; + } else { + return null; + } } return null; } @override - readFloat32(label) { - num f = this.readProp(label); - return f.toDouble(); + double readFloat32(String label) { + num f = readProp(label); + return f?.toDouble() ?? 0.0; } // Reads the array into ar @override Float32List readFloat32Array(int length, String label) { var ar = Float32List(length); - this._readArray(ar, label); - return ar; + _readArray(ar, label); + return ar; } void _readArray(List ar, String label) { - List array = this.readProp(label); + List array = readProp(label); + if (array == null) { + return; + } for (int i = 0; i < ar.length; i++) { - num val = array[i]; + num val = array[i] as num; ar[i] = ar.first is double ? val.toDouble() : val.toInt(); } } @override - double readFloat64(label) { - num f = this.readProp(label); - return f.toDouble(); + double readFloat64(String label) { + num f = readProp(label); + return f?.toDouble() ?? 0; } @override - int readUint8(label) { - return this.readProp(label); + int readUint8(String label) { + return readProp(label) ?? 0; } @override int readUint8Length() { - return this._readLength(); + return _readLength(); } @override @@ -73,106 +85,114 @@ abstract class JSONReader implements StreamReader { } @override - int readInt8(label) { - return this.readProp(label); + int readInt8(String label) { + return readProp(label) ?? 0; } @override - int readUint16(label) { - return this.readProp(label); + int readUint16(String label) { + return readProp(label) ?? 0; } @override Uint8List readUint8Array(int length, String label) { - var ar = Uint8List(length); - this._readArray(ar, label); + var ar = Uint8List(length); + _readArray(ar, label); return ar; } @override Uint16List readUint16Array(int length, String label) { - var ar = Uint16List(length); - this._readArray(ar, label); - return ar; + var ar = Uint16List(length); + _readArray(ar, label); + return ar; } @override - int readInt16(label) { - return this.readProp(label); + int readInt16(String label) { + return readProp(label) ?? 0; } @override int readUint16Length() { - return this._readLength(); + return _readLength(); } @override int readUint32Length() { - return this._readLength(); + return _readLength(); } @override - int readUint32(label) { - return this.readProp(label); + int readUint32(String label) { + return readProp(label) ?? 0; } @override - int readInt32(label) { - return this.readProp(label); + int readInt32(String label) { + return readProp(label) ?? 0; } @override int readVersion() { - return this.readProp("version"); + return readProp("version") ?? 0; } @override - readString(label) { - return this.readProp(label); + String readString(String label) { + return readProp(label) ?? ""; } @override - readBool(String label) { - return this.readProp(label); + bool readBool(String label) { + return readProp(label) ?? false; } // @hasOffset flag is needed for older (up until version 14) files. - // Since the JSON Reader has been added in version 15, the field here is optional. + // Since the JSON Reader has been added in version 15, the field + // here is optional. @override - readId(String label) { - var val = this.readProp(label); - return val is num ? val + 1 : 0; + int readId(String label) { + var val = readProp(label); + return val != null ? val.toInt() + 1 : 0; } @override - openArray(label) { - var array = this.readProp(label); + void openArray(String label) { + dynamic array = readProp(label); _context.addFirst(array); } @override - closeArray() { + void closeArray() { _context.removeFirst(); } @override - openObject(label) { - var o = this.readProp(label); + void openObject(String label) { + dynamic o = readProp(label); _context.addFirst(o); } @override - closeObject() { - this._context.removeFirst(); + void closeObject() { + _context.removeFirst(); } - int _readLength() => - _context.first.length; // Maps and Lists both have a `length` property. + int _readLength() { + if (_context.first is List) { + return (_context.first as List).length; + } else if (_context.first is Map) { + return (_context.first as Map).length; + } + return 0; + } + @override Uint8List readAsset() { String encodedAsset = readString("data"); // are we sure we need a label here? - return Base64Decoder().convert(encodedAsset, 22); + return const Base64Decoder().convert(encodedAsset, 22); } @override diff --git a/flare_dart/lib/math/aabb.dart b/flare_dart/lib/math/aabb.dart index 36e3c04..f0212f4 100644 --- a/flare_dart/lib/math/aabb.dart +++ b/flare_dart/lib/math/aabb.dart @@ -33,7 +33,7 @@ class AABB { return _buffer[idx]; } - operator []=(int idx, double v) { + void operator []=(int idx, double v) { _buffer[idx] = v; } diff --git a/flare_dart/lib/math/mat2d.dart b/flare_dart/lib/math/mat2d.dart index 4c6f08f..326ee54 100644 --- a/flare_dart/lib/math/mat2d.dart +++ b/flare_dart/lib/math/mat2d.dart @@ -1,7 +1,7 @@ -import "dart:typed_data"; import "dart:math"; -import "vec2d.dart"; +import "dart:typed_data"; import "transform_components.dart"; +import "vec2d.dart"; class Mat2D { Float32List _buffer; diff --git a/flare_dart/lib/math/vec2d.dart b/flare_dart/lib/math/vec2d.dart index cfa13a3..2478bbb 100644 --- a/flare_dart/lib/math/vec2d.dart +++ b/flare_dart/lib/math/vec2d.dart @@ -106,8 +106,8 @@ class Vec2D { } static Vec2D negate(Vec2D result, Vec2D a) { - result[0] = -a[0]; - result[1] = -a[1]; + result[0] = -1 * a[0]; + result[1] = -1 * a[1]; return result; } diff --git a/flare_dart/lib/path_point.dart b/flare_dart/lib/path_point.dart index b1d3aef..7bdb6aa 100644 --- a/flare_dart/lib/path_point.dart +++ b/flare_dart/lib/path_point.dart @@ -1,10 +1,10 @@ +import "dart:collection"; import "dart:typed_data"; +import "math/mat2d.dart"; import "math/vec2d.dart"; -import "dart:collection"; import "stream_reader.dart"; -import "math/mat2d.dart"; -enum PointType { Straight, Mirror, Disconnected, Asymmetric } +enum PointType { straight, mirror, disconnected, asymmetric } HashMap pointTypeLookup = HashMap.fromIterables([ @@ -13,10 +13,10 @@ HashMap pointTypeLookup = 2, 3 ], [ - PointType.Straight, - PointType.Mirror, - PointType.Disconnected, - PointType.Asymmetric + PointType.straight, + PointType.mirror, + PointType.disconnected, + PointType.asymmetric ]); abstract class PathPoint { @@ -38,8 +38,8 @@ abstract class PathPoint { PathPoint makeInstance(); - copy(PathPoint from) { - this._type = from._type; + void copy(PathPoint from) { + _type = from._type; Vec2D.copy(_translation, from._translation); if (from._weights != null) { _weights = Float32List.fromList(from._weights); @@ -69,26 +69,26 @@ abstract class PathPoint { class StraightPathPoint extends PathPoint { double radius = 0.0; - StraightPathPoint() : super(PointType.Straight); + StraightPathPoint() : super(PointType.straight); StraightPathPoint.fromTranslation(Vec2D translation) - : super(PointType.Straight) { - this._translation = translation; + : super(PointType.straight) { + _translation = translation; } - StraightPathPoint.fromValues(Vec2D translation, double r) - : super(PointType.Straight) { + StraightPathPoint.fromValues(Vec2D translation, this.radius) + : super(PointType.straight) { _translation = translation; - radius = r; } + @override PathPoint makeInstance() { StraightPathPoint node = StraightPathPoint(); node.copyStraight(this); return node; } - copyStraight(StraightPathPoint from) { + void copyStraight(StraightPathPoint from) { super.copy(from); radius = from.radius; } @@ -151,24 +151,26 @@ class CubicPathPoint extends PathPoint { } CubicPathPoint.fromValues(Vec2D translation, Vec2D inPoint, Vec2D outPoint) - : super(PointType.Disconnected) { + : super(PointType.disconnected) { _translation = translation; _in = inPoint; _out = outPoint; } + @override PathPoint makeInstance() { CubicPathPoint node = CubicPathPoint(_type); node.copyCubic(this); return node; } - copyCubic(from) { + void copyCubic(CubicPathPoint from) { super.copy(from); Vec2D.copy(_in, from._in); Vec2D.copy(_out, from._out); } + @override int readPoint(StreamReader reader, bool isConnectedToBones) { Vec2D.copyFromList(_in, reader.readFloat32Array(2, "in")); Vec2D.copyFromList(_out, reader.readFloat32Array(2, "out")); @@ -178,6 +180,7 @@ class CubicPathPoint extends PathPoint { return 0; } + @override PathPoint transformed(Mat2D transform) { CubicPathPoint result = super.transformed(transform) as CubicPathPoint; Vec2D.transformMat2D(result.inPoint, result.inPoint, transform); diff --git a/flare_dart/lib/stream_reader.dart b/flare_dart/lib/stream_reader.dart index d7289e1..4fa8aac 100644 --- a/flare_dart/lib/stream_reader.dart +++ b/flare_dart/lib/stream_reader.dart @@ -7,7 +7,7 @@ abstract class StreamReader { int blockType = 0; // Instantiate the right type of Reader based on the input values - factory StreamReader(data) { + factory StreamReader(dynamic data) { StreamReader reader; if (data is ByteData) { reader = BlockReader(data); diff --git a/flare_dart/lib/transform_space.dart b/flare_dart/lib/transform_space.dart index c68a824..b882881 100644 --- a/flare_dart/lib/transform_space.dart +++ b/flare_dart/lib/transform_space.dart @@ -1,4 +1,4 @@ class TransformSpace { - static const int Local = 0; - static const int World = 1; + static const int local = 0; + static const int world = 1; } diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 45334e9..093b26f 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 1.4.9 +version: 1.4.10 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 031fc0a..06f49be 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.5.14] - 2019-10-08 13:38:55 + +- Fixing up various static analysis issues. + ## [1.5.13] - 2019-10-07 11:21:29 - Using latest flare_dart with support for Nodes inside of Shapes (Paths with multiple transform spaces). diff --git a/flare_flutter/analysis_options.yaml b/flare_flutter/analysis_options.yaml index 2da0fe6..7f8d90e 100644 --- a/flare_flutter/analysis_options.yaml +++ b/flare_flutter/analysis_options.yaml @@ -2,6 +2,8 @@ analyzer: strong-mode: implicit-casts: false implicit-dynamic: false + errors: + unused_import: error linter: rules: @@ -85,7 +87,7 @@ linter: - prefer_is_empty - prefer_is_not_empty - prefer_iterable_whereType - - prefer_mixin + # - prefer_mixin - prefer_null_aware_operators - prefer_typing_uninitialized_variables - prefer_void_to_null diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index 2609d03..8dfb1f3 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -22,7 +22,6 @@ import 'package:flare_dart/actor_rectangle.dart'; import 'package:flare_dart/actor_star.dart'; import 'package:flare_dart/actor_triangle.dart'; import 'package:flare_dart/actor_color.dart'; -import 'package:flare_dart/actor_node.dart'; import 'package:flare_dart/actor_drawable.dart'; import 'package:flare_dart/math/mat2d.dart'; import 'package:flare_dart/math/vec2d.dart'; @@ -68,10 +67,10 @@ abstract class FlutterFill { void paint(ActorFill fill, ui.Canvas canvas, ui.Path path) { switch (fill.fillRule) { - case FillRule.EvenOdd: + case FillRule.evenOdd: path.fillType = ui.PathFillType.evenOdd; break; - case FillRule.NonZero: + case FillRule.nonZero: path.fillType = ui.PathFillType.nonZero; break; } @@ -98,11 +97,11 @@ abstract class FlutterStroke { static ui.StrokeCap getStrokeCap(StrokeCap cap) { switch (cap) { - case StrokeCap.Butt: + case StrokeCap.butt: return ui.StrokeCap.butt; - case StrokeCap.Round: + case StrokeCap.round: return ui.StrokeCap.round; - case StrokeCap.Square: + case StrokeCap.square: return ui.StrokeCap.square; } return ui.StrokeCap.butt; @@ -110,11 +109,11 @@ abstract class FlutterStroke { static ui.StrokeJoin getStrokeJoin(StrokeJoin join) { switch (join) { - case StrokeJoin.Miter: + case StrokeJoin.miter: return ui.StrokeJoin.miter; - case StrokeJoin.Round: + case StrokeJoin.round: return ui.StrokeJoin.round; - case StrokeJoin.Bevel: + case StrokeJoin.bevel: return ui.StrokeJoin.bevel; } return ui.StrokeJoin.miter; @@ -127,7 +126,7 @@ abstract class FlutterStroke { if (stroke.isTrimmed) { if (effectPath == null) { - bool isSequential = stroke.trim == TrimPath.Sequential; + bool isSequential = stroke.trim == TrimPath.sequential; double start = stroke.trimStart.clamp(0, 1).toDouble(); double end = stroke.trimEnd.clamp(0, 1).toDouble(); double offset = stroke.trimOffset; @@ -892,7 +891,7 @@ abstract class FlutterPathPointsPath implements FlutterPath { for (int i = 0; i < pl; i++) { PathPoint point = pts[i]; switch (point.pointType) { - case PointType.Straight: + case PointType.straight: { StraightPathPoint straightPoint = point as StraightPathPoint; double radius = straightPoint.radius; @@ -1172,7 +1171,7 @@ class FlutterActorImage extends ActorImage with FlutterActorDrawable { @override void update(int dirt) { super.update(dirt); - if (dirt & DirtyFlags.PaintDirty != 0) { + if (dirt & DirtyFlags.paintDirty != 0) { onPaintUpdated(_paint); } } diff --git a/flare_flutter/lib/flare_cache.dart b/flare_flutter/lib/flare_cache.dart index d2dc161..a60bc6d 100644 --- a/flare_flutter/lib/flare_cache.dart +++ b/flare_flutter/lib/flare_cache.dart @@ -9,7 +9,7 @@ class FlareCache extends AssetBundleCache { FlareCache(AssetBundle bundle) : super(bundle); static bool doesPrune = true; - static Duration pruneDelay = Duration(seconds: 2); + static Duration pruneDelay = const Duration(seconds: 2); @override bool get isPruningEnabled => doesPrune; diff --git a/flare_flutter/lib/flare_controller.dart b/flare_flutter/lib/flare_controller.dart index abc4eee..ebdda43 100644 --- a/flare_flutter/lib/flare_controller.dart +++ b/flare_flutter/lib/flare_controller.dart @@ -1,6 +1,6 @@ -import 'flare.dart'; import 'package:flare_dart/math/mat2d.dart'; import 'package:flutter/foundation.dart'; +import 'flare.dart'; /// /// [FlareController] is a general-purpose interface for customizing @@ -17,8 +17,8 @@ import 'package:flutter/foundation.dart'; /// /// [FlareController]s can implement three methods: /// - [initialize()] is called when the [FlareActor] is first created. -/// - [setViewTransform()] and [advance()] are called every time the [FlareActor] -/// widget is repainted. +/// - [setViewTransform()] and [advance()] are called every time the +/// [FlareActor] widget is repainted. /// /// A basic implementation can be found in [FlareControls]. diff --git a/flare_flutter/lib/flare_controls.dart b/flare_flutter/lib/flare_controls.dart index 7d5238f..d0fdee5 100644 --- a/flare_flutter/lib/flare_controls.dart +++ b/flare_flutter/lib/flare_controls.dart @@ -1,8 +1,8 @@ import 'dart:math'; +import 'package:flare_dart/math/mat2d.dart'; import 'flare.dart'; import 'flare_actor.dart'; import 'flare_controller.dart'; -import 'package:flare_dart/math/mat2d.dart'; /// [FlareControls] is a concrete implementation of the [FlareController]. /// @@ -15,13 +15,14 @@ class FlareControls extends FlareController { /// The current [ActorAnimation]. String _animationName; - double _mixSeconds = 0.1; + final double _mixSeconds = 0.1; /// The [FlareAnimationLayer]s currently active. - List _animationLayers = []; + final List _animationLayers = []; /// Called at initialization time, it stores the reference /// to the current [FlutterActorArtboard]. + @override void initialize(FlutterActorArtboard artboard) { _artboard = artboard; } @@ -46,6 +47,7 @@ class FlareControls extends FlareController { } } + @override void setViewTransform(Mat2D viewTransform) {} /// Advance all the [FlareAnimationLayer]s that are currently controlled @@ -53,6 +55,7 @@ class FlareControls extends FlareController { /// /// If an animation completes during the current frame (and doesn't loop), /// the [onCompleted()] callback will be triggered. + @override bool advance(FlutterActorArtboard artboard, double elapsed) { int lastFullyMixed = -1; double lastMix = 0.0; @@ -61,8 +64,8 @@ class FlareControls extends FlareController { List completed = []; /// This loop will mix all the currently active animation layers so that, - /// if an animation is played on top of the current one, it'll smoothly mix between - /// the two instead of immediately switching to the new one. + /// if an animation is played on top of the current one, it'll smoothly mix + /// between the two instead of immediately switching to the new one. for (int i = 0; i < _animationLayers.length; i++) { FlareAnimationLayer layer = _animationLayers[i]; layer.mix += elapsed; @@ -92,8 +95,8 @@ class FlareControls extends FlareController { } } - /// Removes the last fully mixed animation, if more than one animation is present. - /// If only one animation is playing (e.g. idle), nothing happens. + /// Removes the last fully mixed animation, if more than one animation is + /// present. If only one animation is playing (e.g. idle), nothing happens. /// Since animations are added to the end of [_animationLayers], /// everything before the last fully mixed animation can be /// assumed to be also fully mixed too. @@ -108,7 +111,7 @@ class FlareControls extends FlareController { } /// Notify of the completed animations. - for (FlareAnimationLayer animation in completed) { + for (final FlareAnimationLayer animation in completed) { _animationLayers.remove(animation); onCompleted(animation.name); } diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 9985d82..667f039 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.13 +version: 1.5.14 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From d74c0c898df2bbc543110b39721af499f1a3c561 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Tue, 8 Oct 2019 14:00:22 -0700 Subject: [PATCH 30/59] Squashed commit of the following: commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_dart/CHANGELOG.md | 3 ++- flare_dart/pubspec.yaml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index da4b500..829cfdb 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,6 +1,7 @@ -## [1.4.10] - 2019-10-08 13:38:26 +## [2.0.0] - 2019-10-08 13:38:26 - Fixing up various static analysis issues. +- Need to bump version to 2.0.0 due to breaking changes between flare_flutter and flare_dart caused by resolving analysis issues. ## [1.4.9] - 2019-10-07 11:20:58 diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 093b26f..515bf55 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 1.4.10 +version: 2.0.0 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From 3c27f278df652247c60eb909ce16a0b14d624112 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Tue, 8 Oct 2019 15:20:17 -0700 Subject: [PATCH 31/59] Fixing typo in last version. --- flare_flutter/lib/flare.dart | 4 ---- 1 file changed, 4 deletions(-) diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index bd31b03..8dfb1f3 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -126,11 +126,7 @@ abstract class FlutterStroke { if (stroke.isTrimmed) { if (effectPath == null) { -<<<<<<< HEAD - bool isSequential = stroke.trim == TrimPath.Sequential; -======= bool isSequential = stroke.trim == TrimPath.sequential; ->>>>>>> dev double start = stroke.trimStart.clamp(0, 1).toDouble(); double end = stroke.trimEnd.clamp(0, 1).toDouble(); double offset = stroke.trimOffset; From 8282f2e3a73f98a47d869f28e7d34343cfd4ecc4 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Tue, 8 Oct 2019 16:49:58 -0700 Subject: [PATCH 32/59] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 277e671..9bfda4b 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ This repository has three primary branches: - This is the branch we publish to pub from. - This branch and the associated pub packages are guaranteed to work on the flutter stable channel. ``` - flare_flutter: ^1.5.4 + flare_flutter: ^1.5.15 ``` - dev - This branch has the latest changes should work with the flutter dev channel. From 226bba2fb8842578b53344f7e478df8c33cde4a2 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Tue, 8 Oct 2019 19:06:39 -0700 Subject: [PATCH 33/59] Bumping version. --- flare_flutter/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 8d09daa..dab4b58 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.14 +version: 1.5.15 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From ea16c60615ecc4e411d05a8e6a99c8996871062d Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 9 Oct 2019 11:10:54 -0700 Subject: [PATCH 34/59] Squashed commit of the following: commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_dart/CHANGELOG.md | 4 ++ flare_dart/lib/actor_drawable.dart | 22 ++++++++-- flare_dart/lib/actor_node.dart | 15 ++++++- flare_dart/lib/actor_shape.dart | 6 +-- flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 8 ++++ flare_flutter/lib/flare.dart | 65 +++++++++++++++++++++--------- flare_flutter/pubspec.yaml | 2 +- 8 files changed, 94 insertions(+), 30 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 829cfdb..4643720 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [2.1.0] - 2019-10-09 11:08:05 + +- Adding support for difference clipping. + ## [2.0.0] - 2019-10-08 13:38:26 - Fixing up various static analysis issues. diff --git a/flare_dart/lib/actor_drawable.dart b/flare_dart/lib/actor_drawable.dart index fa8116e..d619d30 100644 --- a/flare_dart/lib/actor_drawable.dart +++ b/flare_dart/lib/actor_drawable.dart @@ -6,10 +6,19 @@ import "actor_node.dart"; import "math/aabb.dart"; enum BlendModes { normal, multiply, screen, additive } +<<<<<<< HEAD +======= + +class ClipShape { + final ActorShape shape; + final bool intersect; + ClipShape(this.shape, this.intersect); +} +>>>>>>> master abstract class ActorDrawable extends ActorNode { - List> _clipShapes; - List> get clipShapes => _clipShapes; + List> _clipShapes; + List> get clipShapes => _clipShapes; // Editor set draw index. int _drawOrder; @@ -61,14 +70,21 @@ abstract class ActorDrawable extends ActorNode { @override void completeResolve() { +<<<<<<< HEAD _clipShapes = >[]; List> clippers = allClips; for (final List clips in clippers) { List shapes = []; +======= + _clipShapes = >[]; + List> clippers = allClips; + for (final List clips in clippers) { + List shapes = []; +>>>>>>> master for (final ActorClip clip in clips) { clip.node.all((ActorNode node) { if (node is ActorShape) { - shapes.add(node); + shapes.add(ClipShape(node, clip.intersect)); } return true; }); diff --git a/flare_dart/lib/actor_node.dart b/flare_dart/lib/actor_node.dart index ab5f6d8..aaa7eeb 100644 --- a/flare_dart/lib/actor_node.dart +++ b/flare_dart/lib/actor_node.dart @@ -10,9 +10,16 @@ typedef bool NodeWalkCallback(ActorNode node); class ActorClip { int clipIdx; + bool intersect = true; ActorNode node; ActorClip(this.clipIdx); +<<<<<<< HEAD +======= + ActorClip.copy(ActorClip from) + : clipIdx = from.clipIdx, + intersect = from.intersect; +>>>>>>> master } class ActorNode extends ActorComponent { @@ -243,7 +250,11 @@ class ActorNode extends ActorComponent { if (clipCount > 0) { node._clips = List(clipCount); for (int i = 0; i < clipCount; i++) { - node._clips[i] = ActorClip(reader.readId("clip")); + var clip = ActorClip(reader.readId("clip")); + if (artboard.actor.version >= 23) { + clip.intersect = reader.readBool("intersect"); + } + node._clips[i] = clip; } } reader.closeArray(); @@ -284,7 +295,7 @@ class ActorNode extends ActorComponent { if (node._clips != null) { _clips = List(node._clips.length); for (int i = 0, l = node._clips.length; i < l; i++) { - _clips[i] = ActorClip(node._clips[i].clipIdx); + _clips[i] = ActorClip.copy(node._clips[i]); } } else { _clips = null; diff --git a/flare_dart/lib/actor_shape.dart b/flare_dart/lib/actor_shape.dart index 24e7f91..4c1aaa0 100644 --- a/flare_dart/lib/actor_shape.dart +++ b/flare_dart/lib/actor_shape.dart @@ -55,9 +55,9 @@ class ActorShape extends ActorDrawable { @override AABB computeAABB() { AABB aabb; - for (final List clips in clipShapes) { - for (final ActorShape node in clips) { - AABB bounds = node.computeAABB(); + for (final List clips in clipShapes) { + for (final ClipShape clipShape in clips) { + AABB bounds = clipShape.shape.computeAABB(); if (bounds == null) { continue; } diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 515bf55..5c627db 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 2.0.0 +version: 2.1.0 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 06f49be..ef31e9c 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,11 @@ +## [1.6.0] - 2019-10-09 11:08:52 + +- Using latest flare_dart with support for difference clipping. + +## [1.5.15] - 2019-10-08 13:38:55 + +- Fixed Pub deploy bug. + ## [1.5.14] - 2019-10-08 13:38:55 - Fixing up various static analysis issues. diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index 8dfb1f3..e3b5e0d 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -205,6 +205,15 @@ class FlutterActorShape extends ActorShape with FlutterActorDrawable { _isValid = true; _path.reset(); +<<<<<<< HEAD +======= + if (fill != null && fill.fillRule == FillRule.evenOdd) { + _path.fillType = PathFillType.evenOdd; + } else { + _path.fillType = PathFillType.nonZero; + } + +>>>>>>> master for (final ActorBasePath path in paths) { Mat2D transform = path.pathTransform; _path.addPath((path as FlutterPath).path, ui.Offset.zero, @@ -226,26 +235,42 @@ class FlutterActorShape extends ActorShape with FlutterActorDrawable { canvas.save(); // Get Clips - for (final List clips in clipShapes) { - if (clips.length == 1) { - if (clips.first.renderCollapsed) { + for (final List clips in clipShapes) { + for (final ClipShape clipShape in clips) { + var shape = clipShape.shape; + if (shape.renderCollapsed) { continue; } - canvas.clipPath((clips.first as FlutterActorShape).path); - } else { - ui.Path clippingPath = ui.Path(); - bool empty = true; - for (final ActorShape clipShape in clips) { - if (clipShape.renderCollapsed) { - continue; + if (clipShape.intersect) { + canvas.clipPath((shape as FlutterActorShape).path); + } else { + var artboardRect = Rect.fromLTWH( + artboard.origin[0] * artboard.width, + artboard.origin[1] * artboard.height, + artboard.width, + artboard.height); + + if (shape.fill != null && shape.fill.fillRule == FillRule.evenOdd) { + // One single clip path with subtraction rect and all sub paths. + var clipPath = ui.Path(); + clipPath.addRect(artboardRect); + for (final path in shape.paths) { + clipPath.addPath((path as FlutterPath).path, ui.Offset.zero, + matrix4: path.pathTransform?.mat4); + } + clipPath.fillType = PathFillType.evenOdd; + canvas.clipPath(clipPath); + } else { + // One clip path with rect per shape path. + for (final path in shape.paths) { + var clipPath = ui.Path(); + clipPath.addRect(artboardRect); + clipPath.addPath((path as FlutterPath).path, ui.Offset.zero, + matrix4: path.pathTransform?.mat4); + clipPath.fillType = PathFillType.evenOdd; + canvas.clipPath(clipPath); + } } - clippingPath.addPath( - (clipShape as FlutterActorShape).path, ui.Offset.zero); - empty = false; - } - - if (!empty) { - canvas.clipPath(clippingPath); } } } @@ -1108,14 +1133,14 @@ class FlutterActorImage extends ActorImage with FlutterActorDrawable { } canvas.save(); // Get Clips - for (final List clips in clipShapes) { + for (final List clips in clipShapes) { if (clips.length == 1) { canvas.clipPath((clips[0] as FlutterActorShape).path); } else { ui.Path clippingPath = ui.Path(); - for (final ActorShape clipShape in clips) { + for (final ClipShape clipShape in clips) { clippingPath.addPath( - (clipShape as FlutterActorShape).path, ui.Offset.zero); + (clipShape.shape as FlutterActorShape).path, ui.Offset.zero); } canvas.clipPath(clippingPath); } diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 667f039..1e48936 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.14 +version: 1.6.0 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From 7eb56d7551daf1885f504dfe643ad9c88197051a Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 9 Oct 2019 11:16:23 -0700 Subject: [PATCH 35/59] Squashed commit of the following: commit ea16c60615ecc4e411d05a8e6a99c8996871062d Author: Luigi Rosso Date: Wed Oct 9 11:10:54 2019 -0700 Squashed commit of the following: commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_dart/CHANGELOG.md | 4 ++ flare_dart/lib/actor_drawable.dart | 16 +++++--- flare_dart/lib/actor_node.dart | 12 +++++- flare_dart/lib/actor_shape.dart | 6 +-- flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 8 ++++ flare_flutter/lib/flare.dart | 62 ++++++++++++++++++++---------- flare_flutter/pubspec.yaml | 4 +- 8 files changed, 81 insertions(+), 33 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 829cfdb..4643720 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [2.1.0] - 2019-10-09 11:08:05 + +- Adding support for difference clipping. + ## [2.0.0] - 2019-10-08 13:38:26 - Fixing up various static analysis issues. diff --git a/flare_dart/lib/actor_drawable.dart b/flare_dart/lib/actor_drawable.dart index fa8116e..dc18de1 100644 --- a/flare_dart/lib/actor_drawable.dart +++ b/flare_dart/lib/actor_drawable.dart @@ -7,9 +7,15 @@ import "math/aabb.dart"; enum BlendModes { normal, multiply, screen, additive } +class ClipShape { + final ActorShape shape; + final bool intersect; + ClipShape(this.shape, this.intersect); +} + abstract class ActorDrawable extends ActorNode { - List> _clipShapes; - List> get clipShapes => _clipShapes; + List> _clipShapes; + List> get clipShapes => _clipShapes; // Editor set draw index. int _drawOrder; @@ -61,14 +67,14 @@ abstract class ActorDrawable extends ActorNode { @override void completeResolve() { - _clipShapes = >[]; + _clipShapes = >[]; List> clippers = allClips; for (final List clips in clippers) { - List shapes = []; + List shapes = []; for (final ActorClip clip in clips) { clip.node.all((ActorNode node) { if (node is ActorShape) { - shapes.add(node); + shapes.add(ClipShape(node, clip.intersect)); } return true; }); diff --git a/flare_dart/lib/actor_node.dart b/flare_dart/lib/actor_node.dart index ab5f6d8..0646b30 100644 --- a/flare_dart/lib/actor_node.dart +++ b/flare_dart/lib/actor_node.dart @@ -10,9 +10,13 @@ typedef bool NodeWalkCallback(ActorNode node); class ActorClip { int clipIdx; + bool intersect = true; ActorNode node; ActorClip(this.clipIdx); + ActorClip.copy(ActorClip from) + : clipIdx = from.clipIdx, + intersect = from.intersect; } class ActorNode extends ActorComponent { @@ -243,7 +247,11 @@ class ActorNode extends ActorComponent { if (clipCount > 0) { node._clips = List(clipCount); for (int i = 0; i < clipCount; i++) { - node._clips[i] = ActorClip(reader.readId("clip")); + var clip = ActorClip(reader.readId("clip")); + if (artboard.actor.version >= 23) { + clip.intersect = reader.readBool("intersect"); + } + node._clips[i] = clip; } } reader.closeArray(); @@ -284,7 +292,7 @@ class ActorNode extends ActorComponent { if (node._clips != null) { _clips = List(node._clips.length); for (int i = 0, l = node._clips.length; i < l; i++) { - _clips[i] = ActorClip(node._clips[i].clipIdx); + _clips[i] = ActorClip.copy(node._clips[i]); } } else { _clips = null; diff --git a/flare_dart/lib/actor_shape.dart b/flare_dart/lib/actor_shape.dart index 24e7f91..4c1aaa0 100644 --- a/flare_dart/lib/actor_shape.dart +++ b/flare_dart/lib/actor_shape.dart @@ -55,9 +55,9 @@ class ActorShape extends ActorDrawable { @override AABB computeAABB() { AABB aabb; - for (final List clips in clipShapes) { - for (final ActorShape node in clips) { - AABB bounds = node.computeAABB(); + for (final List clips in clipShapes) { + for (final ClipShape clipShape in clips) { + AABB bounds = clipShape.shape.computeAABB(); if (bounds == null) { continue; } diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 515bf55..3390472 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 2.0.0 +version: 2.2.0 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 06f49be..ef31e9c 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,11 @@ +## [1.6.0] - 2019-10-09 11:08:52 + +- Using latest flare_dart with support for difference clipping. + +## [1.5.15] - 2019-10-08 13:38:55 + +- Fixed Pub deploy bug. + ## [1.5.14] - 2019-10-08 13:38:55 - Fixing up various static analysis issues. diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index 8dfb1f3..483b639 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -205,6 +205,12 @@ class FlutterActorShape extends ActorShape with FlutterActorDrawable { _isValid = true; _path.reset(); + if (fill != null && fill.fillRule == FillRule.evenOdd) { + _path.fillType = PathFillType.evenOdd; + } else { + _path.fillType = PathFillType.nonZero; + } + for (final ActorBasePath path in paths) { Mat2D transform = path.pathTransform; _path.addPath((path as FlutterPath).path, ui.Offset.zero, @@ -226,26 +232,42 @@ class FlutterActorShape extends ActorShape with FlutterActorDrawable { canvas.save(); // Get Clips - for (final List clips in clipShapes) { - if (clips.length == 1) { - if (clips.first.renderCollapsed) { + for (final List clips in clipShapes) { + for (final ClipShape clipShape in clips) { + var shape = clipShape.shape; + if (shape.renderCollapsed) { continue; } - canvas.clipPath((clips.first as FlutterActorShape).path); - } else { - ui.Path clippingPath = ui.Path(); - bool empty = true; - for (final ActorShape clipShape in clips) { - if (clipShape.renderCollapsed) { - continue; + if (clipShape.intersect) { + canvas.clipPath((shape as FlutterActorShape).path); + } else { + var artboardRect = Rect.fromLTWH( + artboard.origin[0] * artboard.width, + artboard.origin[1] * artboard.height, + artboard.width, + artboard.height); + + if (shape.fill != null && shape.fill.fillRule == FillRule.evenOdd) { + // One single clip path with subtraction rect and all sub paths. + var clipPath = ui.Path(); + clipPath.addRect(artboardRect); + for (final path in shape.paths) { + clipPath.addPath((path as FlutterPath).path, ui.Offset.zero, + matrix4: path.pathTransform?.mat4); + } + clipPath.fillType = PathFillType.evenOdd; + canvas.clipPath(clipPath); + } else { + // One clip path with rect per shape path. + for (final path in shape.paths) { + var clipPath = ui.Path(); + clipPath.addRect(artboardRect); + clipPath.addPath((path as FlutterPath).path, ui.Offset.zero, + matrix4: path.pathTransform?.mat4); + clipPath.fillType = PathFillType.evenOdd; + canvas.clipPath(clipPath); + } } - clippingPath.addPath( - (clipShape as FlutterActorShape).path, ui.Offset.zero); - empty = false; - } - - if (!empty) { - canvas.clipPath(clippingPath); } } } @@ -1108,14 +1130,14 @@ class FlutterActorImage extends ActorImage with FlutterActorDrawable { } canvas.save(); // Get Clips - for (final List clips in clipShapes) { + for (final List clips in clipShapes) { if (clips.length == 1) { canvas.clipPath((clips[0] as FlutterActorShape).path); } else { ui.Path clippingPath = ui.Path(); - for (final ActorShape clipShape in clips) { + for (final ClipShape clipShape in clips) { clippingPath.addPath( - (clipShape as FlutterActorShape).path, ui.Offset.zero); + (clipShape.shape as FlutterActorShape).path, ui.Offset.zero); } canvas.clipPath(clippingPath); } diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index dab4b58..4b4f69d 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.5.15 +version: 1.6.0 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: @@ -9,7 +9,7 @@ environment: dependencies: flutter: sdk: flutter - flare_dart: ^2.0.0 + flare_dart: ^2.2.0 dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From 63b7b2cdf3f0036f1c817c21f078be985b1f1044 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 9 Oct 2019 11:18:18 -0700 Subject: [PATCH 36/59] Fixing merge issues. --- flare_dart/lib/actor_drawable.dart | 10 ---------- flare_dart/lib/actor_node.dart | 3 --- flare_dart/pubspec.yaml | 2 +- flare_flutter/lib/flare.dart | 3 --- 4 files changed, 1 insertion(+), 17 deletions(-) diff --git a/flare_dart/lib/actor_drawable.dart b/flare_dart/lib/actor_drawable.dart index d619d30..dc18de1 100644 --- a/flare_dart/lib/actor_drawable.dart +++ b/flare_dart/lib/actor_drawable.dart @@ -6,15 +6,12 @@ import "actor_node.dart"; import "math/aabb.dart"; enum BlendModes { normal, multiply, screen, additive } -<<<<<<< HEAD -======= class ClipShape { final ActorShape shape; final bool intersect; ClipShape(this.shape, this.intersect); } ->>>>>>> master abstract class ActorDrawable extends ActorNode { List> _clipShapes; @@ -70,17 +67,10 @@ abstract class ActorDrawable extends ActorNode { @override void completeResolve() { -<<<<<<< HEAD - _clipShapes = >[]; - List> clippers = allClips; - for (final List clips in clippers) { - List shapes = []; -======= _clipShapes = >[]; List> clippers = allClips; for (final List clips in clippers) { List shapes = []; ->>>>>>> master for (final ActorClip clip in clips) { clip.node.all((ActorNode node) { if (node is ActorShape) { diff --git a/flare_dart/lib/actor_node.dart b/flare_dart/lib/actor_node.dart index aaa7eeb..0646b30 100644 --- a/flare_dart/lib/actor_node.dart +++ b/flare_dart/lib/actor_node.dart @@ -14,12 +14,9 @@ class ActorClip { ActorNode node; ActorClip(this.clipIdx); -<<<<<<< HEAD -======= ActorClip.copy(ActorClip from) : clipIdx = from.clipIdx, intersect = from.intersect; ->>>>>>> master } class ActorNode extends ActorComponent { diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 5c627db..3390472 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 2.1.0 +version: 2.2.0 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index e3b5e0d..483b639 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -205,15 +205,12 @@ class FlutterActorShape extends ActorShape with FlutterActorDrawable { _isValid = true; _path.reset(); -<<<<<<< HEAD -======= if (fill != null && fill.fillRule == FillRule.evenOdd) { _path.fillType = PathFillType.evenOdd; } else { _path.fillType = PathFillType.nonZero; } ->>>>>>> master for (final ActorBasePath path in paths) { Mat2D transform = path.pathTransform; _path.addPath((path as FlutterPath).path, ui.Offset.zero, From 86b8f41231411432ef89114c0ed4d7da7f5a2490 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 9 Oct 2019 14:26:06 -0700 Subject: [PATCH 37/59] Squashed commit of the following: commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_dart/CHANGELOG.md | 4 ++ flare_flutter/CHANGELOG.md | 4 ++ flare_flutter/lib/flare.dart | 101 +++++++++++++++++------------------ flare_flutter/pubspec.yaml | 2 +- 4 files changed, 57 insertions(+), 54 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 4643720..9866c97 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [2.2.0] - 2019-10-09 11:19:06 + +- Fix merge bug that sneaked into pub. + ## [2.1.0] - 2019-10-09 11:08:05 - Adding support for difference clipping. diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index ef31e9c..c9846ef 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.6.1] - 2019-10-09 14:20:54 + +- Image and Shapes share clipping logic. Fixes issue with image clipping. + ## [1.6.0] - 2019-10-09 11:08:52 - Using latest flare_dart with support for difference clipping. diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index 483b639..aa3edbb 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -53,6 +53,51 @@ abstract class FlutterActorDrawable { void onBlendModeChanged(ui.BlendMode blendMode); void draw(ui.Canvas canvas); + + List> get clipShapes; + ActorArtboard get artboard; + + void clip(ui.Canvas canvas) { + for (final List clips in clipShapes) { + for (final ClipShape clipShape in clips) { + var shape = clipShape.shape; + if (shape.renderCollapsed) { + continue; + } + if (clipShape.intersect) { + canvas.clipPath((shape as FlutterActorShape).path); + } else { + var artboardRect = Rect.fromLTWH( + artboard.origin[0] * artboard.width, + artboard.origin[1] * artboard.height, + artboard.width, + artboard.height); + + if (shape.fill != null && shape.fill.fillRule == FillRule.evenOdd) { + // One single clip path with subtraction rect and all sub paths. + var clipPath = ui.Path(); + clipPath.addRect(artboardRect); + for (final path in shape.paths) { + clipPath.addPath((path as FlutterPath).path, ui.Offset.zero, + matrix4: path.pathTransform?.mat4); + } + clipPath.fillType = PathFillType.evenOdd; + canvas.clipPath(clipPath); + } else { + // One clip path with rect per shape path. + for (final path in shape.paths) { + var clipPath = ui.Path(); + clipPath.addRect(artboardRect); + clipPath.addPath((path as FlutterPath).path, ui.Offset.zero, + matrix4: path.pathTransform?.mat4); + clipPath.fillType = PathFillType.evenOdd; + canvas.clipPath(clipPath); + } + } + } + } + } + } } abstract class FlutterFill { @@ -231,46 +276,7 @@ class FlutterActorShape extends ActorShape with FlutterActorDrawable { canvas.save(); - // Get Clips - for (final List clips in clipShapes) { - for (final ClipShape clipShape in clips) { - var shape = clipShape.shape; - if (shape.renderCollapsed) { - continue; - } - if (clipShape.intersect) { - canvas.clipPath((shape as FlutterActorShape).path); - } else { - var artboardRect = Rect.fromLTWH( - artboard.origin[0] * artboard.width, - artboard.origin[1] * artboard.height, - artboard.width, - artboard.height); - - if (shape.fill != null && shape.fill.fillRule == FillRule.evenOdd) { - // One single clip path with subtraction rect and all sub paths. - var clipPath = ui.Path(); - clipPath.addRect(artboardRect); - for (final path in shape.paths) { - clipPath.addPath((path as FlutterPath).path, ui.Offset.zero, - matrix4: path.pathTransform?.mat4); - } - clipPath.fillType = PathFillType.evenOdd; - canvas.clipPath(clipPath); - } else { - // One clip path with rect per shape path. - for (final path in shape.paths) { - var clipPath = ui.Path(); - clipPath.addRect(artboardRect); - clipPath.addPath((path as FlutterPath).path, ui.Offset.zero, - matrix4: path.pathTransform?.mat4); - clipPath.fillType = PathFillType.evenOdd; - canvas.clipPath(clipPath); - } - } - } - } - } + clip(canvas); ui.Path renderPath = getRenderPath(canvas); @@ -1129,19 +1135,8 @@ class FlutterActorImage extends ActorImage with FlutterActorDrawable { return; } canvas.save(); - // Get Clips - for (final List clips in clipShapes) { - if (clips.length == 1) { - canvas.clipPath((clips[0] as FlutterActorShape).path); - } else { - ui.Path clippingPath = ui.Path(); - for (final ClipShape clipShape in clips) { - clippingPath.addPath( - (clipShape.shape as FlutterActorShape).path, ui.Offset.zero); - } - canvas.clipPath(clippingPath); - } - } + + clip(canvas); _paint.color = _paint.color.withOpacity(renderOpacity.clamp(0.0, 1.0).toDouble()); diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 1e48936..49f69ed 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.6.0 +version: 1.6.1 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From f6955940a248bdf839b93c279688c61e0fd08444 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 9 Oct 2019 14:27:55 -0700 Subject: [PATCH 38/59] Squashed commit of the following: commit 86b8f41231411432ef89114c0ed4d7da7f5a2490 Author: Luigi Rosso Date: Wed Oct 9 14:26:06 2019 -0700 Squashed commit of the following: commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 63b7b2cdf3f0036f1c817c21f078be985b1f1044 Author: Luigi Rosso Date: Wed Oct 9 11:18:18 2019 -0700 Fixing merge issues. commit ea16c60615ecc4e411d05a8e6a99c8996871062d Author: Luigi Rosso Date: Wed Oct 9 11:10:54 2019 -0700 Squashed commit of the following: commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_dart/CHANGELOG.md | 4 ++ flare_flutter/CHANGELOG.md | 4 ++ flare_flutter/lib/flare.dart | 101 +++++++++++++++++------------------ flare_flutter/pubspec.yaml | 2 +- 4 files changed, 57 insertions(+), 54 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 4643720..9866c97 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [2.2.0] - 2019-10-09 11:19:06 + +- Fix merge bug that sneaked into pub. + ## [2.1.0] - 2019-10-09 11:08:05 - Adding support for difference clipping. diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index ef31e9c..c9846ef 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.6.1] - 2019-10-09 14:20:54 + +- Image and Shapes share clipping logic. Fixes issue with image clipping. + ## [1.6.0] - 2019-10-09 11:08:52 - Using latest flare_dart with support for difference clipping. diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index 483b639..aa3edbb 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -53,6 +53,51 @@ abstract class FlutterActorDrawable { void onBlendModeChanged(ui.BlendMode blendMode); void draw(ui.Canvas canvas); + + List> get clipShapes; + ActorArtboard get artboard; + + void clip(ui.Canvas canvas) { + for (final List clips in clipShapes) { + for (final ClipShape clipShape in clips) { + var shape = clipShape.shape; + if (shape.renderCollapsed) { + continue; + } + if (clipShape.intersect) { + canvas.clipPath((shape as FlutterActorShape).path); + } else { + var artboardRect = Rect.fromLTWH( + artboard.origin[0] * artboard.width, + artboard.origin[1] * artboard.height, + artboard.width, + artboard.height); + + if (shape.fill != null && shape.fill.fillRule == FillRule.evenOdd) { + // One single clip path with subtraction rect and all sub paths. + var clipPath = ui.Path(); + clipPath.addRect(artboardRect); + for (final path in shape.paths) { + clipPath.addPath((path as FlutterPath).path, ui.Offset.zero, + matrix4: path.pathTransform?.mat4); + } + clipPath.fillType = PathFillType.evenOdd; + canvas.clipPath(clipPath); + } else { + // One clip path with rect per shape path. + for (final path in shape.paths) { + var clipPath = ui.Path(); + clipPath.addRect(artboardRect); + clipPath.addPath((path as FlutterPath).path, ui.Offset.zero, + matrix4: path.pathTransform?.mat4); + clipPath.fillType = PathFillType.evenOdd; + canvas.clipPath(clipPath); + } + } + } + } + } + } } abstract class FlutterFill { @@ -231,46 +276,7 @@ class FlutterActorShape extends ActorShape with FlutterActorDrawable { canvas.save(); - // Get Clips - for (final List clips in clipShapes) { - for (final ClipShape clipShape in clips) { - var shape = clipShape.shape; - if (shape.renderCollapsed) { - continue; - } - if (clipShape.intersect) { - canvas.clipPath((shape as FlutterActorShape).path); - } else { - var artboardRect = Rect.fromLTWH( - artboard.origin[0] * artboard.width, - artboard.origin[1] * artboard.height, - artboard.width, - artboard.height); - - if (shape.fill != null && shape.fill.fillRule == FillRule.evenOdd) { - // One single clip path with subtraction rect and all sub paths. - var clipPath = ui.Path(); - clipPath.addRect(artboardRect); - for (final path in shape.paths) { - clipPath.addPath((path as FlutterPath).path, ui.Offset.zero, - matrix4: path.pathTransform?.mat4); - } - clipPath.fillType = PathFillType.evenOdd; - canvas.clipPath(clipPath); - } else { - // One clip path with rect per shape path. - for (final path in shape.paths) { - var clipPath = ui.Path(); - clipPath.addRect(artboardRect); - clipPath.addPath((path as FlutterPath).path, ui.Offset.zero, - matrix4: path.pathTransform?.mat4); - clipPath.fillType = PathFillType.evenOdd; - canvas.clipPath(clipPath); - } - } - } - } - } + clip(canvas); ui.Path renderPath = getRenderPath(canvas); @@ -1129,19 +1135,8 @@ class FlutterActorImage extends ActorImage with FlutterActorDrawable { return; } canvas.save(); - // Get Clips - for (final List clips in clipShapes) { - if (clips.length == 1) { - canvas.clipPath((clips[0] as FlutterActorShape).path); - } else { - ui.Path clippingPath = ui.Path(); - for (final ClipShape clipShape in clips) { - clippingPath.addPath( - (clipShape.shape as FlutterActorShape).path, ui.Offset.zero); - } - canvas.clipPath(clippingPath); - } - } + + clip(canvas); _paint.color = _paint.color.withOpacity(renderOpacity.clamp(0.0, 1.0).toDouble()); diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 4b4f69d..89dfcc8 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.6.0 +version: 1.6.1 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From 17896a7a78e3cb80e61bd3597e8c164413804a0f Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Fri, 11 Oct 2019 12:41:08 -0700 Subject: [PATCH 39/59] Squashed commit of the following: commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_dart/CHANGELOG.md | 4 ++++ flare_dart/lib/animation/keyframe.dart | 3 ++- flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 4 ++++ flare_flutter/pubspec.yaml | 2 +- 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 9866c97..4a50a49 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [2.2.1] - 2019-10-11 12:38:09 + +- Mitigate path keyframes exported for non-paths (fixing this on Flare side too). + ## [2.2.0] - 2019-10-09 11:19:06 - Fix merge bug that sneaked into pub. diff --git a/flare_dart/lib/animation/keyframe.dart b/flare_dart/lib/animation/keyframe.dart index a04847c..9d05454 100644 --- a/flare_dart/lib/animation/keyframe.dart +++ b/flare_dart/lib/animation/keyframe.dart @@ -696,7 +696,8 @@ class KeyFramePathVertices extends KeyFrameWithInterpolation { static KeyFrame read(StreamReader reader, ActorComponent component) { KeyFramePathVertices frame = KeyFramePathVertices(); - if (!KeyFrameWithInterpolation.read(reader, frame)) { + if (!KeyFrameWithInterpolation.read(reader, frame) || + component is! ActorPath) { return null; } diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 3390472..9cae21e 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 2.2.0 +version: 2.2.1 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index c9846ef..55cb5d2 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.6.2] - 2019-10-11 12:38:33 + +- Use latest flare_dart, mitigating a bad path keyframe issue. + ## [1.6.1] - 2019-10-09 14:20:54 - Image and Shapes share clipping logic. Fixes issue with image clipping. diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 49f69ed..7db89d8 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.6.1 +version: 1.6.2 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From fe016efe6fb1aabb695675a65102ebbc8760f26b Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Fri, 11 Oct 2019 13:02:13 -0700 Subject: [PATCH 40/59] Squashed commit of the following: commit c74bac6831478c48d57bb2be207ec06bac57abff Author: Luigi Rosso Date: Fri Oct 11 13:00:27 2019 -0700 Squashed commit of the following: commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_dart/CHANGELOG.md | 4 ++++ flare_dart/lib/actor_node.dart | 4 +++- flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 4 ++++ flare_flutter/pubspec.yaml | 4 ++-- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 4a50a49..2ad17a3 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [2.2.2] - 2019-10-11 12:55:44 + +- Call openObject before reading clip node and intersect, closeObject after. Fixes issue with reading in new clips in JSON. + ## [2.2.1] - 2019-10-11 12:38:09 - Mitigate path keyframes exported for non-paths (fixing this on Flare side too). diff --git a/flare_dart/lib/actor_node.dart b/flare_dart/lib/actor_node.dart index 0646b30..edd1b23 100644 --- a/flare_dart/lib/actor_node.dart +++ b/flare_dart/lib/actor_node.dart @@ -247,10 +247,12 @@ class ActorNode extends ActorComponent { if (clipCount > 0) { node._clips = List(clipCount); for (int i = 0; i < clipCount; i++) { - var clip = ActorClip(reader.readId("clip")); + reader.openObject("clip"); + var clip = ActorClip(reader.readId("node")); if (artboard.actor.version >= 23) { clip.intersect = reader.readBool("intersect"); } + reader.closeObject(); node._clips[i] = clip; } } diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 9cae21e..b9c59b3 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 2.2.1 +version: 2.2.2 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 55cb5d2..9f5afda 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.6.3] - 2019-10-11 12:58:13 + +- Use latest flare_dart, fixing issue with reading clip nodes in JSON. + ## [1.6.2] - 2019-10-11 12:38:33 - Use latest flare_dart, mitigating a bad path keyframe issue. diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 17a8e24..8a68bef 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.6.2 +version: 1.6.3 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: @@ -9,7 +9,7 @@ environment: dependencies: flutter: sdk: flutter - flare_dart: ^2.2.1 + flare_dart: ^2.2.2 dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From eb99974dd3400facc38fdba774325a21c68cf881 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Tue, 29 Oct 2019 18:11:52 -0700 Subject: [PATCH 41/59] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 9ec6c71b6802d6d1dea96cc1643d5546e52348f3 Author: Luigi Rosso Date: Tue Oct 29 12:57:01 2019 -0700 Squashed commit of the following: commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c74bac6831478c48d57bb2be207ec06bac57abff Author: Luigi Rosso Date: Fri Oct 11 13:00:27 2019 -0700 Squashed commit of the following: commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- example/checkbox/lib/settings.dart | 2 +- example/checkbox/pubspec.lock | 77 ++++++++++++--- example/simple/lib/main.dart | 21 ++-- flare_dart/CHANGELOG.md | 4 + flare_dart/lib/actor_artboard.dart | 24 +++-- flare_dart/lib/actor_color.dart | 2 - flare_dart/lib/actor_shape.dart | 2 +- flare_dart/lib/animation/actor_animation.dart | 13 +++ flare_dart/lib/math/mat2d.dart | 2 +- flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 7 ++ flare_flutter/lib/cache.dart | 7 ++ flare_flutter/lib/flare.dart | 8 +- flare_flutter/lib/flare_actor.dart | 30 ++++-- flare_flutter/lib/flare_cache.dart | 5 + flare_flutter/lib/flare_cache_builder.dart | 95 +++++++++++++++++++ flare_flutter/lib/flare_render_box.dart | 76 ++++++++++++--- flare_flutter/pubspec.yaml | 6 +- 18 files changed, 327 insertions(+), 56 deletions(-) create mode 100644 flare_flutter/lib/flare_cache_builder.dart diff --git a/example/checkbox/lib/settings.dart b/example/checkbox/lib/settings.dart index e3ccf53..0bef61e 100644 --- a/example/checkbox/lib/settings.dart +++ b/example/checkbox/lib/settings.dart @@ -7,7 +7,7 @@ class Settings extends StatefulWidget { } class _SettingsState extends State { - final List options = [false, true, false, true, true]; + static final List options = [false, true, false, true, true]; bool _snapToEnd = true; @override diff --git a/example/checkbox/pubspec.lock b/example/checkbox/pubspec.lock index cf5b43e..2f6e59c 100644 --- a/example/checkbox/pubspec.lock +++ b/example/checkbox/pubspec.lock @@ -1,20 +1,34 @@ # Generated by pub -# See https://www.dartlang.org/tools/pub/glossary#lockfile +# See https://dart.dev/tools/pub/glossary#lockfile packages: + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.10" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.2" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.0.8" + version: "2.3.0" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "1.0.5" charcode: dependency: transitive description: @@ -29,6 +43,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.14.11" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" cupertino_icons: dependency: "direct main" description: @@ -42,14 +70,14 @@ packages: path: "../../flare_dart" relative: true source: path - version: "1.3.3" + version: "2.2.2" flare_flutter: dependency: "direct main" description: path: "../../flare_flutter" relative: true source: path - version: "1.3.4" + version: "1.6.3" flutter: dependency: "direct main" description: flutter @@ -60,41 +88,55 @@ packages: description: flutter source: sdk version: "0.0.0" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.3+1" + version: "0.12.5" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.1.6" + version: "1.1.7" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.6.2" + version: "1.6.4" pedantic: dependency: transitive description: name: pedantic url: "https://pub.dartlang.org" source: hosted - version: "1.5.0" + version: "1.8.0+1" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.0" quiver: dependency: transitive description: name: quiver url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.5" sky_engine: dependency: transitive description: flutter @@ -120,14 +162,14 @@ packages: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "1.6.8" + version: "2.0.0" string_scanner: dependency: transitive description: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "1.0.5" term_glyph: dependency: transitive description: @@ -141,7 +183,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.2" + version: "0.2.5" typed_data: dependency: transitive description: @@ -156,5 +198,12 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.8" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "3.5.0" sdks: - dart: ">=2.2.0 <3.0.0" + dart: ">=2.4.0 <3.0.0" diff --git a/example/simple/lib/main.dart b/example/simple/lib/main.dart index 1dc14e7..395d38e 100644 --- a/example/simple/lib/main.dart +++ b/example/simple/lib/main.dart @@ -1,4 +1,5 @@ import "package:flare_flutter/flare_actor.dart"; +import "package:flare_flutter/flare_cache_builder.dart"; import "package:flutter/material.dart"; void main() => runApp(MyApp()); @@ -37,12 +38,20 @@ class _MyHomePageState extends State { mainAxisSize: MainAxisSize.min, children: [ Expanded( - child: FlareActor( - "assets/Filip.flr", - alignment: Alignment.center, - fit: BoxFit.contain, - animation: _animationName, - )) + child: FlareCacheBuilder( + ["assets/Filip.flr"], + builder: (BuildContext context, bool isWarm) { + return !isWarm + ? Container(child:Text("NO")) + : FlareActor( + "assets/Filip.flr", + alignment: Alignment.center, + fit: BoxFit.contain, + animation: _animationName, + ); + }, + ), + ) ], ), )); diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 2ad17a3..267d3b6 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [2.2.3] - 2019-10-29 12:44:02 + +- Copy transformAffectsStroke from the source shape when instancing. + ## [2.2.2] - 2019-10-11 12:55:44 - Call openObject before reading clip node and intersect, closeObject after. Fixes issue with reading in new clips in JSON. diff --git a/flare_dart/lib/actor_artboard.dart b/flare_dart/lib/actor_artboard.dart index e7c3abb..1e5aab0 100644 --- a/flare_dart/lib/actor_artboard.dart +++ b/flare_dart/lib/actor_artboard.dart @@ -68,15 +68,19 @@ class ActorArtboard { set overrideColor(Float32List value) { _overrideColor = value; - for (final ActorDrawable drawable in _drawableNodes) { - addDirt(drawable, DirtyFlags.paintDirty, true); + if (_drawableNodes != null) { + for (final ActorDrawable drawable in _drawableNodes) { + addDirt(drawable, DirtyFlags.paintDirty, true); + } } } set modulateOpacity(double value) { - _modulateOpacity = value; - for (final ActorDrawable drawable in _drawableNodes) { - addDirt(drawable, DirtyFlags.paintDirty, true); + if (_drawableNodes != null) { + _modulateOpacity = value; + for (final ActorDrawable drawable in _drawableNodes) { + addDirt(drawable, DirtyFlags.paintDirty, true); + } } } @@ -570,8 +574,10 @@ class ActorArtboard { } void initializeGraphics() { - for (final ActorDrawable drawable in _drawableNodes) { - drawable.initializeGraphics(); + if (_drawableNodes != null) { + for (final ActorDrawable drawable in _drawableNodes) { + drawable.initializeGraphics(); + } } } @@ -600,6 +606,10 @@ class ActorArtboard { } AABB computeAABB() { + if (_drawableNodes == null) { + return AABB(); + } + AABB aabb; for (final ActorDrawable drawable in _drawableNodes) { // This is the axis aligned bounding box in the space diff --git a/flare_dart/lib/actor_color.dart b/flare_dart/lib/actor_color.dart index e962712..2e7a31f 100644 --- a/flare_dart/lib/actor_color.dart +++ b/flare_dart/lib/actor_color.dart @@ -265,8 +265,6 @@ abstract class GradientColor extends ActorPaint { final Vec2D _end = Vec2D(); final Vec2D _renderStart = Vec2D(); final Vec2D _renderEnd = Vec2D(); - @override - final double opacity = 1.0; Vec2D get start => _start; Vec2D get end => _end; diff --git a/flare_dart/lib/actor_shape.dart b/flare_dart/lib/actor_shape.dart index 4c1aaa0..7b14164 100644 --- a/flare_dart/lib/actor_shape.dart +++ b/flare_dart/lib/actor_shape.dart @@ -49,7 +49,7 @@ class ActorShape extends ActorDrawable { void copyShape(ActorShape node, ActorArtboard resetArtboard) { copyDrawable(node, resetArtboard); - node._transformAffectsStroke = _transformAffectsStroke; + _transformAffectsStroke = node._transformAffectsStroke; } @override diff --git a/flare_dart/lib/animation/actor_animation.dart b/flare_dart/lib/animation/actor_animation.dart index 4ecdeaa..1f8d1c6 100644 --- a/flare_dart/lib/animation/actor_animation.dart +++ b/flare_dart/lib/animation/actor_animation.dart @@ -378,6 +378,19 @@ class ActorAnimation { } } + /// Apply the specified time to all the components of this animation. + /// This operation will result in the application of the keyframe values + /// at the given time, and perform interpolation if needed. + /// + /// @time is the current time for this animation + /// @artboard is the artboard that contains it + /// @mix is a value [0,1] + /// This is a blending parameter to allow smoothing between concurrent + /// animations. + /// By setting mix to 1, the current animation will fully replace the + /// existing values. By ramping up mix with values between 0 and 1, the + /// transition from one animation to the next will be more gradual as it + /// gets mixed in, preventing poppying effects. void apply(double time, ActorArtboard artboard, double mix) { for (final ComponentAnimation componentAnimation in _components) { componentAnimation.apply(time, artboard.components, mix); diff --git a/flare_dart/lib/math/mat2d.dart b/flare_dart/lib/math/mat2d.dart index 326ee54..2e34771 100644 --- a/flare_dart/lib/math/mat2d.dart +++ b/flare_dart/lib/math/mat2d.dart @@ -166,7 +166,7 @@ class Mat2D { double rotation = atan2(m1, m0); double denom = m0 * m0 + m1 * m1; double scaleX = sqrt(denom); - double scaleY = (m0 * m3 - m2 * m1) / scaleX; + double scaleY = (scaleX == 0) ? 0 : ((m0 * m3 - m2 * m1) / scaleX); double skewX = atan2(m0 * m2 + m1 * m3, denom); result[0] = m[4]; diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index b9c59b3..905179d 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 2.2.2 +version: 2.2.3 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 9f5afda..ead22b8 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,10 @@ +## [1.6.4] - 2019-10-29 12:45:05 + +- Use latest flare_dart, fixing issue with transformAffectsStroke in instances. +- Implement features as suggested by PR https://github.com/2d-inc/Flare-Flutter/pull/177 +- New FlareCacheBuilder which takes an array of Flare files to warm the cache up with, builder is called with an isWarm boolean to allow displaying different content while the files are loading. Useful for loading Flare files you know you'll be using later in this view (or sub view) context and having them display immediately. +- FlareActor will always attempt a warm load (fully sync) path when loading a Flare content, assuring that when content is warm in the cache, no visual glitches/pops occur. + ## [1.6.3] - 2019-10-11 12:58:13 - Use latest flare_dart, fixing issue with reading clip nodes in JSON. diff --git a/flare_flutter/lib/cache.dart b/flare_flutter/lib/cache.dart index 3b7c42b..72aeceb 100644 --- a/flare_flutter/lib/cache.dart +++ b/flare_flutter/lib/cache.dart @@ -38,6 +38,7 @@ abstract class Cache { _toPrune.remove(asset); } + /// Get an asset from the cache or load it. Future getAsset(String filename) async { T asset = _assets[filename]; if (asset != null) { @@ -62,4 +63,10 @@ abstract class Cache { } return asset; } + + /// Get an asset from the cache. + T getWarmAsset(String filename) { + T asset = _assets[filename]; + return (asset?.isAvailable ?? false) ? asset : null; + } } diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index aa3edbb..b27ca43 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -801,9 +801,11 @@ class FlutterActorArtboard extends ActorArtboard { AABB aabb = artboardAABB(); canvas.clipRect(Rect.fromLTRB(aabb[0], aabb[1], aabb[2], aabb[3])); } - for (final ActorDrawable drawable in drawableNodes) { - if (drawable is FlutterActorDrawable) { - (drawable as FlutterActorDrawable).draw(canvas); + if (drawableNodes != null) { + for (final ActorDrawable drawable in drawableNodes) { + if (drawable is FlutterActorDrawable) { + (drawable as FlutterActorDrawable).draw(canvas); + } } } if (clipContents) { diff --git a/flare_flutter/lib/flare_actor.dart b/flare_flutter/lib/flare_actor.dart index 374804e..56536a1 100644 --- a/flare_flutter/lib/flare_actor.dart +++ b/flare_flutter/lib/flare_actor.dart @@ -281,26 +281,44 @@ class FlareActorRenderObject extends FlareRenderBox { _color.blue / 255.0, _color.opacity ]); - _artboard.advance(0.0); - updateBounds(); if (_controller != null) { _controller.initialize(_artboard); } _updateAnimation(onlyWhenMissing: true); + // Immediately update the newly instanced artboard and compute + // bounds so that the widget can take up the necessary space + advance(0.0); + updateBounds(); + markNeedsPaint(); return true; } @override - Future load() async { + bool get canLoad { + return super.canLoad && _filename != null; + } + + /// Attempt a warm load, thfis is the optimal case when the + /// required asset is already in the cache. + @override + bool warmLoad() { if (_filename == null) { - return; + return false; } - _actor = await loadFlare(_filename); - if (_actor == null || _actor.artboard == null) { + _actor = getWarmFlare(_filename); + return _instanceArtboard(); + } + + /// Load the necessary Flare file specified by _filename. + /// this occurs when the optimal warmLoad fails to find an asset in cache. + @override + Future coldLoad() async { + if (_filename == null) { return; } + _actor = await loadFlare(_filename); _instanceArtboard(); } diff --git a/flare_flutter/lib/flare_cache.dart b/flare_flutter/lib/flare_cache.dart index a60bc6d..d3d05bd 100644 --- a/flare_flutter/lib/flare_cache.dart +++ b/flare_flutter/lib/flare_cache.dart @@ -34,3 +34,8 @@ Future cachedActor(AssetBundle bundle, String filename) async { } return cache.getAsset(filename); } + +/// Get a warm Flare actor that's already in the cache. +FlareCacheAsset getWarmActor(AssetBundle bundle, String filename) { + return _cache[bundle]?.getWarmAsset(filename); +} diff --git a/flare_flutter/lib/flare_cache_builder.dart b/flare_flutter/lib/flare_cache_builder.dart new file mode 100644 index 0000000..dd8087f --- /dev/null +++ b/flare_flutter/lib/flare_cache_builder.dart @@ -0,0 +1,95 @@ +import 'package:flutter/services.dart'; +import 'package:flutter/widgets.dart'; + +import 'flare_cache.dart'; +import 'flare_cache_asset.dart'; + +/// Create a mobile or tablet layout depending on the screen size. +class FlareCacheBuilder extends StatefulWidget { + final Widget Function(BuildContext, bool) builder; + final List filenames; + + const FlareCacheBuilder(this.filenames, {Key key, this.builder}) + : super(key: key); + + @override + _FlareCacheBuilderState createState() => _FlareCacheBuilderState(); +} + +class _FlareCacheBuilderState extends State { + bool isWarm = false; + final Set _assets = {}; + @override + void initState() { + super.initState(); + _warmup(); + } + + @override + void dispose() { + for (final FlareCacheAsset asset in _assets) { + asset.deref(); + } + _assets.clear(); + super.dispose(); + } + + @override + void didUpdateWidget(FlareCacheBuilder oldWidget) { + super.didUpdateWidget(oldWidget); + _warmup(); + } + + AssetBundle get bundle => DefaultAssetBundle.of(context); + + void _warmup() { + if (_updateWarmth()) { + return; + } + + for (final filename in widget.filenames) { + if (getWarmActor(bundle, filename) == null) { + cachedActor(bundle, filename).then((FlareCacheAsset asset) { + if (mounted && asset != null) { + _assets.add(asset); + asset.ref(); + } + + _updateWarmth(); + }); + } + } + } + + bool _updateWarmth() { + var filenames = widget.filenames; + if (filenames == null) { + setState(() { + isWarm = true; + }); + return true; + } + for (final filename in filenames) { + if (getWarmActor(bundle, filename) == null) { + setState(() { + isWarm = false; + }); + return false; + } + } + setState(() { + isWarm = true; + }); + return true; + } + + @override + void deactivate() { + super.deactivate(); + } + + @override + Widget build(BuildContext context) { + return widget.builder(context, isWarm); + } +} diff --git a/flare_flutter/lib/flare_render_box.dart b/flare_flutter/lib/flare_render_box.dart index 46be707..a8f5b7b 100644 --- a/flare_flutter/lib/flare_render_box.dart +++ b/flare_flutter/lib/flare_render_box.dart @@ -17,7 +17,7 @@ abstract class FlareRenderBox extends RenderBox { Alignment _alignment; int _frameCallbackID; double _lastFrameTime = 0.0; - final List _assets = []; + final Set _assets = {}; bool _useIntrinsicSize = false; bool get useIntrinsicSize => _useIntrinsicSize; @@ -49,8 +49,8 @@ abstract class FlareRenderBox extends RenderBox { return; } _assetBundle = value; - if (_assetBundle != null) { - _load(); + if (_assetBundle != null && attached) { + load(); } } @@ -83,8 +83,8 @@ abstract class FlareRenderBox extends RenderBox { } } - @override - bool get sizedByParent => !_useIntrinsicSize || _intrinsicSize == null; + @override + bool get sizedByParent => !_useIntrinsicSize || _intrinsicSize == null; @override void performLayout() { @@ -112,7 +112,7 @@ abstract class FlareRenderBox extends RenderBox { super.attach(owner); updatePlayState(); if (_assets.isEmpty && assetBundle != null) { - _load(); + load(); } } @@ -234,20 +234,58 @@ abstract class FlareRenderBox extends RenderBox { void advance(double elapsedSeconds); bool _isLoading = false; + bool _reloadQueued = false; bool get isLoading => _isLoading; - Future _load() async { + bool warmLoad() { + return false; + } + + /// Prevent loading when the renderbox isn't attached or the asset bundle + /// is yet to be set. This prevents unneccesarily hitting an async path + /// during load. A warmLoad would fail which then falls back to a coldLoad. + /// Due to the async nature, any further sync calls would be blocked as we + /// gate load with _isLoading. + bool get canLoad { + return attached && _assetBundle != null; + } + + Future coldLoad() async {} + + /// Trigger the loading process. This will attempt a sync warm load, + /// optimizing for the case where the assets we need are already available. + /// This allows widgets using this render object to draw immediately and not + /// draw any empty frames. + /// + void load() { + if (!canLoad) { + return; + } if (_isLoading) { + _reloadQueued = true; return; } _isLoading = true; _unload(); - await load(); - _isLoading = false; + // Try a sync warm load in case we already have what we need. + if (!warmLoad()) { + coldLoad().then((_) { + _completeLoad(); + }); + } else { + _completeLoad(); + } } - /// Perform any loading logic necessary for this scene. - Future load() async {} + void _completeLoad() { + // Load is complete, check if a reload was requested + // during our load, and start it up again + _isLoading = false; + if (_reloadQueued) { + _reloadQueued = false; + load(); + } + } void _unload() { for (final FlareCacheAsset asset in _assets) { @@ -259,6 +297,22 @@ abstract class FlareRenderBox extends RenderBox { void onUnload() {} + /// Load a flare file from cache + FlutterActor getWarmFlare(String filename) { + if (assetBundle == null || filename == null) { + return null; + } + + FlareCacheAsset asset = getWarmActor(assetBundle, filename); + + if (!attached || asset == null) { + return null; + } + _assets.add(asset); + asset.ref(); + return asset.actor; + } + /// Load a flare file from cache Future loadFlare(String filename) async { if (assetBundle == null || filename == null) { diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 8a68bef..0b54935 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,15 +1,15 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.6.3 +version: 1.6.4 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.2.0 <3.0.0" flutter: ">=1.7.8+hotfix.3" dependencies: flutter: sdk: flutter - flare_dart: ^2.2.2 + flare_dart: ^2.2.3 dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From 9dedc74cda7b26f41e9691ac4816a0bcfb338665 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 6 Nov 2019 17:34:52 -0800 Subject: [PATCH 42/59] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit ee997b7233a621f934f2bac8cc73cf9923126180 Author: Luigi Rosso Date: Wed Nov 6 17:32:55 2019 -0800 Squashed commit of the following: commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 9ec6c71b6802d6d1dea96cc1643d5546e52348f3 Author: Luigi Rosso Date: Tue Oct 29 12:57:01 2019 -0700 Squashed commit of the following: commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c74bac6831478c48d57bb2be207ec06bac57abff Author: Luigi Rosso Date: Fri Oct 11 13:00:27 2019 -0700 Squashed commit of the following: commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- example/favorite/pubspec.yaml | 2 -- example/penguin_dance/pubspec.yaml | 2 -- example/slider/pubspec.yaml | 2 -- example/space_reload/pubspec.yaml | 2 -- flare_dart/lib/actor_path.dart | 1 + flare_flutter/CHANGELOG.md | 4 +++ flare_flutter/lib/flare_cache_builder.dart | 29 ++++++++++++++-------- flare_flutter/pubspec.yaml | 2 +- 8 files changed, 25 insertions(+), 19 deletions(-) diff --git a/example/favorite/pubspec.yaml b/example/favorite/pubspec.yaml index b6dd8c4..7312210 100644 --- a/example/favorite/pubspec.yaml +++ b/example/favorite/pubspec.yaml @@ -11,8 +11,6 @@ dependencies: sdk: flutter flare_flutter: path: ../../flare_flutter - flare_dart: - path: ../../flare_dart cupertino_icons: ^0.1.2 dev_dependencies: diff --git a/example/penguin_dance/pubspec.yaml b/example/penguin_dance/pubspec.yaml index 0d9d8d3..d3288da 100644 --- a/example/penguin_dance/pubspec.yaml +++ b/example/penguin_dance/pubspec.yaml @@ -11,8 +11,6 @@ dependencies: sdk: flutter flare_flutter: path: ../../flare_flutter - flare_dart: - path: ../../flare_dart cupertino_icons: ^0.1.2 diff --git a/example/slider/pubspec.yaml b/example/slider/pubspec.yaml index ae3d4a9..f0637e8 100644 --- a/example/slider/pubspec.yaml +++ b/example/slider/pubspec.yaml @@ -11,8 +11,6 @@ dependencies: sdk: flutter flare_flutter: path: ../../flare_flutter - flare_dart: - path: ../../flare_dart cupertino_icons: ^0.1.2 dev_dependencies: diff --git a/example/space_reload/pubspec.yaml b/example/space_reload/pubspec.yaml index 21e3905..05373b8 100644 --- a/example/space_reload/pubspec.yaml +++ b/example/space_reload/pubspec.yaml @@ -17,8 +17,6 @@ dependencies: sdk: flutter flare_flutter: path: ../../flare_flutter -# flare_dart: -# path: ../../flare_dart # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. diff --git a/flare_dart/lib/actor_path.dart b/flare_dart/lib/actor_path.dart index 8c795ca..0017e8d 100644 --- a/flare_dart/lib/actor_path.dart +++ b/flare_dart/lib/actor_path.dart @@ -46,6 +46,7 @@ abstract class ActorBasePath { localTransform = Mat2D(); Mat2D.invert(localTransform, parent.worldTransform); } else if (!_isRootPath) { + localTransform = Mat2D(); // Path isn't root, so get transform in shape space. if (Mat2D.invert(localTransform, shape.worldTransform)) { Mat2D.multiply(localTransform, localTransform, worldTransform); diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index ead22b8..f518ac0 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.6.5] - 2019-11-06 17:29:43 + +- Fixed an issue with FlareCacheBuilder calling setState when the widget is no longer mounted. + ## [1.6.4] - 2019-10-29 12:45:05 - Use latest flare_dart, fixing issue with transformAffectsStroke in instances. diff --git a/flare_flutter/lib/flare_cache_builder.dart b/flare_flutter/lib/flare_cache_builder.dart index dd8087f..5246e48 100644 --- a/flare_flutter/lib/flare_cache_builder.dart +++ b/flare_flutter/lib/flare_cache_builder.dart @@ -17,7 +17,19 @@ class FlareCacheBuilder extends StatefulWidget { } class _FlareCacheBuilderState extends State { - bool isWarm = false; + bool _isWarm = false; + bool get isWarm => _isWarm; + set isWarm(bool value) { + if (value == _isWarm) { + return; + } + if (mounted) { + setState(() { + _isWarm = value; + }); + } + } + final Set _assets = {}; @override void initState() { @@ -62,24 +74,21 @@ class _FlareCacheBuilderState extends State { } bool _updateWarmth() { + if (!mounted) { + return true; + } var filenames = widget.filenames; if (filenames == null) { - setState(() { - isWarm = true; - }); + isWarm = true; return true; } for (final filename in filenames) { if (getWarmActor(bundle, filename) == null) { - setState(() { - isWarm = false; - }); + isWarm = false; return false; } } - setState(() { - isWarm = true; - }); + isWarm = true; return true; } diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 0b54935..e6672d0 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.6.4 +version: 1.6.5 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From d28651dbf9e9a76fa62e427b2f0ff2897f455d4e Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Thu, 7 Nov 2019 12:35:38 -0800 Subject: [PATCH 43/59] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 0b759dfca5498b90b79c8be6209d3feaae882e31 Author: Luigi Rosso Date: Thu Nov 7 12:34:28 2019 -0800 Squashed commit of the following: commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit ee997b7233a621f934f2bac8cc73cf9923126180 Author: Luigi Rosso Date: Wed Nov 6 17:32:55 2019 -0800 Squashed commit of the following: commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 9ec6c71b6802d6d1dea96cc1643d5546e52348f3 Author: Luigi Rosso Date: Tue Oct 29 12:57:01 2019 -0700 Squashed commit of the following: commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c74bac6831478c48d57bb2be207ec06bac57abff Author: Luigi Rosso Date: Fri Oct 11 13:00:27 2019 -0700 Squashed commit of the following: commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_dart/CHANGELOG.md | 4 +++ flare_dart/lib/actor_image.dart | 12 +++++++ flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 4 +++ flare_flutter/lib/flare.dart | 62 ++++++++++++++++++++++++++++++++- flare_flutter/pubspec.yaml | 2 +- 6 files changed, 83 insertions(+), 3 deletions(-) diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 267d3b6..1dcbe83 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [2.2.4] - 2019-11-07 12:14:49 + +- Adding support for ActorImage.isDynamic which allows Flare to pacakge source UV coordinates for the image such that it can be swapped at runtime. This requires re-exporting files from Flare after marking the image as dynamic in the Flare UI. + ## [2.2.3] - 2019-10-29 12:44:02 - Copy transformAffectsStroke from the source shape when instancing. diff --git a/flare_dart/lib/actor_image.dart b/flare_dart/lib/actor_image.dart index 9a96446..611337f 100644 --- a/flare_dart/lib/actor_image.dart +++ b/flare_dart/lib/actor_image.dart @@ -28,6 +28,8 @@ class ActorImage extends ActorDrawable with ActorSkinnable { int _textureIndex = -1; Float32List _vertices; + Float32List _dynamicUV; + Float32List get dynamicUV => _dynamicUV; Uint16List _triangles; int _vertexCount = 0; int _triangleCount = 0; @@ -141,6 +143,15 @@ class ActorImage extends ActorDrawable with ActorSkinnable { node._vertices = reader.readFloat32Array(numVertices * node.vertexStride, "vertices"); + // In version 24 we started packing the original UV coordinates if the + // image was marked for dynamic runtime swapping. + if (artboard.actor.version >= 24) { + bool isDynamic = reader.readBool("isDynamic"); + if (isDynamic) { + node._dynamicUV = reader.readFloat32Array(numVertices * 2, "uv"); + } + } + int numTris = reader.readUint32("numTriangles"); node._triangles = Uint16List(numTris * 3); node._triangleCount = numTris; @@ -217,6 +228,7 @@ class ActorImage extends ActorDrawable with ActorSkinnable { _triangleCount = node._triangleCount; _vertices = node._vertices; _triangles = node._triangles; + _dynamicUV = node._dynamicUV; if (node._animationDeformedVertices != null) { _animationDeformedVertices = Float32List.fromList(node._animationDeformedVertices); diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 905179d..77e590b 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 2.2.3 +version: 2.2.4 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index f518ac0..08f6de5 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.7.0] - 2019-11-07 12:16:35 + +- Adding support for runtime image swapping. + ## [1.6.5] - 2019-11-06 17:29:43 - Fixed an issue with FlareCacheBuilder calling setState when the widget is no longer mounted. diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index b27ca43..a629c0b 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -1067,6 +1067,67 @@ class FlutterActorImage extends ActorImage with FlutterActorDrawable { } } + /// Swap the image used to draw the mesh for this image node. + /// Returns true when successful. + bool changeImage(ui.Image image) { + if (triangles == null || dynamicUV == null) { + return false; + } + _uvBuffer = makeVertexUVBuffer(); + int count = vertexCount; + + // SKIA requires texture coordinates in full image space, not traditional + // normalized uv coordinates. + int idx = 0; + for (int i = 0; i < count; i++) { + _uvBuffer[idx] = dynamicUV[idx] * image.width; + _uvBuffer[idx + 1] = dynamicUV[idx + 1] * image.height; + idx += 2; + } + + _paint.shader = image != null + ? ui.ImageShader( + image, ui.TileMode.clamp, ui.TileMode.clamp, _identityMatrix) + : null; + + _canvasVertices = ui.Vertices.raw(ui.VertexMode.triangles, _vertexBuffer, + indices: _indices, textureCoordinates: _uvBuffer); + + onPaintUpdated(_paint); + + return true; + } + + /// Change the image for this node via a network url. + /// Returns true when successful. + Future changeImageFromNetwork(String url) async { + var networkImage = NetworkImage(url); + var val = await networkImage.obtainKey(const ImageConfiguration()); + var load = networkImage.load(val, (Uint8List bytes, + {int cacheWidth, int cacheHeight}) { + return PaintingBinding.instance.instantiateImageCodec(bytes, + cacheWidth: cacheWidth, cacheHeight: cacheHeight); + }); + + final completer = Completer(); + load.addListener(ImageStreamListener((ImageInfo info, bool syncCall) { + changeImage(info.image); + completer.complete(true); + })); + return completer.future; + } + + /// Change the image for this node with one in an asset bundle. + /// Returns true when successful. + Future changeImageFromBundle( + AssetBundle bundle, String filename) async { + ByteData data = await bundle.load(filename); + ui.Codec codec = + await ui.instantiateImageCodec(Uint8List.view(data.buffer)); + ui.FrameInfo frame = await codec.getNextFrame(); + return changeImage(frame.image); + } + @override void initializeGraphics() { super.initializeGraphics(); @@ -1139,7 +1200,6 @@ class FlutterActorImage extends ActorImage with FlutterActorDrawable { canvas.save(); clip(canvas); - _paint.color = _paint.color.withOpacity(renderOpacity.clamp(0.0, 1.0).toDouble()); diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index e6672d0..e7b0ca6 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.6.5 +version: 1.7.0 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From 2c16da89406ac3af30aa3a3da8a6802e3b4cdb23 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Thu, 7 Nov 2019 12:41:17 -0800 Subject: [PATCH 44/59] Bumping dependency --- flare_flutter/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index e7b0ca6..6270ebd 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -9,7 +9,7 @@ environment: dependencies: flutter: sdk: flutter - flare_dart: ^2.2.3 + flare_dart: ^2.2.4 dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From 006c90b6c3f976ef9b32dca7cd522cc9ac0bbf31 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Thu, 7 Nov 2019 15:10:44 -0800 Subject: [PATCH 45/59] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 8fcd773a12c11bbb0b6bec1c8829b7af4d341bae Author: Luigi Rosso Date: Thu Nov 7 15:09:48 2019 -0800 Squashed commit of the following: commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 0b759dfca5498b90b79c8be6209d3feaae882e31 Author: Luigi Rosso Date: Thu Nov 7 12:34:28 2019 -0800 Squashed commit of the following: commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit ee997b7233a621f934f2bac8cc73cf9923126180 Author: Luigi Rosso Date: Wed Nov 6 17:32:55 2019 -0800 Squashed commit of the following: commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 9ec6c71b6802d6d1dea96cc1643d5546e52348f3 Author: Luigi Rosso Date: Tue Oct 29 12:57:01 2019 -0700 Squashed commit of the following: commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c74bac6831478c48d57bb2be207ec06bac57abff Author: Luigi Rosso Date: Fri Oct 11 13:00:27 2019 -0700 Squashed commit of the following: commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- flare_flutter/CHANGELOG.md | 5 +++++ flare_flutter/lib/flare.dart | 34 ++++++++++++++++++---------------- flare_flutter/pubspec.yaml | 2 +- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 08f6de5..291c2f8 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,8 @@ +## [1.7.1] - 2019-11-07 15:03:39 + +- Backing out changeImageFromNetwork until new PaintingBinding.instance.instantiateImageCodec signature lands in stable. +- You can manually implement this function if you need it. Example here: https://gist.github.com/luigi-rosso/c50277341bd2681be072a575acbeb1fc#file-dynamic_image_swapping-dart-L60 + ## [1.7.0] - 2019-11-07 12:16:35 - Adding support for runtime image swapping. diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index a629c0b..7222ff6 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -1100,22 +1100,24 @@ class FlutterActorImage extends ActorImage with FlutterActorDrawable { /// Change the image for this node via a network url. /// Returns true when successful. - Future changeImageFromNetwork(String url) async { - var networkImage = NetworkImage(url); - var val = await networkImage.obtainKey(const ImageConfiguration()); - var load = networkImage.load(val, (Uint8List bytes, - {int cacheWidth, int cacheHeight}) { - return PaintingBinding.instance.instantiateImageCodec(bytes, - cacheWidth: cacheWidth, cacheHeight: cacheHeight); - }); - - final completer = Completer(); - load.addListener(ImageStreamListener((ImageInfo info, bool syncCall) { - changeImage(info.image); - completer.complete(true); - })); - return completer.future; - } + /// TODO: re-enable this when the changes to instantiateImageCodec + /// land in stable. +// Future changeImageFromNetwork(String url) async { +// var networkImage = NetworkImage(url); +// var val = await networkImage.obtainKey(const ImageConfiguration()); +// var load = networkImage.load(val, (Uint8List bytes, +// {int cacheWidth, int cacheHeight}) { +// return PaintingBinding.instance.instantiateImageCodec(bytes, +// cacheWidth: cacheWidth, cacheHeight: cacheHeight); +// }); + +// final completer = Completer(); +// load.addListener(ImageStreamListener((ImageInfo info, bool syncCall) { +// changeImage(info.image); +// completer.complete(true); +// })); +// return completer.future; +// } /// Change the image for this node with one in an asset bundle. /// Returns true when successful. diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 6270ebd..23da1ff 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.7.0 +version: 1.7.1 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From 88832dd5719565dfd0ad6c1d4e8de6869bd73569 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 20 Nov 2019 16:45:04 -0800 Subject: [PATCH 46/59] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit c911f4114f344146ef273224d651e18d2d67725f Author: Luigi Rosso Date: Wed Nov 20 16:41:08 2019 -0800 Squashed commit of the following: commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 8fcd773a12c11bbb0b6bec1c8829b7af4d341bae Author: Luigi Rosso Date: Thu Nov 7 15:09:48 2019 -0800 Squashed commit of the following: commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 0b759dfca5498b90b79c8be6209d3feaae882e31 Author: Luigi Rosso Date: Thu Nov 7 12:34:28 2019 -0800 Squashed commit of the following: commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit ee997b7233a621f934f2bac8cc73cf9923126180 Author: Luigi Rosso Date: Wed Nov 6 17:32:55 2019 -0800 Squashed commit of the following: commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 9ec6c71b6802d6d1dea96cc1643d5546e52348f3 Author: Luigi Rosso Date: Tue Oct 29 12:57:01 2019 -0700 Squashed commit of the following: commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c74bac6831478c48d57bb2be207ec06bac57abff Author: Luigi Rosso Date: Fri Oct 11 13:00:27 2019 -0700 Squashed commit of the following: commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- README.md | 2 +- flare_dart/CHANGELOG.md | 4 ++++ flare_dart/lib/actor_color.dart | 11 +++++++--- flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 8 +++++++ flare_flutter/lib/flare_controls.dart | 30 +++------------------------ flare_flutter/pubspec.yaml | 4 ++-- 7 files changed, 27 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 9bfda4b..27eb8be 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ This repository has three primary branches: - This is the branch we publish to pub from. - This branch and the associated pub packages are guaranteed to work on the flutter stable channel. ``` - flare_flutter: ^1.5.15 + flare_flutter: ^1.7.3 ``` - dev - This branch has the latest changes should work with the flutter dev channel. diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 1dcbe83..486e378 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [2.2.5] - 2019-11-20 16:36:24 + +- Fixed gradient transformations for shapes with transformAffectsStroke set to true. + ## [2.2.4] - 2019-11-07 12:14:49 - Adding support for ActorImage.isDynamic which allows Flare to pacakge source UV coordinates for the image such that it can be swapped at runtime. This requires re-exporting files from Flare after marking the image as dynamic in the Flare UI. diff --git a/flare_dart/lib/actor_color.dart b/flare_dart/lib/actor_color.dart index 2e7a31f..15f226c 100644 --- a/flare_dart/lib/actor_color.dart +++ b/flare_dart/lib/actor_color.dart @@ -105,7 +105,7 @@ abstract class ActorColor extends ActorPaint { @override void onDirty(int dirt) {} - + @override void update(int dirt) {} } @@ -304,8 +304,13 @@ abstract class GradientColor extends ActorPaint { void update(int dirt) { ActorShape shape = parent as ActorShape; Mat2D world = shape.worldTransform; - Vec2D.transformMat2D(_renderStart, _start, world); - Vec2D.transformMat2D(_renderEnd, _end, world); + if (shape.transformAffectsStroke) { + Vec2D.copy(_renderStart, _start); + Vec2D.copy(_renderEnd, _end); + } else { + Vec2D.transformMat2D(_renderStart, _start, world); + Vec2D.transformMat2D(_renderEnd, _end, world); + } } } diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 77e590b..69512c8 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 2.2.4 +version: 2.2.5 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 291c2f8..92ea1b9 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,11 @@ +## [1.7.3] - 2019-11-20 16:37:18 + +- Fixed gradient transformations for shapes with transformAffectsStroke set to true. + +## [1.7.2] - 2019-11-18 16:30:39 + +- Fixing FlareControls to allow for completing layered animations. FlareControls would previously remove an animation once another one played after it had fully mixed in. This would cause popping when animations didn't touch the exact same keyframes. + ## [1.7.1] - 2019-11-07 15:03:39 - Backing out changeImageFromNetwork until new PaintingBinding.instance.instantiateImageCodec signature lands in stable. diff --git a/flare_flutter/lib/flare_controls.dart b/flare_flutter/lib/flare_controls.dart index d0fdee5..ed89a16 100644 --- a/flare_flutter/lib/flare_controls.dart +++ b/flare_flutter/lib/flare_controls.dart @@ -57,21 +57,18 @@ class FlareControls extends FlareController { /// the [onCompleted()] callback will be triggered. @override bool advance(FlutterActorArtboard artboard, double elapsed) { - int lastFullyMixed = -1; - double lastMix = 0.0; - /// List of completed animations during this frame. List completed = []; /// This loop will mix all the currently active animation layers so that, /// if an animation is played on top of the current one, it'll smoothly mix - /// between the two instead of immediately switching to the new one. + /// between the two instead of immediately switching to the new one. for (int i = 0; i < _animationLayers.length; i++) { FlareAnimationLayer layer = _animationLayers[i]; layer.mix += elapsed; layer.time += elapsed; - lastMix = (_mixSeconds == null || _mixSeconds == 0.0) + double mix = (_mixSeconds == null || _mixSeconds == 0.0) ? 1.0 : min(1.0, layer.mix / _mixSeconds); @@ -81,13 +78,7 @@ class FlareControls extends FlareController { } /// Apply the animation with the current mix. - layer.animation.apply(layer.time, _artboard, lastMix); - - /// Update [lastFullyMixed] with the range of fully - /// mixed animation layers. - if (lastMix == 1.0) { - lastFullyMixed = i; - } + layer.animation.apply(layer.time, _artboard, mix); /// Add (non-looping) finished animations to the list. if (layer.time > layer.animation.duration) { @@ -95,21 +86,6 @@ class FlareControls extends FlareController { } } - /// Removes the last fully mixed animation, if more than one animation is - /// present. If only one animation is playing (e.g. idle), nothing happens. - /// Since animations are added to the end of [_animationLayers], - /// everything before the last fully mixed animation can be - /// assumed to be also fully mixed too. - if (lastFullyMixed != -1) { - _animationLayers.removeRange(0, lastFullyMixed); - } - if (_animationName == null && - _animationLayers.length == 1 && - lastMix == 1.0) { - /// Remove remaining animations. - _animationLayers.removeAt(0); - } - /// Notify of the completed animations. for (final FlareAnimationLayer animation in completed) { _animationLayers.remove(animation); diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 23da1ff..82b416e 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.7.1 +version: 1.7.3 author: "2Dimensions Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: @@ -9,7 +9,7 @@ environment: dependencies: flutter: sdk: flutter - flare_dart: ^2.2.4 + flare_dart: ^2.2.5 dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From a2fdffd74c5eff2a06782337a39c1ada9f3e45ac Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Thu, 5 Dec 2019 18:19:49 -0500 Subject: [PATCH 47/59] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 393c22461e127714a3a25c986bb59a666cba72ac Author: Luigi Rosso Date: Thu Dec 5 17:48:04 2019 -0500 Squashed commit of the following: commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c911f4114f344146ef273224d651e18d2d67725f Author: Luigi Rosso Date: Wed Nov 20 16:41:08 2019 -0800 Squashed commit of the following: commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 8fcd773a12c11bbb0b6bec1c8829b7af4d341bae Author: Luigi Rosso Date: Thu Nov 7 15:09:48 2019 -0800 Squashed commit of the following: commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 0b759dfca5498b90b79c8be6209d3feaae882e31 Author: Luigi Rosso Date: Thu Nov 7 12:34:28 2019 -0800 Squashed commit of the following: commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit ee997b7233a621f934f2bac8cc73cf9923126180 Author: Luigi Rosso Date: Wed Nov 6 17:32:55 2019 -0800 Squashed commit of the following: commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 9ec6c71b6802d6d1dea96cc1643d5546e52348f3 Author: Luigi Rosso Date: Tue Oct 29 12:57:01 2019 -0700 Squashed commit of the following: commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c74bac6831478c48d57bb2be207ec06bac57abff Author: Luigi Rosso Date: Fri Oct 11 13:00:27 2019 -0700 Squashed commit of the following: commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- README.md | 2 +- example/guss/.gitignore | 71 + example/guss/.metadata | 10 + example/guss/README.md | 41 + example/guss/analysis_options.yaml | 122 ++ example/guss/android/app/build.gradle | 61 + .../android/app/src/main/AndroidManifest.xml | 39 + .../java/com/example/teddy/MainActivity.java | 13 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values/styles.xml | 8 + example/guss/android/build.gradle | 29 + example/guss/android/gradle.properties | 2 + .../gradle/wrapper/gradle-wrapper.properties | 6 + example/guss/android/settings.gradle | 15 + example/guss/assets/CyberGuss.flr | Bin 0 -> 37421 bytes example/guss/assets/Guss.flr | Bin 0 -> 36901 bytes example/guss/assets/Teddy.flr | Bin 0 -> 63529 bytes example/guss/assets/fonts/Roboto-Medium.ttf | Bin 0 -> 172064 bytes .../guss/ios/Flutter/AppFrameworkInfo.plist | 26 + example/guss/ios/Flutter/Debug.xcconfig | 1 + example/guss/ios/Flutter/Flutter.podspec | 18 + example/guss/ios/Flutter/Release.xcconfig | 1 + .../ios/Flutter/flutter_export_environment.sh | 11 + .../guss/ios/Runner.xcodeproj/project.pbxproj | 506 ++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/xcschemes/Runner.xcscheme | 93 + .../contents.xcworkspacedata | 7 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + example/guss/ios/Runner/AppDelegate.h | 6 + example/guss/ios/Runner/AppDelegate.m | 13 + .../AppIcon.appiconset/Contents.json | 122 ++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 11112 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 564 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 1588 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1025 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 1716 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 1920 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 1895 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 3831 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 1888 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 3294 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 3612 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 37 + .../ios/Runner/Base.lproj/Main.storyboard | 26 + example/guss/ios/Runner/Info.plist | 45 + example/guss/ios/Runner/main.m | 9 + example/guss/lib/character_controller.dart | 152 ++ example/guss/lib/input_helper.dart | 41 + example/guss/lib/login_character.dart | 26 + example/guss/lib/main.dart | 150 ++ example/guss/lib/signin_button.dart | 42 + example/guss/lib/theme.dart | 13 + example/guss/lib/tracking_text_input.dart | 89 + example/guss/macos/.gitignore | 6 + .../guss/macos/Flutter/Flutter-Debug.xcconfig | 1 + .../macos/Flutter/Flutter-Release.xcconfig | 1 + .../Flutter/GeneratedPluginRegistrant.swift | 10 + .../macos/Runner.xcodeproj/project.pbxproj | 596 ++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 101 ++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + example/guss/macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 + .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 46993 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 3276 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 1429 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 5933 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1243 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 14800 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 1874 bytes .../guss/macos/Runner/Base.lproj/MainMenu.xib | 339 ++++ .../macos/Runner/Configs/AppInfo.xcconfig | 14 + .../guss/macos/Runner/Configs/Debug.xcconfig | 2 + .../macos/Runner/Configs/Release.xcconfig | 2 + .../macos/Runner/Configs/Warnings.xcconfig | 13 + .../macos/Runner/DebugProfile.entitlements | 12 + example/guss/macos/Runner/Info.plist | 32 + .../guss/macos/Runner/MainFlutterWindow.swift | 15 + .../guss/macos/Runner/Release.entitlements | 8 + example/guss/pubspec.yaml | 30 + example/guss/test/widget_test.dart | 30 + flare_dart/CHANGELOG.md | 4 + flare_dart/lib/actor.dart | 22 + flare_dart/lib/actor_artboard.dart | 180 +- flare_dart/lib/actor_blur.dart | 47 + flare_dart/lib/actor_bone.dart | 7 +- flare_dart/lib/actor_bone_base.dart | 7 +- flare_dart/lib/actor_component.dart | 20 +- flare_dart/lib/actor_drawable.dart | 18 +- flare_dart/lib/actor_drop_shadow.dart | 17 + flare_dart/lib/actor_ik_constraint.dart | 2 +- flare_dart/lib/actor_inner_shadow.dart | 17 + flare_dart/lib/actor_layer_effect.dart | 22 + .../lib/actor_layer_effect_renderer.dart | 137 ++ flare_dart/lib/actor_mask.dart | 75 + flare_dart/lib/actor_node.dart | 60 +- flare_dart/lib/actor_node_solo.dart | 4 +- flare_dart/lib/actor_root_bone.dart | 6 +- flare_dart/lib/actor_shadow.dart | 36 + flare_dart/lib/actor_shape.dart | 7 +- flare_dart/lib/animation/actor_animation.dart | 23 +- flare_dart/lib/animation/keyframe.dart | 1611 +++++++++-------- flare_dart/lib/animation/property_types.dart | 10 + flare_dart/lib/block_types.dart | 12 +- flare_dart/lib/jelly_component.dart | 4 +- flare_dart/pubspec.yaml | 4 +- flare_flutter/CHANGELOG.md | 4 + flare_flutter/lib/flare.dart | 276 +++ flare_flutter/pubspec.yaml | 7 +- 125 files changed, 4996 insertions(+), 870 deletions(-) create mode 100644 example/guss/.gitignore create mode 100644 example/guss/.metadata create mode 100644 example/guss/README.md create mode 100644 example/guss/analysis_options.yaml create mode 100644 example/guss/android/app/build.gradle create mode 100644 example/guss/android/app/src/main/AndroidManifest.xml create mode 100644 example/guss/android/app/src/main/java/com/example/teddy/MainActivity.java create mode 100644 example/guss/android/app/src/main/res/drawable/launch_background.xml create mode 100644 example/guss/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 example/guss/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 example/guss/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 example/guss/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 example/guss/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 example/guss/android/app/src/main/res/values/styles.xml create mode 100644 example/guss/android/build.gradle create mode 100644 example/guss/android/gradle.properties create mode 100644 example/guss/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 example/guss/android/settings.gradle create mode 100644 example/guss/assets/CyberGuss.flr create mode 100644 example/guss/assets/Guss.flr create mode 100644 example/guss/assets/Teddy.flr create mode 100644 example/guss/assets/fonts/Roboto-Medium.ttf create mode 100644 example/guss/ios/Flutter/AppFrameworkInfo.plist create mode 100644 example/guss/ios/Flutter/Debug.xcconfig create mode 100644 example/guss/ios/Flutter/Flutter.podspec create mode 100644 example/guss/ios/Flutter/Release.xcconfig create mode 100755 example/guss/ios/Flutter/flutter_export_environment.sh create mode 100644 example/guss/ios/Runner.xcodeproj/project.pbxproj create mode 100644 example/guss/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 example/guss/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 example/guss/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 example/guss/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 example/guss/ios/Runner/AppDelegate.h create mode 100644 example/guss/ios/Runner/AppDelegate.m create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 example/guss/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 example/guss/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 example/guss/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 example/guss/ios/Runner/Base.lproj/Main.storyboard create mode 100644 example/guss/ios/Runner/Info.plist create mode 100644 example/guss/ios/Runner/main.m create mode 100644 example/guss/lib/character_controller.dart create mode 100644 example/guss/lib/input_helper.dart create mode 100644 example/guss/lib/login_character.dart create mode 100644 example/guss/lib/main.dart create mode 100644 example/guss/lib/signin_button.dart create mode 100644 example/guss/lib/theme.dart create mode 100644 example/guss/lib/tracking_text_input.dart create mode 100644 example/guss/macos/.gitignore create mode 100644 example/guss/macos/Flutter/Flutter-Debug.xcconfig create mode 100644 example/guss/macos/Flutter/Flutter-Release.xcconfig create mode 100644 example/guss/macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 example/guss/macos/Runner.xcodeproj/project.pbxproj create mode 100644 example/guss/macos/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 example/guss/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 example/guss/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 example/guss/macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 example/guss/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 example/guss/macos/Runner/AppDelegate.swift create mode 100644 example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 example/guss/macos/Runner/Base.lproj/MainMenu.xib create mode 100644 example/guss/macos/Runner/Configs/AppInfo.xcconfig create mode 100644 example/guss/macos/Runner/Configs/Debug.xcconfig create mode 100644 example/guss/macos/Runner/Configs/Release.xcconfig create mode 100644 example/guss/macos/Runner/Configs/Warnings.xcconfig create mode 100644 example/guss/macos/Runner/DebugProfile.entitlements create mode 100644 example/guss/macos/Runner/Info.plist create mode 100644 example/guss/macos/Runner/MainFlutterWindow.swift create mode 100644 example/guss/macos/Runner/Release.entitlements create mode 100644 example/guss/pubspec.yaml create mode 100644 example/guss/test/widget_test.dart create mode 100644 flare_dart/lib/actor_blur.dart create mode 100644 flare_dart/lib/actor_drop_shadow.dart create mode 100644 flare_dart/lib/actor_inner_shadow.dart create mode 100644 flare_dart/lib/actor_layer_effect.dart create mode 100644 flare_dart/lib/actor_layer_effect_renderer.dart create mode 100644 flare_dart/lib/actor_mask.dart create mode 100644 flare_dart/lib/actor_shadow.dart diff --git a/README.md b/README.md index 27eb8be..9145124 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ This repository has three primary branches: - This is the branch we publish to pub from. - This branch and the associated pub packages are guaranteed to work on the flutter stable channel. ``` - flare_flutter: ^1.7.3 + flare_flutter: ^1.8.0 ``` - dev - This branch has the latest changes should work with the flutter dev channel. diff --git a/example/guss/.gitignore b/example/guss/.gitignore new file mode 100644 index 0000000..47e0b4d --- /dev/null +++ b/example/guss/.gitignore @@ -0,0 +1,71 @@ +# Miscellaneous +*.class +*.lock +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# Visual Studio Code related +.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.packages +.pub-cache/ +.pub/ +build/ + +# Android related +**/android/**/gradle-wrapper.jar +**/android/.gradle +**/android/captures/ +**/android/gradlew +**/android/gradlew.bat +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/flutter_assets/ +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages diff --git a/example/guss/.metadata b/example/guss/.metadata new file mode 100644 index 0000000..dfeca94 --- /dev/null +++ b/example/guss/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: faae8bde78ac273ae380cd8a6d18b093534ec58c + channel: master + +project_type: app diff --git a/example/guss/README.md b/example/guss/README.md new file mode 100644 index 0000000..f54b46f --- /dev/null +++ b/example/guss/README.md @@ -0,0 +1,41 @@ +# Teddy + + + +An example built using [JCToon's](https://www.2dimensions.com/a/JuanCarlos/files/flare/teddy/preview) Flare File as a custom UI component.
+Teddy will follow the cursor as you type or move it around. + +## Overview + +The basic idea is to use the `ctrl_face` node in JCToon's file to change the direction of Teddy's gaze, as it's shown here in the gif to the right. + +This is done by using [custom `FlareControls`](lib/teddy_controller.dart), available in `/lib/teddy_controller.dart`. + +`FlareControls` is a custom implementation of the `FlareController` interface.
The interface and can be found in [flare_actor.dart](../../lib/flare_actor.dart#L13-L17) and it has three methods: + +``` +abstract class FlareController { + void initialize(FlutterActorArtboard artboard); + void setViewTransform(Mat2D viewTransform); + bool advance(FlutterActorArtboard artboard, double elapsed); +} +``` + + + +An instance of `TeddyController` is passed to the `FlareActor` in [`/lib/main.dart`](lib/main.dart#L77). This ties the controller to this widget, and allows it to use the three overrides to perform custom actions: + +``` +FlareActor( + "assets/Teddy.flr", + controller: _teddyController, + [...] +) +``` + +In this example, `initialize()` will grab the reference to the `ctrl_face` node through the library call `artboard.getNode("ctrl_face")`. + +Moreover, by [extending `FlareControls`](../../lib/flare_actor.dart#L462), `TeddyController` can take advantage of a concrete implementation of this interface: +- `play(String animationName)` +- `advance(double elapsed)` - a base implementation which advances and mixes multiple animations + diff --git a/example/guss/analysis_options.yaml b/example/guss/analysis_options.yaml new file mode 100644 index 0000000..7f8d90e --- /dev/null +++ b/example/guss/analysis_options.yaml @@ -0,0 +1,122 @@ +analyzer: + strong-mode: + implicit-casts: false + implicit-dynamic: false + errors: + unused_import: error + +linter: + rules: + - always_put_required_named_parameters_first + - always_require_non_null_named_parameters + - annotate_overrides + - avoid_annotating_with_dynamic + - avoid_bool_literals_in_conditional_expressions + - avoid_catches_without_on_clauses + - avoid_catching_errors + - avoid_classes_with_only_static_members + - avoid_double_and_int_checks + - avoid_empty_else + - avoid_field_initializers_in_const_classes + - avoid_implementing_value_types + - avoid_init_to_null + - avoid_js_rounded_ints + - avoid_null_checks_in_equality_operators + - avoid_relative_lib_imports + - avoid_return_types_on_setters + - avoid_returning_null + - avoid_returning_null_for_future + - avoid_returning_null_for_void + - avoid_returning_this + - avoid_setters_without_getters + - avoid_shadowing_type_parameters + - avoid_single_cascade_in_expression_statements + - avoid_slow_async_io + - avoid_types_as_parameter_names + - avoid_unused_constructor_parameters + - avoid_void_async + - await_only_futures + - camel_case_types + - cancel_subscriptions + - close_sinks + - constant_identifier_names + - control_flow_in_finally + - curly_braces_in_flow_control_structures + - directives_ordering + - empty_catches + - empty_constructor_bodies + - empty_statements + - file_names + - hash_and_equals + - implementation_imports + - invariant_booleans + - iterable_contains_unrelated_type + - join_return_with_assignment + - library_names + - library_prefixes + - lines_longer_than_80_chars + - list_remove_unrelated_type + - literal_only_boolean_expressions + - no_adjacent_strings_in_list + - no_duplicate_case_values + - non_constant_identifier_names + - null_closures + - one_member_abstracts + - only_throw_errors + - overridden_fields + - package_api_docs + - package_names + - package_prefixed_library_names + - parameter_assignments + - prefer_adjacent_string_concatenation + - prefer_asserts_in_initializer_lists + - prefer_collection_literals + - prefer_conditional_assignment + - prefer_const_constructors + - prefer_const_constructors_in_immutables + - prefer_const_declarations + - prefer_const_literals_to_create_immutables + - prefer_constructors_over_static_methods + - prefer_contains + - prefer_equal_for_default_values + - prefer_final_fields + - prefer_final_in_for_each + - prefer_foreach + - prefer_function_declarations_over_variables + - prefer_initializing_formals + - prefer_is_empty + - prefer_is_not_empty + - prefer_iterable_whereType + # - prefer_mixin + - prefer_null_aware_operators + - prefer_typing_uninitialized_variables + - prefer_void_to_null + - recursive_getters + - slash_for_doc_comments + - sort_pub_dependencies + - sort_unnamed_constructors_first + - test_types_in_equals + - throw_in_finally + - type_annotate_public_apis + - type_init_formals + - unawaited_futures + - unnecessary_await_in_return + - unnecessary_brace_in_string_interps + - unnecessary_const + - unnecessary_getters_setters + - unnecessary_lambdas + - unnecessary_new + - unnecessary_null_aware_assignments + - unnecessary_null_in_if_null_operators + - unnecessary_overrides + - unnecessary_parenthesis + - unnecessary_statements + - unnecessary_this + - unrelated_type_equality_checks + - use_full_hex_values_for_flutter_colors + - use_rethrow_when_possible + - use_setters_to_change_properties + - use_string_buffers + - use_to_and_as_if_applicable + - valid_regexps + - void_checks diff --git a/example/guss/android/app/build.gradle b/example/guss/android/app/build.gradle new file mode 100644 index 0000000..3bfafe6 --- /dev/null +++ b/example/guss/android/app/build.gradle @@ -0,0 +1,61 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion 28 + + lintOptions { + disable 'InvalidPackage' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.example.teddy" + minSdkVersion 16 + targetSdkVersion 27 + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + testImplementation 'junit:junit:4.12' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' +} diff --git a/example/guss/android/app/src/main/AndroidManifest.xml b/example/guss/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..3eff14f --- /dev/null +++ b/example/guss/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + diff --git a/example/guss/android/app/src/main/java/com/example/teddy/MainActivity.java b/example/guss/android/app/src/main/java/com/example/teddy/MainActivity.java new file mode 100644 index 0000000..3dc051d --- /dev/null +++ b/example/guss/android/app/src/main/java/com/example/teddy/MainActivity.java @@ -0,0 +1,13 @@ +package com.example.teddy; + +import android.os.Bundle; +import io.flutter.app.FlutterActivity; +import io.flutter.plugins.GeneratedPluginRegistrant; + +public class MainActivity extends FlutterActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + GeneratedPluginRegistrant.registerWith(this); + } +} diff --git a/example/guss/android/app/src/main/res/drawable/launch_background.xml b/example/guss/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/example/guss/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/example/guss/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/example/guss/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/example/guss/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/example/guss/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/example/guss/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/example/guss/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/example/guss/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/example/guss/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/example/guss/android/app/src/main/res/values/styles.xml b/example/guss/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..00fa441 --- /dev/null +++ b/example/guss/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + diff --git a/example/guss/android/build.gradle b/example/guss/android/build.gradle new file mode 100644 index 0000000..bb8a303 --- /dev/null +++ b/example/guss/android/build.gradle @@ -0,0 +1,29 @@ +buildscript { + repositories { + google() + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:3.2.1' + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/example/guss/android/gradle.properties b/example/guss/android/gradle.properties new file mode 100644 index 0000000..7be3d8b --- /dev/null +++ b/example/guss/android/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.jvmargs=-Xmx1536M +android.enableR8=true diff --git a/example/guss/android/gradle/wrapper/gradle-wrapper.properties b/example/guss/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..2819f02 --- /dev/null +++ b/example/guss/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Jun 23 08:50:38 CEST 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip diff --git a/example/guss/android/settings.gradle b/example/guss/android/settings.gradle new file mode 100644 index 0000000..5a2f14f --- /dev/null +++ b/example/guss/android/settings.gradle @@ -0,0 +1,15 @@ +include ':app' + +def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() + +def plugins = new Properties() +def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') +if (pluginsFile.exists()) { + pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } +} + +plugins.each { name, path -> + def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() + include ":$name" + project(":$name").projectDir = pluginDirectory +} diff --git a/example/guss/assets/CyberGuss.flr b/example/guss/assets/CyberGuss.flr new file mode 100644 index 0000000000000000000000000000000000000000..4b7e8231890da81e21238677d3c35849204771ec GIT binary patch literal 37421 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 UTxqWjVdwnsu_5g46M!ZBKgHVuAOHXW literal 0 HcmV?d00001 diff --git a/example/guss/assets/Teddy.flr b/example/guss/assets/Teddy.flr new file mode 100644 index 0000000000000000000000000000000000000000..10411e1e2f93c8485fd7ff0e9b539c8b788788cf GIT binary patch literal 63529 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%0DsZ27qqcpv5;Z~Bul!fU5h)vI*sUZn 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 literal 0 HcmV?d00001 diff --git a/example/guss/assets/fonts/Roboto-Medium.ttf b/example/guss/assets/fonts/Roboto-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1a7f3b0bba45b7470a4240c3ec67595eeeb02192 GIT binary patch literal 172064 zcmbS!2V4|M(|32z%q~e;vLeC)0wx4OzOn&2AE+g< zYyU2T=@su^u_JD1 z?*pDY_3SsYN0|5YorF{?Pw3O?y}I=u(QW#$1%!CU5+W7r)xAr%yw%r+;N9{lAKeQX z4(}b#A>9q>QoZ^Q8}aF4lfOZ`9U<T}BMj))bskeg?|x z2XyJ*orJzPMVN0dFre3)sAz>ZxP7A_$#R6S-UoREi z*}3{(q&S+v@AL)4Nq!sk9;;5K3uOsI`QCs(0L=jLfJ%Ug zfFwX2KrcW?=0_&c7o>vdLVgfOk@;d-GC_Dos%uM=_EHPtDmjsbQWeres!A4$(*WI( z9zyy^JIO*;o2(NDlTgVK`7OypEyc4PfN3aSQo)I$jAu7UL-9V!#gMU5C~?&~kZ?&y z%7~dnD_$i{Sw%8MXiMCIorJz5N?1Vzwvbdro$bVlWQ-UN`lkRIkrwP02^D9O=4f{$ zb0lLKHSZBafgQ;#&1aMyN=AxvP?o><3yEhL!2YBW+f3}lA!NAl7x9!n5r0ub{Df@c z1l*kMB$XK>JAg|_%}5gSCDX*Qq?@>hbdpw*j$$lvqVQ{sn2z*E{sdtY=y*apN*N?U zQ;sy%v>`pg^V-^}=FegrX(CO**j)hMUXU4@6QsVliS!iblOM$y=+_c5Nz5VfkQ+bd zP3DSA$sDm831IQWU;35ILz!{f-K3kgDrwK0$S=|i(u`%8pGhgCt+)#BttVr}Ph>a? z2H&ca1mQVZC>Y2P;Q{C$gT6bGiOfhwuqLF8aEFW%{73`Vk4z#YZw?`*PQaL3rkcQ* zPbMGMk(@<6J$e5ihs&j7q_{K+vQwGp#d)NkluDKZ*OT6phSC-iC$%SiF_x{xvt+SY z6lG?RmSQ60+naRZw2Qx!p==A;EcPLuq8r8_7vnvHOb}x*=JNodkkdpm0lbTo(n!2! zA?YFRBFW-tbCzZ>iIij#ASIAqb~8w*-CVL<)1FjBy9*>cGEbu+rL=2N?=8|m`UCR0 z88YcWs%SccFJDk*CYhsMPL^uFkfj=LQcUv&{n3(nQd81b+mfsi{|3EdNqccFnJcs- zQ^n6DM3YQ>MNiTM<1kGefbm#H{51mb5~Ps_c?*=TqmS2-?m;?h=8$Qcw`82;Mf@}a zQLY!DI%%evg1I+{gouO9_mOU?xk`LB&+yJn^E+OTwgF@z9`e-FoQb))R71%$%uOHg z!a-Y`Y|})Om6{yzz=FM8|ncZ}U9jJ2MOv-2UI zn(M?@N=N!DnJbltTy7b?j$X^XjY1B~!eaZmdg7Wn+PJfYcsJkcH?gD*NMyyNx zv=uQvgGjLS6|(h!be4ue4u+Cp&@WRor7(`C%oinp)I9=qmqyu=m;*b}CgeyHg}S}b z#yGN2GXgYV9*7$;b{jFD&yh;PPL%J7c7_o@jB#_#N7764kaW_tAl0SPBupHQc~=v> zIZA44R+3n)3H7WZ!zB^#mnW@2w?Ep8lUk99ng*z=Ch-@_gMN2H>|n7hm>qx~cYr>J z1rx{PJ{lZjma(c`2mJxn6$WfB4F-cWES{e%)ERdB-llvf2tmx0Nh9{3Efu`?Up1}L?7sjlHheo z5)P;ds0~;QNI-kFFn=Vm6YWK6#QVaSZS?hqZ z?TCX$kG!6M38cDa0q_jif&k<%KpiVl#v3qzl#)JxrgrH2Y4m*&>O(z%WavZ(@fx1- z_Bh?VFMpG|cG0No4Ji%&#&B5y!~>cDq5+Knbum_8UOq8vLdJd7+QXKSRY0NXo zD(32P=;VnQZ%$u4^ieYGj6IWJSAHi+&><^DM>0xuG&crL;=p;xpK-`<=eun~PxY17 z0;Zw8OyDQ59VN&TaS|CIwjs{qQ4%Hgh0dx#e&lu0U8I9%DQMUY8=^BC(Dy2UK7jIo z9)PZZD8N8K0)YEKPq{5rpalG_66S9VSn0k+&N6 z@JZm0G=prkmju#LI86jiUGqoL9((|=F@Gv@8B_c@_-9gE^WPlAx#k<(Ct{n;FBLzF z`&!=v_+E{#XI?Ht*(s z2Jk+>)&l>E`&iZh--`QJ7T~@W2i_;%-hW`;FSN&f%kN_Nn~>{xrO%um-uM3jbDxy^ zh5r@9UsZg@+U8y8$7=BH67T`w$H3qt@q+I|fLCgE!LN0Kp9J5Q%Z1|K!pB5E7NSf_ zK5nJp-^nZmzaX>tIB@>_8;e8D8~C_ze*GJB|5))+RUDt6uB`aX@LT^^tjG|2TWfrk z*zs}aWAT5*&^6(TUksmI@r(0)bM7B=AKe;rKb8BXil54T(oyD(3UD2Zx&L1Q`hn{a zYoK}NjnKD~fj0wI^0}huD6Xfhf$MN<;5y#AE!3^(9}6Bu`dGJPxfh|+Z2)>6?al{m z1snk_9)L024k-43>nbZy=;Jj0n@(<5EWquBHE_OIz`74s_lm9Jed54vSUxE8W}5s$ z+9`ivwdGuCnR$~GCud0m%|^DxJe@!1YcyqkV4N)LGA^_KUXO7Z;W|LV+KcNAMIUfq zocrJKnHcxG;afw`%~9qyU%Ozvgt7NSTj|O(KIc(J@w@q)gwM}qG+!Sb<8y}F2Hw5| z-@1T4UJm6Y_}vO!n2&re@b!VRR^)mB^l{oSpV}#No%__hz5F#`{(8-iKU4f~zOLhI zKb`MSCx^jfevmHSzoCcb`D_|4nTr`1A-vUb6G13C#l zwD}_<4Dt5d_Fyf+{eO!dQ+Ns=oAZOOH8fZs@Ow+W7HpYA7QLqUr&y0+{1Yti71Rx$ zVN9lR-YM9kODul91!J9p_nUFP^M3vZ#`;ECgJ4~wtUa)%w$Sq(tP@+BmwhMy`}+L9 z=y^;3{yR3`6dRf6{I}}=1z-uADkZWZfn9qMcXSn=Y)-c>INm_FT2QkU~L1<@wB2_m(730i1Eb^qx3(P}h zu68GkuM^&;6ki4LAtgqWk1cc9VuPe~*+gGYHdhfZn12;V$S=ir=Jm=m_@G?h zD>_us@9^j0+jBp^KyP#ZpX=oOwSr=MaIe@2z7~M~h8>v7^DVZ3`{xDqbDO~1fd8)4 z%hwCsUh%a6ubbN;UO(0$ir>wj^E|Yn_~YE~=l(ulGhBr%aG#OCk9N5&uz*rNe{L1b z5!gN6HvF;?L|IBoI(tVE&I@CLM$&4SAc&H3kt{#Pa3|Vn@RKBsMvyd;l2B51xH6H6 zqM#JV6~&nyPYC!YY9&z;P&Mk%NK7MYMN!hCuprmCrB&SMA0jq7}sZs~%OYJw=M^~4LYQ*FM8ccAEJiw?VM?ijF;RvX zGKD$AWtfxA1f}Zu_y6t&=k$Lo ztK=7qE9m6^_}oxtAv(Zs6}nVjC<*=&2<4T6RNJj(3m2{GuFZKPwcdGA4-(24>eogfDdPlvB-b3%J5739`!}XE+s`~2sIQ=mF zc>Q|)7X3DTs{Ww#wX> zey`7>*LTossJ{GOPeHHe2)_#JgjC_6a6!0=UK24`3>WK)O~tO_AaRs9LtG=yim?N0?h)sGINY3~&^18Sq3cYkS2m=68PVB+3K+e|~H{o4_WrNo+Ek zg59jqY%ZI}=CcLtSGJH$B9qx7wwNtpOWAK^3Yp55vE^(9Tgg_j)npo(&bF|vY#ZCo z_IqV&K&pu!u zc^>=7KCxW(C;N+iW`C3UWC8n!ePLhOHM@|bHgpK43B9&(`*UytQa)DeV>B1&*iCh+* z3ERmvVF$S`?1a`z6^!Htxk+vbyM=6F54kPuC3l2l-U;t%6pf}aw6ZuwoGN?}K8nM|5yB@S7ut8a zIG#49O~kR{IN?v>FX1!&iN@2Wv>9yhiRM;` zSwRupbKsUs58yKpZas9g0*rh6&?c}`gmeXLSAmTL-T{C%BhVqx<%FC;)!1*sSgSA* z_#EI0@}~jw6BYo5-92R=>K5+j;{G<^4qy`CF5n^Z7Xd#4JO)ewWCF60kGTy?sRFO_ z1>imMIgKCkVLI?fz-Qz`vl5&RA^!ko05~t8JDCAk&If2zVuoIEM*bdPoeG$Fgu1AJ zIY_800GgDce>7MHG7C6F11h6%G?94r~;V{%=KOj@}B}%R)IiQ(JFvgLz!Ul-paJsH584pGcd6zBHwH9AKKetU^Ke3iU|tj263`j>=o3u@bit593h2*( z?zrcD>H+A9GGl>z0Wj9s<0BMf#({w6l(!8ai-8xYK$ZZn0dO8K1>OnZ{KHt#4=M;4 zEBaLhHWe5ai38*B16qxe{Kvn=Js6bW%LxwpBkAcB= zb`E7$0jH@zP(Ql^fXr|?Ww|PlO?U@c0>$MIU?eyY$b(?70@(`etOA#BAy5S_;{s$3 z=Pnc(hb|-qFdg>*g8mDTCjqj<(>P0`0#9RHp)H93nGrBH(3u2UlnCH2v?dYe0l-HN zWEb#n0Ps>NyBrumb_0VK0(hXjhdv7c0{IkH=L4^6jS2+b1oop;;B~K4f$Rfb57+?U z?QB$m><8vN;=tSFJlc%<4*+u>@&57lIo-%3hky^}1FxH>0pv6=AD<%t-o{ZCxGoTm zm`-r?(g4zMglL}3o(IpNSqSa6Te#OT=QxzXx1g1egA4@S#1+I6+ zIx6t773%`xQU5={O;r${12>g$hDCa7z^^##L+uXbT!3GhzauJ@gC4 z7<(ZKaM=+%svx`o?xX^jC$Tf23(9MOf6j-Az+C|Yk?#OJ2rwA+zXTovNJ73Ba57*x z@;N_8sDN`;L>#Gt@D_L!U>eHvF`NN_4&XKcaZ?p00M7=@M}B$W1%O`xlK=|=OORg? zcq!mFw8h708DJ&y`53MOVE&6!0BZo4v)qP=TL4>8{sZtfz;*y=75N<4iTqE%20$tR z^x^CT5f9>BK5m%D3XBKFTo#WYzcKJpz%jsBz;VDy)bl6sDFDWk{shd&EFHjkz{le< z@>>I60o+FUzk%Au#4C2MW2<4^x3I0_Jo8=wje?DsVa0uUCOC0p1AMf-;a( z{ZniO!Ts+92Y^(dXvZIY=Rnbpzo!ax12Fo^ zfuc?SU=;}J@~@x*-2{xW_wR%m1u1-?QLsILOfdys%c75M5spc|k&%I_g02xH8F?t^Nj0MJ4A!wo&90$=ri zL;g1r`QU+URsrW|i8&8oLO#kGNclzv`=)JEDV>wBpPHu{;!3943!OWK8fbaFzE1Br z15FGyu<{04)<4uBl-Jia2tjq5w+&3tr|44}bW73K)%WVs%^(IT7!SIqB!uY=q($4_ zxVCKTZ-`AOQE=NmA)#uhLFCoo4U|qvKm~pBD*#rq!c3tCseB{7K?rWzwpm-lgt!uh z*tmoe{{H$phT~1!8ji=6@J~nxHE0TG1g&Fx7gMR#mN#h1h8pbD8d|h9#Fj9Sgp?Fs zUyHVZ{)P!DDJ4?S155h2ZF)Z?|IUcD&HxAM?57i&qAH+3{}MbS&_B>06eh%l8tltA zYSFe1Nc0DZ4&@Ey>x3E{%Ns(0oXV$$&>8xa7Htp2!nx?W-;T^^+4cY_FT5O-P{I%h zV)Zlj>%h1CJl@M9u&Q-&M zO6Z7PIkJydu29O`1-JXyPq7h!9{f(IU#)__JHHbP@}%(6ex5~no~CQFA3{s;J8f*G z{CDlzH>_HwIM1`6-0i2Tf&9*4_|J`_{rR2a{NWwcJg4NuM$sjCUXk*peB7P*UC|$7 z%K5qCju>@CwIEgNHRL>@!CK=Px8C>{Nkra;m-UrmtU^%iCY1;bQUD{*Xi`v(Au67memfF{~pKhP)P|sn$!*xdo$G(o6 z9Zx&{||JOcu;t)@OI&A!v6@r5^kzEqT z=-BAp(NAKk#cYd_E4Qt@w@Q&J&8sY^Vy@b}>aJ?#tBtAlsd}sGXKGZhVXP_EtW|Sa z&A)%>`oq&$pV%I;+iUsNYE^4-tsAvV)*fE_!H;ErTob2{8y)woPSZNW>s+c^weG>X zx%J}e&8l~+et7-P^?zyL*`RTQIStYqx-{(3Fs+e$qiK!IjT0JQZ&JI-{-4VHH0P%a z@nz#v;&YphZ2GNP{boy=3(W^Nf7YUPi_Dh2TiLf-+1jb~@YaXh2yF(ox!v}+gcb>x z+BIpnuHE15%eSxJeoXrX?f>X7ro-!wQb&EqnH{q_HS097)0WP(bCb>qox67)+<9#0 z>xsdM!xJwh-c8KzQm4zpE`R>q=;sGrdvzVwbwby3-5k4lbqnm4-0e(vyY3^qf9cV# z$Ic#ydYtPS+;dXTIX##4+}P9D%e&XuUUz%F?DbD?vA3>wV(+v*&HJ3`8{T(mUsJz6 z{ciQI)_?N=X+YZnTL+j14jVXO;H-g%{)d0323{O^bKv8Fe-H8=RDDo~L8AvvAN1>> zvxB9RgD(tOHe~ORYeTY!d>LA6=$T=?hJ8+ANf(mClMTar4!=C2!HBgZ zT}P&lavQZ}wB6`_qo<8tGy34@8)IsX={4r}G5g2ljGZv{)VR2DQ^x%|Ztb}H<6e&U z93M8m+W6Ju|C%swqR+&+lM*H+Oer!Yc}m)p+^N;4{yr^uTAOJ{rw2~&KRtIwgBhb{ zoS#W&M$8;N^UTc8DPbw?QqKJ1`^%_bPR}YntNE<;v(C?UoE<&8+3am|9Ou-Yb6{?% zxzpwv=02a-Zr<#9cji0H|7re_19=I(l2=R1E$y~+-O_KrX@6_^+r?!amKm1iE>Bv1e?_eo>sLmtthMsjm6@w5tQxc` zb9LR-8`qRvllpt*-!s-eW#KXuspgj+Z-QcP`zTY52j=!*JV>liEM^no%&i8-t9MjSYKN}9yoij z82;%G&OgKsbvv}_u+!nd!&MJAJKXi~=)-dkFFU;P@R7qe4!=1f9PvI<@ksq6iARPU znR#T*k$p!lA9;SnbkzB1@X?w_TOI9pbllN}N4Fe3arExd?4uu#*&Xvf7JjVWv5v=v z9!oj4_Smjt7mhtR_UX8Ayu|T{<8jB^9Upvr^6_QIQ;(lKe)sr?6YWo!Pr958JX!T* z(~~_X{X1cAdF!=H{8qGk>2I&N`nBK3n5#gR`y9_B%WI?A)`<&l=92 zIeYc&!?S;$)0}fX=X);dT-|f+&kZ>@`P{N|sprzpWu41CFP(QeU-Ep|`PlQ#&v!dN z`uzO!E6;B}zvujk^ViQmJOAN)UYcE+ds?})n6#hLx}_zj%}QIBb};QyT4vfm7aTA2 zxp3*ivkTuYx?U`OG4^7civuoBy}07yj*G`G-n#hmqB-3&y>5DP`n2?w>ATY}q~A}^ zz2tbw>r&vQs+XEw>UnA0rA3#vUOIW{-leyfh07k7%U!O1x#i`)mnU6bdf9OK+~tRt z|Gd)S%780Vt}MT@?aGlW*RQ+{}2BVY=#mwcOR{tBtRAy*lvf z)T{HaZoF!|ns)W()wfqo*W9m#T&r@e&b8LpdR-fLE#=zsYn!eext4bA@wE@vwb#9` zhhCq1edG1R*RNlHeS_Zcx)E@r!i}mo>fUI6qtlH(H>Td0ePhv$l{Yrr*nVTrjUzYC z+_-e(=8cCpvTx+v`0Hkon?W~YZZ^2t{${_M({9eWx%lR)n;UPr+$wV`_Ez&--EJk{ znsaNzZTH(gw=3PQemm}V``bfqkGehScFOGqw>RHTy?x;JiQ8$nuin0UJL~qV+aGU# zxud&N?2i6U(w(t)rrud`XV;xWcTU~8f9L6)uXlBKL+;kR+v;w=yHoD2xV!6a+TDkD z^X}Q*^S&2wugbkf_uAa+dT-Rd`S<>~ckJG|dsptgxM#lac;D-O;Qg@s)$Z53AAi5i z{m%E3@6W!!=>E3*r|#ds|LOkM2kb%d2VoEDJ&1qMO8aMZ*34>vzN{_xtvrw_k9a(z_xQSC?V9u0mp`_bk{sgI64N_%wwQO;w{ z^TnLRVdW&W1AJM(yEdgi0d4_PeB zEvtOik69hC1NTeT+N^_FSF_$e(L5>kr0kREC$*pa^rYRB!A~YXS^mWMDs3Uo@P9K@l<~1@vPjlm}fsei+|SsS^sC_pDlj2{n_bf_n&>r zw$IjQM`zd0{wcd%c8}~4*(up8vbSfS%f6odIQvcZ-_M2T&d*Cc4|yK;eDQPBi|Q}N zytx0e+RJG#Z@vnDHS^W{S1Vs_dbRV_zE{UyoqKiV)$Lc0U%hzs<+bDMfY()CH+$Xt z^~Be|y-t0d_B!kJmp3kN%Dk!dCgDx@H-q1deKYgTqBp<4+5P7DoAfu2-h6nI_tx&M z`&<3n@^34@jeFblZLhbZ-p+cv^zHh$hPQ{`o_~Ae?TfcxavX9za{_WIs&EEBT zH|pJ_cPa1IzT5Kd@Vjg8?!9~R?)AG*@9p2ayf6OV|9zSF72j8RU+aB?_qRVZ_^|cE zt`EmPT>bFm!|M;9KeCTSKYD)*{uuGG=EsH~TYvod!mJR>r!bX@nu}(8sC&I{F^C!Aap}z>JZqyWY=9Fu62KqfZ zoj|7(=uFiVF*uZK>wl-jp9v^wpkd(^X&{=f6dmE|;jRe?rsJ-9Q6hh7IH6(vDfQ`g zQTTeQN~1N#_bBOR4i$qn%Sm}M!B{r50=n>>?%Si2_LlAk zA`ximz8(oZ?|yM7J@0;TT`Hpm-8VYh2l8AeU8caLlJC1%D+$FJJ zUrH8qi@tJT_1T-b#8~*XeQddv$5kyHnGi)7ovm=633& z=ZCZ7QU+iSb~V41W=dzUQ|V1YNEE3;W*eod)i`~U&fu28uO*agY2_LX*^Uk~R1Q-{ zUlBYDV}ihoAkG*_ou1V?!(osWvD6b!~-#^gWJTR-7ElR~Ih*DWctHg8UuzH>{HA8IykGOiJG z-7$T}_D%B3ty|)2#y0q=M$INNcIwZK6_-xgym@B*$$xB^rK!`ZRf7g~TDPf}moaVQ z#@Y2IZQe9fifhxNQKPyoTQ>Z&zBr^l^i^wc%|$wmQ%FIiB3Wjv5E02aRzYXbW$>#n zxWqM;jo_33e@a*crx+5&xZvnZaA7c(wlBevpfAmlt~8e>qnrB7#jO}m6))z-k*7;> zAVUdVYRN+BG5VEM^rpQoHLNgKVP6b{M&%S_NK2!mB6V6X{}7G7loSy|wOqgicdwY3 zXmAz0Ydv6Xs~HmAcq+b4A&Cv0gszH#xG)>WE8$xzZ< z$fJ&m_VWCm?#fqI)X{tO0co;45@#AInIKnWYw=yLj_8b97gzM27{o9`5vVq|O0KRk zUN|GG)wz0UgBhDJ=EJn`**op%)@9+-K8|KhU(nUGUhO%3NW~kSd*X!nPskbOsneL2fL!w<>qI4`IB*xR#)r&P7_0RP1#XFbI@e7~uVS*it zeI$34x7V6Jj6S3hUeuGOrTEOKDW8@{X7HYtU`>Q!(5d)-K<%lBAs3a&l2P11!ipK} zf$hVJp|zkGNr)7Jyd*cRAcWAy@|74`0g((^CR)C5e*SLb0wKNa<|NuyUORMKTlsSz zs+V8&;H|`w1!7roFL8wKMrGV;LIyO2GGGw64)yo&cL{XykMehkWIN~>dCFUP5*_ze z@P8!7)6_>iI8BLz2*Hs zwVz)1$j&}DQAa&y&swrem?N$Pwg{2d0u{i?i1KGGO}VTHvqx}=lIiBZ=vst}97v#% zI65gU@_C~Ht2CG$sl>W%su)P96JekRgJ$3`f zRSjkF6~Zfe1=7e9$5@SHV>O}Nj`lXc6$3Dbi-2?Wje<`}w9ZwROa9z-01XZn-KHoy zK6f2-sV;?GQnXrO50BctT-`#H8Kremv{sB5@aDtY_rjZx@81ZygGLP> zBn%mqG)Q3G<+Jh$9BiqWN2}7R@@4so`=w)hj>~(~&mTC$xrE3&GfR8mB~?`=Ndjq- zg|tEk2zxH*f*6)66q01baZ}{N)d_TwqJkos`IEeyRrV9-kGgafbvJ|Mj|CTslcq)& zZ?1#XCS1^j%YQT>xNzsn;G#>lw`#&u%_Y$Ag}L0h!hxN9tpZ~ft!QiLAnGs1=7rMi z-U&%vlPBel%=-1lU!!NqE7VLmI)g@M3yl`-YNXD*7x1f$ev}S2uBNo3@dw-)oOP+%Li!9;ms+|oY4j*f`D;+C z0fo63(8%v~0oK`F3=AlhZ;iR;45ZT*4w~G5(9h#?hu@rX@5|V(BgV?P_pix+=1%NC zc+!k%bA@_zNWWe~2e%)zzvul^KW{Hz#xUyi%glp`BSs7vItCJ131iU~^6LPd(NG-* z8v~*!5Nxa5jVkr1cE&MKmL=iqCz(;F& z)6ycGHf>m{cOf5*lGdB&7SW};TjjdA^IT&|Z?1cxTil?g1c-^NhdTjxLn1vr;p?b& zNxLInC~7)fy8HNy7iRMKy!^%SP0=yk28~S_S-V3tyT%?}lh;?3KW9CXzdSwIXYiVo zsmlW+!PO-6CPvyv+~M1HH+ty(IUyc8gJm_L%%A`06@=MJbs4oJzgOr9zf1Kf>;~^u ziNYip?h%Ls`vv_VFe3PS0s-*g+&v?rb-_Xx-}FDdlJ=f>EPuOkPyR@gXs5SLr~1vf zGj4*kFHN|2ezg4I_9Hn5F>|Q}4(u9D4cawoxc1muYPS*NQwMSqjq%Zt$nWR_Wt8~9 zNVWrmuQU`cQyR$iuo!JRXl8Xx&ca8j%-7pu&MD~ZUimuFi}+)&Ww_D4d?@FZz0Tmx z?TVpPzHaou;ConjrpPE4%QE&JymT4NyfSpK&G-x6W$?)8Tt*QCSSY_jhG8&Lg9?-2 zACyGF41+stabN_+?c+Qwyc5}g&O=7ad3Wy0-^L8;)c-^Jr4QF9-WWgj!Dzn$2mAFu z*k26qyD2ruRUG312@Lt8CJ}CIvNR6ynN_N*TT+m<80-&p|9|3 z8T>Oy3vuz#5h*YV8b^qLk$c{qCW1I0EG8>YlTi61g8t8 zIXLhF-;Zn%GQUHOV%Jq_f;cTv?6qmJkeIiIjd}WBo^?W=^&ZqzH~%Rt#fTOofh5sr zUn+>pCq~pKe?)E8wE+<70E}p=PodMn{V5V=6p4<%sk60vPC6yj;GsN3H!zA8FWMt8 z-`wF#C#_&{zp=LORQr^7>5lDM_s(TGr_!>Pj;_uAZ1_VgR{HhmwyCR*l&(>)Q`asn zQZJ|PTeoUtqj_>#wFc_apON-*HO*aV9*HKkv0AP6V;rZcn$8f2-joe9L|U!M`26RN zlpXqH$E8$?rhD&?*V*8C#g-f(uV4M8lV5 zG10CNUr#SV18p7SiX#R1+(_dp@{|`ZQ7RsR1n~wyEScwZ~+Qi+n;pep-r$=<+ z=P$IUF;6Jcuvv7XZ)il=z*$W5RerpzapMnZ>!@aK+1jQ{XYcQzgXxUZ^6Z?C^18jH z17?=4csu<%4aWBndp_OAHvqF{%KXy@$3AHkyO z3Uj&H_AN|?SB!M=j}Up7LDjqzNm$;HpnL-yxRB=lOtYnFya}5CQ-ObN z8!F-cwUryerH(rWEF`KD7boHs7|aEU8&)n=;u}x-#+M!P-}8h8)MeL48eA;T_18HY zQrYHpix#`nd#~hg8)$gijLWp@7WwP@mA`y^HSz5~(^l~H0O$WT@ZS;ozrK-qDog|4 zJ@R$MclplQ=v2r?&g3G6$$YN5B7DKbK*5F6$i10`bjJx=Zv6)N%9)KD&fR2}PfLbv z^6B&jSLCx>#An~0e|gm`=PR@yr>U_*Q!`a270I(0-U5HnQKR^Sh^|?ySA4tmwNQ*CNYjpJEQ4qCJM<_B!OUDbO z#qobyjTwC%1upo$VYcpBkcPYNkRf@=N1B`T1`Gtxiki zQs0vQl$F11Nfpkeo@_4PV5N`r?6Z+ZT^>Rk(xD%oQ0-qigWk&D+R~E8^Z6weQ^u^x zcgDMg>2=j+Fqk9vY=F~LW#-(jx!JQ6v5nLd8Q))z8l_4NICn+?q2^q=njmjU*|i$}++V-4=DL zj6LTJ4l!atclRNq2k}XoTr0tByfS+9_j6 zV`{aX%BInIJW|2sIvBl{u&yi|fPWKUJ)^=a2654ir1ROLyaA>Qm?LUEnm)KIN(Ov~ zZ8ig7nXpQ87SpUGEV~0nibK!nVt1?w&_%79>Z2W{Mam&RdC z(Dig3t(R9^ZoWruQ5<9YZN1pxYg3xZCVg8ab}@~Y^&nHFSn|THJ!x#D`EefZEZBq< zY=*-kISQ?o*=J;u;{RwB#D$9T5ugxHFOz9F7te2^{kOkCNG?u)GXhH>`C@MCFuUs; zMP+tFLm=+2GS0>#6z~cb!D`LOHHz(Gi>p?PNzjXk0#@Q77?=bef{BuR7s@%iQsp;G z=o0EiyHU5r)U@x9^#|CYjeqQ6##{1{?b~VW)#f*8-R)cDV>hKwaI?*CT7HnfQk=h5 z?ZORk%YnF&c%y^6vc_@H8JzN|R@h+?8_VL$=tvda^DmVQb7r*>0GS2D6tgP^1}XM7 zIK-dMH?hz^sh|A9BwwfD)91_^C#SKJrl*oYzIyB3#qlGOXX6is8d4roC@NMfG z?Nr|uyD0j6x@;mi1;U2qNby1|z`a0yVG;znGp(04i2H07Bdf3!R<@9(#V03!T`ym# zQP+^q*3{jct@8dq)*WC6Hf;u5ugF&uPA&Yah%IYB%d+`(tGDv!Le4${XNwXq(!nSd zQ{vj#Z_wrUz(ze-G=kBYDaOv(CbkHEE4y#7*Vs{ljCk4ficge$_lA1FA5($~A^vQu z{M^Jy9(A2Pj@FYunod%2!n~1&b^g2iVvX{P_kvDhhn3)S{%gc%KtM{wqzkfBY|82@tIy|vg zpIT$n49^B#88>8NpUzGDcAvOu(B9igmuHTd(HFf#U{o|>ZK%{5KT7joUq1}iWDvApG^xk z`tZ%?S_4cber|Fx+Y z^6f6P?m>JPLSfyA_zKiHTCA=OSvLNNh3$%(*FuQ3iq)lj!WlIx!e%{BsZNT@8pYyr zqdOBHYnGDh)06UD`5dC!_vk6P9xWxTWkpRDOaaW(^qM_l*Z8RLuMTd3Dm(0-Db3kX zrL=9)sTQih5>ANPCZr7w4#ZcU#pGhL>_v++nHlqXnO?GD{PQnLnxchSXu+P;Ra>yB z)FR8)f{bOpvYbPFLMl`rMtcdHPH2`Jf1DAB^7o*V1cz^@*+-MR=y&15dNDSA4R3LZ ze3<#*Z^CLxDP@BSF;JUnViS);H()HeC(L{{Y><1=rBcS1%}2BfcihdBg>Il-fX(4M z`dl(B-WcMfkOB7(Eb)V6_;MZXIw5|$QE3+u7nG)9ST9<4fv-|*+;BHE8x`pi=)`x& zH*M0)`KQ7WO&i{aD0WwfLdzNwVl!I`tz3qYY8BgtW+XoI1xO<#a*y#cEw`1Hy(Dgw zBiU_J8Pq12YboF23D_yM@g1xg6JAl`!JnmheT7BGj^V9};#CIuLhr#x#POXG!Z!#! zjI`TX@Dtz(sgpz5MdN&gB-me&KT!|yDh=anxpweqzaeVm3+bO>^iuW=3|@t{(F?Ne zh3Jt&lSRG?xvZ#eFGcDd6@-Hec->}I?dr%4POQC?tB-4W*XpifM{ahk!h!W1w>*z(Z&3 zZuKy_sk>Wls@KA|2_aC5yJca5Mdv9`3gR1*6CY`#gM$8bjNw1`zTA04NXwTf2nV^k zD7#-;7j*R6g=~voV=Yfc!Hy4&(ao8My!f_{XW?wdGzOm| zi-J_dJ2JuxoDSqN#bS8;BgO?@nkN3`scn67A2{{jd-P52_@qU3eq5A1 zfdze~VIx@CuVl~^8u4kvfvNQJq(hwc7LXH1aM=SZ#%V@RB|c;D)Zyrm%58-_3*nY! zfYF;Mto07tea!ocH|w~&v-d!6Hh8z6cNjCi`s#D<}!NjW(aaR`)f4&98qlf|)>HatX!xCP|S!194^6;anhU3cNn|e>Kb$5NY(Ju6g z-4J&g_{n#zd5-*CmVchMV*1!FeTCJt#=4Fg3wh$3zPB_U*avE5)OvUp$dl4Tet3${ z2}KwDySsdiqRX)M-1)&Rko~Vv4?_3KNediA2n_J>;M;E3Hf%V*JGQ>2bkvRq4}@vE zyY4>idem-L;_kdrocqn?)}j-*UmTilnlT_Km5|4**8}OURn%oIcRU@xJ_b z*6^p*h7MXka#ru1M?Zd=n*3|MI=_yX%7XG}=*0ftUflfLwdsPXlgBqmq7^=`J2Z|y z7=4smnUPTL|6s=G$d5*ce2-A4&J@KkTY6cr$!P5wapUG-J)>!Kq@FK<`EI)s1fczf z@1^ae+%BCK)X&WoPN&F8rW)+vppKLBzM)ly?_3C-C*6dFDMEhuZzuOGL@1sKxXXjE zPB@4dW_^S&KbBH>cyD}et}NG^QXc_*u_`TIxnaY~F%24E1AmX)h)zYDPKfU|G74V& zOb@tUu-dUv$BG1t;uTd0lje!R~ z67#4e8DSKyV$6zFvy7wS|5*}BO_qe^?10iQWp9%YcY%%MGm8q!`7BAREdSvl>Ix+g zhZQjlUeVCV00fRzQPgPN0=Y`&B1yYwhn&6JH2K!9oh-LquNJ*MXs&d0L5*Co>fosx zH=aFVs=|)`2e9Q}bkyq}sX~pvW2L1?w1{ zO89UohF})U*H|_R)MDstOc}f+n`0t4;Rmh}FE4k#RYdq1Kg*tf{J3We?^72?Iy!rC zww#lj@_FX$k;7-Pkk#gy^7B_!*5swoin9HtBgYS{KYj$%jgb@a_o-Cs2I2UeLS4Ss zQ!t#CQCF7imV}~QE&9~r3>p7F{2vT=$+g?TTZ^tojhz_-MVvzO=ZC{EjzyN*I=4Ah=zUM zcw{tvn|x56lWaG7P=wSo+AC+HzvEFTO2je-mJl;e1Y3u`jrNZDCl~T3lfqvwwktex zQ`Ov;nzkz{1qdDNCYXH0sv~C?<@2Tye8&rDJDBt}+J}@bm^U^K^Sj3a>{O)!t;!}imH2COJOBGHaqkkzy^9lHSZAt{%a)1{~!0PlakJNyZ z{Om4wW}?~szW=n?`*!ci_qn}VH|^eu`mT%rbb4yWu(#5Pu8G}faILsXrQ2?rb@=#i zbvrh!S-Iv9ZAP_OuqW}4F0DH@;Jvdmzhy(DTJU6A8i|!BR+N2g zz7Dk7dFKaLthR(yH-{S(?zt!)rH3XEVHWr`E_C~`V-pVETJo3Oru8*r z91eS7>%IGKss&xc!S%nPCAhY-SamL|Hi}oF%R;1$K~WrgJ|2WAhi(3C=6O^ySPA}c zUl;NzIQ2ba*ps_8wPtR1pK+H@u_LCsm&XhC-_CL_;X8NX9;o?l+{Z$IB65~Q!L-L; zj>VvZ6H2rtl77wpCeOSsPs>A0N%QTjs+;{0S4zk2ccVU*Ds9ZCjj&r9Q_M`kf{Q3y zRz^uh4hqVrL*VOdH@8SJa$Amk_x#Ie=jA&&J0I<%@$AjFv+RYbxLDOxl0D^p_e0-b zf;QWjkA)~D=3`0NtbPj&2L9g=;DAx1qJPJH-1ruYfX!_zyy<0HRNg~d%YWXvjU{+% zc`tQhw`e!h8`FI{M4rQfm@%C{Ljp+JQa#79hWOJuLhf-w}VK z1t*WeljESkHXdYQgGCZ;7Lxzxc+dnEo40@knX-lWlP6cR+ozZDQK&30W%D&P5Z#V3 zx+>9a0`E~7aK&a9Lr*n?ulle|OqB{3N=8?S2iefoQbJUvz^I6*C>$;E;``iMoQ3!F zVqN6b+7l;)J%;e@n(g>cUfPu=-pn#Sxv~3E#H`9+?_{;_@bu=_%AjHgMx_-ZI!Y|* zKTgH+AQWx2X_Nd(qj=^eKywmkE(V&V;{3E0;lU3+jg=$ooMx9|{CuIoB`np|ie|}` zk1EdD@;&aD;HaozEFSpD{YVcihH$W;ghAZ9S2Tq0HJ&`VYtQ{E=8PAuTfe?yt}-h! z`@s1uW7e5N*^!)YNp!OKKnMfhYN0K@D?o5!#V8b0ghB}8OL}X)1t%KcmcWi#?-N0G zytrG&Rc{4|i-reVA|remU(bjSj?QT~cG-`?KQ=kBcVWY+^M4Hav8CW@cwBj=f3KEX z?^l}=FsLQ`iD~je`kUAUymQ7nL92e7q}4&2s?k@&!9-6w8%y{HC|uyf zpzP~d#8#Qg(3v)3D>x|M0$`6y{SwGU`LxD8%vj6?YFRnHYqN!>L_~06k$+&qu=I9S zKR{9AB7)Z4lf@^D&^!~*EI7X}J$>K#RR_dp+T`}nb%=`eYC7YR&+FF#)bD}MO{x#b z%JjLjA~8umU!TWDD8aV0I7T`JjnvENt(<64Ip+#nYnniBZ-LFX-W95EV|pbI>4 zlA0(hP<1qHg71Y3J4b$|$f%{tbmyOxVU|HrS$)BUg^;~fvIxFB<3nS>E*?%TVPfJ7 zA{wT#%Ud^Jx_r7MTlozOwmhI zmS7(=bV{Ip`m$l22l9X{G|bFDb)_WT2N%AG%A z^e-dm?PDSbEbG6&UBrxTThg=A z`%LKEyk(nSgMS;~;Zu4{v({lzy0D~XUAX*Uk2FoiQtODgxNdQA6;;I7{B3YT;0Z>@8*?n0EHL`T zROXEH)8ShgevQnZYmpeDNWRJq%`k+98Cj%qOqpSS0H^7&KVToKe2--xwwu`N?2%E# zo_p%4y22BTe1duvCXL?eaoteF@a+nFgfo#rg-OMn;A6A=@2T=X&{GeeMFmx2r2=vC zQRgb^OSuN&fErFC=+wgrVyB(*@gv7pt=qn$L)#8Ld$mt!M>j5(->q9MzhAK&pP$B3 zx20d-AEJ%u1lsV>A$kAF6Y{>ptmV?RH+K)-adX3>#1=D>lai-3`+4d{T5{`pIaA&y zXKva;^_woxcIVE?8|8lT#Gq(~PCBcODtDxegx z10qGGYodr`_vZgScXl>2fWGhh`~06rHrZsed(XY+p87rK_VOq3I$|vi;%-YJi>&tf<;8>sFR;LXUcWhSVqm?6gOv5wNNG0 z;cQU7s@I^+gO)}0Djq9|N1a23F`(-=T}#u>1QxOr{%UV{;ZwD^mx$672Zj?WocJF6 zThhNI__uO#D#OUBoVYjA@CR{`mFcIbtu0U2V{f&>-_iXua^MTxNfMX>g+O}-hlYj3 zLJh^oCXi_a*%RCDMMks+yvVH1xD_no-4Djss$%zA?Nhtyy6n1L>UViZ`u+uWJpTf_ zcH(>FRc$y$E|1wa7Z~`eb>JG!MM)iA-sA)#5_uxWt68vgr`Ca#U*}7m8Fw;ZwXX$tw7lRZ@e* zCdAl+L)ol>t5yykvU=^Hl)7~XHfU%)z3$rT)z{YX@%2-xG-=Ym0Y1MQQjvLz1D=+j zrGZv~2NmLWzJWD=RYe||h(_&U^(A|MpSQJ`RRj{;Iugb?2$t5cc6|GHd^PLy9jolv zBe#^Nf66o1j8EBwd=QVltAW1Ps`W5z=1!`I%Vs8JW~z}A`wr=?lPyrLVi-Tqyo`gd_-!MYPAn-pOw94V9)t%l(c#h zv-Yb~Hl=pz=y#`#8q~Ml2&^*=-MhDAouzfs=u28h)TA zYk~gt@(6VyrGv47Hp4nSwW=e;Hw>6{H4un2kXB5*3ng$%6#fZ_Nv`|?DWr#q3EX8} z39+n5%NeO}B-J{!d0O_SS9t$-|MsZXlxA(3BE1rGzDm5X?S5n8Ju8!ElsO{wa&{PePX@vk?B^6sAgF#@{bS z^sgj*)j&%R)yGwtN~b9fP`CX}VHE+N(W8ED_M^XX3m1ONU<7*bZ@w;g4#);W|Mj|TyW9%z z8>V`=-WQ+-A=izqp@*x~_W z=OmV`5Nn-BpEU*dPO|Psl&KnU5k#ZL&%&iK?E>*L8s*{@q;g~vC&mWYsWwwO_&FOE zgm1q436q^wxjZg-5$N*Ts;3suhD^~Ba>D1pr{Gs)-=F~aKTI64aqxs(Jg(K! z3p_e*^SI+I^^+rO*B#r_rA4z&tV{D|U6dZ{Po3P-;Js6)H(7fQ9o(ZukD){Ql78(1 z{raxZuS+~hzb>JE*Z6q{M8u|BcUltI*@Ew-mH4_8-C8}EU5b)W$ZGL7Z%tAq{0)xW zdI9@~*IIsuZApK7Nm|Y9?2KHr@NaZ@o%ox6_!|dg2)+L{`Wq=qeglVLmr7cas8^l# zIZ-YiI0Cm)Sm>5HDcD*sn8 zP^hR0f^dO9Eo$pYrzVRs85s0w2v`M?O$-aNa;P*`N@>`yW6uul2j)pnPJVf7b?0VY z(%)LTPFj|+sQJJi1G{$V-Fok(&p+P0sY`=VDXcI;AQe2t=C{KQ^n;w3sL`yuL4`pk zvXV&*=y5(ZK!cYfdSftqa?I5MDoXT;p8#Kdp}N7SwF1S9kc&f|3xa`AT2#P^C`Ytx zZ|BJL<6a;08*&}_rZYW2D&@QrEUkF{h)pQQ+F%q}&KchS3{PeKq}glje5!5U+I4BZ(8yikADU&9Lt?ttT- z6Yt`YS3(rkqW&UO8Y{k_sRy;ofVXeVu@|MvNxJp%h3+3%L?D*|m`RHV5{2qn!qSrM zp+VN*Fa`~aiA_}!7(_Eb%rO8l?|Xknr|pYQEoZ^%ne293m#k%ux9YQ}?PdYXEFCY; z!-ZWu)U;D#34YCkO$b3H~X9 zOaihXB9lOh$E!bKpRK!rt0EEOTcFRzTi zMgp7l$Db^aKhDd|%X>O$(fo9Pn}2)!*{4r9pw>K&7oB!vhQQm-20mpqP#fhfUDQ}Z ze-Xf3tn_h(z|jIUH-a%zu`^>(++?A+pGMQQoXHO3;m#XlR)Fio8s5&lWrR>lER1MT;e1Nri-GBL6$g^9 zti#=eqZgJMh5~OFu!oR6g-%~66CfXiHGXlzKdM0*JOWodPwkwrfqW8toxvTr+yu32Q5B0bC$%N z59Z8US1o2s)tVnyFLzn$RDRfFON>ATiKQQStER0yPy^*~>+M>tGXfZ;T{|BE zoe-h(m^(G%XBRki1f&D}M0^N6e+&t2vY-us8j2Gc+6>^<1Jo2Ok(EhG0FG~1yodvW z)xy%kn8jl`=0h`yg{;o8 zuHuAyiLkU&6%DHfd=rdQJW}tA7m9TuX+3pAX|G~bhIqOA7h#3J0Euu}3jHZ}^(#nL z(i}zPKe;D0@2JxV|Er^YC)K;k)FvYvHy+u<(WqLJCe>aeOHKx|Zk+NuI;aymEe>a- z#8b$ORtm<(W320>OsE5Q9x+@IIKU|Jg@Sw$LI@jT-#Ov_InkHs$PA1w>?ArElEwhn zkWoxRI!KetHkVjVC3M2T_VpL_Jq>t5myQh<_5CuhCM%ct8W0Me)%bVik|)j)P=%Q6 zOYibe09Gimy| z7Gd3ll@L})U=E_|DBrPOqNtm(Q3=F2;uo+(5M4)BE0AL8u9hCqsFa)+HGy>NtR*H- zMrEKQBg28(K*t1Wo^y<{dt?5eR3@kt*@)66>S(u-@EO@KyQaa%G$XBa6Ij=xE~M48 zJfMNdPFnz*VGzDW)?1_4boET>ZvAA%F}srrHm!We23=%Jv;ifWZG+k|_S*1buH+{f z3?NP`FL*L6H}`FX0Lt?o>>xkSKHzPXYP5+Ez;W;3- zYAAxoK^j}O;1nt42B;pzd!Tx;U^je}b@mx`I%hvSyrph6-_q4Hx(ry<7~H>n$2V7; z#rB;HI9nt~`hNWIevX^C2NLqM5A7A;qldw>T&^=hhqw@%o~|6VFBV&2;(Zk0PzEjZPM=TGX@e`Kc(dzc!$g!$}X)jnW>%Y#uK{u!?s z>7!Kjy?BJ5J8>D3q!Vn~Tuh=VfzI-kE$h^XofYk``cR4YaXon1DSWY?e7YY3zmTE9ZUF|AJ zUswXP_=pxEjC0wgotWRvf3j+QG~}Dd&bHo*#&pQ8-@N`8#_K%Pfp0UKeZMvf7_~Gn%>&jMM_hzl#=)cJ%&mD&jezN7*p+j>fL<~y@ z_am4jErXv^#FDJah8i*zNr-dm7g
h}nbI!7$fg`g%jGMHsI6;dmGA6LaTaO;a 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 NSDLFxS=xl2`X5i?+06g| literal 0 HcmV?d00001 diff --git a/example/guss/ios/Flutter/AppFrameworkInfo.plist b/example/guss/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..9367d48 --- /dev/null +++ b/example/guss/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 8.0 + + diff --git a/example/guss/ios/Flutter/Debug.xcconfig b/example/guss/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/example/guss/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/example/guss/ios/Flutter/Flutter.podspec b/example/guss/ios/Flutter/Flutter.podspec new file mode 100644 index 0000000..5ca3041 --- /dev/null +++ b/example/guss/ios/Flutter/Flutter.podspec @@ -0,0 +1,18 @@ +# +# NOTE: This podspec is NOT to be published. It is only used as a local source! +# + +Pod::Spec.new do |s| + s.name = 'Flutter' + s.version = '1.0.0' + s.summary = 'High-performance, high-fidelity mobile apps.' + s.description = <<-DESC +Flutter provides an easy and productive way to build and deploy high-performance mobile apps for Android and iOS. + DESC + s.homepage = 'https://flutter.io' + s.license = { :type => 'MIT' } + s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' } + s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s } + s.ios.deployment_target = '8.0' + s.vendored_frameworks = 'Flutter.framework' +end diff --git a/example/guss/ios/Flutter/Release.xcconfig b/example/guss/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/example/guss/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/example/guss/ios/Flutter/flutter_export_environment.sh b/example/guss/ios/Flutter/flutter_export_environment.sh new file mode 100755 index 0000000..f526c02 --- /dev/null +++ b/example/guss/ios/Flutter/flutter_export_environment.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# This is a generated file; do not edit or check into version control. +export "FLUTTER_ROOT=/Users/luigirosso/Projects/flutter" +export "FLUTTER_APPLICATION_PATH=/Users/luigirosso/Projects/Flare-Flutter/example/guss" +export "FLUTTER_TARGET=/Users/luigirosso/Projects/Flare-Flutter/example/guss/lib/main.dart" +export "FLUTTER_BUILD_DIR=build" +export "SYMROOT=${SOURCE_ROOT}/../build/ios" +export "FLUTTER_FRAMEWORK_DIR=/Users/luigirosso/Projects/flutter/bin/cache/artifacts/engine/ios" +export "FLUTTER_BUILD_NAME=1.0.0" +export "FLUTTER_BUILD_NUMBER=1" +export "TRACK_WIDGET_CREATION=true" diff --git a/example/guss/ios/Runner.xcodeproj/project.pbxproj b/example/guss/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..249fb12 --- /dev/null +++ b/example/guss/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,506 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; + 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; + 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; + 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; + 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, + 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, + 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B80C3931E831B6300D905FE /* App.framework */, + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEBA1CF902C7004384FC /* Flutter.framework */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + CF3B75C9A7D2FA2A4C99F110 /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, + 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 97C146F11CF9000F007C117D /* Supporting Files */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + ); + path = Runner; + sourceTree = ""; + }; + 97C146F11CF9000F007C117D /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 97C146F21CF9000F007C117D /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0910; + ORGANIZATIONNAME = "The Chromium Authors"; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */, + 97C146F31CF9000F007C117D /* main.m in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = S8QB4VV633; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.teddy; + PRODUCT_NAME = "$(TARGET_NAME)"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.teddy; + PRODUCT_NAME = "$(TARGET_NAME)"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.teddy; + PRODUCT_NAME = "$(TARGET_NAME)"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/example/guss/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/example/guss/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/example/guss/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/example/guss/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/guss/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..786d6aa --- /dev/null +++ b/example/guss/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/guss/ios/Runner.xcworkspace/contents.xcworkspacedata b/example/guss/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/example/guss/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/example/guss/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/example/guss/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..949b678 --- /dev/null +++ b/example/guss/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + BuildSystemType + Original + + diff --git a/example/guss/ios/Runner/AppDelegate.h b/example/guss/ios/Runner/AppDelegate.h new file mode 100644 index 0000000..36e21bb --- /dev/null +++ b/example/guss/ios/Runner/AppDelegate.h @@ -0,0 +1,6 @@ +#import +#import + +@interface AppDelegate : FlutterAppDelegate + +@end diff --git a/example/guss/ios/Runner/AppDelegate.m b/example/guss/ios/Runner/AppDelegate.m new file mode 100644 index 0000000..59a72e9 --- /dev/null +++ b/example/guss/ios/Runner/AppDelegate.m @@ -0,0 +1,13 @@ +#include "AppDelegate.h" +#include "GeneratedPluginRegistrant.h" + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application + didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + [GeneratedPluginRegistrant registerWithRegistry:self]; + // Override point for customization after application launch. + return [super application:application didFinishLaunchingWithOptions:launchOptions]; +} + +@end diff --git a/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..3d43d11e66f4de3da27ed045ca4fe38ad8b48094 GIT binary patch literal 11112 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 P-1+_A+?hGkL;m(J7kc&K literal 0 HcmV?d00001 diff --git a/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..28c6bf03016f6c994b70f38d1b7346e5831b531f GIT binary patch literal 564 zcmV-40?Yl0P)Px$?ny*JR5%f>l)FnDQ543{x%ZCiu33$Wg!pQFfT_}?5Q|_VSlIbLC`dpoMXL}9 zHfd9&47Mo(7D231gb+kjFxZHS4-m~7WurTH&doVX2KI5sU4v(sJ1@T9eCIKPjsqSr z)C01LsCxk=72-vXmX}CQD#BD;Cthymh&~=f$Q8nn0J<}ZrusBy4PvRNE}+1ceuj8u z0mW5k8fmgeLnTbWHGwfKA3@PdZxhn|PypR&^p?weGftrtCbjF#+zk_5BJh7;0`#Wr zgDpM_;Ax{jO##IrT`Oz;MvfwGfV$zD#c2xckpcXC6oou4ML~ezCc2EtnsQTB4tWNg z?4bkf;hG7IMfhgNI(FV5Gs4|*GyMTIY0$B=_*mso9Ityq$m^S>15>-?0(zQ<8Qy<_TjHE33(?_M8oaM zyc;NxzRVK@DL6RJnX%U^xW0Gpg(lXp(!uK1v0YgHjs^ZXSQ|m#lV7ip7{`C_J2TxPmfw%h$|%acrYHt)Re^PB%O&&=~a zhS(%I#+V>J-vjIib^<+s%ludY7y^C(P8nmqn9fp!i+?vr`bziDE=bx`%2W#Xyrj|i z!XQ4v1%L`m{7KT7q+LZNB^h8Ha2e=`Wp65^0;J00)_^G=au=8Yo;1b`CV&@#=jIBo zjN^JNVfYSs)+kDdGe7`1&8!?MQYKS?DuHZf3iogk_%#9E|5S zWeHrmAo>P;ejX7mwq#*}W25m^ZI+{(Z8fI?4jM_fffY0nok=+88^|*_DwcW>mR#e+ zX$F_KMdb6sRz!~7KkyN0G(3XQ+;z3X%PZ4gh;n-%62U<*VUKNv(D&Q->Na@Xb&u5Q3`3DGf+a8O5x7c#7+R+EAYl@R5us)CIw z7sT@_y~Ao@uL#&^LIh&QceqiT^+lb0YbFZt_SHOtWA%mgPEKVNvVgCsXy{5+zl*X8 zCJe)Q@y>wH^>l4;h1l^Y*9%-23TSmE>q5nI@?mt%n;Sj4Qq`Z+ib)a*a^cJc%E9^J zB;4s+K@rARbcBLT5P=@r;IVnBMKvT*)ew*R;&8vu%?Z&S>s?8?)3*YawM0P4!q$Kv zMmKh3lgE~&w&v%wVzH3Oe=jeNT=n@Y6J6TdHWTjXfX~-=1A1Bw`EW8rn}MqeI34nh zexFeA?&C3B2(E?0{drE@DA2pu(A#ElY&6el60Rn|Qpn-FkfQ8M93AfWIr)drgDFEU zghdWK)^71EWCP(@(=c4kfH1Y(4iugD4fve6;nSUpLT%!)MUHs1!zJYy4y||C+SwQ! z)KM&$7_tyM`sljP2fz6&Z;jxRn{Wup8IOUx8D4uh&(=O zx-7$a;U><*5L^!%xRlw)vAbh;sdlR||& ze}8_8%)c2Fwy=F&H|LM+p{pZB5DKTx>Y?F1N%BlZkXf!}JeGuMZk~LPi7{cidvUGB zAJ4LVeNV%XO>LTrklB#^-;8nb;}6l;1oW&WS=Mz*Az!4cqqQzbOSFq`$Q%PfD7srM zpKgP-D_0XPTRX*hAqeq0TDkJ;5HB1%$3Np)99#16c{ zJImlNL(npL!W|Gr_kxl1GVmF5&^$^YherS7+~q$p zt}{a=*RiD2Ikv6o=IM1kgc7zqpaZ;OB)P!1zz*i3{U()Dq#jG)egvK}@uFLa`oyWZ zf~=MV)|yJn`M^$N%ul5);JuQvaU1r2wt(}J_Qgyy`qWQI`hEeRX0uC@c1(dQ2}=U$ tNIIaX+dr)NRWXcxoR{>fqI{SF_dm1Ylv~=3YHI)h002ovPDHLkV1g(pWS;;4 literal 0 HcmV?d00001 diff --git a/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f091b6b0bca859a3f474b03065bef75ba58a9e4c GIT binary patch literal 1588 zcmV-42Fv-0P)C1SqPt}wig>|5Crh^=oyX$BK<}M8eLU3e2hGT;=G|!_SP)7zNI6fqUMB=)y zRAZ>eDe#*r`yDAVgB_R*LB*MAc)8(b{g{9McCXW!lq7r(btRoB9!8B-#AI6JMb~YFBEvdsV)`mEQO^&#eRKx@b&x- z5lZm*!WfD8oCLzfHGz#u7sT0^VLMI1MqGxF^v+`4YYnVYgk*=kU?HsSz{v({E3lb9 z>+xILjBN)t6`=g~IBOelGQ(O990@BfXf(DRI5I$qN$0Gkz-FSc$3a+2fX$AedL4u{ z4V+5Ong(9LiGcIKW?_352sR;LtDPmPJXI{YtT=O8=76o9;*n%_m|xo!i>7$IrZ-{l z-x3`7M}qzHsPV@$v#>H-TpjDh2UE$9g6sysUREDy_R(a)>=eHw-WAyfIN z*qb!_hW>G)Tu8nSw9yn#3wFMiLcfc4pY0ek1}8(NqkBR@t4{~oC>ryc-h_ByH(Cg5 z>ao-}771+xE3um9lWAY1FeQFxowa1(!J(;Jg*wrg!=6FdRX+t_<%z&d&?|Bn){>zm zZQj(aA_HeBY&OC^jj*)N`8fa^ePOU72VpInJoI1?`ty#lvlNzs(&MZX+R%2xS~5Kh zX*|AU4QE#~SgPzOXe9>tRj>hjU@c1k5Y_mW*Jp3fI;)1&g3j|zDgC+}2Q_v%YfDax z!?umcN^n}KYQ|a$Lr+51Nf9dkkYFSjZZjkma$0KOj+;aQ&721~t7QUKx61J3(P4P1 zstI~7-wOACnWP4=8oGOwz%vNDqD8w&Q`qcNGGrbbf&0s9L0De{4{mRS?o0MU+nR_! zrvshUau0G^DeMhM_v{5BuLjb#Hh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG z;P%vktHcXwTj~+IE(~px)3*MY77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC z(zYC$g|@+I+kY;dg_dE>scBf&bP1Nc@Hz<3R)V`=AGkc;8CXqdi=B4l2k|g;2%#m& z*jfX^%b!A8#bI!j9-0Fi0bOXl(-c^AB9|nQaE`*)Hw+o&jS9@7&Gov#HbD~#d{twV zXd^Tr^mWLfFh$@Dr$e;PBEz4(-2q1FF0}c;~B5sA}+Q>TOoP+t>wf)V9Iy=5ruQa;z)y zI9C9*oUga6=hxw6QasLPnee@3^Rr*M{CdaL5=R41nLs(AHk_=Y+A9$2&H(B7!_pURs&8aNw7?`&Z&xY_Ye z)~D5Bog^td-^QbUtkTirdyK^mTHAOuptDflut!#^lnKqU md>ggs(5nOWAqO?umG&QVYK#ibz}*4>0000U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~cTNYR~@Y9KepMPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF4|Rt=2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ literal 0 HcmV?d00001 diff --git a/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ef06e7edb86cdfe0d15b4b0d98334a86163658 GIT binary patch literal 1716 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 literal 0 HcmV?d00001 diff --git a/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f9ed8f5cee1c98386d13b17e89f719e83555b2 GIT binary patch literal 1895 zcmV-t2blPYP)FQtfgmafE#=YDCq`qUBt#QpG%*H6QHY765~R=q zZ6iudfM}q!Pz#~9JgOi8QJ|DSu?1-*(kSi1K4#~5?#|rh?sS)(-JQqX*}ciXJ56_H zdw=^s_srbAdqxlvGyrgGet#6T7_|j;95sL%MtM;q86vOxKM$f#puR)Bjv9Zvz9-di zXOTSsZkM83)E9PYBXC<$6(|>lNLVBb&&6y{NByFCp%6+^ALR@NCTse_wqvNmSWI-m z!$%KlHFH2omF!>#%1l3LTZg(s7eof$7*xB)ZQ0h?ejh?Ta9fDv59+u#MokW+1t8Zb zgHv%K(u9G^Lv`lh#f3<6!JVTL3(dCpxHbnbA;kKqQyd1~^Xe0VIaYBSWm6nsr;dFj z4;G-RyL?cYgsN1{L4ZFFNa;8)Rv0fM0C(~Tkit94 zz#~A)59?QjD&pAPSEQ)p8gP|DS{ng)j=2ux)_EzzJ773GmQ_Cic%3JJhC0t2cx>|v zJcVusIB!%F90{+}8hG3QU4KNeKmK%T>mN57NnCZ^56=0?&3@!j>a>B43pi{!u z7JyDj7`6d)qVp^R=%j>UIY6f+3`+qzIc!Y_=+uN^3BYV|o+$vGo-j-Wm<10%A=(Yk^beI{t%ld@yhKjq0iNjqN4XMGgQtbKubPM$JWBz}YA65k%dm*awtC^+f;a-x4+ddbH^7iDWGg&N0n#MW{kA|=8iMUiFYvMoDY@sPC#t$55gn6ykUTPAr`a@!(;np824>2xJthS z*ZdmT`g5-`BuJs`0LVhz+D9NNa3<=6m;cQLaF?tCv8)zcRSh66*Z|vXhG@$I%U~2l z?`Q zykI#*+rQ=z6Jm=Bui-SfpDYLA=|vzGE(dYm=OC8XM&MDo7ux4UF1~0J1+i%aCUpRe zt3L_uNyQ*cE(38Uy03H%I*)*Bh=Lb^Xj3?I^Hnbeq72(EOK^Y93CNp*uAA{5Lc=ky zx=~RKa4{iTm{_>_vSCm?$Ej=i6@=m%@VvAITnigVg{&@!7CDgs908761meDK5azA} z4?=NOH|PdvabgJ&fW2{Mo$Q0CcD8Qc84%{JPYt5EiG{MdLIAeX%T=D7NIP4%Hw}p9 zg)==!2Lbp#j{u_}hMiao9=!VSyx0gHbeCS`;q&vzeq|fs`y&^X-lso(Ls@-706qmA z7u*T5PMo_w3{se1t2`zWeO^hOvTsohG_;>J0wVqVe+n)AbQCx)yh9;w+J6?NF5Lmo zecS@ieAKL8%bVd@+-KT{yI|S}O>pYckUFs;ry9Ow$CD@ztz5K-*D$^{i(_1llhSh^ zEkL$}tsQt5>QA^;QgjgIfBDmcOgi5YDyu?t6vSnbp=1+@6D& z5MJ}B8q;bRlVoxasyhcUF1+)o`&3r0colr}QJ3hcSdLu;9;td>kf@Tcn<@9sIx&=m z;AD;SCh95=&p;$r{Xz3iWCO^MX83AGJ(yH&eTXgv|0=34#-&WAmw{)U7OU9!Wz^!7 zZ%jZFi@JR;>Mhi7S>V7wQ176|FdW2m?&`qa(ScO^CFPR80HucLHOTy%5s*HR0^8)i h0WYBP*#0Ks^FNSabJA*5${_#%002ovPDHLkV1oKhTl@e3 literal 0 HcmV?d00001 diff --git a/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..75b2d164a5a98e212cca15ea7bf2ab5de5108680 GIT binary patch literal 3831 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 literal 0 HcmV?d00001 diff --git a/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/example/guss/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..c4df70d39da7941ef3f6dcb7f06a192d8dcb308d GIT binary patch literal 1888 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 iW8Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/example/guss/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/example/guss/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/example/guss/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/example/guss/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/example/guss/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/example/guss/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/example/guss/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/example/guss/ios/Runner/Base.lproj/LaunchScreen.storyboard b/example/guss/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/example/guss/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/guss/ios/Runner/Base.lproj/Main.storyboard b/example/guss/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/example/guss/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/guss/ios/Runner/Info.plist b/example/guss/ios/Runner/Info.plist new file mode 100644 index 0000000..d1634c9 --- /dev/null +++ b/example/guss/ios/Runner/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + teddy + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/example/guss/ios/Runner/main.m b/example/guss/ios/Runner/main.m new file mode 100644 index 0000000..dff6597 --- /dev/null +++ b/example/guss/ios/Runner/main.m @@ -0,0 +1,9 @@ +#import +#import +#import "AppDelegate.h" + +int main(int argc, char* argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/example/guss/lib/character_controller.dart b/example/guss/lib/character_controller.dart new file mode 100644 index 0000000..36f112c --- /dev/null +++ b/example/guss/lib/character_controller.dart @@ -0,0 +1,152 @@ +import 'dart:math'; +import 'dart:ui'; + +import 'package:flare_flutter/flare.dart'; +import 'package:flare_dart/math/mat2d.dart'; +import 'package:flare_dart/math/vec2d.dart'; +import 'package:flare_flutter/flare_controls.dart'; + +class CharacterController extends FlareControls { + // Store a reference to our face control node (the "ctrl_look" node in Flare) + ActorNode _faceControl; + + // Storage for our matrix to get global Flutter coordinates into Flare world + // coordinates. + final Mat2D _globalToFlareWorld = Mat2D(); + + // Caret in Flutter global coordinates. + final Vec2D _caretGlobal = Vec2D(); + + // Caret in Flare world coordinates. + final Vec2D _caretWorld = Vec2D(); + + // Store the origin in both world and local transform spaces. + final Vec2D _faceOrigin = Vec2D(); + final Vec2D _faceOriginLocal = Vec2D(); + + // We store the idle animation as we always apply it first, before any other + // animation. + ActorAnimation _idleAnimation; + double _idleTime = 0; + + String _coverEyesIn, _coverEyesOut; + bool _hasFocus = false; + + // Project gaze forward by this many pixels. + final double projectGaze; + + CharacterController({this.projectGaze = 60.0}); + + @override + bool advance(FlutterActorArtboard artboard, double elapsed) { + _idleTime = (_idleTime + elapsed) % _idleAnimation.duration; + _idleAnimation.apply(_idleTime, artboard, 1.0); + super.advance(artboard, elapsed); + Vec2D targetTranslation; + if (_hasFocus) { + // Get caret in Flare world space. + Vec2D.transformMat2D(_caretWorld, _caretGlobal, _globalToFlareWorld); + + // To make it more interesting, we'll also add a sinusoidal + // vertical offset. + _caretWorld[1] += + sin(DateTime.now().millisecondsSinceEpoch / 300.0) * 70.0; + + // Compute direction vector. + Vec2D toCaret = Vec2D.subtract(Vec2D(), _caretWorld, _faceOrigin); + Vec2D.normalize(toCaret, toCaret); + Vec2D.scale(toCaret, toCaret, projectGaze); + + // Compute the transform that gets us in face "ctrl_face" space. + Mat2D toFaceTransform = Mat2D(); + if (Mat2D.invert(toFaceTransform, _faceControl.parent.worldTransform)) { + // Put toCaret in local space, note we're using a direction vector + // not a translation so transform without translation + Vec2D.transformMat2(toCaret, toCaret, toFaceTransform); + // Our final "ctrl_face" position is the original face translation + // plus this direction vector + targetTranslation = Vec2D.add(Vec2D(), toCaret, _faceOriginLocal); + } + } else { + targetTranslation = Vec2D.clone(_faceOriginLocal); + } + + // We could just set _faceControl.translation to targetTranslation, but we + // want to animate it smoothly to this target so we interpolate towards it + // by a factor of elapsed time in order to maintain speed regardless of + // frame rate. + Vec2D diff = + Vec2D.subtract(Vec2D(), targetTranslation, _faceControl.translation); + + Vec2D frameTranslation = Vec2D.add(Vec2D(), _faceControl.translation, + Vec2D.scale(diff, diff, min(1.0, elapsed * 5.0))); + _faceControl.translation = frameTranslation; + + return true; + } + + // Fetch references for the `ctrl_face` node and store a copy of its original + // translation. + @override + void initialize(FlutterActorArtboard artboard) { + super.initialize(artboard); + _idleAnimation = artboard.getAnimation("idle"); + _faceControl = artboard.getNode("ctrl_face"); + _faceControl ??= artboard.getNode("look"); + + _coverEyesIn = ["cover_eyes_in", "hands_up"].firstWhere( + (String name) => artboard.getAnimation(name) != null, + orElse: () => null); + _coverEyesOut = ["cover_eyes_out", "hands_down"].firstWhere( + (String name) => artboard.getAnimation(name) != null, + orElse: () => null); + + if (_faceControl != null) { + artboard.advance(0); + _faceControl.getWorldTranslation(_faceOrigin); + Vec2D.copy(_faceOriginLocal, _faceControl.translation); + } + } + + // Called by [FlareActor] when the view transform changes. Updates the matrix + // that transforms Global-Flutter-coordinates into Flare-World-coordinates. + @override + void setViewTransform(Mat2D viewTransform) { + Mat2D.invert(_globalToFlareWorld, viewTransform); + } + + // Transform the [Offset] into a [Vec2D]. If no caret is provided, lower the + // [_hasFocus] flag. + void lookAt(Offset caret) { + if (caret == null) { + _hasFocus = false; + return; + } + _caretGlobal[0] = caret.dx; + _caretGlobal[1] = caret.dy; + _hasFocus = true; + } + + bool _isCoveringEyes = false; + void coverEyes(bool cover) { + if (_isCoveringEyes == cover) { + return; + } + _isCoveringEyes = cover; + if (cover) { + play(_coverEyesIn); + } else { + play(_coverEyesOut); + } + } + + /// Play the success animation. + void rejoice() { + play("success"); + } + + /// Play the failure animation. + void lament() { + play("fail"); + } +} diff --git a/example/guss/lib/input_helper.dart b/example/guss/lib/input_helper.dart new file mode 100644 index 0000000..ed3a977 --- /dev/null +++ b/example/guss/lib/input_helper.dart @@ -0,0 +1,41 @@ +import 'package:flutter/rendering.dart'; + +// Adapted these helpful functions from: +// https://github.com/flutter/flutter/blob/master/packages/flutter/test/material/text_field_test.dart + +// Returns first render editable +RenderEditable findRenderEditable(RenderObject root) { + RenderEditable renderEditable; + void recursiveFinder(RenderObject child) { + if (child is RenderEditable) { + renderEditable = child; + return; + } + child.visitChildren(recursiveFinder); + } + + root.visitChildren(recursiveFinder); + return renderEditable; +} + +List globalize( + Iterable points, RenderBox box) { + return points.map((TextSelectionPoint point) { + return TextSelectionPoint( + box.localToGlobal(point.point), + point.direction, + ); + }).toList(); +} + +Offset getCaretPosition(RenderBox box) { + final RenderEditable renderEditable = findRenderEditable(box); + if (!renderEditable.hasFocus) { + return null; + } + final List endpoints = globalize( + renderEditable.getEndpointsForSelection(renderEditable.selection), + renderEditable, + ); + return endpoints[0].point + const Offset(0.0, -2.0); +} diff --git a/example/guss/lib/login_character.dart b/example/guss/lib/login_character.dart new file mode 100644 index 0000000..409890c --- /dev/null +++ b/example/guss/lib/login_character.dart @@ -0,0 +1,26 @@ +import 'package:flare_flutter/flare_actor.dart'; +import 'package:flare_flutter/flare_controller.dart'; +import 'package:flutter/material.dart'; + +class LoginCharacter extends StatelessWidget { + final FlareController controller; + + const LoginCharacter({Key key, this.controller}) : super(key: key); + + static double projectGaze = 200; + + @override + Widget build(BuildContext context) { + return Container( + height: 200, + padding: const EdgeInsets.only(left: 30.0, right: 30.0), + child: FlareActor( + "assets/Guss.flr", + shouldClip: false, + alignment: Alignment.topCenter, + fit: BoxFit.cover, + controller: controller, + ), + ); + } +} diff --git a/example/guss/lib/main.dart b/example/guss/lib/main.dart new file mode 100644 index 0000000..b8d4abf --- /dev/null +++ b/example/guss/lib/main.dart @@ -0,0 +1,150 @@ +import 'package:flare_flutter/flare_actor.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; + +import 'character_controller.dart'; +import 'login_character.dart'; +import 'signin_button.dart'; +import 'theme.dart'; +import 'tracking_text_input.dart'; + +void main() { + debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia; + runApp(MyApp()); +} + +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + primarySwatch: Colors.blue, + ), + home: const MyHomePage(title: 'Flutter Demo Home Page'), + ); + } +} + +class MyHomePage extends StatefulWidget { + final String title; + + const MyHomePage({Key key, this.title}) : super(key: key); + + @override + _MyHomePageState createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + final CharacterController _characterController = + CharacterController(projectGaze: LoginCharacter.projectGaze); + + String _password; + @override + Widget build(BuildContext context) { + EdgeInsets devicePadding = MediaQuery.of(context).padding; + + return Scaffold( + backgroundColor: const Color.fromRGBO(93, 142, 155, 1.0), + body: Container( + child: Stack( + children: [ + Positioned.fill( + child: Container( + decoration: BoxDecoration( + // Box decoration takes a gradient + gradient: LinearGradient( + // Where the linear gradient begins and ends + begin: Alignment.topRight, + end: Alignment.bottomLeft, + // Add one stop for each color. Stops should increase from 0 + // to 1 + stops: const [0.0, 1.0], + colors: background, + ), + ), + ), + ), + Positioned.fill( + child: SingleChildScrollView( + padding: EdgeInsets.only( + left: 20.0, right: 20.0, top: devicePadding.top + 50.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + LoginCharacter(controller: _characterController), + Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: const BorderRadius.all( + Radius.circular(cornerRadius))), + child: Padding( + padding: const EdgeInsets.all(30.0), + child: Form( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + TrackingTextInput( + label: "Email", + hint: "What's your email address?", + onCaretMoved: (Offset caret) { + _characterController.lookAt(caret); + }, + ), + TrackingTextInput( + label: "Password", + hint: "Try 'bears'...", + isObscured: true, + onCaretMoved: (Offset caret) { + _characterController.coverEyes(caret != null); + _characterController.lookAt(null); + }, + onTextChanged: (String value) { + _password = value; + }, + ), + SigninButton( + child: Text("Sign In", + style: TextStyle( + fontFamily: "RobotoMedium", + fontSize: 16, + color: Colors.white)), + onPressed: _login, + ) + ], + ), + ), + ), + ), + ], + ), + ), + ), + ], + ), + ), + ); + } + + Future checkCredentials() async { + return _password == "bears"; + } + + Future _login() async { + // Clear focus from text fields. + FocusScope.of(context).requestFocus(FocusNode()); + // Bring hands down + _characterController.coverEyes(false); + + // Check password + bool valid = await checkCredentials(); + if (valid) { + _characterController.rejoice(); + } else { + _characterController.lament(); + } + } +} diff --git a/example/guss/lib/signin_button.dart b/example/guss/lib/signin_button.dart new file mode 100644 index 0000000..6cf56d9 --- /dev/null +++ b/example/guss/lib/signin_button.dart @@ -0,0 +1,42 @@ +import 'package:flutter/material.dart'; +import 'package:teddy/theme.dart'; + +typedef PressCallback = void Function(); + +class SigninButton extends StatelessWidget { + final Widget child; + final Gradient gradient; + final double width; + final double height; + final PressCallback onPressed; + + const SigninButton({ + Key key, + @required this.child, + this.gradient, + this.width = double.infinity, + this.height = 50.0, + this.onPressed, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + width: width, + height: 50.0, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(cornerRadius), + gradient: const LinearGradient( + colors: buttonBackground, + )), + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: onPressed, + child: Center( + child: child, + )), + ), + ); + } +} diff --git a/example/guss/lib/theme.dart b/example/guss/lib/theme.dart new file mode 100644 index 0000000..443dfc8 --- /dev/null +++ b/example/guss/lib/theme.dart @@ -0,0 +1,13 @@ +import 'dart:ui'; + +const double cornerRadius = 5.0; + +const List background = [ + Color.fromRGBO(170, 207, 211, 1.0), + Color.fromRGBO(93, 142, 155, 1.0), +]; + +const List buttonBackground = [ + Color.fromRGBO(255, 92, 147, 1.0), + Color.fromRGBO(115, 82, 135, 1.0) +]; \ No newline at end of file diff --git a/example/guss/lib/tracking_text_input.dart b/example/guss/lib/tracking_text_input.dart new file mode 100644 index 0000000..7f7deb8 --- /dev/null +++ b/example/guss/lib/tracking_text_input.dart @@ -0,0 +1,89 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:teddy/input_helper.dart'; + +typedef void CaretMoved(Offset globalCaretPosition); +typedef void TextChanged(String text); + +// Helper widget to track caret position. +class TrackingTextInput extends StatefulWidget { + const TrackingTextInput( + {Key key, + this.onCaretMoved, + this.onTextChanged, + this.hint, + this.label, + this.isObscured = false}) + : super(key: key); + final CaretMoved onCaretMoved; + final TextChanged onTextChanged; + final String hint; + final String label; + final bool isObscured; + @override + _TrackingTextInputState createState() => _TrackingTextInputState(); +} + +class _TrackingTextInputState extends State { + final GlobalKey _fieldKey = GlobalKey(); + final TextEditingController _textController = TextEditingController(); + Timer _debounceTimer; + bool _hasFocus = false; + @override + void initState() { + _textController.addListener(() { + if (widget.onTextChanged != null) { + widget.onTextChanged(_textController.text); + } + debounceUpdateCaret(); + }); + super.initState(); + } + + void debounceUpdateCaret() { + // We debounce the listener as sometimes the caret position is updated + // after the listener this assures us we get an accurate caret position. + if (_debounceTimer?.isActive ?? false) _debounceTimer.cancel(); + _debounceTimer = Timer(const Duration(milliseconds: 15), updateCaret); + } + + void updateCaret() { + if (widget.onTextChanged != null) { + widget.onTextChanged(_textController.text); + } + if (_fieldKey.currentContext != null) { + // Find the render editable in the field. + final RenderObject fieldBox = _fieldKey.currentContext.findRenderObject(); + Offset caretPosition = + _hasFocus ? getCaretPosition(fieldBox as RenderBox) : null; + + if (widget.onCaretMoved != null) { + widget.onCaretMoved(caretPosition); + } + } + } + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(bottom: 20.0), + child: Focus( + onFocusChange: (focus) { + _hasFocus = focus; + debounceUpdateCaret(); + }, + child: TextFormField( + decoration: InputDecoration( + hintText: widget.hint, + labelText: widget.label, + ), + key: _fieldKey, + controller: _textController, + obscureText: widget.isObscured, + ), + ), + ); + } +} diff --git a/example/guss/macos/.gitignore b/example/guss/macos/.gitignore new file mode 100644 index 0000000..d2fd377 --- /dev/null +++ b/example/guss/macos/.gitignore @@ -0,0 +1,6 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/xcuserdata/ diff --git a/example/guss/macos/Flutter/Flutter-Debug.xcconfig b/example/guss/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 0000000..c2efd0b --- /dev/null +++ b/example/guss/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/example/guss/macos/Flutter/Flutter-Release.xcconfig b/example/guss/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 0000000..c2efd0b --- /dev/null +++ b/example/guss/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/example/guss/macos/Flutter/GeneratedPluginRegistrant.swift b/example/guss/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 0000000..cccf817 --- /dev/null +++ b/example/guss/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,10 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { +} diff --git a/example/guss/macos/Runner.xcodeproj/project.pbxproj b/example/guss/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..1a599e7 --- /dev/null +++ b/example/guss/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,596 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 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 */ + +/* Begin PBXContainerItemProxy section */ + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + D73912F222F3801D000D13A0 /* App.framework in Bundle Framework */, + 33D1A10522148B93006C7A3E /* FlutterMacOS.framework in Bundle Framework */, + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* Flutter Desktop Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Flutter Desktop Example.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 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 = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + D73912EF22F37F9E000D13A0 /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/ephemeral/App.framework; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D73912F022F37F9E000D13A0 /* App.framework in Frameworks */, + 33D1A10422148B71006C7A3E /* FlutterMacOS.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* Flutter Desktop Example.app */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + D73912EF22F37F9E000D13A0 /* App.framework */, + 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* Flutter Desktop Example.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 0930; + ORGANIZATIONNAME = "Google LLC"; + TargetAttributes = { + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 0920; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh\ntouch Flutter/ephemeral/tripwire\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter/ephemeral", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 4.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter/ephemeral", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter/ephemeral", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/example/guss/macos/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/example/guss/macos/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..764c74b --- /dev/null +++ b/example/guss/macos/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/example/guss/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/guss/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/example/guss/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/example/guss/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/guss/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..57774f0 --- /dev/null +++ b/example/guss/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/guss/macos/Runner.xcworkspace/contents.xcworkspacedata b/example/guss/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/example/guss/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/example/guss/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/guss/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/example/guss/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/example/guss/macos/Runner/AppDelegate.swift b/example/guss/macos/Runner/AppDelegate.swift new file mode 100644 index 0000000..d53ef64 --- /dev/null +++ b/example/guss/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..a2ec33f --- /dev/null +++ b/example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..3c4935a7ca84f0976aca34b7f2895d65fb94d1ea GIT binary patch literal 46993 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 literal 0 HcmV?d00001 diff --git a/example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..ed4cc16421680a50164ba74381b4b35ceaa0ccfc GIT binary patch literal 3276 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 N;OXk;vd$@?2>?>Ex^Vyi literal 0 HcmV?d00001 diff --git a/example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png new file mode 100644 index 0000000000000000000000000000000000000000..bcbf36df2f2aaaa0a63c7dabc94e600184229d0d GIT binary patch literal 5933 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 f$KZHO*s&vt|9^w-6P?|#0pRK8NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?!xdN1Q+aGJ{c&& zS>O>_%)r1c48n{Iv*t(u1=&kHeO=ifbFy+6aSK)V_AxLppYn8Z42d|rc6w}vOsL55 z`t&mC&y2@JTEyg!eDiFX^k#CC!jq%>erB=yHqUP0XcDOTw6ko}L zX;EmMrq(fKk*eygEuA616;0)>@A{TK|55PV@70 z$OfzS*(VJxQev3J?yY?O=ul(v`fp}?u9z`JK3ugibK>)DyCwImZOF4d{xK%%Ks1*} zv$oa)9anR%lXIBUqYnhLmT>VOzHfNP?ZwJNZ!5$s9M08RynIvaXw>@G^T9@r9^KH1 zVy??F&uuk)bH9Y4pQY!hP58i_H6 znl-NcuCpLV6ZWU;4C zu@9exF&OZi`Bovq_m%T+WhU2kvkz@^_LpycBvqm3bMpLw8X-Or5sL>0AKE1$(k_L=_Zc=CUq#=x1-QZf)G7nHu@fmsQ1eN_N3+nTEz`4HI4Z6uVlE zJH+X&det8JU?tO?upcM4Z=cV!JV;yF>FfL5Q$M|W_2Z!P`S=}Wzp|_1^#d%e?_H`> zV@%vA$+bFVqhw9`U;TfP|5|PD{||OiYdor8P*i??|NJcb%kzT_73*7WE?Ua5hAnR2 z=7WE=PhTlJ#ZeRznjTUb;`E(wkMZrj4e|Hilz-mK>9cZHQY**5TUPw~u}k;u73KI}xAx!0m-)GVia|x^d3p~s_9gh83jA&Ra<8rM%`>U3x69t&NzbwWY}7Ar?)FK#IZ0z|d0H0EkRO w3{9;}4Xg|ebq&m|3=9_N6z8I7$jwj5OsmAL;bP(Gi$Dzwp00i_>zopr02+f8CIA2c literal 0 HcmV?d00001 diff --git a/example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/example/guss/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png new file mode 100644 index 0000000000000000000000000000000000000000..e71a726136a47ed24125c7efc79d68a4a01961b4 GIT binary patch literal 14800 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/guss/macos/Runner/Configs/AppInfo.xcconfig b/example/guss/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..b2ee273 --- /dev/null +++ b/example/guss/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = Flutter Desktop Example + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterDesktopExample + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2019 com.example. All rights reserved. diff --git a/example/guss/macos/Runner/Configs/Debug.xcconfig b/example/guss/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 0000000..36b0fd9 --- /dev/null +++ b/example/guss/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/example/guss/macos/Runner/Configs/Release.xcconfig b/example/guss/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 0000000..dff4f49 --- /dev/null +++ b/example/guss/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/example/guss/macos/Runner/Configs/Warnings.xcconfig b/example/guss/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 0000000..42bcbf4 --- /dev/null +++ b/example/guss/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/example/guss/macos/Runner/DebugProfile.entitlements b/example/guss/macos/Runner/DebugProfile.entitlements new file mode 100644 index 0000000..dddb8a3 --- /dev/null +++ b/example/guss/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/example/guss/macos/Runner/Info.plist b/example/guss/macos/Runner/Info.plist new file mode 100644 index 0000000..4789daa --- /dev/null +++ b/example/guss/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/example/guss/macos/Runner/MainFlutterWindow.swift b/example/guss/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 0000000..2722837 --- /dev/null +++ b/example/guss/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController.init() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/example/guss/macos/Runner/Release.entitlements b/example/guss/macos/Runner/Release.entitlements new file mode 100644 index 0000000..852fa1a --- /dev/null +++ b/example/guss/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/example/guss/pubspec.yaml b/example/guss/pubspec.yaml new file mode 100644 index 0000000..d0d35a9 --- /dev/null +++ b/example/guss/pubspec.yaml @@ -0,0 +1,30 @@ +name: teddy +description: A new Flutter project. + +version: 1.0.0+1 + +environment: + sdk: ">=2.1.0 <3.0.0" + +dependencies: + flutter: + sdk: flutter + flare_flutter: + path: ../../flare_flutter + + cupertino_icons: ^0.1.2 + +dev_dependencies: + flutter_test: + sdk: flutter + + +flutter: + + uses-material-design: true + fonts: + - family: RobotoMedium + fonts: + - asset: assets/fonts/Roboto-Medium.ttf + assets: + - assets/ \ No newline at end of file diff --git a/example/guss/test/widget_test.dart b/example/guss/test/widget_test.dart new file mode 100644 index 0000000..4d0871c --- /dev/null +++ b/example/guss/test/widget_test.dart @@ -0,0 +1,30 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility that Flutter provides. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:teddy/main.dart'; + +void main() { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(MyApp()); + + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); + }); +} diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index 486e378..ed76067 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [2.3.0] - 2019-12-05 17:25:03 + +- Support for layer effects including masking, drop shadows, inner shadows, and blurs. + ## [2.2.5] - 2019-11-20 16:36:24 - Fixed gradient transformations for shapes with transformAffectsStroke set to true. diff --git a/flare_dart/lib/actor.dart b/flare_dart/lib/actor.dart index 98ca45a..161e003 100644 --- a/flare_dart/lib/actor.dart +++ b/flare_dart/lib/actor.dart @@ -2,10 +2,14 @@ import 'dart:async'; import "dart:convert"; import "dart:typed_data"; +import 'package:flare_dart/actor_layer_effect_renderer.dart'; + import "actor_artboard.dart"; import "actor_color.dart"; +import 'actor_drop_shadow.dart'; import "actor_ellipse.dart"; import "actor_image.dart"; +import 'actor_inner_shadow.dart'; import "actor_path.dart"; import "actor_polygon.dart"; import "actor_rectangle.dart"; @@ -101,6 +105,12 @@ abstract class Actor { RadialGradientStroke makeRadialStroke(); + ActorDropShadow makeDropShadow(); + + ActorInnerShadow makeInnerShadow(); + + ActorLayerEffectRenderer makeLayerEffectRenderer(); + Future loadAtlases(List rawAtlases); Future load(ByteData data, dynamic context) async { @@ -144,6 +154,18 @@ abstract class Actor { } } + // Resolve now. + for (final ActorArtboard artboard in _artboards) { + artboard.resolveHierarchy(); + } + for (final ActorArtboard artboard in _artboards) { + artboard.completeResolveHierarchy(); + } + + for (final ActorArtboard artboard in _artboards) { + artboard.sortDependencies(); + } + return success; } diff --git a/flare_dart/lib/actor_artboard.dart b/flare_dart/lib/actor_artboard.dart index 1e5aab0..0ccf2d6 100644 --- a/flare_dart/lib/actor_artboard.dart +++ b/flare_dart/lib/actor_artboard.dart @@ -1,7 +1,10 @@ import "dart:math"; import "dart:typed_data"; +import 'package:flare_dart/actor_layer_effect_renderer.dart'; + import "actor.dart"; +import 'actor_blur.dart'; import "actor_bone.dart"; import "actor_color.dart"; import "actor_component.dart"; @@ -13,6 +16,7 @@ import "actor_flags.dart"; import "actor_ik_constraint.dart"; import "actor_image.dart"; import "actor_jelly_bone.dart"; +import 'actor_mask.dart'; import "actor_node.dart"; import "actor_node_solo.dart"; import "actor_path.dart"; @@ -21,6 +25,7 @@ import "actor_rectangle.dart"; import "actor_root_bone.dart"; import "actor_rotation_constraint.dart"; import "actor_scale_constraint.dart"; +import 'actor_shadow.dart'; import "actor_shape.dart"; import "actor_skin.dart"; import "actor_star.dart"; @@ -43,7 +48,8 @@ class ActorArtboard { ActorNode _root; List _components; List _nodes; - List _drawableNodes; + final List _drawableNodes = []; + final List _effectRenderers = []; List _animations; List _dependencyOrder; Actor _actor; @@ -68,19 +74,15 @@ class ActorArtboard { set overrideColor(Float32List value) { _overrideColor = value; - if (_drawableNodes != null) { - for (final ActorDrawable drawable in _drawableNodes) { - addDirt(drawable, DirtyFlags.paintDirty, true); - } + for (final ActorDrawable drawable in _drawableNodes) { + addDirt(drawable, DirtyFlags.paintDirty, true); } } set modulateOpacity(double value) { - if (_drawableNodes != null) { - _modulateOpacity = value; - for (final ActorDrawable drawable in _drawableNodes) { - addDirt(drawable, DirtyFlags.paintDirty, true); - } + _modulateOpacity = value; + for (final ActorDrawable drawable in _drawableNodes) { + addDirt(drawable, DirtyFlags.paintDirty, true); } } @@ -218,14 +220,9 @@ class ActorArtboard { { _nodes = List(_nodeCount); } - if (_drawableNodeCount != 0) { - _drawableNodes = List(_drawableNodeCount); - } if (artboard.componentCount != 0) { int idx = 0; - int drwIdx = 0; - int ndIdx = 0; for (final ActorComponent component in artboard.components) { if (component == null) { @@ -234,39 +231,79 @@ class ActorArtboard { } ActorComponent instanceComponent = component.makeInstance(this); _components[idx++] = instanceComponent; - if (instanceComponent is ActorNode) { - _nodes[ndIdx++] = instanceComponent; - } + } + } + // Copy dependency order. + _dependencyOrder = List(artboard._dependencyOrder.length); + for (final ActorComponent component in artboard._dependencyOrder) { + final ActorComponent localComponent = _components[component.idx]; + _dependencyOrder[component.graphOrder] = localComponent; + localComponent.dirtMask = 255; + } + + _flags |= ActorFlags.isDirty; + _root = _components[0] as ActorNode; + resolveHierarchy(); + completeResolveHierarchy(); + } + + void resolveHierarchy() { + // Resolve nodes. + int anIdx = 0; + + _drawableNodes.clear(); + int componentCount = this.componentCount; + for (int i = 1; i < componentCount; i++) { + ActorComponent c = _components[i]; + + /// Nodes can be null if we read from a file version that contained + /// nodes that we don't interpret in this runtime. + if (c != null) { + c.resolveComponentIndices(_components); + } - if (instanceComponent is ActorDrawable) { - _drawableNodes[drwIdx++] = instanceComponent; + if (c is ActorNode) { + ActorNode an = c; + if (an != null) { + _nodes[anIdx++] = an; } } } + } - _root = _components[0] as ActorNode; + void completeResolveHierarchy() { + int componentCount = this.componentCount; - for (final ActorComponent component in _components) { - if (_root == component || component == null) { - continue; + // Complete resolve. + for (int i = 1; i < componentCount; i++) { + ActorComponent c = components[i]; + if (c != null) { + c.completeResolve(); } - component.resolveComponentIndices(_components); } - for (final ActorComponent component in _components) { - if (_root == component || component == null) { - continue; + // Build lists. Important to do this after all components have resolved as + // layers won't be known before this. + for (int i = 1; i < componentCount; i++) { + ActorComponent c = components[i]; + if (c is ActorDrawable && c.layerEffectRenderer == null) { + _drawableNodes.add(c); + } + if (c is ActorLayerEffectRenderer && c.layerEffectRenderer == null) { + _effectRenderers.add(c); } - component.completeResolve(); } - sortDependencies(); + sortDrawOrder(); + } - if (_drawableNodes != null) { - _drawableNodes.sort((a, b) => a.drawOrder.compareTo(b.drawOrder)); - for (int i = 0; i < _drawableNodes.length; i++) { - _drawableNodes[i].drawIndex = i; - } + void sortDrawOrder() { + _drawableNodes.sort((a, b) => a.drawOrder.compareTo(b.drawOrder)); + for (int i = 0; i < _drawableNodes.length; i++) { + _drawableNodes[i].drawIndex = i; + } + for (final ActorLayerEffectRenderer layer in _effectRenderers) { + layer.sortDrawables(); } } @@ -298,13 +335,7 @@ class ActorArtboard { if ((_flags & ActorFlags.isDrawOrderDirty) != 0) { _flags &= ~ActorFlags.isDrawOrderDirty; - - if (_drawableNodes != null) { - _drawableNodes.sort((a, b) => a.drawOrder.compareTo(b.drawOrder)); - for (int i = 0; i < _drawableNodes.length; i++) { - _drawableNodes[i].drawIndex = i; - } - } + sortDrawOrder(); } } @@ -517,9 +548,32 @@ class ActorArtboard { case BlockTypes.actorPolygon: component = ActorPolygon.read(this, nodeBlock, actor.makePolygon()); break; + case BlockTypes.actorSkin: component = ActorComponent.read(this, nodeBlock, ActorSkin()); break; + + case BlockTypes.actorLayerEffectRenderer: + component = ActorDrawable.read( + this, nodeBlock, actor.makeLayerEffectRenderer()); + break; + + case BlockTypes.actorMask: + component = ActorMask.read(this, nodeBlock, ActorMask()); + break; + + case BlockTypes.actorBlur: + component = ActorBlur.read(this, nodeBlock, null); + break; + + case BlockTypes.actorDropShadow: + component = ActorShadow.read(this, nodeBlock, actor.makeDropShadow()); + break; + + case BlockTypes.actorInnerShadow: + component = + ActorShadow.read(this, nodeBlock, actor.makeInnerShadow()); + break; } if (component is ActorDrawable) { _drawableNodeCount++; @@ -534,49 +588,15 @@ class ActorArtboard { } } - _drawableNodes = List(_drawableNodeCount); _nodes = List(_nodeCount); _nodes[0] = _root; - - // Resolve nodes. - int drwIdx = 0; - int anIdx = 0; - - for (int i = 1; i <= componentCount; i++) { - ActorComponent c = _components[i]; - - /// Nodes can be null if we read from a file version that contained - /// nodes that we don't interpret in this runtime. - if (c != null) { - c.resolveComponentIndices(_components); - } - - if (c is ActorDrawable) { - _drawableNodes[drwIdx++] = c; - } - - if (c is ActorNode) { - ActorNode an = c; - if (an != null) { - _nodes[anIdx++] = an; - } - } - } - - for (int i = 1; i <= componentCount; i++) { - ActorComponent c = components[i]; - if (c != null) { - c.completeResolve(); - } - } - - sortDependencies(); } void initializeGraphics() { - if (_drawableNodes != null) { - for (final ActorDrawable drawable in _drawableNodes) { - drawable.initializeGraphics(); + // Iterate components as some drawables may end up in other layers. + for (final ActorComponent component in _components) { + if (component is ActorDrawable) { + component.initializeGraphics(); } } } diff --git a/flare_dart/lib/actor_blur.dart b/flare_dart/lib/actor_blur.dart new file mode 100644 index 0000000..e4bb91c --- /dev/null +++ b/flare_dart/lib/actor_blur.dart @@ -0,0 +1,47 @@ +import 'actor_artboard.dart'; +import 'actor_component.dart'; +import 'actor_layer_effect.dart'; +import 'stream_reader.dart'; + +class ActorBlur extends ActorLayerEffect { + double blurX; + double blurY; + + static ActorBlur read( + ActorArtboard artboard, StreamReader reader, ActorBlur component) { + component ??= ActorBlur(); + ActorLayerEffect.read(artboard, reader, component); + component.blurX = reader.readFloat32("blurX"); + component.blurY = reader.readFloat32("blurY"); + + return component; + } + + void copyBlur(ActorBlur from, ActorArtboard resetArtboard) { + copyLayerEffect(from, resetArtboard); + blurX = from.blurX; + blurY = from.blurY; + } + + @override + void completeResolve() { + // intentionally empty, no logic to complete. + } + + @override + ActorComponent makeInstance(ActorArtboard resetArtboard) { + ActorBlur instanceNode = ActorBlur(); + instanceNode.copyBlur(this, resetArtboard); + return instanceNode; + } + + @override + void onDirty(int dirt) { + // intentionally empty + } + + @override + void update(int dirt) { + // intentionally empty + } +} diff --git a/flare_dart/lib/actor_bone.dart b/flare_dart/lib/actor_bone.dart index 9895bfa..3992fe5 100644 --- a/flare_dart/lib/actor_bone.dart +++ b/flare_dart/lib/actor_bone.dart @@ -1,7 +1,6 @@ import "actor_artboard.dart"; import "actor_bone_base.dart"; import "actor_component.dart"; -import "actor_node.dart"; import "jelly_component.dart"; import "stream_reader.dart"; @@ -26,9 +25,9 @@ class ActorBone extends ActorBoneBase { if (children == null) { return; } - for (final ActorNode node in children) { - if (node is ActorBone) { - _firstBone = node; + for (final ActorComponent component in children) { + if (component is ActorBone) { + _firstBone = component; return; } } diff --git a/flare_dart/lib/actor_bone_base.dart b/flare_dart/lib/actor_bone_base.dart index e12fb25..dab4879 100644 --- a/flare_dart/lib/actor_bone_base.dart +++ b/flare_dart/lib/actor_bone_base.dart @@ -1,4 +1,5 @@ import "actor_artboard.dart"; +import 'actor_component.dart'; import "actor_node.dart"; import "math/mat2d.dart"; import "math/vec2d.dart"; @@ -19,9 +20,9 @@ class ActorBoneBase extends ActorNode { if (children == null) { return; } - for (final ActorNode node in children) { - if (node is ActorBoneBase) { - node.x = value; + for (final ActorComponent component in children) { + if (component is ActorBoneBase) { + component.x = value; } } } diff --git a/flare_dart/lib/actor_component.dart b/flare_dart/lib/actor_component.dart index ae6543f..12ea89d 100644 --- a/flare_dart/lib/actor_component.dart +++ b/flare_dart/lib/actor_component.dart @@ -4,7 +4,19 @@ import "stream_reader.dart"; abstract class ActorComponent { String _name = "Unnamed"; - ActorNode parent; + ActorNode _parent; + ActorNode get parent => _parent; + set parent(ActorNode value) { + if (_parent == value) { + return; + } + ActorNode from = _parent; + _parent = value; + onParentChanged(from, value); + } + + void onParentChanged(ActorNode from, ActorNode to) {} + ActorArtboard artboard; int _parentIdx = 0; int idx = 0; @@ -22,11 +34,7 @@ abstract class ActorComponent { void resolveComponentIndices(List components) { ActorNode node = components[_parentIdx] as ActorNode; if (node != null) { - if (this is ActorNode) { - node.addChild(this as ActorNode); - } else { - parent = node; - } + node.addChild(this); artboard.addDependency(this, node); } } diff --git a/flare_dart/lib/actor_drawable.dart b/flare_dart/lib/actor_drawable.dart index dc18de1..719f391 100644 --- a/flare_dart/lib/actor_drawable.dart +++ b/flare_dart/lib/actor_drawable.dart @@ -1,4 +1,5 @@ import 'package:flare_dart/actor_artboard.dart'; +import 'package:flare_dart/actor_layer_effect_renderer.dart'; import 'package:flare_dart/actor_shape.dart'; import 'package:flare_dart/stream_reader.dart'; @@ -72,9 +73,9 @@ abstract class ActorDrawable extends ActorNode { for (final List clips in clippers) { List shapes = []; for (final ActorClip clip in clips) { - clip.node.all((ActorNode node) { - if (node is ActorShape) { - shapes.add(ClipShape(node, clip.intersect)); + clip.node.all((component) { + if (component is ActorShape) { + shapes.add(ClipShape(component, clip.intersect)); } return true; }); @@ -84,4 +85,15 @@ abstract class ActorDrawable extends ActorNode { } } } + + ActorLayerEffectRenderer _layerEffectRenderer; + ActorLayerEffectRenderer get layerEffectRenderer => _layerEffectRenderer; + set layerEffectRenderer(ActorLayerEffectRenderer value) { + if (_layerEffectRenderer == value) { + return; + } + _layerEffectRenderer?.removeDrawable(this); + _layerEffectRenderer = value; + _layerEffectRenderer?.addDrawable(this); + } } diff --git a/flare_dart/lib/actor_drop_shadow.dart b/flare_dart/lib/actor_drop_shadow.dart new file mode 100644 index 0000000..98dd4d9 --- /dev/null +++ b/flare_dart/lib/actor_drop_shadow.dart @@ -0,0 +1,17 @@ +import 'actor_artboard.dart'; +import 'actor_component.dart'; +import 'actor_shadow.dart'; + +class ActorDropShadow extends ActorShadow { + @override + int get blendModeId => 0; + @override + set blendModeId(int value) {} + + @override + ActorComponent makeInstance(ActorArtboard resetArtboard) { + ActorDropShadow instanceShape = resetArtboard.actor.makeDropShadow(); + instanceShape.copyShadow(this, resetArtboard); + return instanceShape; + } +} diff --git a/flare_dart/lib/actor_ik_constraint.dart b/flare_dart/lib/actor_ik_constraint.dart index f740ef1..b3cf6f5 100644 --- a/flare_dart/lib/actor_ik_constraint.dart +++ b/flare_dart/lib/actor_ik_constraint.dart @@ -121,7 +121,7 @@ class ActorIKConstraint extends ActorTargetedConstraint { } ActorBone bone = fk.bone; - for (final ActorNode node in bone.children) { + for (final node in bone.children) { BoneChain item = _fkChain.firstWhere( (chainItem) => chainItem.bone == node, orElse: () => null); diff --git a/flare_dart/lib/actor_inner_shadow.dart b/flare_dart/lib/actor_inner_shadow.dart new file mode 100644 index 0000000..c58a710 --- /dev/null +++ b/flare_dart/lib/actor_inner_shadow.dart @@ -0,0 +1,17 @@ +import 'actor_artboard.dart'; +import 'actor_component.dart'; +import 'actor_shadow.dart'; + +class ActorInnerShadow extends ActorShadow { + @override + int get blendModeId => 0; + @override + set blendModeId(int value) {} + + @override + ActorComponent makeInstance(ActorArtboard resetArtboard) { + ActorInnerShadow instanceShape = resetArtboard.actor.makeInnerShadow(); + instanceShape.copyShadow(this, resetArtboard); + return instanceShape; + } +} diff --git a/flare_dart/lib/actor_layer_effect.dart b/flare_dart/lib/actor_layer_effect.dart new file mode 100644 index 0000000..037c3cf --- /dev/null +++ b/flare_dart/lib/actor_layer_effect.dart @@ -0,0 +1,22 @@ +import 'package:flare_dart/actor_artboard.dart'; + +import 'actor_component.dart'; +import 'stream_reader.dart'; + +abstract class ActorLayerEffect extends ActorComponent { + bool _isActive; + bool get isActive => _isActive; + + static ActorLayerEffect read( + ActorArtboard artboard, StreamReader reader, ActorLayerEffect component) { + ActorComponent.read(artboard, reader, component); + component._isActive = reader.readBool("isActive"); + + return component; + } + + void copyLayerEffect(ActorLayerEffect from, ActorArtboard resetArtboard) { + copyComponent(from, resetArtboard); + _isActive = from._isActive; + } +} diff --git a/flare_dart/lib/actor_layer_effect_renderer.dart b/flare_dart/lib/actor_layer_effect_renderer.dart new file mode 100644 index 0000000..e7e0bf3 --- /dev/null +++ b/flare_dart/lib/actor_layer_effect_renderer.dart @@ -0,0 +1,137 @@ +import 'package:flare_dart/actor_drop_shadow.dart'; +import 'package:flare_dart/actor_node.dart'; +import 'package:flare_dart/math/aabb.dart'; + +import 'actor_artboard.dart'; +import 'actor_blur.dart'; +import 'actor_drawable.dart'; +import 'actor_inner_shadow.dart'; +import 'actor_mask.dart'; + +class ActorLayerEffectRendererMask { + final ActorMask mask; + final List drawables = []; + ActorLayerEffectRendererMask(this.mask); +} + +class ActorLayerEffectRenderer extends ActorDrawable { + final List _drawables = []; + List get drawables => _drawables; + final List _renderMasks = []; + List get renderMasks => _renderMasks; + ActorBlur _blur; + List _dropShadows; + List _innerShadows; + + ActorBlur get blur => _blur; + List get dropShadows => _dropShadows; + List get innerShadows => _innerShadows; + + bool addDrawable(ActorDrawable drawable) { + if (_drawables.contains(drawable)) { + return false; + } + _drawables.add(drawable); + return true; + } + + bool removeDrawable(ActorDrawable drawable) => _drawables.remove(drawable); + + void sortDrawables() { + _drawables + .sort((ActorDrawable a, ActorDrawable b) => a.drawOrder - b.drawOrder); + } + + @override + void onParentChanged(ActorNode from, ActorNode to) { + super.onParentChanged(from, to); + from?.findLayerEffect(); + to?.findLayerEffect(); + findEffects(); + } + + @override + int get blendModeId { + return 0; + } + + @override + set blendModeId(int value) {} + + @override + AABB computeAABB() { + return artboard.artboardAABB(); + } + + @override + ActorLayerEffectRenderer makeInstance(ActorArtboard resetArtboard) { + ActorLayerEffectRenderer instanceNode = + resetArtboard.actor.makeLayerEffectRenderer(); + instanceNode.copyDrawable(this, resetArtboard); + return instanceNode; + } + + void findEffects() { + var blurs = parent.children.whereType(); + _blur = blurs.isNotEmpty ? blurs.first : null; + _dropShadows = + parent.children.whereType().toList(growable: false); + _innerShadows = + parent.children.whereType().toList(growable: false); + } + + @override + void completeResolve() { + super.completeResolve(); + + // When we complete resolve we find all the children and mark their layers. + // Alternative way to do this is to have each drawable check for parent + // layers when the parent changes. That would be more effective if nodes + // were to get moved around at runtime. + parent?.all((node) { + if (node is ActorDrawable && node != this) { + node.layerEffectRenderer = this; + } + return true; + }); + sortDrawables(); + computeMasks(); + findEffects(); + } + + void computeMasks() { + _renderMasks.clear(); + var maskSearch = parent; + var masks = []; + + while (maskSearch != null) { + masks += + maskSearch.children.whereType().toList(growable: false); + maskSearch = maskSearch.parent; + } + + for (final mask in masks) { + var renderMask = ActorLayerEffectRendererMask(mask); + mask.source?.all((child) { + if (child is ActorDrawable) { + if (child.layerEffectRenderer != null && + child.layerEffectRenderer != this) { + // Layer effect is direct discendant of this layer, so we want to + // draw it with the other drawables in this layer. + renderMask.drawables.add(child.layerEffectRenderer); + // Don't iterate if child has further layer effect + return false; + } else { + renderMask.drawables.add(child); + } + } + + return true; + }); + + if (renderMask.drawables.isNotEmpty) { + _renderMasks.add(renderMask); + } + } + } +} diff --git a/flare_dart/lib/actor_mask.dart b/flare_dart/lib/actor_mask.dart new file mode 100644 index 0000000..28099a1 --- /dev/null +++ b/flare_dart/lib/actor_mask.dart @@ -0,0 +1,75 @@ +import 'dart:collection'; + +import 'actor_artboard.dart'; +import 'actor_component.dart'; +import 'actor_layer_effect.dart'; +import 'actor_node.dart'; +import 'stream_reader.dart'; + +enum MaskType { alpha, invertedAlpha, luminance, invertedLuminance } + +HashMap maskTypeLookup = HashMap.fromIterables([ + 0, + 1, + 2, + 3 +], [ + MaskType.alpha, + MaskType.invertedAlpha, + MaskType.luminance, + MaskType.invertedLuminance +]); + +class ActorMask extends ActorLayerEffect { + ActorNode _source; + int _sourceIdx; + MaskType _maskType; + ActorNode get source => _source; + MaskType get maskType => _maskType; + + static ActorMask read( + ActorArtboard artboard, StreamReader reader, ActorMask component) { + component ??= ActorMask(); + ActorLayerEffect.read(artboard, reader, component); + component._sourceIdx = reader.readId("source"); + component._maskType = + maskTypeLookup[reader.readUint8("maskType")] ?? MaskType.alpha; + + return component; + } + + void copyMask(ActorMask from, ActorArtboard resetArtboard) { + copyLayerEffect(from, resetArtboard); + _sourceIdx = from._sourceIdx; + _maskType = from._maskType; + } + + @override + void resolveComponentIndices(List components) { + super.resolveComponentIndices(components); + + _source = components[_sourceIdx] as ActorNode; + } + + @override + void completeResolve() { + // intentionally empty, no logic to complete. + } + + @override + ActorComponent makeInstance(ActorArtboard resetArtboard) { + ActorMask instanceNode = ActorMask(); + instanceNode.copyMask(this, resetArtboard); + return instanceNode; + } + + @override + void onDirty(int dirt) { + // intentionally empty + } + + @override + void update(int dirt) { + // intentionally empty + } +} diff --git a/flare_dart/lib/actor_node.dart b/flare_dart/lib/actor_node.dart index edd1b23..5153f67 100644 --- a/flare_dart/lib/actor_node.dart +++ b/flare_dart/lib/actor_node.dart @@ -1,3 +1,5 @@ +import 'package:flare_dart/actor_layer_effect_renderer.dart'; + import "actor_artboard.dart"; import "actor_component.dart"; import "actor_constraint.dart"; @@ -6,7 +8,7 @@ import "math/mat2d.dart"; import "math/vec2d.dart"; import "stream_reader.dart"; -typedef bool NodeWalkCallback(ActorNode node); +typedef bool ComopnentWalkCallback(ActorComponent component); class ActorClip { int clipIdx; @@ -20,7 +22,7 @@ class ActorClip { } class ActorNode extends ActorComponent { - List _children; + List _children; //List m_Dependents; Mat2D _transform = Mat2D(); Mat2D _worldTransform = Mat2D(); @@ -30,6 +32,7 @@ class ActorNode extends ActorComponent { Vec2D _scale = Vec2D.fromValues(1.0, 1.0); double _opacity = 1.0; double _renderOpacity = 1.0; + ActorLayerEffectRenderer _layerEffect; bool _overrideWorldTransform = false; bool _isCollapsedVisibility = false; @@ -164,6 +167,25 @@ class ActorNode extends ActorComponent { return _renderOpacity; } + double get childOpacity { + return _layerEffect == null ? _renderOpacity : 1; + } + + // Helper that looks for layer effect, this is only called by + // ActorLayerEffectRenderer when the parent changes. This keeps it efficient + // so not every ActorNode has to look for layerEffects as most won't have it. + void findLayerEffect() { + var layerEffects = children?.whereType(); + var change = layerEffects != null && layerEffects.isNotEmpty + ? layerEffects.first + : null; + if (_layerEffect != change) { + _layerEffect = change; + // Force update the opacity. + markTransformDirty(); + } + } + bool get renderCollapsed { return _renderCollapsed; } @@ -222,7 +244,7 @@ class ActorNode extends ActorComponent { if (parent != null) { _renderCollapsed = _isCollapsedVisibility || parent._renderCollapsed; - _renderOpacity *= parent._renderOpacity; + _renderOpacity *= parent.childOpacity; if (!_overrideWorldTransform) { Mat2D.multiply(_worldTransform, parent._worldTransform, _transform); } @@ -260,16 +282,20 @@ class ActorNode extends ActorComponent { return node; } - void addChild(ActorNode node) { - if (node.parent != null) { - node.parent._children.remove(node); + void removeChild(ActorComponent component) { + _children?.remove(component); + } + + void addChild(ActorComponent component) { + if (component.parent != null) { + component.parent.removeChild(component); } - node.parent = this; - _children ??= []; - _children.add(node); + component.parent = this; + _children ??= []; + _children.add(component); } - List get children { + List get children { return _children; } @@ -368,14 +394,14 @@ class ActorNode extends ActorComponent { // Nothing to complete for actornode. } - bool eachChildRecursive(NodeWalkCallback cb) { + bool eachChildRecursive(ComopnentWalkCallback cb) { if (_children != null) { - for (final ActorNode child in _children) { + for (final ActorComponent child in _children) { if (cb(child) == false) { return false; } - if (child.eachChildRecursive(cb) == false) { + if (child is ActorNode && child.eachChildRecursive(cb) == false) { return false; } } @@ -383,18 +409,20 @@ class ActorNode extends ActorComponent { return true; } - bool all(NodeWalkCallback cb) { + bool all(ComopnentWalkCallback cb) { if (cb(this) == false) { return false; } if (_children != null) { - for (final ActorNode child in _children) { + for (final ActorComponent child in _children) { if (cb(child) == false) { return false; } - child.eachChildRecursive(cb); + if (child is ActorNode) { + child.eachChildRecursive(cb); + } } } diff --git a/flare_dart/lib/actor_node_solo.dart b/flare_dart/lib/actor_node_solo.dart index da8ce52..672321f 100644 --- a/flare_dart/lib/actor_node_solo.dart +++ b/flare_dart/lib/actor_node_solo.dart @@ -24,7 +24,9 @@ class ActorNodeSolo extends ActorNode { for (int i = 0; i < children.length; i++) { var child = children[i]; bool cv = i != (_activeChildIndex - 1); - child.collapsedVisibility = cv; // Setter + if (child is ActorNode) { + child.collapsedVisibility = cv; // Setter + } } } } diff --git a/flare_dart/lib/actor_root_bone.dart b/flare_dart/lib/actor_root_bone.dart index c47f6cb..74b25a5 100644 --- a/flare_dart/lib/actor_root_bone.dart +++ b/flare_dart/lib/actor_root_bone.dart @@ -17,9 +17,9 @@ class ActorRootBone extends ActorNode { if (children == null) { return; } - for (final ActorNode node in children) { - if (node is ActorBone) { - _firstBone = node; + for (final ActorComponent component in children) { + if (component is ActorBone) { + _firstBone = component; return; } } diff --git a/flare_dart/lib/actor_shadow.dart b/flare_dart/lib/actor_shadow.dart new file mode 100644 index 0000000..78ce03a --- /dev/null +++ b/flare_dart/lib/actor_shadow.dart @@ -0,0 +1,36 @@ +import 'dart:typed_data'; + +import 'actor_artboard.dart'; +import 'actor_blur.dart'; +import 'stream_reader.dart'; + +abstract class ActorShadow extends ActorBlur { + double offsetX; + double offsetY; + Float32List _color = Float32List(4); + int get blendModeId; + set blendModeId(int value); + + Float32List get color => _color; + + static ActorShadow read( + ActorArtboard artboard, StreamReader reader, ActorShadow component) { + ActorBlur.read(artboard, reader, component); + component.offsetX = reader.readFloat32("offsetX"); + component.offsetY = reader.readFloat32("offsetY"); + component._color = reader.readFloat32Array(4, "color"); + component.blendModeId = reader.readUint8("blendMode"); + return component; + } + + void copyShadow(ActorShadow from, ActorArtboard resetArtboard) { + copyBlur(from, resetArtboard); + offsetX = from.offsetX; + offsetY = from.offsetY; + _color[0] = from._color[0]; + _color[1] = from._color[1]; + _color[2] = from._color[2]; + _color[3] = from._color[3]; + blendModeId = from.blendModeId; + } +} diff --git a/flare_dart/lib/actor_shape.dart b/flare_dart/lib/actor_shape.dart index 7b14164..cee146a 100644 --- a/flare_dart/lib/actor_shape.dart +++ b/flare_dart/lib/actor_shape.dart @@ -3,7 +3,6 @@ import "actor_artboard.dart"; import "actor_color.dart"; import "actor_component.dart"; import "actor_drawable.dart"; -import "actor_node.dart"; import "actor_path.dart"; import "math/aabb.dart"; import "math/mat2d.dart"; @@ -83,11 +82,11 @@ class ActorShape extends ActorDrawable { return aabb; } - for (final ActorNode node in children) { - ActorBasePath path = node as ActorBasePath; - if (path == null) { + for (final ActorComponent component in children) { + if (component is! ActorBasePath) { continue; } + ActorBasePath path = component as ActorBasePath; // This is the axis aligned bounding box in the space of the // parent (this case our shape). AABB pathAABB = path.getPathAABB(); diff --git a/flare_dart/lib/animation/actor_animation.dart b/flare_dart/lib/animation/actor_animation.dart index 1f8d1c6..2162f1e 100644 --- a/flare_dart/lib/animation/actor_animation.dart +++ b/flare_dart/lib/animation/actor_animation.dart @@ -90,6 +90,21 @@ class PropertyAnimation { case PropertyTypes.fillColor: keyFrameReader = KeyFrameFillColor.read; break; + case PropertyTypes.color: + keyFrameReader = KeyFrameShadowColor.read; + break; + case PropertyTypes.offsetX: + keyFrameReader = KeyFrameShadowOffsetX.read; + break; + case PropertyTypes.offsetY: + keyFrameReader = KeyFrameShadowOffsetY.read; + break; + case PropertyTypes.blurX: + keyFrameReader = KeyFrameBlurX.read; + break; + case PropertyTypes.blurY: + keyFrameReader = KeyFrameBlurY.read; + break; case PropertyTypes.fillGradient: keyFrameReader = KeyFrameGradient.read; break; @@ -381,13 +396,13 @@ class ActorAnimation { /// Apply the specified time to all the components of this animation. /// This operation will result in the application of the keyframe values /// at the given time, and perform interpolation if needed. - /// + /// /// @time is the current time for this animation /// @artboard is the artboard that contains it /// @mix is a value [0,1] - /// This is a blending parameter to allow smoothing between concurrent - /// animations. - /// By setting mix to 1, the current animation will fully replace the + /// This is a blending parameter to allow smoothing between concurrent + /// animations. + /// By setting mix to 1, the current animation will fully replace the /// existing values. By ramping up mix with values between 0 and 1, the /// transition from one animation to the next will be more gradual as it /// gets mixed in, preventing poppying effects. diff --git a/flare_dart/lib/animation/keyframe.dart b/flare_dart/lib/animation/keyframe.dart index 9d05454..755c13b 100644 --- a/flare_dart/lib/animation/keyframe.dart +++ b/flare_dart/lib/animation/keyframe.dart @@ -2,6 +2,7 @@ import "dart:collection"; import "dart:typed_data"; import "../actor_artboard.dart"; +import "../actor_blur.dart"; import "../actor_bone_base.dart"; import "../actor_color.dart"; import "../actor_component.dart"; @@ -12,16 +13,16 @@ import "../actor_node.dart"; import "../actor_node_solo.dart"; import "../actor_path.dart"; import "../actor_rectangle.dart"; +import "../actor_shadow.dart"; import "../actor_star.dart"; import "../path_point.dart"; import "../stream_reader.dart"; + import "./interpolation/cubic.dart"; import "./interpolation/hold.dart"; import "./interpolation/interpolator.dart"; import "./interpolation/linear.dart"; -enum InterpolationTypes { hold, linear, cubic } - HashMap interpolationTypesLookup = HashMap.fromIterables([ 0, @@ -33,6 +34,13 @@ HashMap interpolationTypesLookup = InterpolationTypes.cubic ]); +class DrawOrderIndex { + int componentIndex; + int order; +} + +enum InterpolationTypes { hold, linear, cubic } + abstract class KeyFrame { double _time; @@ -40,186 +48,56 @@ abstract class KeyFrame { return _time; } - static bool read(StreamReader reader, KeyFrame frame) { - frame._time = reader.readFloat64("time"); - - return true; - } + void apply(ActorComponent component, double mix); - void setNext(KeyFrame frame); void applyInterpolation( ActorComponent component, double time, KeyFrame toFrame, double mix); - void apply(ActorComponent component, double mix); -} - -abstract class KeyFrameWithInterpolation extends KeyFrame { - Interpolator _interpolator; - - Interpolator get interpolator { - return _interpolator; - } - - static bool read(StreamReader reader, KeyFrameWithInterpolation frame) { - if (!KeyFrame.read(reader, frame)) { - return false; - } - int type = reader.readUint8("interpolatorType"); - - InterpolationTypes actualType = interpolationTypesLookup[type]; - actualType ??= InterpolationTypes.linear; + void setNext(KeyFrame frame); + static bool read(StreamReader reader, KeyFrame frame) { + frame._time = reader.readFloat64("time"); - switch (actualType) { - case InterpolationTypes.hold: - frame._interpolator = HoldInterpolator.instance; - break; - case InterpolationTypes.linear: - frame._interpolator = LinearInterpolator.instance; - break; - case InterpolationTypes.cubic: - { - CubicInterpolator interpolator = CubicInterpolator(); - if (interpolator.read(reader)) { - frame._interpolator = interpolator; - } - break; - } - default: - frame._interpolator = null; - } return true; } - - @override - void setNext(KeyFrame frame) { - // Null out the interpolator if the next frame doesn't validate. - // if(_interpolator != null && !_interpolator.setNextFrame(this, frame)) - // { - // _interpolator = null; - // } - } } -abstract class KeyFrameNumeric extends KeyFrameWithInterpolation { - double _value; - - double get value { - return _value; - } - - static bool read(StreamReader reader, KeyFrameNumeric frame) { - if (!KeyFrameWithInterpolation.read(reader, frame)) { - return false; - } - frame._value = reader.readFloat32("value"); - if (frame._value.isNaN) { - // Do we want to warn the user the animation contains invalid values? - frame._value = 1.0; - } - return true; - } - - @override - void applyInterpolation( - ActorComponent component, double time, KeyFrame toFrame, double mix) { - KeyFrameNumeric to = toFrame as KeyFrameNumeric; - double f = (time - _time) / (to._time - _time); - if (_interpolator != null) { - f = _interpolator.getEasedMix(f); - } - setValue(component, _value * (1.0 - f) + to._value * f, mix); - } +class KeyFrameActiveChild extends KeyFrame { + int _value; @override void apply(ActorComponent component, double mix) { - setValue(component, _value, mix); - } - - void setValue(ActorComponent component, double value, double mix); -} - -abstract class KeyFrameInt extends KeyFrameWithInterpolation { - double _value; - - double get value { - return _value; - } - - static bool read(StreamReader reader, KeyFrameInt frame) { - if (!KeyFrameWithInterpolation.read(reader, frame)) { - return false; - } - frame._value = reader.readInt32("value").toDouble(); - return true; + ActorNodeSolo soloNode = component as ActorNodeSolo; + soloNode.activeChildIndex = _value; } @override void applyInterpolation( ActorComponent component, double time, KeyFrame toFrame, double mix) { - KeyFrameNumeric to = toFrame as KeyFrameNumeric; - double f = (time - _time) / (to._time - _time); - if (_interpolator != null) { - f = _interpolator.getEasedMix(f); - } - setValue(component, _value * (1.0 - f) + to._value * f, mix); - } - - @override - void apply(ActorComponent component, double mix) { - setValue(component, _value, mix); - } - - void setValue(ActorComponent component, double value, double mix); -} - -class KeyFrameIntProperty extends KeyFrameInt { - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameIntProperty frame = KeyFrameIntProperty(); - if (KeyFrameInt.read(reader, frame)) { - return frame; - } - return null; - } - - @override - void setValue(ActorComponent component, double value, double mix) { - // TODO - //CustomIntProperty node = component as CustomIntProperty; - //node.value = (node.value * (1.0 - mix) + value * mix).round(); - } -} - -class KeyFrameFloatProperty extends KeyFrameNumeric { - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameFloatProperty frame = KeyFrameFloatProperty(); - if (KeyFrameNumeric.read(reader, frame)) { - return frame; - } - return null; + apply(component, mix); } @override - void setValue(ActorComponent component, double value, double mix) { - // TODO - // CustomFloatProperty node = component as CustomFloatProperty; - // node.value = node.value * (1.0 - mix) + value * mix; + void setNext(KeyFrame frame) { + // No Interpolation } -} -class KeyFrameStringProperty extends KeyFrame { - String _value; static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameStringProperty frame = KeyFrameStringProperty(); + KeyFrameActiveChild frame = KeyFrameActiveChild(); if (!KeyFrame.read(reader, frame)) { return null; } - frame._value = reader.readString("value"); + frame._value = reader.readFloat32("value").toInt(); return frame; } +} +class KeyFrameBooleanProperty extends KeyFrame { + bool _value; @override - void setNext(KeyFrame frame) { - // Do nothing. + void apply(ActorComponent component, double mix) { + // CustomBooleanProperty prop = component as CustomBooleanProperty; + // prop.value = _value; } + @override void applyInterpolation( ActorComponent component, double time, KeyFrame toFrame, double mix) { @@ -227,14 +105,10 @@ class KeyFrameStringProperty extends KeyFrame { } @override - void apply(ActorComponent component, double mix) { - // CustomStringProperty prop = component as CustomStringProperty; - // prop.value = _value; + void setNext(KeyFrame frame) { + // Do nothing. } -} -class KeyFrameBooleanProperty extends KeyFrame { - bool _value; static KeyFrame read(StreamReader reader, ActorComponent component) { KeyFrameBooleanProperty frame = KeyFrameBooleanProperty(); if (!KeyFrame.read(reader, frame)) { @@ -243,11 +117,16 @@ class KeyFrameBooleanProperty extends KeyFrame { frame._value = reader.readBool("value"); return frame; } +} +class KeyFrameCollisionEnabledProperty extends KeyFrame { + bool _value; @override - void setNext(KeyFrame frame) { - // Do nothing. + void apply(ActorComponent component, double mix) { + // ActorCollider collider = component as ActorCollider; + // collider.isCollisionEnabled = _value; } + @override void applyInterpolation( ActorComponent component, double time, KeyFrame toFrame, double mix) { @@ -255,14 +134,10 @@ class KeyFrameBooleanProperty extends KeyFrame { } @override - void apply(ActorComponent component, double mix) { - // CustomBooleanProperty prop = component as CustomBooleanProperty; - // prop.value = _value; + void setNext(KeyFrame frame) { + // Do nothing. } -} -class KeyFrameCollisionEnabledProperty extends KeyFrame { - bool _value; static KeyFrame read(StreamReader reader, ActorComponent component) { KeyFrameCollisionEnabledProperty frame = KeyFrameCollisionEnabledProperty(); if (!KeyFrame.read(reader, frame)) { @@ -271,163 +146,65 @@ class KeyFrameCollisionEnabledProperty extends KeyFrame { frame._value = reader.readBool("value"); return frame; } - - @override - void setNext(KeyFrame frame) { - // Do nothing. - } - - @override - void applyInterpolation( - ActorComponent component, double time, KeyFrame toFrame, double mix) { - apply(component, mix); - } - - @override - void apply(ActorComponent component, double mix) { - // ActorCollider collider = component as ActorCollider; - // collider.isCollisionEnabled = _value; - } } -class KeyFramePosX extends KeyFrameNumeric { - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFramePosX frame = KeyFramePosX(); - if (KeyFrameNumeric.read(reader, frame)) { - return frame; - } - return null; - } - +class KeyFrameConstraintStrength extends KeyFrameNumeric { @override void setValue(ActorComponent component, double value, double mix) { - ActorNode node = component as ActorNode; - node.x = node.x * (1.0 - mix) + value * mix; + ActorConstraint constraint = component as ActorConstraint; + constraint.strength = constraint.strength * (1.0 - mix) + value * mix; } -} -class KeyFramePosY extends KeyFrameNumeric { static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFramePosY frame = KeyFramePosY(); + KeyFrameConstraintStrength frame = KeyFrameConstraintStrength(); if (KeyFrameNumeric.read(reader, frame)) { return frame; } return null; } +} +class KeyFrameCornerRadius extends KeyFrameNumeric { @override void setValue(ActorComponent component, double value, double mix) { - ActorNode node = component as ActorNode; - node.y = node.y * (1.0 - mix) + value * mix; + ActorRectangle node = component as ActorRectangle; + node.radius = node.radius * (1.0 - mix) + value * mix; } -} -class KeyFrameScaleX extends KeyFrameNumeric { static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameScaleX frame = KeyFrameScaleX(); + KeyFrameCornerRadius frame = KeyFrameCornerRadius(); if (KeyFrameNumeric.read(reader, frame)) { return frame; } return null; } - - @override - void setValue(ActorComponent component, double value, double mix) { - ActorNode node = component as ActorNode; - node.scaleX = node.scaleX * (1.0 - mix) + value * mix; - } } -class KeyFrameScaleY extends KeyFrameNumeric { - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameScaleY frame = KeyFrameScaleY(); - if (KeyFrameNumeric.read(reader, frame)) { - return frame; - } - return null; - } - - @override - void setValue(ActorComponent component, double value, double mix) { - ActorNode node = component as ActorNode; - node.scaleY = node.scaleY * (1.0 - mix) + value * mix; - } -} - -class KeyFrameRotation extends KeyFrameNumeric { - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameRotation frame = KeyFrameRotation(); - if (KeyFrameNumeric.read(reader, frame)) { - return frame; - } - return null; - } - - @override - void setValue(ActorComponent component, double value, double mix) { - ActorNode node = component as ActorNode; - node.rotation = node.rotation * (1.0 - mix) + value * mix; - } -} - -class KeyFrameOpacity extends KeyFrameNumeric { - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameOpacity frame = KeyFrameOpacity(); - if (KeyFrameNumeric.read(reader, frame)) { - return frame; - } - return null; - } +class KeyFrameDrawOrder extends KeyFrame { + List _orderedNodes; @override - void setValue(ActorComponent component, double value, double mix) { - ActorNode node = component as ActorNode; - node.opacity = node.opacity * (1.0 - mix) + value * mix; - } -} + void apply(ActorComponent component, double mix) { + ActorArtboard artboard = component.artboard; -class KeyFrameLength extends KeyFrameNumeric { - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameLength frame = KeyFrameLength(); - if (KeyFrameNumeric.read(reader, frame)) { - return frame; + for (final DrawOrderIndex doi in _orderedNodes) { + ActorComponent component = artboard[doi.componentIndex]; + if (component is ActorDrawable) { + component.drawOrder = doi.order; + } } - return null; } @override - void setValue(ActorComponent component, double value, double mix) { - ActorBoneBase bone = component as ActorBoneBase; - if (bone == null) { - return; - } - bone.length = bone.length * (1.0 - mix) + value * mix; - } -} - -class KeyFrameConstraintStrength extends KeyFrameNumeric { - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameConstraintStrength frame = KeyFrameConstraintStrength(); - if (KeyFrameNumeric.read(reader, frame)) { - return frame; - } - return null; + void applyInterpolation( + ActorComponent component, double time, KeyFrame toFrame, double mix) { + apply(component, mix); } @override - void setValue(ActorComponent component, double value, double mix) { - ActorConstraint constraint = component as ActorConstraint; - constraint.strength = constraint.strength * (1.0 - mix) + value * mix; + void setNext(KeyFrame frame) { + // Do nothing. } -} - -class DrawOrderIndex { - int componentIndex; - int order; -} - -class KeyFrameDrawOrder extends KeyFrame { - List _orderedNodes; static KeyFrame read(StreamReader reader, ActorComponent component) { KeyFrameDrawOrder frame = KeyFrameDrawOrder(); @@ -448,113 +225,59 @@ class KeyFrameDrawOrder extends KeyFrame { reader.closeArray(); return frame; } +} - @override - void setNext(KeyFrame frame) { - // Do nothing. - } - @override - void applyInterpolation( - ActorComponent component, double time, KeyFrame toFrame, double mix) { - apply(component, mix); +class KeyFrameFillColor extends KeyFrameWithInterpolation { + Float32List _value; + + Float32List get value { + return _value; } @override void apply(ActorComponent component, double mix) { - ActorArtboard artboard = component.artboard; - - for (final DrawOrderIndex doi in _orderedNodes) { - ActorComponent component = artboard[doi.componentIndex]; - if (component is ActorDrawable) { - component.drawOrder = doi.order; + ActorColor ac = component as ActorColor; + int l = _value.length; + Float32List wr = ac.color; + if (mix == 1.0) { + for (int i = 0; i < l; i++) { + wr[i] = _value[i]; + } + } else { + double mixi = 1.0 - mix; + for (int i = 0; i < l; i++) { + wr[i] = wr[i] * mixi + _value[i] * mix; } } - } -} - -class KeyFrameImageVertices extends KeyFrameWithInterpolation { - Float32List _vertices; - - Float32List get vertices { - return _vertices; - } - - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameImageVertices frame = KeyFrameImageVertices(); - if (!KeyFrameWithInterpolation.read(reader, frame)) { - return null; - } - - ActorImage imageNode = component as ActorImage; - frame._vertices = - reader.readFloat32Array(imageNode.vertexCount * 2, "value"); - - imageNode.doesAnimationVertexDeform = true; - - return frame; + ac.markPaintDirty(); } - @override - void setNext(KeyFrame frame) { - // Do nothing. - } @override void applyInterpolation( ActorComponent component, double time, KeyFrame toFrame, double mix) { - ActorImage imageNode = component as ActorImage; - Float32List wr = imageNode.animationDeformedVertices; - Float32List to = (toFrame as KeyFrameImageVertices)._vertices; - int l = _vertices.length; + ActorColor ac = component as ActorColor; + Float32List wr = ac.color; + Float32List to = (toFrame as KeyFrameFillColor)._value; + int l = _value.length; double f = (time - _time) / (toFrame.time - _time); if (_interpolator != null) { f = _interpolator.getEasedMix(f); } - double fi = 1.0 - f; if (mix == 1.0) { for (int i = 0; i < l; i++) { - wr[i] = _vertices[i] * fi + to[i] * f; + wr[i] = _value[i] * fi + to[i] * f; } } else { double mixi = 1.0 - mix; for (int i = 0; i < l; i++) { - double v = _vertices[i] * fi + to[i] * f; + double v = _value[i] * fi + to[i] * f; wr[i] = wr[i] * mixi + v * mix; } } - - imageNode.invalidateDrawable(); - } - - @override - void apply(ActorComponent component, double mix) { - ActorImage imageNode = component as ActorImage; - int l = _vertices.length; - Float32List wr = imageNode.animationDeformedVertices; - if (mix == 1.0) { - for (int i = 0; i < l; i++) { - wr[i] = _vertices[i]; - } - } else { - double mixi = 1.0 - mix; - for (int i = 0; i < l; i++) { - wr[i] = wr[i] * mixi + _vertices[i] * mix; - } - } - - imageNode.invalidateDrawable(); - } -} - -class KeyFrameTrigger extends KeyFrame { - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameTrigger frame = KeyFrameTrigger(); - if (!KeyFrame.read(reader, frame)) { - return null; - } - return frame; + ac.markPaintDirty(); } @override @@ -562,189 +285,176 @@ class KeyFrameTrigger extends KeyFrame { // Do nothing. } - @override - void applyInterpolation( - ActorComponent component, double time, KeyFrame toFrame, double mix) {} - - @override - void apply(ActorComponent component, double mix) {} -} - -class KeyFrameActiveChild extends KeyFrame { - int _value; - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameActiveChild frame = KeyFrameActiveChild(); - if (!KeyFrame.read(reader, frame)) { + KeyFrameFillColor frame = KeyFrameFillColor(); + if (!KeyFrameWithInterpolation.read(reader, frame)) { return null; } - frame._value = reader.readFloat32("value").toInt(); - return frame; - } - @override - void setNext(KeyFrame frame) { - // No Interpolation - } - @override - void applyInterpolation( - ActorComponent component, double time, KeyFrame toFrame, double mix) { - apply(component, mix); + frame._value = reader.readFloat32Array(4, "value"); + return frame; } +} +class KeyFrameFloatProperty extends KeyFrameNumeric { @override - void apply(ActorComponent component, double mix) { - ActorNodeSolo soloNode = component as ActorNodeSolo; - soloNode.activeChildIndex = _value; + void setValue(ActorComponent component, double value, double mix) { + // TODO + // CustomFloatProperty node = component as CustomFloatProperty; + // node.value = node.value * (1.0 - mix) + value * mix; } -} -class KeyFrameSequence extends KeyFrameNumeric { static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameSequence frame = KeyFrameSequence(); + KeyFrameFloatProperty frame = KeyFrameFloatProperty(); if (KeyFrameNumeric.read(reader, frame)) { return frame; } return null; } - - @override - void setValue(ActorComponent component, double value, double mix) { - ActorImage node = component as ActorImage; - int frameIndex = value.floor() % node.sequenceFrames.length; - if (frameIndex < 0) { - frameIndex += node.sequenceFrames.length; - } - node.sequenceFrame = frameIndex; - } } -class KeyFrameFillColor extends KeyFrameWithInterpolation { +class KeyFrameGradient extends KeyFrameWithInterpolation { Float32List _value; + Float32List get value => _value; - Float32List get value { - return _value; - } - - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameFillColor frame = KeyFrameFillColor(); - if (!KeyFrameWithInterpolation.read(reader, frame)) { - return null; - } + @override + void apply(ActorComponent component, double mix) { + GradientColor gradient = component as GradientColor; - frame._value = reader.readFloat32Array(4, "value"); - return frame; - } + int ridx = 0; + int wi = 0; - @override - void setNext(KeyFrame frame) { - // Do nothing. + if (mix == 1.0) { + gradient.start[0] = _value[ridx++]; + gradient.start[1] = _value[ridx++]; + gradient.end[0] = _value[ridx++]; + gradient.end[1] = _value[ridx++]; + + while (ridx < _value.length && wi < gradient.colorStops.length) { + gradient.colorStops[wi++] = _value[ridx++]; + } + } else { + double imix = 1.0 - mix; + gradient.start[0] = gradient.start[0] * imix + _value[ridx++] * mix; + gradient.start[1] = gradient.start[1] * imix + _value[ridx++] * mix; + gradient.end[0] = gradient.end[0] * imix + _value[ridx++] * mix; + gradient.end[1] = gradient.end[1] * imix + _value[ridx++] * mix; + + while (ridx < _value.length && wi < gradient.colorStops.length) { + gradient.colorStops[wi] = + gradient.colorStops[wi] * imix + _value[ridx++]; + wi++; + } + } + gradient.markPaintDirty(); } + @override void applyInterpolation( ActorComponent component, double time, KeyFrame toFrame, double mix) { - ActorColor ac = component as ActorColor; - Float32List wr = ac.color; - Float32List to = (toFrame as KeyFrameFillColor)._value; - int l = _value.length; + GradientColor gradient = component as GradientColor; + Float32List v = (toFrame as KeyFrameGradient)._value; double f = (time - _time) / (toFrame.time - _time); if (_interpolator != null) { f = _interpolator.getEasedMix(f); } double fi = 1.0 - f; + + int ridx = 0; + int wi = 0; + if (mix == 1.0) { - for (int i = 0; i < l; i++) { - wr[i] = _value[i] * fi + to[i] * f; + gradient.start[0] = _value[ridx] * fi + v[ridx++] * f; + gradient.start[1] = _value[ridx] * fi + v[ridx++] * f; + gradient.end[0] = _value[ridx] * fi + v[ridx++] * f; + gradient.end[1] = _value[ridx] * fi + v[ridx++] * f; + + while (ridx < v.length && wi < gradient.colorStops.length) { + gradient.colorStops[wi++] = _value[ridx] * fi + v[ridx++] * f; } } else { - double mixi = 1.0 - mix; - for (int i = 0; i < l; i++) { - double v = _value[i] * fi + to[i] * f; + double imix = 1.0 - mix; - wr[i] = wr[i] * mixi + v * mix; + // Mix : first interpolate the KeyFrames, + // and then mix on top of the current value. + double val = _value[ridx] * fi + v[ridx] * f; + gradient.start[0] = gradient.start[0] * imix + val * mix; + ridx++; + + val = _value[ridx] * fi + v[ridx] * f; + gradient.start[1] = gradient.start[1] * imix + val * mix; + ridx++; + + val = _value[ridx] * fi + v[ridx] * f; + gradient.end[0] = gradient.end[0] * imix + val * mix; + ridx++; + + val = _value[ridx] * fi + v[ridx] * f; + gradient.end[1] = gradient.end[1] * imix + val * mix; + ridx++; + + while (ridx < v.length && wi < gradient.colorStops.length) { + val = _value[ridx] * fi + v[ridx] * f; + gradient.colorStops[wi] = gradient.colorStops[wi] * imix + val * mix; + + ridx++; + wi++; } } - ac.markPaintDirty(); + gradient.markPaintDirty(); } - @override - void apply(ActorComponent component, double mix) { - ActorColor ac = component as ActorColor; - int l = _value.length; - Float32List wr = ac.color; - if (mix == 1.0) { - for (int i = 0; i < l; i++) { - wr[i] = _value[i]; - } - } else { - double mixi = 1.0 - mix; - for (int i = 0; i < l; i++) { - wr[i] = wr[i] * mixi + _value[i] * mix; - } + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameGradient frame = KeyFrameGradient(); + if (!KeyFrameWithInterpolation.read(reader, frame)) { + return null; } - ac.markPaintDirty(); + int len = reader.readUint16("length"); + frame._value = reader.readFloat32Array(len, "value"); + return frame; } } -class KeyFramePathVertices extends KeyFrameWithInterpolation { +class KeyFrameImageVertices extends KeyFrameWithInterpolation { Float32List _vertices; Float32List get vertices { return _vertices; } - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFramePathVertices frame = KeyFramePathVertices(); - if (!KeyFrameWithInterpolation.read(reader, frame) || - component is! ActorPath) { - return null; - } - - ActorPath pathNode = component as ActorPath; - - int length = pathNode.points.fold(0, (int previous, PathPoint point) { - return previous + 2 + (point.pointType == PointType.straight ? 1 : 4); - }); - frame._vertices = Float32List(length); - int readIdx = 0; - reader.openArray("value"); - for (final PathPoint point in pathNode.points) { - frame._vertices[readIdx++] = reader.readFloat32("translationX"); - frame._vertices[readIdx++] = reader.readFloat32("translationY"); - if (point.pointType == PointType.straight) { - // radius - frame._vertices[readIdx++] = reader.readFloat32("radius"); - } else { - // in/out - frame._vertices[readIdx++] = reader.readFloat32("inValueX"); - frame._vertices[readIdx++] = reader.readFloat32("inValueY"); - frame._vertices[readIdx++] = reader.readFloat32("outValueX"); - frame._vertices[readIdx++] = reader.readFloat32("outValueY"); + @override + void apply(ActorComponent component, double mix) { + ActorImage imageNode = component as ActorImage; + int l = _vertices.length; + Float32List wr = imageNode.animationDeformedVertices; + if (mix == 1.0) { + for (int i = 0; i < l; i++) { + wr[i] = _vertices[i]; + } + } else { + double mixi = 1.0 - mix; + for (int i = 0; i < l; i++) { + wr[i] = wr[i] * mixi + _vertices[i] * mix; } } - reader.closeArray(); - pathNode.makeVertexDeform(); - return frame; + imageNode.invalidateDrawable(); } - @override - void setNext(KeyFrame frame) { - // Do nothing. - } @override void applyInterpolation( ActorComponent component, double time, KeyFrame toFrame, double mix) { - ActorPath path = component as ActorPath; - Float32List wr = path.vertexDeform; - Float32List to = (toFrame as KeyFramePathVertices)._vertices; + ActorImage imageNode = component as ActorImage; + Float32List wr = imageNode.animationDeformedVertices; + Float32List to = (toFrame as KeyFrameImageVertices)._vertices; int l = _vertices.length; double f = (time - _time) / (toFrame.time - _time); if (_interpolator != null) { f = _interpolator.getEasedMix(f); } + double fi = 1.0 - f; if (mix == 1.0) { for (int i = 0; i < l; i++) { @@ -759,451 +469,882 @@ class KeyFramePathVertices extends KeyFrameWithInterpolation { } } - path.markVertexDeformDirty(); + imageNode.invalidateDrawable(); } @override - void apply(ActorComponent component, double mix) { - ActorPath path = component as ActorPath; - int l = _vertices.length; - Float32List wr = path.vertexDeform; - if (mix == 1.0) { - for (int i = 0; i < l; i++) { - wr[i] = _vertices[i]; - } - } else { - double mixi = 1.0 - mix; - for (int i = 0; i < l; i++) { - wr[i] = wr[i] * mixi + _vertices[i] * mix; - } + void setNext(KeyFrame frame) { + // Do nothing. + } + + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameImageVertices frame = KeyFrameImageVertices(); + if (!KeyFrameWithInterpolation.read(reader, frame)) { + return null; } - path.markVertexDeformDirty(); + ActorImage imageNode = component as ActorImage; + frame._vertices = + reader.readFloat32Array(imageNode.vertexCount * 2, "value"); + + imageNode.doesAnimationVertexDeform = true; + + return frame; } } -class KeyFramePaintOpacity extends KeyFrameNumeric { +class KeyFrameInnerRadius extends KeyFrameNumeric { + @override + void setValue(ActorComponent component, double value, double mix) { + if (component == null) return; + + ActorStar star = component as ActorStar; + star.innerRadius = star.innerRadius * (1.0 - mix) + value * mix; + } + static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFramePaintOpacity frame = KeyFramePaintOpacity(); + KeyFrameInnerRadius frame = KeyFrameInnerRadius(); if (KeyFrameNumeric.read(reader, frame)) { return frame; } return null; } - - @override - void setValue(ActorComponent component, double value, double mix) { - ActorPaint node = component as ActorPaint; - node.opacity = node.opacity * (1.0 - mix) + value * mix; - } } -class KeyFrameStrokeColor extends KeyFrameWithInterpolation { - Float32List _value; +abstract class KeyFrameInt extends KeyFrameWithInterpolation { + double _value; - Float32List get value { + double get value { return _value; } - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameStrokeColor frame = KeyFrameStrokeColor(); - if (!KeyFrameWithInterpolation.read(reader, frame)) { - return null; - } - frame._value = reader.readFloat32Array(4, "value"); - return frame; + @override + void apply(ActorComponent component, double mix) { + setValue(component, _value, mix); } @override void applyInterpolation( ActorComponent component, double time, KeyFrame toFrame, double mix) { - ColorStroke cs = component as ColorStroke; - Float32List wr = cs.color; - Float32List to = (toFrame as KeyFrameStrokeColor)._value; - int len = _value.length; - - double f = (time - _time) / (toFrame.time - _time); + KeyFrameNumeric to = toFrame as KeyFrameNumeric; + double f = (time - _time) / (to._time - _time); if (_interpolator != null) { f = _interpolator.getEasedMix(f); } - double fi = 1.0 - f; - if (mix == 1.0) { - for (int i = 0; i < len; i++) { - wr[i] = _value[i] * fi + to[i] * f; - } - } else { - double mixi = 1.0 - mix; - for (int i = 0; i < len; i++) { - double v = _value[i] * fi + to[i] * f; - - wr[i] = wr[i] * mixi + v * mix; - } - } - cs.markPaintDirty(); + setValue(component, _value * (1.0 - f) + to._value * f, mix); + } + + void setValue(ActorComponent component, double value, double mix); + + static bool read(StreamReader reader, KeyFrameInt frame) { + if (!KeyFrameWithInterpolation.read(reader, frame)) { + return false; + } + frame._value = reader.readInt32("value").toDouble(); + return true; + } +} + +class KeyFrameIntProperty extends KeyFrameInt { + @override + void setValue(ActorComponent component, double value, double mix) { + // TODO + //CustomIntProperty node = component as CustomIntProperty; + //node.value = (node.value * (1.0 - mix) + value * mix).round(); + } + + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameIntProperty frame = KeyFrameIntProperty(); + if (KeyFrameInt.read(reader, frame)) { + return frame; + } + return null; + } +} + +class KeyFrameLength extends KeyFrameNumeric { + @override + void setValue(ActorComponent component, double value, double mix) { + ActorBoneBase bone = component as ActorBoneBase; + if (bone == null) { + return; + } + bone.length = bone.length * (1.0 - mix) + value * mix; + } + + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameLength frame = KeyFrameLength(); + if (KeyFrameNumeric.read(reader, frame)) { + return frame; + } + return null; + } +} + +abstract class KeyFrameNumeric extends KeyFrameWithInterpolation { + double _value; + + double get value { + return _value; } @override void apply(ActorComponent component, double mix) { - ColorStroke node = component as ColorStroke; - Float32List wr = node.color; - int len = wr.length; + setValue(component, _value, mix); + } + + @override + void applyInterpolation( + ActorComponent component, double time, KeyFrame toFrame, double mix) { + KeyFrameNumeric to = toFrame as KeyFrameNumeric; + double f = (time - _time) / (to._time - _time); + if (_interpolator != null) { + f = _interpolator.getEasedMix(f); + } + setValue(component, _value * (1.0 - f) + to._value * f, mix); + } + + void setValue(ActorComponent component, double value, double mix); + + static bool read(StreamReader reader, KeyFrameNumeric frame) { + if (!KeyFrameWithInterpolation.read(reader, frame)) { + return false; + } + frame._value = reader.readFloat32("value"); + if (frame._value.isNaN) { + // Do we want to warn the user the animation contains invalid values? + frame._value = 1.0; + } + return true; + } +} + +class KeyFrameOpacity extends KeyFrameNumeric { + @override + void setValue(ActorComponent component, double value, double mix) { + ActorNode node = component as ActorNode; + node.opacity = node.opacity * (1.0 - mix) + value * mix; + } + + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameOpacity frame = KeyFrameOpacity(); + if (KeyFrameNumeric.read(reader, frame)) { + return frame; + } + return null; + } +} + +class KeyFramePaintOpacity extends KeyFrameNumeric { + @override + void setValue(ActorComponent component, double value, double mix) { + ActorPaint node = component as ActorPaint; + node.opacity = node.opacity * (1.0 - mix) + value * mix; + } + + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFramePaintOpacity frame = KeyFramePaintOpacity(); + if (KeyFrameNumeric.read(reader, frame)) { + return frame; + } + return null; + } +} + +class KeyFramePathVertices extends KeyFrameWithInterpolation { + Float32List _vertices; + + Float32List get vertices { + return _vertices; + } + + @override + void apply(ActorComponent component, double mix) { + ActorPath path = component as ActorPath; + int l = _vertices.length; + Float32List wr = path.vertexDeform; if (mix == 1.0) { - for (int i = 0; i < len; i++) { - wr[i] = _value[i]; + for (int i = 0; i < l; i++) { + wr[i] = _vertices[i]; + } + } else { + double mixi = 1.0 - mix; + for (int i = 0; i < l; i++) { + wr[i] = wr[i] * mixi + _vertices[i] * mix; + } + } + + path.markVertexDeformDirty(); + } + + @override + void applyInterpolation( + ActorComponent component, double time, KeyFrame toFrame, double mix) { + ActorPath path = component as ActorPath; + Float32List wr = path.vertexDeform; + Float32List to = (toFrame as KeyFramePathVertices)._vertices; + int l = _vertices.length; + + double f = (time - _time) / (toFrame.time - _time); + if (_interpolator != null) { + f = _interpolator.getEasedMix(f); + } + double fi = 1.0 - f; + if (mix == 1.0) { + for (int i = 0; i < l; i++) { + wr[i] = _vertices[i] * fi + to[i] * f; + } + } else { + double mixi = 1.0 - mix; + for (int i = 0; i < l; i++) { + double v = _vertices[i] * fi + to[i] * f; + + wr[i] = wr[i] * mixi + v * mix; + } + } + + path.markVertexDeformDirty(); + } + + @override + void setNext(KeyFrame frame) { + // Do nothing. + } + + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFramePathVertices frame = KeyFramePathVertices(); + if (!KeyFrameWithInterpolation.read(reader, frame) || + component is! ActorPath) { + return null; + } + + ActorPath pathNode = component as ActorPath; + + int length = pathNode.points.fold(0, (int previous, PathPoint point) { + return previous + 2 + (point.pointType == PointType.straight ? 1 : 4); + }); + frame._vertices = Float32List(length); + int readIdx = 0; + reader.openArray("value"); + for (final PathPoint point in pathNode.points) { + frame._vertices[readIdx++] = reader.readFloat32("translationX"); + frame._vertices[readIdx++] = reader.readFloat32("translationY"); + if (point.pointType == PointType.straight) { + // radius + frame._vertices[readIdx++] = reader.readFloat32("radius"); + } else { + // in/out + frame._vertices[readIdx++] = reader.readFloat32("inValueX"); + frame._vertices[readIdx++] = reader.readFloat32("inValueY"); + frame._vertices[readIdx++] = reader.readFloat32("outValueX"); + frame._vertices[readIdx++] = reader.readFloat32("outValueY"); + } + } + reader.closeArray(); + + pathNode.makeVertexDeform(); + return frame; + } +} + +class KeyFramePosX extends KeyFrameNumeric { + @override + void setValue(ActorComponent component, double value, double mix) { + ActorNode node = component as ActorNode; + node.x = node.x * (1.0 - mix) + value * mix; + } + + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFramePosX frame = KeyFramePosX(); + if (KeyFrameNumeric.read(reader, frame)) { + return frame; + } + return null; + } +} + +class KeyFramePosY extends KeyFrameNumeric { + @override + void setValue(ActorComponent component, double value, double mix) { + ActorNode node = component as ActorNode; + node.y = node.y * (1.0 - mix) + value * mix; + } + + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFramePosY frame = KeyFramePosY(); + if (KeyFrameNumeric.read(reader, frame)) { + return frame; + } + return null; + } +} + +class KeyFrameRadial extends KeyFrameWithInterpolation { + Float32List _value; + Float32List get value => _value; + + @override + void apply(ActorComponent component, double mix) { + RadialGradientColor radial = component as RadialGradientColor; + + int ridx = 0; + int wi = 0; + + if (mix == 1.0) { + radial.secondaryRadiusScale = value[ridx++]; + radial.start[0] = _value[ridx++]; + radial.start[1] = _value[ridx++]; + radial.end[0] = _value[ridx++]; + radial.end[1] = _value[ridx++]; + + while (ridx < _value.length && wi < radial.colorStops.length) { + radial.colorStops[wi++] = _value[ridx++]; + } + } else { + double imix = 1.0 - mix; + radial.secondaryRadiusScale = + radial.secondaryRadiusScale * imix + value[ridx++] * mix; + radial.start[0] = radial.start[0] * imix + _value[ridx++] * mix; + radial.start[1] = radial.start[1] * imix + _value[ridx++] * mix; + radial.end[0] = radial.end[0] * imix + _value[ridx++] * mix; + radial.end[1] = radial.end[1] * imix + _value[ridx++] * mix; + + while (ridx < _value.length && wi < radial.colorStops.length) { + radial.colorStops[wi] = radial.colorStops[wi] * imix + _value[ridx++]; + wi++; + } + } + radial.markPaintDirty(); + } + + @override + void applyInterpolation( + ActorComponent component, double time, KeyFrame toFrame, double mix) { + RadialGradientColor radial = component as RadialGradientColor; + Float32List v = (toFrame as KeyFrameRadial)._value; + + double f = (time - _time) / (toFrame.time - _time); + if (_interpolator != null) { + f = _interpolator.getEasedMix(f); + } + double fi = 1.0 - f; + + int ridx = 0; + int wi = 0; + + if (mix == 1.0) { + radial.secondaryRadiusScale = _value[ridx] * fi + v[ridx++] * f; + radial.start[0] = _value[ridx] * fi + v[ridx++] * f; + radial.start[1] = _value[ridx] * fi + v[ridx++] * f; + radial.end[0] = _value[ridx] * fi + v[ridx++] * f; + radial.end[1] = _value[ridx] * fi + v[ridx++] * f; + + while (ridx < v.length && wi < radial.colorStops.length) { + radial.colorStops[wi++] = _value[ridx] * fi + v[ridx++] * f; } } else { - double mixi = 1.0 - mix; - for (int i = 0; i < len; i++) { - wr[i] = wr[i] * mixi + _value[i] * mix; + double imix = 1.0 - mix; + + // Mix : first interpolate the KeyFrames, + // and then mix on top of the current value. + double val = _value[ridx] * fi + v[ridx] * f; + radial.secondaryRadiusScale = _value[ridx] * fi + v[ridx++] * f; + val = _value[ridx] * fi + v[ridx] * f; + radial.start[0] = _value[ridx++] * imix + val * mix; + val = _value[ridx] * fi + v[ridx] * f; + radial.start[1] = _value[ridx++] * imix + val * mix; + val = _value[ridx] * fi + v[ridx] * f; + radial.end[0] = _value[ridx++] * imix + val * mix; + val = _value[ridx] * fi + v[ridx] * f; + radial.end[1] = _value[ridx++] * imix + val * mix; + + while (ridx < v.length && wi < radial.colorStops.length) { + val = _value[ridx] * fi + v[ridx] * f; + radial.colorStops[wi] = radial.colorStops[wi] * imix + val * mix; + + ridx++; + wi++; } } - node.markPaintDirty(); + radial.markPaintDirty(); + } + + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameRadial frame = KeyFrameRadial(); + if (!KeyFrameWithInterpolation.read(reader, frame)) { + return null; + } + int len = reader.readUint16("length"); + frame._value = reader.readFloat32Array(len, "value"); + return frame; } } -class KeyFrameCornerRadius extends KeyFrameNumeric { +class KeyFrameRotation extends KeyFrameNumeric { + @override + void setValue(ActorComponent component, double value, double mix) { + ActorNode node = component as ActorNode; + node.rotation = node.rotation * (1.0 - mix) + value * mix; + } + static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameCornerRadius frame = KeyFrameCornerRadius(); + KeyFrameRotation frame = KeyFrameRotation(); if (KeyFrameNumeric.read(reader, frame)) { return frame; } return null; } +} +class KeyFrameScaleX extends KeyFrameNumeric { @override void setValue(ActorComponent component, double value, double mix) { - ActorRectangle node = component as ActorRectangle; - node.radius = node.radius * (1.0 - mix) + value * mix; + ActorNode node = component as ActorNode; + node.scaleX = node.scaleX * (1.0 - mix) + value * mix; + } + + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameScaleX frame = KeyFrameScaleX(); + if (KeyFrameNumeric.read(reader, frame)) { + return frame; + } + return null; } } -class KeyFrameGradient extends KeyFrameWithInterpolation { - Float32List _value; - Float32List get value => _value; +class KeyFrameScaleY extends KeyFrameNumeric { + @override + void setValue(ActorComponent component, double value, double mix) { + ActorNode node = component as ActorNode; + node.scaleY = node.scaleY * (1.0 - mix) + value * mix; + } static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameGradient frame = KeyFrameGradient(); - if (!KeyFrameWithInterpolation.read(reader, frame)) { - return null; + KeyFrameScaleY frame = KeyFrameScaleY(); + if (KeyFrameNumeric.read(reader, frame)) { + return frame; + } + return null; + } +} + +class KeyFrameSequence extends KeyFrameNumeric { + @override + void setValue(ActorComponent component, double value, double mix) { + ActorImage node = component as ActorImage; + int frameIndex = value.floor() % node.sequenceFrames.length; + if (frameIndex < 0) { + frameIndex += node.sequenceFrames.length; + } + node.sequenceFrame = frameIndex; + } + + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameSequence frame = KeyFrameSequence(); + if (KeyFrameNumeric.read(reader, frame)) { + return frame; + } + return null; + } +} + +class KeyFrameShadowColor extends KeyFrameWithInterpolation { + Float32List _value; + + Float32List get value { + return _value; + } + + @override + void apply(ActorComponent component, double mix) { + ActorShadow shadow = component as ActorShadow; + int l = _value.length; + Float32List wr = shadow.color; + if (mix == 1.0) { + for (int i = 0; i < l; i++) { + wr[i] = _value[i]; + } + } else { + double mixi = 1.0 - mix; + for (int i = 0; i < l; i++) { + wr[i] = wr[i] * mixi + _value[i] * mix; + } } - int len = reader.readUint16("length"); - frame._value = reader.readFloat32Array(len, "value"); - return frame; } @override void applyInterpolation( ActorComponent component, double time, KeyFrame toFrame, double mix) { - GradientColor gradient = component as GradientColor; - Float32List v = (toFrame as KeyFrameGradient)._value; + ActorShadow shadow = component as ActorShadow; + Float32List wr = shadow.color; + Float32List to = (toFrame as KeyFrameShadowColor)._value; + int l = _value.length; double f = (time - _time) / (toFrame.time - _time); if (_interpolator != null) { f = _interpolator.getEasedMix(f); } double fi = 1.0 - f; - - int ridx = 0; - int wi = 0; - if (mix == 1.0) { - gradient.start[0] = _value[ridx] * fi + v[ridx++] * f; - gradient.start[1] = _value[ridx] * fi + v[ridx++] * f; - gradient.end[0] = _value[ridx] * fi + v[ridx++] * f; - gradient.end[1] = _value[ridx] * fi + v[ridx++] * f; - - while (ridx < v.length && wi < gradient.colorStops.length) { - gradient.colorStops[wi++] = _value[ridx] * fi + v[ridx++] * f; + for (int i = 0; i < l; i++) { + wr[i] = _value[i] * fi + to[i] * f; } } else { - double imix = 1.0 - mix; + double mixi = 1.0 - mix; + for (int i = 0; i < l; i++) { + double v = _value[i] * fi + to[i] * f; - // Mix : first interpolate the KeyFrames, - // and then mix on top of the current value. - double val = _value[ridx] * fi + v[ridx] * f; - gradient.start[0] = gradient.start[0] * imix + val * mix; - ridx++; + wr[i] = wr[i] * mixi + v * mix; + } + } + } - val = _value[ridx] * fi + v[ridx] * f; - gradient.start[1] = gradient.start[1] * imix + val * mix; - ridx++; + @override + void setNext(KeyFrame frame) { + // Do nothing. + } - val = _value[ridx] * fi + v[ridx] * f; - gradient.end[0] = gradient.end[0] * imix + val * mix; - ridx++; + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameShadowColor frame = KeyFrameShadowColor(); + if (!KeyFrameWithInterpolation.read(reader, frame)) { + return null; + } - val = _value[ridx] * fi + v[ridx] * f; - gradient.end[1] = gradient.end[1] * imix + val * mix; - ridx++; + frame._value = reader.readFloat32Array(4, "value"); + return frame; + } +} - while (ridx < v.length && wi < gradient.colorStops.length) { - val = _value[ridx] * fi + v[ridx] * f; - gradient.colorStops[wi] = gradient.colorStops[wi] * imix + val * mix; +class KeyFrameShapeHeight extends KeyFrameNumeric { + @override + void setValue(ActorComponent component, double value, double mix) { + if (component == null) return; - ridx++; - wi++; - } + if (component is ActorProceduralPath) { + component.height = component.height * (1.0 - mix) + value * mix; } - gradient.markPaintDirty(); } + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameShapeHeight frame = KeyFrameShapeHeight(); + if (KeyFrameNumeric.read(reader, frame)) { + return frame; + } + return null; + } +} + +class KeyFrameShapeWidth extends KeyFrameNumeric { @override - void apply(ActorComponent component, double mix) { - GradientColor gradient = component as GradientColor; + void setValue(ActorComponent component, double value, double mix) { + if (component == null) return; - int ridx = 0; - int wi = 0; + if (component is ActorProceduralPath) { + component.width = component.width * (1.0 - mix) + value * mix; + } + } - if (mix == 1.0) { - gradient.start[0] = _value[ridx++]; - gradient.start[1] = _value[ridx++]; - gradient.end[0] = _value[ridx++]; - gradient.end[1] = _value[ridx++]; + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameShapeWidth frame = KeyFrameShapeWidth(); + if (KeyFrameNumeric.read(reader, frame)) { + return frame; + } + return null; + } +} - while (ridx < _value.length && wi < gradient.colorStops.length) { - gradient.colorStops[wi++] = _value[ridx++]; - } - } else { - double imix = 1.0 - mix; - gradient.start[0] = gradient.start[0] * imix + _value[ridx++] * mix; - gradient.start[1] = gradient.start[1] * imix + _value[ridx++] * mix; - gradient.end[0] = gradient.end[0] * imix + _value[ridx++] * mix; - gradient.end[1] = gradient.end[1] * imix + _value[ridx++] * mix; +class KeyFrameStringProperty extends KeyFrame { + String _value; + @override + void apply(ActorComponent component, double mix) { + // CustomStringProperty prop = component as CustomStringProperty; + // prop.value = _value; + } - while (ridx < _value.length && wi < gradient.colorStops.length) { - gradient.colorStops[wi] = - gradient.colorStops[wi] * imix + _value[ridx++]; - wi++; - } + @override + void applyInterpolation( + ActorComponent component, double time, KeyFrame toFrame, double mix) { + apply(component, mix); + } + + @override + void setNext(KeyFrame frame) { + // Do nothing. + } + + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameStringProperty frame = KeyFrameStringProperty(); + if (!KeyFrame.read(reader, frame)) { + return null; } - gradient.markPaintDirty(); + frame._value = reader.readString("value"); + return frame; } } -class KeyFrameRadial extends KeyFrameWithInterpolation { +class KeyFrameStrokeColor extends KeyFrameWithInterpolation { Float32List _value; - Float32List get value => _value; - static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameRadial frame = KeyFrameRadial(); - if (!KeyFrameWithInterpolation.read(reader, frame)) { - return null; + Float32List get value { + return _value; + } + + @override + void apply(ActorComponent component, double mix) { + ColorStroke node = component as ColorStroke; + Float32List wr = node.color; + int len = wr.length; + if (mix == 1.0) { + for (int i = 0; i < len; i++) { + wr[i] = _value[i]; + } + } else { + double mixi = 1.0 - mix; + for (int i = 0; i < len; i++) { + wr[i] = wr[i] * mixi + _value[i] * mix; + } } - int len = reader.readUint16("length"); - frame._value = reader.readFloat32Array(len, "value"); - return frame; + node.markPaintDirty(); } @override void applyInterpolation( ActorComponent component, double time, KeyFrame toFrame, double mix) { - RadialGradientColor radial = component as RadialGradientColor; - Float32List v = (toFrame as KeyFrameRadial)._value; + ColorStroke cs = component as ColorStroke; + Float32List wr = cs.color; + Float32List to = (toFrame as KeyFrameStrokeColor)._value; + int len = _value.length; double f = (time - _time) / (toFrame.time - _time); if (_interpolator != null) { f = _interpolator.getEasedMix(f); } double fi = 1.0 - f; - - int ridx = 0; - int wi = 0; - if (mix == 1.0) { - radial.secondaryRadiusScale = _value[ridx] * fi + v[ridx++] * f; - radial.start[0] = _value[ridx] * fi + v[ridx++] * f; - radial.start[1] = _value[ridx] * fi + v[ridx++] * f; - radial.end[0] = _value[ridx] * fi + v[ridx++] * f; - radial.end[1] = _value[ridx] * fi + v[ridx++] * f; - - while (ridx < v.length && wi < radial.colorStops.length) { - radial.colorStops[wi++] = _value[ridx] * fi + v[ridx++] * f; + for (int i = 0; i < len; i++) { + wr[i] = _value[i] * fi + to[i] * f; } } else { - double imix = 1.0 - mix; - - // Mix : first interpolate the KeyFrames, - // and then mix on top of the current value. - double val = _value[ridx] * fi + v[ridx] * f; - radial.secondaryRadiusScale = _value[ridx] * fi + v[ridx++] * f; - val = _value[ridx] * fi + v[ridx] * f; - radial.start[0] = _value[ridx++] * imix + val * mix; - val = _value[ridx] * fi + v[ridx] * f; - radial.start[1] = _value[ridx++] * imix + val * mix; - val = _value[ridx] * fi + v[ridx] * f; - radial.end[0] = _value[ridx++] * imix + val * mix; - val = _value[ridx] * fi + v[ridx] * f; - radial.end[1] = _value[ridx++] * imix + val * mix; - - while (ridx < v.length && wi < radial.colorStops.length) { - val = _value[ridx] * fi + v[ridx] * f; - radial.colorStops[wi] = radial.colorStops[wi] * imix + val * mix; + double mixi = 1.0 - mix; + for (int i = 0; i < len; i++) { + double v = _value[i] * fi + to[i] * f; - ridx++; - wi++; + wr[i] = wr[i] * mixi + v * mix; } } - radial.markPaintDirty(); + cs.markPaintDirty(); } - @override - void apply(ActorComponent component, double mix) { - RadialGradientColor radial = component as RadialGradientColor; - - int ridx = 0; - int wi = 0; - - if (mix == 1.0) { - radial.secondaryRadiusScale = value[ridx++]; - radial.start[0] = _value[ridx++]; - radial.start[1] = _value[ridx++]; - radial.end[0] = _value[ridx++]; - radial.end[1] = _value[ridx++]; - - while (ridx < _value.length && wi < radial.colorStops.length) { - radial.colorStops[wi++] = _value[ridx++]; - } - } else { - double imix = 1.0 - mix; - radial.secondaryRadiusScale = - radial.secondaryRadiusScale * imix + value[ridx++] * mix; - radial.start[0] = radial.start[0] * imix + _value[ridx++] * mix; - radial.start[1] = radial.start[1] * imix + _value[ridx++] * mix; - radial.end[0] = radial.end[0] * imix + _value[ridx++] * mix; - radial.end[1] = radial.end[1] * imix + _value[ridx++] * mix; - - while (ridx < _value.length && wi < radial.colorStops.length) { - radial.colorStops[wi] = radial.colorStops[wi] * imix + _value[ridx++]; - wi++; - } + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameStrokeColor frame = KeyFrameStrokeColor(); + if (!KeyFrameWithInterpolation.read(reader, frame)) { + return null; } - radial.markPaintDirty(); + frame._value = reader.readFloat32Array(4, "value"); + return frame; } } -class KeyFrameShapeWidth extends KeyFrameNumeric { +class KeyFrameStrokeEnd extends KeyFrameNumeric { + @override + void setValue(ActorComponent component, double value, double mix) { + if (component == null) return; + + ActorStroke star = component as ActorStroke; + star.trimEnd = star.trimEnd * (1.0 - mix) + value * mix; + } + static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameShapeWidth frame = KeyFrameShapeWidth(); + KeyFrameStrokeEnd frame = KeyFrameStrokeEnd(); if (KeyFrameNumeric.read(reader, frame)) { return frame; } return null; } +} +class KeyFrameStrokeOffset extends KeyFrameNumeric { @override void setValue(ActorComponent component, double value, double mix) { if (component == null) return; - if (component is ActorProceduralPath) { - component.width = component.width * (1.0 - mix) + value * mix; - } + ActorStroke star = component as ActorStroke; + star.trimOffset = star.trimOffset * (1.0 - mix) + value * mix; } -} -class KeyFrameShapeHeight extends KeyFrameNumeric { static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameShapeHeight frame = KeyFrameShapeHeight(); + KeyFrameStrokeOffset frame = KeyFrameStrokeOffset(); if (KeyFrameNumeric.read(reader, frame)) { return frame; } return null; } +} +class KeyFrameStrokeStart extends KeyFrameNumeric { @override void setValue(ActorComponent component, double value, double mix) { if (component == null) return; - if (component is ActorProceduralPath) { - component.height = component.height * (1.0 - mix) + value * mix; - } + ActorStroke star = component as ActorStroke; + star.trimStart = star.trimStart * (1.0 - mix) + value * mix; } -} -class KeyFrameStrokeWidth extends KeyFrameNumeric { static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameStrokeWidth frame = KeyFrameStrokeWidth(); + KeyFrameStrokeStart frame = KeyFrameStrokeStart(); if (KeyFrameNumeric.read(reader, frame)) { return frame; } return null; } +} +class KeyFrameStrokeWidth extends KeyFrameNumeric { @override void setValue(ActorComponent component, double value, double mix) { if (component == null) return; ActorStroke stroke = component as ActorStroke; stroke.width = stroke.width * (1.0 - mix) + value * mix; } -} -class KeyFrameInnerRadius extends KeyFrameNumeric { static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameInnerRadius frame = KeyFrameInnerRadius(); + KeyFrameStrokeWidth frame = KeyFrameStrokeWidth(); if (KeyFrameNumeric.read(reader, frame)) { return frame; } return null; } +} +class KeyFrameTrigger extends KeyFrame { @override - void setValue(ActorComponent component, double value, double mix) { - if (component == null) return; + void apply(ActorComponent component, double mix) {} - ActorStar star = component as ActorStar; - star.innerRadius = star.innerRadius * (1.0 - mix) + value * mix; + @override + void applyInterpolation( + ActorComponent component, double time, KeyFrame toFrame, double mix) {} + + @override + void setNext(KeyFrame frame) { + // Do nothing. + } + + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameTrigger frame = KeyFrameTrigger(); + if (!KeyFrame.read(reader, frame)) { + return null; + } + return frame; } } -class KeyFrameStrokeStart extends KeyFrameNumeric { +abstract class KeyFrameWithInterpolation extends KeyFrame { + Interpolator _interpolator; + + Interpolator get interpolator { + return _interpolator; + } + + @override + void setNext(KeyFrame frame) { + // Null out the interpolator if the next frame doesn't validate. + // if(_interpolator != null && !_interpolator.setNextFrame(this, frame)) + // { + // _interpolator = null; + // } + } + + static bool read(StreamReader reader, KeyFrameWithInterpolation frame) { + if (!KeyFrame.read(reader, frame)) { + return false; + } + int type = reader.readUint8("interpolatorType"); + + InterpolationTypes actualType = interpolationTypesLookup[type]; + actualType ??= InterpolationTypes.linear; + + switch (actualType) { + case InterpolationTypes.hold: + frame._interpolator = HoldInterpolator.instance; + break; + case InterpolationTypes.linear: + frame._interpolator = LinearInterpolator.instance; + break; + case InterpolationTypes.cubic: + { + CubicInterpolator interpolator = CubicInterpolator(); + if (interpolator.read(reader)) { + frame._interpolator = interpolator; + } + break; + } + default: + frame._interpolator = null; + } + return true; + } +} + +class KeyFrameShadowOffsetX extends KeyFrameNumeric { + @override + void setValue(ActorComponent component, double value, double mix) { + ActorShadow node = component as ActorShadow; + node.offsetX = node.offsetX * (1.0 - mix) + value * mix; + } + static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameStrokeStart frame = KeyFrameStrokeStart(); + KeyFrameShadowOffsetX frame = KeyFrameShadowOffsetX(); if (KeyFrameNumeric.read(reader, frame)) { return frame; } return null; } +} +class KeyFrameShadowOffsetY extends KeyFrameNumeric { @override void setValue(ActorComponent component, double value, double mix) { - if (component == null) return; - - ActorStroke star = component as ActorStroke; - star.trimStart = star.trimStart * (1.0 - mix) + value * mix; + ActorShadow node = component as ActorShadow; + node.offsetY = node.offsetY * (1.0 - mix) + value * mix; } -} -class KeyFrameStrokeEnd extends KeyFrameNumeric { static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameStrokeEnd frame = KeyFrameStrokeEnd(); + KeyFrameShadowOffsetY frame = KeyFrameShadowOffsetY(); if (KeyFrameNumeric.read(reader, frame)) { return frame; } return null; } +} +class KeyFrameBlurX extends KeyFrameNumeric { @override void setValue(ActorComponent component, double value, double mix) { - if (component == null) return; - - ActorStroke star = component as ActorStroke; - star.trimEnd = star.trimEnd * (1.0 - mix) + value * mix; + ActorBlur node = component as ActorBlur; + node.blurX = node.blurX * (1.0 - mix) + value * mix; } -} -class KeyFrameStrokeOffset extends KeyFrameNumeric { static KeyFrame read(StreamReader reader, ActorComponent component) { - KeyFrameStrokeOffset frame = KeyFrameStrokeOffset(); + KeyFrameBlurX frame = KeyFrameBlurX(); if (KeyFrameNumeric.read(reader, frame)) { return frame; } return null; } +} +class KeyFrameBlurY extends KeyFrameNumeric { @override void setValue(ActorComponent component, double value, double mix) { - if (component == null) return; + ActorBlur node = component as ActorBlur; + node.blurY = node.blurY * (1.0 - mix) + value * mix; + } - ActorStroke star = component as ActorStroke; - star.trimOffset = star.trimOffset * (1.0 - mix) + value * mix; + static KeyFrame read(StreamReader reader, ActorComponent component) { + KeyFrameBlurY frame = KeyFrameBlurY(); + if (KeyFrameNumeric.read(reader, frame)) { + return frame; + } + return null; } } diff --git a/flare_dart/lib/animation/property_types.dart b/flare_dart/lib/animation/property_types.dart index c2a9e43..77b28cf 100644 --- a/flare_dart/lib/animation/property_types.dart +++ b/flare_dart/lib/animation/property_types.dart @@ -35,6 +35,11 @@ class PropertyTypes { static const int strokeStart = 33; static const int strokeEnd = 34; static const int strokeOffset = 35; + static const int color = 36; + static const int offsetX = 37; + static const int offsetY = 38; + static const int blurX = 39; + static const int blurY = 40; } const Map propertyTypesMap = { @@ -74,4 +79,9 @@ const Map propertyTypesMap = { "strokeStart": PropertyTypes.strokeStart, "strokeEnd": PropertyTypes.strokeEnd, "strokeOffset": PropertyTypes.strokeOffset, + "color": PropertyTypes.color, + "offsetX": PropertyTypes.offsetX, + "offsetY": PropertyTypes.offsetY, + "blurX": PropertyTypes.blurX, + "blurY": PropertyTypes.blurY }; diff --git a/flare_dart/lib/block_types.dart b/flare_dart/lib/block_types.dart index b62e140..e11411f 100644 --- a/flare_dart/lib/block_types.dart +++ b/flare_dart/lib/block_types.dart @@ -44,7 +44,12 @@ const Map blockTypesMap = { "star": BlockTypes.actorStar, "polygon": BlockTypes.actorPolygon, "artboards": BlockTypes.artboards, - "artboard": BlockTypes.actorArtboard + "artboard": BlockTypes.actorArtboard, + "effectRenderer": BlockTypes.actorLayerEffectRenderer, + "mask": BlockTypes.actorMask, + "blur": BlockTypes.actorBlur, + "dropShadow": BlockTypes.actorDropShadow, + "innerShadow": BlockTypes.actorInnerShadow }; class BlockTypes { @@ -96,4 +101,9 @@ class BlockTypes { static const int actorSkin = 113; static const int actorArtboard = 114; static const int artboards = 115; + static const int actorLayerEffectRenderer = 116; + static const int actorMask = 117; + static const int actorBlur = 118; + static const int actorDropShadow = 119; + static const int actorInnerShadow = 120; } diff --git a/flare_dart/lib/jelly_component.dart b/flare_dart/lib/jelly_component.dart index ecf4579..4817065 100644 --- a/flare_dart/lib/jelly_component.dart +++ b/flare_dart/lib/jelly_component.dart @@ -207,13 +207,13 @@ class JellyComponent extends ActorComponent { bone.jelly = this; // Get jellies. - List children = bone.children; + var children = bone.children; if (children == null) { return; } _bones = []; - for (final ActorNode child in children) { + for (final child in children) { if (child is ActorJellyBone) { _bones.add(child); // Make sure the jelly doesn't update until diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 69512c8..31cc75b 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,7 +1,7 @@ name: flare_dart description: Vector design and runtime animation. -version: 2.2.5 -author: "2Dimensions Team " +version: 2.3.0 +author: "Rive Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: sdk: ">=2.1.0 <3.0.0" diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 92ea1b9..e948099 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.8.0] - 2019-12-05 17:34:01 + +- Support for layer effects including masking, drop shadows, inner shadows, and blurs. + ## [1.7.3] - 2019-11-20 16:37:18 - Fixed gradient transformations for shapes with transformAffectsStroke set to true. diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index 7222ff6..2ebc4fa 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -7,6 +7,7 @@ import 'dart:ui' as ui; import 'package:flare_dart/actor_flags.dart'; import 'package:flare_dart/actor_image.dart'; +import 'package:flare_dart/actor_mask.dart'; import 'package:flare_dart/math/aabb.dart'; import 'package:flutter/services.dart'; @@ -26,6 +27,9 @@ import 'package:flare_dart/actor_drawable.dart'; import 'package:flare_dart/math/mat2d.dart'; import 'package:flare_dart/math/vec2d.dart'; import 'package:flare_dart/path_point.dart'; +import 'package:flare_dart/actor_drop_shadow.dart'; +import 'package:flare_dart/actor_inner_shadow.dart'; +import 'package:flare_dart/actor_layer_effect_renderer.dart'; import 'trim_path.dart'; export 'package:flare_dart/animation/actor_animation.dart'; @@ -740,6 +744,21 @@ class FlutterActor extends Actor { return FlutterRadialStroke(); } + @override + ActorDropShadow makeDropShadow() { + return FlutterActorDropShadow(); + } + + @override + ActorLayerEffectRenderer makeLayerEffectRenderer() { + return FlutterActorLayerEffectRenderer(); + } + + @override + ActorInnerShadow makeInnerShadow() { + return FlutterActorInnerShadow(); + } + static Future loadFromByteData(ByteData data) async { //ByteData data = await context.bundle.load(context.filename); FlutterActor actor = FlutterActor(); @@ -1257,3 +1276,260 @@ class FlutterActorImage extends ActorImage with FlutterActorDrawable { } } } + +class FlutterActorDropShadow extends ActorDropShadow { + @override + int get blendModeId { + return blendMode.index; + } + + @override + set blendModeId(int index) { + blendMode = ui.BlendMode.values[index]; + } + + ui.BlendMode blendMode; +} + +class FlutterActorInnerShadow extends ActorInnerShadow { + @override + int get blendModeId { + return blendMode.index; + } + + @override + set blendModeId(int index) { + blendMode = ui.BlendMode.values[index]; + } + + ui.BlendMode blendMode; +} + +class FlutterActorLayerEffectRenderer extends ActorLayerEffectRenderer + with FlutterActorDrawable { + @override + void draw(ui.Canvas canvas) { + var aabb = artboard.artboardAABB(); + Rect bounds = Rect.fromLTRB(aabb[0], aabb[1], aabb[2], aabb[3]); + + double baseBlurX = 0; + double baseBlurY = 0; + Paint layerPaint = Paint(); + Color layerColor = Colors.white.withOpacity(parent.renderOpacity); + layerPaint.color = layerColor; + if (blur?.isActive ?? false) { + baseBlurX = blur.blurX; + baseBlurY = blur.blurY; + layerPaint.imageFilter = + ui.ImageFilter.blur(sigmaX: baseBlurX, sigmaY: baseBlurY); + } + + if (dropShadows.isNotEmpty) { + for (final dropShadow in dropShadows) { + if (!dropShadow.isActive) { + continue; + } + // DropShadow: To draw a shadow we just draw the shape (with + // drawPass) with a custom color and image (blur) filter before + // drawing the main shape. + canvas.save(); + var color = dropShadow.color; + canvas.translate(dropShadow.offsetX, dropShadow.offsetY); + var shadowPaint = Paint() + ..color = layerColor + ..imageFilter = ui.ImageFilter.blur( + sigmaX: dropShadow.blurX + baseBlurX, + sigmaY: dropShadow.blurY + baseBlurY) + ..colorFilter = ui.ColorFilter.mode( + ui.Color.fromRGBO( + (color[0] * 255.0).round(), + (color[1] * 255.0).round(), + (color[2] * 255.0).round(), + color[3]), + ui.BlendMode.srcIn) + ..blendMode = ui.BlendMode.values[dropShadow.blendModeId]; + + drawPass(canvas, bounds, shadowPaint); + canvas.restore(); + canvas.restore(); + } + } + drawPass(canvas, bounds, layerPaint); + // Draw inner shadows on the main layer. + if (innerShadows.isNotEmpty) { + for (final innerShadow in innerShadows) { + if (!innerShadow.isActive) { + continue; + } + var blendMode = ui.BlendMode.values[innerShadow.blendModeId]; + bool extraBlendPass = blendMode != ui.BlendMode.srcOver; + if (extraBlendPass) { + // if we have a custom blend mode, then we can't just srcATop with + // what's already been drawn. We need to draw the contents as a mask + // to then draw the shadow on top of with srcIn to only show the + // shadow and finally composite with the desired blend mode requested + // here. + var extraLayerPaint = Paint()..blendMode = blendMode; + drawPass(canvas, bounds, extraLayerPaint); + } + + // because there's no way to compose image filters (use two filters in + // one) we have to use an extra layer to invert the alpha for the inner + // shadow before blurring. + + var color = innerShadow.color; + var shadowPaint = Paint() + ..color = layerColor + ..blendMode = + extraBlendPass ? ui.BlendMode.srcIn : ui.BlendMode.srcATop + ..imageFilter = ui.ImageFilter.blur( + sigmaX: innerShadow.blurX + baseBlurX, + sigmaY: innerShadow.blurY + baseBlurY) + ..colorFilter = ui.ColorFilter.mode( + ui.Color.fromRGBO( + (color[0] * 255.0).round(), + (color[1] * 255.0).round(), + (color[2] * 255.0).round(), + color[3]), + ui.BlendMode.srcIn); + + canvas.saveLayer(bounds, shadowPaint); + canvas.translate(innerShadow.offsetX, innerShadow.offsetY); + + // Invert the alpha to compute inner part. + var invertPaint = Paint() + ..colorFilter = const ui.ColorFilter.matrix([ + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + -1, + 255, + ]); + drawPass(canvas, bounds, invertPaint); + // restore draw pass (inverted aint) + canvas.restore(); + // restore save layer used to that blurs and colors the shadow + canvas.restore(); + + if (extraBlendPass) { + // Restore extra layer used to draw the contents to clip against (we + // clip by drawing with srcIn) + canvas.restore(); + } + } + } + canvas.restore(); + } + + void drawPass(ui.Canvas canvas, Rect bounds, Paint layerPaint) { + canvas.saveLayer(bounds, layerPaint); + for (final drawable in drawables) { + if (drawable is FlutterActorDrawable) { + (drawable as FlutterActorDrawable).draw(canvas); + } + } + + for (final renderMask in renderMasks) { + var mask = renderMask.mask; + if (!mask.isActive) { + continue; + } + + var maskPaint = Paint(); + switch (mask.maskType) { + case MaskType.invertedAlpha: + maskPaint.colorFilter = const ui.ColorFilter.matrix( + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1]); + break; + case MaskType.luminance: + maskPaint.colorFilter = const ui.ColorFilter.matrix([ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.33, + 0.59, + 0.11, + 0, + 0 + ]); + break; + case MaskType.invertedLuminance: + maskPaint.colorFilter = const ui.ColorFilter.matrix([ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -0.33, + -0.59, + -0.11, + 0, + 1 + ]); + break; + case MaskType.alpha: + default: + maskPaint.colorFilter = const ui.ColorFilter.matrix( + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0]); + break; + } + + maskPaint.blendMode = BlendMode.dstIn; + canvas.saveLayer(bounds, maskPaint); + for (final drawable in renderMask.drawables) { + bool wasHidden = drawable.isHidden; + if (wasHidden) { + drawable.isHidden = false; + } + (drawable as FlutterActorDrawable).draw(canvas); + if (wasHidden) { + drawable.isHidden = true; + } + } + canvas.restore(); + } + } + + @override + void onBlendModeChanged(ui.BlendMode blendMode) { + // We don't currently support custom blend modes on the layer effect + // renderer. + } +} diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 82b416e..898b8dc 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,15 +1,14 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.7.3 -author: "2Dimensions Team " +version: 1.8.0 +author: "Rive Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: sdk: ">=2.2.0 <3.0.0" - flutter: ">=1.7.8+hotfix.3" dependencies: flutter: sdk: flutter - flare_dart: ^2.2.5 + flare_dart: ^2.3.0 dev_dependencies: flutter_test: sdk: flutter \ No newline at end of file From b1602d99ce77397823e2c9443ec3cd42959bc471 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Thu, 5 Dec 2019 18:33:29 -0500 Subject: [PATCH 48/59] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 446c92f53c49ebdf068879c5979eea4a69872726 Author: Luigi Rosso Date: Thu Dec 5 18:27:48 2019 -0500 Squashed commit of the following: commit f0b24f48568c390226005a3e9cd28d6f14318db9 Author: Luigi Rosso Date: Thu Dec 5 18:24:59 2019 -0500 Minor fixes for analyze. commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 393c22461e127714a3a25c986bb59a666cba72ac Author: Luigi Rosso Date: Thu Dec 5 17:48:04 2019 -0500 Squashed commit of the following: commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c911f4114f344146ef273224d651e18d2d67725f Author: Luigi Rosso Date: Wed Nov 20 16:41:08 2019 -0800 Squashed commit of the following: commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 8fcd773a12c11bbb0b6bec1c8829b7af4d341bae Author: Luigi Rosso Date: Thu Nov 7 15:09:48 2019 -0800 Squashed commit of the following: commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 0b759dfca5498b90b79c8be6209d3feaae882e31 Author: Luigi Rosso Date: Thu Nov 7 12:34:28 2019 -0800 Squashed commit of the following: commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit ee997b7233a621f934f2bac8cc73cf9923126180 Author: Luigi Rosso Date: Wed Nov 6 17:32:55 2019 -0800 Squashed commit of the following: commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 9ec6c71b6802d6d1dea96cc1643d5546e52348f3 Author: Luigi Rosso Date: Tue Oct 29 12:57:01 2019 -0700 Squashed commit of the following: commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c74bac6831478c48d57bb2be207ec06bac57abff Author: Luigi Rosso Date: Fri Oct 11 13:00:27 2019 -0700 Squashed commit of the following: commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- example/checkbox/pubspec.lock | 209 ------------------ example/slider/pubspec.lock | 96 ++++++-- flare_flutter/android/local.properties | 4 +- .../ios/Runner/GeneratedPluginRegistrant.h | 3 + 4 files changed, 82 insertions(+), 230 deletions(-) delete mode 100644 example/checkbox/pubspec.lock diff --git a/example/checkbox/pubspec.lock b/example/checkbox/pubspec.lock deleted file mode 100644 index 2f6e59c..0000000 --- a/example/checkbox/pubspec.lock +++ /dev/null @@ -1,209 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - archive: - dependency: transitive - description: - name: archive - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.10" - args: - dependency: transitive - description: - name: args - url: "https://pub.dartlang.org" - source: hosted - version: "1.5.2" - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.3.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.2" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.14.11" - convert: - dependency: transitive - description: - name: convert - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.1" - crypto: - dependency: transitive - description: - name: crypto - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.3" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.2" - flare_dart: - dependency: transitive - description: - path: "../../flare_dart" - relative: true - source: path - version: "2.2.2" - flare_flutter: - dependency: "direct main" - description: - path: "../../flare_flutter" - relative: true - source: path - version: "1.6.3" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - image: - dependency: transitive - description: - name: image - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.4" - matcher: - dependency: transitive - description: - name: matcher - url: "https://pub.dartlang.org" - source: hosted - version: "0.12.5" - meta: - dependency: transitive - description: - name: meta - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.7" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.6.4" - pedantic: - dependency: transitive - description: - name: pedantic - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0+1" - petitparser: - dependency: transitive - description: - name: petitparser - url: "https://pub.dartlang.org" - source: hosted - version: "2.4.0" - quiver: - dependency: transitive - description: - name: quiver - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.5" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - url: "https://pub.dartlang.org" - source: hosted - version: "1.5.5" - stack_trace: - dependency: transitive - description: - name: stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "1.9.3" - stream_channel: - dependency: transitive - description: - name: stream_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" - term_glyph: - dependency: transitive - description: - name: term_glyph - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0" - test_api: - dependency: transitive - description: - name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.5" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.6" - vector_math: - dependency: transitive - description: - name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.8" - xml: - dependency: transitive - description: - name: xml - url: "https://pub.dartlang.org" - source: hosted - version: "3.5.0" -sdks: - dart: ">=2.4.0 <3.0.0" diff --git a/example/slider/pubspec.lock b/example/slider/pubspec.lock index 51a53c3..7f515ba 100644 --- a/example/slider/pubspec.lock +++ b/example/slider/pubspec.lock @@ -1,20 +1,34 @@ # Generated by pub -# See https://www.dartlang.org/tools/pub/glossary#lockfile +# See https://dart.dev/tools/pub/glossary#lockfile packages: + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.2" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.0.8" + version: "2.4.0" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "1.0.5" charcode: dependency: transitive description: @@ -29,6 +43,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.14.11" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" cupertino_icons: dependency: "direct main" description: @@ -37,19 +65,21 @@ packages: source: hosted version: "0.1.2" flare_dart: - dependency: "direct main" + dependency: transitive description: - path: "../../flare_dart" - relative: true - source: path - version: "1.1.0" + path: flare_dart + ref: dev + resolved-ref: "393c22461e127714a3a25c986bb59a666cba72ac" + url: "git://github.com/2d-inc/Flare-Flutter.git" + source: git + version: "2.3.0" flare_flutter: dependency: "direct main" description: path: "../../flare_flutter" relative: true source: path - version: "1.1.0" + version: "1.8.0" flutter: dependency: "direct main" description: flutter @@ -60,34 +90,55 @@ packages: description: flutter source: sdk version: "0.0.0" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.3+1" + version: "0.12.6" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.1.6" + version: "1.1.8" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.6.2" + version: "1.6.4" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0+1" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.0" quiver: dependency: transitive description: name: quiver url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.5" sky_engine: dependency: transitive description: flutter @@ -99,7 +150,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.4.1" + version: "1.5.5" stack_trace: dependency: transitive description: @@ -113,28 +164,28 @@ packages: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "1.6.8" + version: "2.0.0" string_scanner: dependency: transitive description: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "1.0.5" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "1.1.0" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.1" + version: "0.2.11" typed_data: dependency: transitive description: @@ -149,5 +200,12 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.8" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "3.5.0" sdks: - dart: ">=2.1.0 <3.0.0" + dart: ">=2.4.0 <3.0.0" diff --git a/flare_flutter/android/local.properties b/flare_flutter/android/local.properties index 5cc61ea..82133b4 100644 --- a/flare_flutter/android/local.properties +++ b/flare_flutter/android/local.properties @@ -1,2 +1,2 @@ -sdk.dir=/usr/local/share/android-sdk -flutter.sdk=/Users/luigirosso/Projects/flutter \ No newline at end of file +sdk.dir=/Users/luigi/Library/Android/sdk +flutter.sdk=/Users/luigi/Projects/flutter/flutter \ No newline at end of file diff --git a/flare_flutter/ios/Runner/GeneratedPluginRegistrant.h b/flare_flutter/ios/Runner/GeneratedPluginRegistrant.h index 3b700eb..ed9a5c6 100644 --- a/flare_flutter/ios/Runner/GeneratedPluginRegistrant.h +++ b/flare_flutter/ios/Runner/GeneratedPluginRegistrant.h @@ -7,8 +7,11 @@ #import +NS_ASSUME_NONNULL_BEGIN + @interface GeneratedPluginRegistrant : NSObject + (void)registerWithRegistry:(NSObject*)registry; @end +NS_ASSUME_NONNULL_END #endif /* GeneratedPluginRegistrant_h */ From 1f4b4c5ab75b37efdd1733958416e33f9c753091 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Mon, 9 Dec 2019 19:43:07 -0500 Subject: [PATCH 49/59] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 9f82fa815c784e45d2788b68a7766e994017b9d1 Author: Luigi Rosso Date: Mon Dec 9 19:37:28 2019 -0500 Squashed commit of the following: commit 788c66200230765ba33f289cedddbc95e69c8de7 Author: Luigi Rosso Date: Mon Dec 9 19:35:25 2019 -0500 Fix for blur close to 0. commit f0b24f48568c390226005a3e9cd28d6f14318db9 Author: Luigi Rosso Date: Thu Dec 5 18:24:59 2019 -0500 Minor fixes for analyze. commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 446c92f53c49ebdf068879c5979eea4a69872726 Author: Luigi Rosso Date: Thu Dec 5 18:27:48 2019 -0500 Squashed commit of the following: commit f0b24f48568c390226005a3e9cd28d6f14318db9 Author: Luigi Rosso Date: Thu Dec 5 18:24:59 2019 -0500 Minor fixes for analyze. commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 393c22461e127714a3a25c986bb59a666cba72ac Author: Luigi Rosso Date: Thu Dec 5 17:48:04 2019 -0500 Squashed commit of the following: commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c911f4114f344146ef273224d651e18d2d67725f Author: Luigi Rosso Date: Wed Nov 20 16:41:08 2019 -0800 Squashed commit of the following: commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 8fcd773a12c11bbb0b6bec1c8829b7af4d341bae Author: Luigi Rosso Date: Thu Nov 7 15:09:48 2019 -0800 Squashed commit of the following: commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 0b759dfca5498b90b79c8be6209d3feaae882e31 Author: Luigi Rosso Date: Thu Nov 7 12:34:28 2019 -0800 Squashed commit of the following: commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit ee997b7233a621f934f2bac8cc73cf9923126180 Author: Luigi Rosso Date: Wed Nov 6 17:32:55 2019 -0800 Squashed commit of the following: commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 9ec6c71b6802d6d1dea96cc1643d5546e52348f3 Author: Luigi Rosso Date: Tue Oct 29 12:57:01 2019 -0700 Squashed commit of the following: commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c74bac6831478c48d57bb2be207ec06bac57abff Author: Luigi Rosso Date: Fri Oct 11 13:00:27 2019 -0700 Squashed commit of the following: commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- README.md | 2 +- example/checkbox/pubspec.lock | 211 ++++++++++++++++++++++++++++++++++ flare_flutter/CHANGELOG.md | 4 + flare_flutter/lib/flare.dart | 21 ++-- flare_flutter/pubspec.yaml | 2 +- 5 files changed, 230 insertions(+), 10 deletions(-) create mode 100644 example/checkbox/pubspec.lock diff --git a/README.md b/README.md index 9145124..315bb23 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ This repository has three primary branches: - This is the branch we publish to pub from. - This branch and the associated pub packages are guaranteed to work on the flutter stable channel. ``` - flare_flutter: ^1.8.0 + flare_flutter: ^1.8.1 ``` - dev - This branch has the latest changes should work with the flutter dev channel. diff --git a/example/checkbox/pubspec.lock b/example/checkbox/pubspec.lock new file mode 100644 index 0000000..7f515ba --- /dev/null +++ b/example/checkbox/pubspec.lock @@ -0,0 +1,211 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.2" + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.14.11" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" + flare_dart: + dependency: transitive + description: + path: flare_dart + ref: dev + resolved-ref: "393c22461e127714a3a25c986bb59a666cba72ac" + url: "git://github.com/2d-inc/Flare-Flutter.git" + source: git + version: "2.3.0" + flare_flutter: + dependency: "direct main" + description: + path: "../../flare_flutter" + relative: true + source: path + version: "1.8.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.6" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.8" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.4" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0+1" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.0" + quiver: + dependency: transitive + description: + name: quiver + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.5" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.3" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.11" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.6" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.8" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "3.5.0" +sdks: + dart: ">=2.4.0 <3.0.0" diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index e948099..01d0b46 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.8.1] - 2019-12-09 19:33:06 + +- Disable blur effects if they are less than a certain threshold. Skia seems to drop the whole layer if it's too close to zero (but not zero). + ## [1.8.0] - 2019-12-05 17:34:01 - Support for layer effects including masking, drop shadows, inner shadows, and blurs. diff --git a/flare_flutter/lib/flare.dart b/flare_flutter/lib/flare.dart index 2ebc4fa..ba7f1b6 100644 --- a/flare_flutter/lib/flare.dart +++ b/flare_flutter/lib/flare.dart @@ -1305,6 +1305,14 @@ class FlutterActorInnerShadow extends ActorInnerShadow { ui.BlendMode blendMode; } +ui.ImageFilter _blurFilter(double x, double y) { + double bx = x.abs() < 0.1 ? 0 : x; + double by = y.abs() < 0.1 ? 0 : y; + return bx == 0 && by == 0 + ? null + : ui.ImageFilter.blur(sigmaX: bx, sigmaY: by); +} + class FlutterActorLayerEffectRenderer extends ActorLayerEffectRenderer with FlutterActorDrawable { @override @@ -1320,8 +1328,7 @@ class FlutterActorLayerEffectRenderer extends ActorLayerEffectRenderer if (blur?.isActive ?? false) { baseBlurX = blur.blurX; baseBlurY = blur.blurY; - layerPaint.imageFilter = - ui.ImageFilter.blur(sigmaX: baseBlurX, sigmaY: baseBlurY); + layerPaint.imageFilter = _blurFilter(baseBlurX, baseBlurY); } if (dropShadows.isNotEmpty) { @@ -1337,9 +1344,8 @@ class FlutterActorLayerEffectRenderer extends ActorLayerEffectRenderer canvas.translate(dropShadow.offsetX, dropShadow.offsetY); var shadowPaint = Paint() ..color = layerColor - ..imageFilter = ui.ImageFilter.blur( - sigmaX: dropShadow.blurX + baseBlurX, - sigmaY: dropShadow.blurY + baseBlurY) + ..imageFilter = _blurFilter( + dropShadow.blurX + baseBlurX, dropShadow.blurY + baseBlurY) ..colorFilter = ui.ColorFilter.mode( ui.Color.fromRGBO( (color[0] * 255.0).round(), @@ -1382,9 +1388,8 @@ class FlutterActorLayerEffectRenderer extends ActorLayerEffectRenderer ..color = layerColor ..blendMode = extraBlendPass ? ui.BlendMode.srcIn : ui.BlendMode.srcATop - ..imageFilter = ui.ImageFilter.blur( - sigmaX: innerShadow.blurX + baseBlurX, - sigmaY: innerShadow.blurY + baseBlurY) + ..imageFilter = _blurFilter( + innerShadow.blurX + baseBlurX, innerShadow.blurY + baseBlurY) ..colorFilter = ui.ColorFilter.mode( ui.Color.fromRGBO( (color[0] * 255.0).round(), diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 898b8dc..a27ce0c 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.8.0 +version: 1.8.1 author: "Rive Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From c0dc63944aa43ebfc93de5e4c8e64bc3a8fa1317 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Mon, 16 Dec 2019 09:25:53 +0800 Subject: [PATCH 50/59] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 9116aa017a5c3fa64178707bc8a0b88acbf2de57 Author: Luigi Rosso Date: Mon Dec 16 09:24:22 2019 +0800 Squashed commit of the following: commit 0e815f5faa79db4109c0236d80d70d0776e4aa7d Author: Luigi Rosso Date: Mon Dec 16 09:21:52 2019 +0800 Fix for applying wrong animation to artboard. Issue #205. commit 788c66200230765ba33f289cedddbc95e69c8de7 Author: Luigi Rosso Date: Mon Dec 9 19:35:25 2019 -0500 Fix for blur close to 0. commit f0b24f48568c390226005a3e9cd28d6f14318db9 Author: Luigi Rosso Date: Thu Dec 5 18:24:59 2019 -0500 Minor fixes for analyze. commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 9f82fa815c784e45d2788b68a7766e994017b9d1 Author: Luigi Rosso Date: Mon Dec 9 19:37:28 2019 -0500 Squashed commit of the following: commit 788c66200230765ba33f289cedddbc95e69c8de7 Author: Luigi Rosso Date: Mon Dec 9 19:35:25 2019 -0500 Fix for blur close to 0. commit f0b24f48568c390226005a3e9cd28d6f14318db9 Author: Luigi Rosso Date: Thu Dec 5 18:24:59 2019 -0500 Minor fixes for analyze. commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 446c92f53c49ebdf068879c5979eea4a69872726 Author: Luigi Rosso Date: Thu Dec 5 18:27:48 2019 -0500 Squashed commit of the following: commit f0b24f48568c390226005a3e9cd28d6f14318db9 Author: Luigi Rosso Date: Thu Dec 5 18:24:59 2019 -0500 Minor fixes for analyze. commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 393c22461e127714a3a25c986bb59a666cba72ac Author: Luigi Rosso Date: Thu Dec 5 17:48:04 2019 -0500 Squashed commit of the following: commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c911f4114f344146ef273224d651e18d2d67725f Author: Luigi Rosso Date: Wed Nov 20 16:41:08 2019 -0800 Squashed commit of the following: commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 8fcd773a12c11bbb0b6bec1c8829b7af4d341bae Author: Luigi Rosso Date: Thu Nov 7 15:09:48 2019 -0800 Squashed commit of the following: commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 0b759dfca5498b90b79c8be6209d3feaae882e31 Author: Luigi Rosso Date: Thu Nov 7 12:34:28 2019 -0800 Squashed commit of the following: commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit ee997b7233a621f934f2bac8cc73cf9923126180 Author: Luigi Rosso Date: Wed Nov 6 17:32:55 2019 -0800 Squashed commit of the following: commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 9ec6c71b6802d6d1dea96cc1643d5546e52348f3 Author: Luigi Rosso Date: Tue Oct 29 12:57:01 2019 -0700 Squashed commit of the following: commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c74bac6831478c48d57bb2be207ec06bac57abff Author: Luigi Rosso Date: Fri Oct 11 13:00:27 2019 -0700 Squashed commit of the following: commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- README.md | 2 +- flare_dart/CHANGELOG.md | 4 ++++ flare_dart/lib/animation/keyframe.dart | 4 ++-- flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 4 ++++ flare_flutter/lib/flare_actor.dart | 3 ++- flare_flutter/pubspec.yaml | 2 +- 7 files changed, 15 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 315bb23..406dd47 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ This repository has three primary branches: - This is the branch we publish to pub from. - This branch and the associated pub packages are guaranteed to work on the flutter stable channel. ``` - flare_flutter: ^1.8.1 + flare_flutter: ^1.8.2 ``` - dev - This branch has the latest changes should work with the flutter dev channel. diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index ed76067..a8cbf8f 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [2.3.1] - 2019-12-16 09:17:37 + +- Type checking when applying trim path animation. Improves robustness and helps prevent crashes when applying animations from non-matching artboards. + ## [2.3.0] - 2019-12-05 17:25:03 - Support for layer effects including masking, drop shadows, inner shadows, and blurs. diff --git a/flare_dart/lib/animation/keyframe.dart b/flare_dart/lib/animation/keyframe.dart index 755c13b..e59bd04 100644 --- a/flare_dart/lib/animation/keyframe.dart +++ b/flare_dart/lib/animation/keyframe.dart @@ -1148,7 +1148,7 @@ class KeyFrameStrokeColor extends KeyFrameWithInterpolation { class KeyFrameStrokeEnd extends KeyFrameNumeric { @override void setValue(ActorComponent component, double value, double mix) { - if (component == null) return; + if (component is! ActorStroke) return; ActorStroke star = component as ActorStroke; star.trimEnd = star.trimEnd * (1.0 - mix) + value * mix; @@ -1184,7 +1184,7 @@ class KeyFrameStrokeOffset extends KeyFrameNumeric { class KeyFrameStrokeStart extends KeyFrameNumeric { @override void setValue(ActorComponent component, double value, double mix) { - if (component == null) return; + if (component is! ActorStroke) return; ActorStroke star = component as ActorStroke; star.trimStart = star.trimStart * (1.0 - mix) + value * mix; diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 31cc75b..049f0da 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 2.3.0 +version: 2.3.1 author: "Rive Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index 01d0b46..aae7f70 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.8.2] - 2019-12-16 09:19:22 + +- Clear out layers when instancing artboards to prevent animations from other artboards being applied. + ## [1.8.1] - 2019-12-09 19:33:06 - Disable blur effects if they are less than a certain threshold. Skia seems to drop the whole layer if it's too close to zero (but not zero). diff --git a/flare_flutter/lib/flare_actor.dart b/flare_flutter/lib/flare_actor.dart index 56536a1..de8923c 100644 --- a/flare_flutter/lib/flare_actor.dart +++ b/flare_flutter/lib/flare_actor.dart @@ -245,7 +245,7 @@ class FlareActorRenderObject extends FlareRenderBox { @override void onUnload() { - _animationLayers.length = 0; + _animationLayers.clear(); } String get filename => _filename; @@ -285,6 +285,7 @@ class FlareActorRenderObject extends FlareRenderBox { if (_controller != null) { _controller.initialize(_artboard); } + _animationLayers.clear(); _updateAnimation(onlyWhenMissing: true); // Immediately update the newly instanced artboard and compute // bounds so that the widget can take up the necessary space diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index a27ce0c..c90d7eb 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.8.1 +version: 1.8.2 author: "Rive Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From 838e98685c9d064177b28bb731319f1bac8c40a1 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Tue, 17 Dec 2019 05:06:52 +0800 Subject: [PATCH 51/59] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit b48d641d470bfb7eaed2b341291642127a9f9a61 Author: Luigi Rosso Date: Tue Dec 17 05:02:44 2019 +0800 Squashed commit of the following: commit 3c398bf9c77f93ee55f7064f7ad174b18e445a2d Author: Luigi Rosso Date: Tue Dec 17 04:58:20 2019 +0800 Fixing race condition with layer determination. #204 commit e1c9972cb98ee716c536a63d02368a7ec68cecf3 Author: Luigi Rosso Date: Tue Dec 17 04:53:54 2019 +0800 Mark layers after drawables are computed. commit 0e815f5faa79db4109c0236d80d70d0776e4aa7d Author: Luigi Rosso Date: Mon Dec 16 09:21:52 2019 +0800 Fix for applying wrong animation to artboard. Issue #205. commit 788c66200230765ba33f289cedddbc95e69c8de7 Author: Luigi Rosso Date: Mon Dec 9 19:35:25 2019 -0500 Fix for blur close to 0. commit f0b24f48568c390226005a3e9cd28d6f14318db9 Author: Luigi Rosso Date: Thu Dec 5 18:24:59 2019 -0500 Minor fixes for analyze. commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 9116aa017a5c3fa64178707bc8a0b88acbf2de57 Author: Luigi Rosso Date: Mon Dec 16 09:24:22 2019 +0800 Squashed commit of the following: commit 0e815f5faa79db4109c0236d80d70d0776e4aa7d Author: Luigi Rosso Date: Mon Dec 16 09:21:52 2019 +0800 Fix for applying wrong animation to artboard. Issue #205. commit 788c66200230765ba33f289cedddbc95e69c8de7 Author: Luigi Rosso Date: Mon Dec 9 19:35:25 2019 -0500 Fix for blur close to 0. commit f0b24f48568c390226005a3e9cd28d6f14318db9 Author: Luigi Rosso Date: Thu Dec 5 18:24:59 2019 -0500 Minor fixes for analyze. commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 9f82fa815c784e45d2788b68a7766e994017b9d1 Author: Luigi Rosso Date: Mon Dec 9 19:37:28 2019 -0500 Squashed commit of the following: commit 788c66200230765ba33f289cedddbc95e69c8de7 Author: Luigi Rosso Date: Mon Dec 9 19:35:25 2019 -0500 Fix for blur close to 0. commit f0b24f48568c390226005a3e9cd28d6f14318db9 Author: Luigi Rosso Date: Thu Dec 5 18:24:59 2019 -0500 Minor fixes for analyze. commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 446c92f53c49ebdf068879c5979eea4a69872726 Author: Luigi Rosso Date: Thu Dec 5 18:27:48 2019 -0500 Squashed commit of the following: commit f0b24f48568c390226005a3e9cd28d6f14318db9 Author: Luigi Rosso Date: Thu Dec 5 18:24:59 2019 -0500 Minor fixes for analyze. commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 393c22461e127714a3a25c986bb59a666cba72ac Author: Luigi Rosso Date: Thu Dec 5 17:48:04 2019 -0500 Squashed commit of the following: commit 333249f4f4d3709018153c4f44dd1ca70e8523f9 Author: Luigi Rosso Date: Thu Dec 5 17:36:58 2019 -0500 Preparing for publish. commit 0aa32c5bb685dd16a0b62e137635792923f863d3 Author: Luigi Rosso Date: Wed Dec 4 15:19:37 2019 -0800 Adding Guss. commit 6ba1f70ddcf77fa361297770b3ecdc3d4b8b35b0 Author: Luigi Rosso Date: Wed Dec 4 09:12:26 2019 -0800 Fixing type error in jelly component. commit a522dff8569160dcd9ce0afbb361609a22fd4bce Author: Luigi Rosso Date: Sun Dec 1 17:31:28 2019 -0800 Fixing effect on self. commit 2375f0c253a7f146d33cc790fbc8b2c1fbabc149 Author: Luigi Rosso Date: Wed Nov 27 18:03:08 2019 -0800 Adding animation for effects. commit dee0d83270badb8b44b07cb51bbb3a1a5092a7aa Author: Luigi Rosso Date: Tue Nov 26 16:40:01 2019 -0800 Getting drop shadow, blur, and inner shadows working. commit 31aa64181e6bbb2c7212321d5529ca90111dc0da Author: Luigi Rosso Date: Mon Nov 25 19:57:39 2019 -0800 Major groundwork for effects & masking. commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c911f4114f344146ef273224d651e18d2d67725f Author: Luigi Rosso Date: Wed Nov 20 16:41:08 2019 -0800 Squashed commit of the following: commit 9ff2b94022b8192d71c7fdde337e0d151fd13e7d Author: Luigi Rosso Date: Wed Nov 20 16:38:28 2019 -0800 Fixing gradient transformations for shapes with transformAffectsStroke set to true. commit 1e88ddf5ca23b7d4952853a9b90db31441c5cc3a Merge: c7758eb 17f73ec Author: Luigi Rosso Date: Mon Nov 18 16:32:28 2019 -0800 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit c7758eb0b069de813b36e487e340ab511ab62a25 Author: Luigi Rosso Date: Mon Nov 18 16:32:23 2019 -0800 Fixing FlareControls. commit 17f73ec8a23a9129d029d3ed1f78072475909435 Author: Umberto Sonnino Date: Fri Nov 15 11:09:51 2019 +0000 Update README with latest version commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 8fcd773a12c11bbb0b6bec1c8829b7af4d341bae Author: Luigi Rosso Date: Thu Nov 7 15:09:48 2019 -0800 Squashed commit of the following: commit c9f434180a766600121f493f62c485963d171231 Author: Luigi Rosso Date: Thu Nov 7 15:05:04 2019 -0800 Backing out changeImageFromNetwork. Issue #183 commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 0b759dfca5498b90b79c8be6209d3feaae882e31 Author: Luigi Rosso Date: Thu Nov 7 12:34:28 2019 -0800 Squashed commit of the following: commit e9712a4244eefe96e8b4644be1a6e8eb0d3feae1 Author: Luigi Rosso Date: Thu Nov 7 12:32:17 2019 -0800 Bumping versions. commit 366cdc03cef7110f9247b4de332a12f40d987f32 Author: Luigi Rosso Date: Thu Nov 7 12:27:53 2019 -0800 Adding support for runtime image swapping, requires marking image nodes as isDynamic in Flare. Issue #183. commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit ee997b7233a621f934f2bac8cc73cf9923126180 Author: Luigi Rosso Date: Wed Nov 6 17:32:55 2019 -0800 Squashed commit of the following: commit 53a7c659b772f5b9442f569be0a389512a77ff29 Author: Luigi Rosso Date: Wed Nov 6 17:30:42 2019 -0800 Updating flare_flutter version. commit b391dd4343b710fa575b45c47d11aca8b3cb4b52 Merge: 1e9b22e 9ec074b Author: Luigi Rosso Date: Wed Nov 6 17:28:34 2019 -0800 Merge branch 'warmth_fix' commit 9ec074be6328914ebcd82e5285c9aef9e408e1d5 Author: Luigi Rosso Date: Wed Nov 6 15:43:31 2019 -0800 Call setState if mounted. commit c66ac647efac650ef38b425fa7488343e36a075f Author: Luigi Rosso Date: Wed Nov 6 15:38:06 2019 -0800 Addressing an issue found in #177 with FlareCacheBuilder setting state when widget is no longer mounted. commit 1e9b22e0aa12e27c362fcaf28d914aa482198db9 Author: Umberto Sonnino Date: Wed Nov 6 19:02:25 2019 +0100 Init mat before inverting commit bc07b8752c05bd1a05cfcded0c2193e23602a1e0 Author: Umberto Sonnino Date: Wed Nov 6 19:00:13 2019 +0100 Remove local flare_dart from examples pubspec #184 commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit 9ec6c71b6802d6d1dea96cc1643d5546e52348f3 Author: Luigi Rosso Date: Tue Oct 29 12:57:01 2019 -0700 Squashed commit of the following: commit e1cca7cdc97bdfb1fd19d2ee365ce901c1e8339a Author: Luigi Rosso Date: Tue Oct 29 12:50:30 2019 -0700 Bumping versions, merging optimal_load branch, and persisting settings in checkbox example. commit 55cae393bb92dcd7157a5b12c55074e3bafa6d6d Author: Luigi Rosso Date: Tue Oct 29 12:41:43 2019 -0700 Copy transform affects stroke properly when instancing shapes. commit 43716dd3449266fe9f6f42c5bf05701d0bb06b88 Author: Luigi Rosso Date: Mon Oct 28 12:52:09 2019 -0700 Prevent coldLoad (async) from happening when widget isn’t ready to load. commit 506837e0bafff3060318bc65d03296ebb599f284 Author: Luigi Rosso Date: Fri Oct 25 13:00:56 2019 -0700 Improving loading. commit 9ee95b964dde6ee3fb17b9e969ab00b3d0992c9f Author: Luigi Rosso Date: Fri Oct 25 10:42:42 2019 -0700 Make sure overrideColor is set even when drawableNodes is null. commit 7d59de1e77c040acc271bc3981a70517856a31b1 Author: Umberto Sonnino Date: Fri Oct 25 13:15:34 2019 +0100 Move null check commit 528af53a2bc9ac68d00fc30aadb2f78509fff922 Author: Umberto Sonnino Date: Fri Oct 25 13:10:17 2019 +0100 Insert null checks for artboards with no drawables #178 commit 33f23a7d29b5adf04f5b6536ddaf74f1aa590165 Author: Umberto Sonnino Date: Fri Oct 25 12:16:16 2019 +0100 Remove GradientColor override of ActorPaint opacity getter #179 commit 59ba2f08174b43c7a7f8a7ff97cd04d533da1eea Author: Umberto Sonnino Date: Thu Oct 24 09:31:41 2019 +0100 Document the `actor_animatino.apply()` function commit d77438f87f7aae2d850a8295ae4d9a5b33505694 Author: Umberto Sonnino Date: Thu Oct 24 09:31:10 2019 +0100 Fix division by 0 on transform constraint commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. commit c74bac6831478c48d57bb2be207ec06bac57abff Author: Luigi Rosso Date: Fri Oct 11 13:00:27 2019 -0700 Squashed commit of the following: commit f0cf988bc3ef928b8b96ae217133ecadca02b418 Author: Luigi Rosso Date: Fri Oct 11 12:59:13 2019 -0700 Fix reading of JSON clip values. Issue #172 commit a7796e0d6e9b5ea6957eafc9f784ba4c36320967 Author: Luigi Rosso Date: Fri Oct 11 12:39:48 2019 -0700 Mitigating issue #172. commit 373c14a4f3b2360c4252a8ac834c23bb28068f6e Author: Luigi Rosso Date: Wed Oct 9 14:21:47 2019 -0700 Fixing issue with image clipping. commit ae1c901441306953f09549b4c3bdd4612cc86af4 Author: Luigi Rosso Date: Wed Oct 9 11:19:16 2019 -0700 Fix merge bugs. commit d8cb780a543fe9fd35d60bcfcb198b70622c524f Author: Luigi Rosso Date: Wed Oct 9 11:09:42 2019 -0700 Adding support for difference clipping. commit bf99a765746f321937315e7ecd96aaa190a3d20b Author: Luigi Rosso Date: Tue Oct 8 19:07:26 2019 -0700 Matching stable version commit 9becc744d0d50f10533e3ad1f7c0b4daee6604c2 Author: Luigi Rosso Date: Tue Oct 8 13:58:11 2019 -0700 Bumping flare_dart to 2.0 due to breaking changes. commit 0a292cc67ea8d261057b9f9e5c32028e3436436c Author: Luigi Rosso Date: Tue Oct 8 13:39:57 2019 -0700 Bumping versions and changelogs. commit 431a98e4804efe6d073a9b55a9ce1a5f23c7ca4d Author: Luigi Rosso Date: Tue Oct 8 13:35:26 2019 -0700 Fixing up analysis issues for #169 commit 72fb6fc743ed3a241c7c51e5a8ebc90836f734ba Merge: 4d00202 dc68dea Author: Luigi Rosso Date: Tue Oct 8 13:02:17 2019 -0700 Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter commit 4d00202a4f24b2c3d581b28cb15b953ec91c9f3c Author: Luigi Rosso Date: Tue Oct 8 13:02:11 2019 -0700 Cleaning up analysis issues. commit dc68dea6d57cb504d1a867c7e4c5b6768ec5dfe2 Merge: 5ca8d49 f1d9749 Author: Luigi Rosso Date: Tue Oct 8 11:06:53 2019 -0700 Merge pull request #168 from mehmetf/master Escalate the severity of unused imports in analyzer commit f1d97496a2679f470202f17298cd76a0411d7a8c Author: Mehmet Fidanboylu Date: Tue Oct 8 10:20:58 2019 -0700 Do the same changes to flare_dart commit 64f395edf7c6f8419a7a461e46664ff3723cfa78 Author: Mehmet Fidanboylu Date: Tue Oct 8 10:17:51 2019 -0700 Escalate the severity of unused imports in analyzer commit 5ca8d49c09406d1ac62ffffd4d0c5082744be7a3 Author: Luigi Rosso Date: Mon Oct 7 11:22:38 2019 -0700 Bumping versions and changelog. commit 874ce8e0b77a8ffc3eea9027cb31e2b75437da01 Author: Luigi Rosso Date: Mon Oct 7 11:20:28 2019 -0700 Adding support for nodes inside of shapes. commit 4d06431f341b426dd5cc41529a49c115e6354c51 Author: Luigi Rosso Date: Fri Oct 4 18:06:09 2019 -0700 Introducing FlareTesting.setup(); commit 2c5f4200535d679fd3092d1b6aa15ff71d85b869 Author: Luigi Rosso Date: Fri Oct 4 13:44:25 2019 -0700 Clamping trim start/end. commit daba34d11233391e7277b157bc117b8bbb626982 Author: Luigi Rosso Date: Mon Sep 30 21:21:55 2019 +0200 Cherry picking critical lints from #1 63 and updating for pub. --- README.md | 2 +- flare_dart/CHANGELOG.md | 4 + flare_dart/lib/actor_artboard.dart | 4 +- flare_dart/lib/actor_drawable.dart | 14 +--- .../lib/actor_layer_effect_renderer.dart | 73 ++++++++++++------- flare_dart/lib/actor_node.dart | 1 + flare_dart/pubspec.yaml | 2 +- flare_flutter/CHANGELOG.md | 4 + flare_flutter/pubspec.yaml | 2 +- 9 files changed, 62 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 406dd47..b07900e 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ This repository has three primary branches: - This is the branch we publish to pub from. - This branch and the associated pub packages are guaranteed to work on the flutter stable channel. ``` - flare_flutter: ^1.8.2 + flare_flutter: ^1.8.3 ``` - dev - This branch has the latest changes should work with the flutter dev channel. diff --git a/flare_dart/CHANGELOG.md b/flare_dart/CHANGELOG.md index a8cbf8f..1713d8a 100644 --- a/flare_dart/CHANGELOG.md +++ b/flare_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## [2.3.2] - 2019-12-17 04:54:38 + +- Mark layers for drawable items by first computing which drawables are in the layer. Removes race conditions with layers not being set correctly. + ## [2.3.1] - 2019-12-16 09:17:37 - Type checking when applying trim path animation. Improves robustness and helps prevent crashes when applying animations from non-matching artboards. diff --git a/flare_dart/lib/actor_artboard.dart b/flare_dart/lib/actor_artboard.dart index 0ccf2d6..99f64e9 100644 --- a/flare_dart/lib/actor_artboard.dart +++ b/flare_dart/lib/actor_artboard.dart @@ -286,10 +286,10 @@ class ActorArtboard { // layers won't be known before this. for (int i = 1; i < componentCount; i++) { ActorComponent c = components[i]; - if (c is ActorDrawable && c.layerEffectRenderer == null) { + if (c is ActorDrawable && c.layerEffectRenderParent == null) { _drawableNodes.add(c); } - if (c is ActorLayerEffectRenderer && c.layerEffectRenderer == null) { + if (c is ActorLayerEffectRenderer && c.layerEffectRenderParent == null) { _effectRenderers.add(c); } } diff --git a/flare_dart/lib/actor_drawable.dart b/flare_dart/lib/actor_drawable.dart index 719f391..72807c1 100644 --- a/flare_dart/lib/actor_drawable.dart +++ b/flare_dart/lib/actor_drawable.dart @@ -85,15 +85,7 @@ abstract class ActorDrawable extends ActorNode { } } } - - ActorLayerEffectRenderer _layerEffectRenderer; - ActorLayerEffectRenderer get layerEffectRenderer => _layerEffectRenderer; - set layerEffectRenderer(ActorLayerEffectRenderer value) { - if (_layerEffectRenderer == value) { - return; - } - _layerEffectRenderer?.removeDrawable(this); - _layerEffectRenderer = value; - _layerEffectRenderer?.addDrawable(this); - } + /// If this is set the drawable belongs to a layer. We store a reference to + /// the parent node that contains the layer. + ActorNode layerEffectRenderParent; } diff --git a/flare_dart/lib/actor_layer_effect_renderer.dart b/flare_dart/lib/actor_layer_effect_renderer.dart index e7e0bf3..f5fb563 100644 --- a/flare_dart/lib/actor_layer_effect_renderer.dart +++ b/flare_dart/lib/actor_layer_effect_renderer.dart @@ -4,6 +4,7 @@ import 'package:flare_dart/math/aabb.dart'; import 'actor_artboard.dart'; import 'actor_blur.dart'; +import 'actor_component.dart'; import 'actor_drawable.dart'; import 'actor_inner_shadow.dart'; import 'actor_mask.dart'; @@ -27,16 +28,6 @@ class ActorLayerEffectRenderer extends ActorDrawable { List get dropShadows => _dropShadows; List get innerShadows => _innerShadows; - bool addDrawable(ActorDrawable drawable) { - if (_drawables.contains(drawable)) { - return false; - } - _drawables.add(drawable); - return true; - } - - bool removeDrawable(ActorDrawable drawable) => _drawables.remove(drawable); - void sortDrawables() { _drawables .sort((ActorDrawable a, ActorDrawable b) => a.drawOrder - b.drawOrder); @@ -80,20 +71,37 @@ class ActorLayerEffectRenderer extends ActorDrawable { parent.children.whereType().toList(growable: false); } + @override + void resolveComponentIndices(List components) { + super.resolveComponentIndices(components); + parent.findLayerEffect(); + } + @override void completeResolve() { super.completeResolve(); - // When we complete resolve we find all the children and mark their layers. - // Alternative way to do this is to have each drawable check for parent - // layers when the parent changes. That would be more effective if nodes - // were to get moved around at runtime. + _drawables.clear(); + parent?.all((node) { - if (node is ActorDrawable && node != this) { - node.layerEffectRenderer = this; + if (node == this) { + // don't recurse into this renderer + return false; + } else if (node is ActorNode && + node.layerEffect != null && + node.layerEffect != this) { + _drawables.add(node.layerEffect); + // don't recurse further into nodes that are drawing to layers + return false; + } + if (node is ActorDrawable) { + _drawables.add(node); } return true; }); + + _drawables.forEach(_computeLayerNode); + sortDrawables(); computeMasks(); findEffects(); @@ -101,31 +109,28 @@ class ActorLayerEffectRenderer extends ActorDrawable { void computeMasks() { _renderMasks.clear(); - var maskSearch = parent; - var masks = []; - - while (maskSearch != null) { - masks += - maskSearch.children.whereType().toList(growable: false); - maskSearch = maskSearch.parent; - } + var masks = parent.children.whereType().toList(growable: false); for (final mask in masks) { var renderMask = ActorLayerEffectRendererMask(mask); mask.source?.all((child) { + if (child == parent) { + // recursive mask was selected + return false; + } if (child is ActorDrawable) { - if (child.layerEffectRenderer != null && - child.layerEffectRenderer != this) { + if (child == this) { + return false; + } else if (child.layerEffect != null) { // Layer effect is direct discendant of this layer, so we want to // draw it with the other drawables in this layer. - renderMask.drawables.add(child.layerEffectRenderer); + renderMask.drawables.add(child.layerEffect); // Don't iterate if child has further layer effect return false; } else { renderMask.drawables.add(child); } } - return true; }); @@ -135,3 +140,15 @@ class ActorLayerEffectRenderer extends ActorDrawable { } } } + +void _computeLayerNode(ActorDrawable drawable) { + ActorNode parent = drawable; + while (parent != null) { + if (parent.layerEffect != null) { + drawable.layerEffectRenderParent = parent; + return; + } + parent = parent.parent; + } + drawable.layerEffectRenderParent = null; +} diff --git a/flare_dart/lib/actor_node.dart b/flare_dart/lib/actor_node.dart index 5153f67..abc6a02 100644 --- a/flare_dart/lib/actor_node.dart +++ b/flare_dart/lib/actor_node.dart @@ -33,6 +33,7 @@ class ActorNode extends ActorComponent { double _opacity = 1.0; double _renderOpacity = 1.0; ActorLayerEffectRenderer _layerEffect; + ActorLayerEffectRenderer get layerEffect => _layerEffect; bool _overrideWorldTransform = false; bool _isCollapsedVisibility = false; diff --git a/flare_dart/pubspec.yaml b/flare_dart/pubspec.yaml index 049f0da..172bc97 100644 --- a/flare_dart/pubspec.yaml +++ b/flare_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_dart description: Vector design and runtime animation. -version: 2.3.1 +version: 2.3.2 author: "Rive Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: diff --git a/flare_flutter/CHANGELOG.md b/flare_flutter/CHANGELOG.md index aae7f70..f87248b 100644 --- a/flare_flutter/CHANGELOG.md +++ b/flare_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.8.3] - 2019-12-17 04:56:04 + +- Mark layers for drawable items by first computing which drawables are in the layer. Removes race conditions with layers not being set correctly. + ## [1.8.2] - 2019-12-16 09:19:22 - Clear out layers when instancing artboards to prevent animations from other artboards being applied. diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index c90d7eb..80a5200 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.8.2 +version: 1.8.3 author: "Rive Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: From 398bbd66d894a9203ffebdf2eb1f0cf028b0d580 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Tue, 17 Dec 2019 05:08:21 +0800 Subject: [PATCH 52/59] Remove unused import. --- flare_dart/lib/actor_drawable.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/flare_dart/lib/actor_drawable.dart b/flare_dart/lib/actor_drawable.dart index 72807c1..da52406 100644 --- a/flare_dart/lib/actor_drawable.dart +++ b/flare_dart/lib/actor_drawable.dart @@ -1,5 +1,4 @@ import 'package:flare_dart/actor_artboard.dart'; -import 'package:flare_dart/actor_layer_effect_renderer.dart'; import 'package:flare_dart/actor_shape.dart'; import 'package:flare_dart/stream_reader.dart'; From 8c73e5eae716d83229152482ad8b64aa9f43bb71 Mon Sep 17 00:00:00 2001 From: Yuwen Yan Date: Thu, 26 Dec 2019 12:09:40 +0000 Subject: [PATCH 53/59] Add AssetProvider --- flare_flutter/lib/asset_bundle_cache.dart | 10 --- flare_flutter/lib/asset_provider.dart | 9 +++ flare_flutter/lib/cache.dart | 35 +++++------ flare_flutter/lib/cache_asset.dart | 6 +- flare_flutter/lib/flare_actor.dart | 70 +++++++++++++++------ flare_flutter/lib/flare_cache.dart | 32 ++++------ flare_flutter/lib/flare_cache_asset.dart | 33 +++++----- flare_flutter/lib/flare_cache_builder.dart | 19 +++--- flare_flutter/lib/flare_render_box.dart | 42 +++++-------- flare_flutter/lib/provider/asset_flare.dart | 44 +++++++++++++ flare_flutter/pubspec.yaml | 3 +- 11 files changed, 172 insertions(+), 131 deletions(-) delete mode 100644 flare_flutter/lib/asset_bundle_cache.dart create mode 100644 flare_flutter/lib/asset_provider.dart create mode 100644 flare_flutter/lib/provider/asset_flare.dart diff --git a/flare_flutter/lib/asset_bundle_cache.dart b/flare_flutter/lib/asset_bundle_cache.dart deleted file mode 100644 index 1205332..0000000 --- a/flare_flutter/lib/asset_bundle_cache.dart +++ /dev/null @@ -1,10 +0,0 @@ -import 'package:flutter/services.dart'; - -import 'cache.dart'; -import 'cache_asset.dart'; - -/// A cache that uses an AssetBundle. -abstract class AssetBundleCache extends Cache { - final AssetBundle bundle; - AssetBundleCache(this.bundle); -} diff --git a/flare_flutter/lib/asset_provider.dart b/flare_flutter/lib/asset_provider.dart new file mode 100644 index 0000000..05efedd --- /dev/null +++ b/flare_flutter/lib/asset_provider.dart @@ -0,0 +1,9 @@ +import 'dart:typed_data'; + +/// Identifies an asset, to obtain asset from an [AssetProvider], call [load]. +abstract class AssetProvider { + const AssetProvider(); + + /// Loads the asset. + Future load(); +} diff --git a/flare_flutter/lib/cache.dart b/flare_flutter/lib/cache.dart index 72aeceb..f7c73fa 100644 --- a/flare_flutter/lib/cache.dart +++ b/flare_flutter/lib/cache.dart @@ -1,11 +1,13 @@ import 'dart:async'; + +import 'asset_provider.dart'; import 'cache_asset.dart'; typedef CacheAsset AssetFactoryMethod(); /// A base class for loading cached resources abstract class Cache { - final Map _assets = {}; + final Map _assets = {}; final Set _toPrune = Set(); Timer _pruneTimer; @@ -16,7 +18,7 @@ abstract class Cache { void _prune() { for (final T asset in _toPrune) { - _assets.removeWhere((String filename, T cached) { + _assets.removeWhere((AssetProvider assetProvider, T cached) { return cached == asset; }); } @@ -39,8 +41,8 @@ abstract class Cache { } /// Get an asset from the cache or load it. - Future getAsset(String filename) async { - T asset = _assets[filename]; + Future getAsset(AssetProvider assetProvider) async { + T asset = _assets[assetProvider]; if (asset != null) { if (asset.isAvailable) { return asset; @@ -48,25 +50,18 @@ abstract class Cache { return await asset.onLoaded() as T; } } - int lastDot = filename.lastIndexOf("."); - if (lastDot != -1) { - asset = makeAsset(); - if (asset != null) { - _assets[filename] = asset; - asset.load(this, filename); - if (asset.isAvailable) { - return asset; - } else { - return await asset.onLoaded() as T; - } - } - } - return asset; + + asset = makeAsset(); + assert(asset != null); + + _assets[assetProvider] = asset; + asset.load(this, assetProvider); + return asset.isAvailable ? asset : await asset.onLoaded() as T; } /// Get an asset from the cache. - T getWarmAsset(String filename) { - T asset = _assets[filename]; + T getWarmAsset(AssetProvider assetProvider) { + T asset = _assets[assetProvider]; return (asset?.isAvailable ?? false) ? asset : null; } } diff --git a/flare_flutter/lib/cache_asset.dart b/flare_flutter/lib/cache_asset.dart index 376e6f6..6e7cb0c 100644 --- a/flare_flutter/lib/cache_asset.dart +++ b/flare_flutter/lib/cache_asset.dart @@ -1,4 +1,6 @@ import 'dart:async'; + +import 'asset_provider.dart'; import 'cache.dart'; /// A reference counted asset in a cache. @@ -32,9 +34,7 @@ abstract class CacheAsset { return completer.future; } - void load(Cache cache, String filename) { - _cache = cache; - } + void load(Cache cache, AssetProvider assetProvider) => _cache = cache; void completeLoad() { if (_callbacks != null) { diff --git a/flare_flutter/lib/flare_actor.dart b/flare_flutter/lib/flare_actor.dart index de8923c..58f8109 100644 --- a/flare_flutter/lib/flare_actor.dart +++ b/flare_flutter/lib/flare_actor.dart @@ -6,15 +6,29 @@ import 'package:flutter/rendering.dart'; import 'package:flare_dart/actor_drawable.dart'; import 'package:flare_dart/math/mat2d.dart'; import 'package:flare_dart/math/aabb.dart'; +import 'package:flutter/services.dart'; + +import 'asset_provider.dart'; import 'flare.dart'; import 'flare_controller.dart'; +import 'provider/asset_flare.dart'; typedef void FlareCompletedCallback(String name); +/// A widget that displays a Flare. +/// +/// Several constructors are provided for the various ways that a Flare can be +/// specified: +/// * [FlareActor], for obtaining a Flare from an asset [filename]. +/// * [FlareActor.asset], for obtaining a Flare from an [AssetBundle] +/// using a key. class FlareActor extends LeafRenderObjectWidget { /// Name of the Flare file to be loaded from the AssetBundle. final String filename; + /// The Flare asset to display. + final AssetProvider flareProvider; + /// The name of the artboard to display. final String artboard; @@ -72,13 +86,30 @@ class FlareActor extends LeafRenderObjectWidget { this.shouldClip = true, this.sizeFromArtboard = false, this.artboard, - }); + }) : flareProvider = null; + + FlareActor.asset( + String name, { + this.boundsNode, + this.animation, + this.fit = BoxFit.contain, + this.alignment = Alignment.center, + this.isPaused = false, + this.snapToEnd = false, + this.controller, + this.callback, + this.color, + this.shouldClip = true, + this.sizeFromArtboard = false, + this.artboard, + }) : filename = null, + flareProvider = AssetFlare(bundle: rootBundle, name: name); @override RenderObject createRenderObject(BuildContext context) { return FlareActorRenderObject() - ..assetBundle = DefaultAssetBundle.of(context) - ..filename = filename + ..assetProvider = + flareProvider ?? AssetFlare(bundle: rootBundle, name: filename) ..fit = fit ..alignment = alignment ..animationName = animation @@ -97,8 +128,8 @@ class FlareActor extends LeafRenderObjectWidget { void updateRenderObject( BuildContext context, covariant FlareActorRenderObject renderObject) { renderObject - ..assetBundle = DefaultAssetBundle.of(context) - ..filename = filename + ..assetProvider = + flareProvider ?? AssetFlare(bundle: rootBundle, name: filename) ..fit = fit ..alignment = alignment ..animationName = animation @@ -131,7 +162,7 @@ class FlareAnimationLayer { class FlareActorRenderObject extends FlareRenderBox { Mat2D _lastControllerViewTransform; - String _filename; + AssetProvider _assetProvider; String _artboardName; String _animationName; String _boundsNodeName; @@ -245,17 +276,17 @@ class FlareActorRenderObject extends FlareRenderBox { @override void onUnload() { - _animationLayers.clear(); + _animationLayers.length = 0; } - String get filename => _filename; - set filename(String value) { - if (value == _filename) { + AssetProvider get assetProvider => _assetProvider; + set assetProvider(AssetProvider value) { + if (value == _assetProvider) { return; } - _filename = value; + _assetProvider = value; - if (_filename == null) { + if (_assetProvider == null) { markNeedsPaint(); } // file will change, let's clear out old animations. @@ -285,7 +316,6 @@ class FlareActorRenderObject extends FlareRenderBox { if (_controller != null) { _controller.initialize(_artboard); } - _animationLayers.clear(); _updateAnimation(onlyWhenMissing: true); // Immediately update the newly instanced artboard and compute // bounds so that the widget can take up the necessary space @@ -298,28 +328,28 @@ class FlareActorRenderObject extends FlareRenderBox { @override bool get canLoad { - return super.canLoad && _filename != null; + return super.canLoad && _assetProvider != null; } - /// Attempt a warm load, thfis is the optimal case when the + /// Attempt a warm load, this is the optimal case when the /// required asset is already in the cache. @override bool warmLoad() { - if (_filename == null) { + if (_assetProvider == null) { return false; } - _actor = getWarmFlare(_filename); + _actor = getWarmFlare(_assetProvider); return _instanceArtboard(); } - /// Load the necessary Flare file specified by _filename. + /// Load the necessary Flare file specified by [AssetProvider]. /// this occurs when the optimal warmLoad fails to find an asset in cache. @override Future coldLoad() async { - if (_filename == null) { + if (_assetProvider == null) { return; } - _actor = await loadFlare(_filename); + _actor = await loadFlare(_assetProvider); _instanceArtboard(); } diff --git a/flare_flutter/lib/flare_cache.dart b/flare_flutter/lib/flare_cache.dart index d3d05bd..b822db4 100644 --- a/flare_flutter/lib/flare_cache.dart +++ b/flare_flutter/lib/flare_cache.dart @@ -1,13 +1,11 @@ import 'dart:async'; -import 'package:flutter/services.dart'; -import 'asset_bundle_cache.dart'; +import 'asset_provider.dart'; +import 'cache.dart'; import 'flare_cache_asset.dart'; -/// Cache that instances flare assets from ".flr" extension. -class FlareCache extends AssetBundleCache { - FlareCache(AssetBundle bundle) : super(bundle); - +/// Cache that instances Flare assets from ".flr" extension. +class FlareCache extends Cache { static bool doesPrune = true; static Duration pruneDelay = const Duration(seconds: 2); @@ -18,24 +16,16 @@ class FlareCache extends AssetBundleCache { Duration get pruneAfter => pruneDelay; @override - FlareCacheAsset makeAsset() { - return FlareCacheAsset(); - } + FlareCacheAsset makeAsset() => FlareCacheAsset(); } -/// A mapping of loaded Flare assets. -final Map _cache = {}; +/// Cache for loaded Flare assets. +final _cache = FlareCache(); /// Get a cached Flare actor, or load it if it's not yet available. -Future cachedActor(AssetBundle bundle, String filename) async { - FlareCache cache = _cache[bundle]; - if (cache == null) { - _cache[bundle] = cache = FlareCache(bundle); - } - return cache.getAsset(filename); -} +Future cachedActor(AssetProvider assetProvider) => + _cache.getAsset(assetProvider); /// Get a warm Flare actor that's already in the cache. -FlareCacheAsset getWarmActor(AssetBundle bundle, String filename) { - return _cache[bundle]?.getWarmAsset(filename); -} +FlareCacheAsset getWarmActor(AssetProvider assetProvider) => + _cache.getWarmAsset(assetProvider); diff --git a/flare_flutter/lib/flare_cache_asset.dart b/flare_flutter/lib/flare_cache_asset.dart index fbc40a5..3aeff43 100644 --- a/flare_flutter/lib/flare_cache_asset.dart +++ b/flare_flutter/lib/flare_cache_asset.dart @@ -1,7 +1,7 @@ import 'dart:typed_data'; import 'package:flutter/foundation.dart'; -import 'asset_bundle_cache.dart'; +import 'asset_provider.dart'; import 'cache.dart'; import 'cache_asset.dart'; import 'flare.dart'; @@ -13,34 +13,29 @@ class FlareCacheAsset extends CacheAsset { static bool useCompute = true; - void loadedActor(FlutterActor actor, String filename) { + void loadedActor(FlutterActor actor, AssetProvider assetProvider) { actor.loadImages().then((_) { if (actor != null) { _actor = actor; completeLoad(); } else { - print("Failed to load flare file from $filename."); + print("Failed to load flare file from $assetProvider."); } }); } @override - void load(Cache cache, String filename) { - super.load(cache, filename); - if (cache is AssetBundleCache) { - cache.bundle.load(filename).then((ByteData data) { - if (useCompute) { - compute(FlutterActor.loadFromByteData, data) - .then((FlutterActor actor) { - loadedActor(actor, filename); - }); - } else { - FlutterActor.loadFromByteData(data).then((FlutterActor actor) { - loadedActor(actor, filename); - }); - } - }); - } + void load(Cache cache, AssetProvider assetProvider) { + super.load(cache, assetProvider); + assetProvider.load().then((ByteData data) { + if (useCompute) { + compute(FlutterActor.loadFromByteData, data) + .then((FlutterActor actor) => loadedActor(actor, assetProvider)); + } else { + FlutterActor.loadFromByteData(data) + .then((FlutterActor actor) => loadedActor(actor, assetProvider)); + } + }); } @override diff --git a/flare_flutter/lib/flare_cache_builder.dart b/flare_flutter/lib/flare_cache_builder.dart index 5246e48..f50c9c3 100644 --- a/flare_flutter/lib/flare_cache_builder.dart +++ b/flare_flutter/lib/flare_cache_builder.dart @@ -1,15 +1,16 @@ import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; +import 'asset_provider.dart'; import 'flare_cache.dart'; import 'flare_cache_asset.dart'; /// Create a mobile or tablet layout depending on the screen size. class FlareCacheBuilder extends StatefulWidget { final Widget Function(BuildContext, bool) builder; - final List filenames; + final List assetProviders; - const FlareCacheBuilder(this.filenames, {Key key, this.builder}) + const FlareCacheBuilder(this.assetProviders, {Key key, this.builder}) : super(key: key); @override @@ -59,9 +60,9 @@ class _FlareCacheBuilderState extends State { return; } - for (final filename in widget.filenames) { - if (getWarmActor(bundle, filename) == null) { - cachedActor(bundle, filename).then((FlareCacheAsset asset) { + for (final assetProvider in widget.assetProviders) { + if (getWarmActor(assetProvider) == null) { + cachedActor(assetProvider).then((FlareCacheAsset asset) { if (mounted && asset != null) { _assets.add(asset); asset.ref(); @@ -77,13 +78,13 @@ class _FlareCacheBuilderState extends State { if (!mounted) { return true; } - var filenames = widget.filenames; - if (filenames == null) { + var assetProviders = widget.assetProviders; + if (assetProviders == null) { isWarm = true; return true; } - for (final filename in filenames) { - if (getWarmActor(bundle, filename) == null) { + for (final assetProvider in assetProviders) { + if (getWarmActor(assetProvider) == null) { isWarm = false; return false; } diff --git a/flare_flutter/lib/flare_render_box.dart b/flare_flutter/lib/flare_render_box.dart index a8f5b7b..836496f 100644 --- a/flare_flutter/lib/flare_render_box.dart +++ b/flare_flutter/lib/flare_render_box.dart @@ -2,17 +2,17 @@ import 'dart:math'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/scheduler.dart'; -import 'package:flutter/services.dart'; import 'package:flare_dart/math/aabb.dart'; import 'package:flare_dart/math/mat2d.dart'; import 'package:flare_dart/math/vec2d.dart'; + +import 'asset_provider.dart'; import 'flare.dart'; import 'flare_cache.dart'; import 'flare_cache_asset.dart'; /// A render box for Flare content. abstract class FlareRenderBox extends RenderBox { - AssetBundle _assetBundle; BoxFit _fit; Alignment _alignment; int _frameCallbackID; @@ -43,17 +43,6 @@ abstract class FlareRenderBox extends RenderBox { } } - AssetBundle get assetBundle => _assetBundle; - set assetBundle(AssetBundle value) { - if (_assetBundle == value) { - return; - } - _assetBundle = value; - if (_assetBundle != null && attached) { - load(); - } - } - bool get isPlaying; BoxFit get fit => _fit; @@ -111,7 +100,7 @@ abstract class FlareRenderBox extends RenderBox { void attach(PipelineOwner owner) { super.attach(owner); updatePlayState(); - if (_assets.isEmpty && assetBundle != null) { + if (_assets.isEmpty) { load(); } } @@ -241,14 +230,11 @@ abstract class FlareRenderBox extends RenderBox { return false; } - /// Prevent loading when the renderbox isn't attached or the asset bundle - /// is yet to be set. This prevents unneccesarily hitting an async path - /// during load. A warmLoad would fail which then falls back to a coldLoad. - /// Due to the async nature, any further sync calls would be blocked as we - /// gate load with _isLoading. - bool get canLoad { - return attached && _assetBundle != null; - } + /// Prevent loading when the renderbox isn't attached. This prevents + /// unneccesarily hitting an async path during load. A warmLoad would fail + /// which then falls back to a coldLoad. Due to the async nature, any further + /// sync calls would be blocked as we gate load with _isLoading. + bool get canLoad => attached; Future coldLoad() async {} @@ -298,12 +284,12 @@ abstract class FlareRenderBox extends RenderBox { void onUnload() {} /// Load a flare file from cache - FlutterActor getWarmFlare(String filename) { - if (assetBundle == null || filename == null) { + FlutterActor getWarmFlare(AssetProvider assetProvider) { + if (assetProvider == null) { return null; } - FlareCacheAsset asset = getWarmActor(assetBundle, filename); + FlareCacheAsset asset = getWarmActor(assetProvider); if (!attached || asset == null) { return null; @@ -314,12 +300,12 @@ abstract class FlareRenderBox extends RenderBox { } /// Load a flare file from cache - Future loadFlare(String filename) async { - if (assetBundle == null || filename == null) { + Future loadFlare(AssetProvider assetProvider) async { + if (assetProvider == null) { return null; } - FlareCacheAsset asset = await cachedActor(assetBundle, filename); + FlareCacheAsset asset = await cachedActor(assetProvider); if (!attached || asset == null) { return null; diff --git a/flare_flutter/lib/provider/asset_flare.dart b/flare_flutter/lib/provider/asset_flare.dart new file mode 100644 index 0000000..21f6d7f --- /dev/null +++ b/flare_flutter/lib/provider/asset_flare.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:meta/meta.dart'; + +import '../asset_provider.dart'; + +/// Fetches a Flare from an [AssetBundle]. +@immutable +class AssetFlare extends AssetProvider { + const AssetFlare({@required this.bundle, @required this.name}) + : assert(bundle != null), + assert(name != null); + + /// The bundle from which the Flare will be obtained. + /// + /// The Flare is obtained by calling [AssetBundle.load] on the given [bundle] + /// using the key given by [name]. + final AssetBundle bundle; + + /// The key to use to obtain the resource from the [bundle]. This is the + /// argument passed to [AssetBundle.load]. + final String name; + + @override + Future load() async { + final ByteData data = await bundle.load(name); + assert(data != null); + return data; + } + + @override + bool operator ==(dynamic other) { + if (other.runtimeType != runtimeType) { + return false; + } + return other is AssetFlare && other.bundle == bundle && other.name == name; + } + + @override + int get hashCode => hashValues(bundle, name); + + @override + String toString() => '$runtimeType(bundle: $bundle, name: "$name")'; +} diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 80a5200..720d3d9 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -9,6 +9,7 @@ dependencies: flutter: sdk: flutter flare_dart: ^2.3.0 + meta: ^1.0.5 dev_dependencies: flutter_test: - sdk: flutter \ No newline at end of file + sdk: flutter From e6c019111e0cf6112742b1f5011e609e2c20edeb Mon Sep 17 00:00:00 2001 From: Yuwen Yan Date: Thu, 26 Dec 2019 12:16:35 +0000 Subject: [PATCH 54/59] fix conflict --- flare_flutter/lib/flare_actor.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flare_flutter/lib/flare_actor.dart b/flare_flutter/lib/flare_actor.dart index 58f8109..2284356 100644 --- a/flare_flutter/lib/flare_actor.dart +++ b/flare_flutter/lib/flare_actor.dart @@ -276,7 +276,7 @@ class FlareActorRenderObject extends FlareRenderBox { @override void onUnload() { - _animationLayers.length = 0; + _animationLayers.clear(); } AssetProvider get assetProvider => _assetProvider; @@ -316,6 +316,7 @@ class FlareActorRenderObject extends FlareRenderBox { if (_controller != null) { _controller.initialize(_artboard); } + _animationLayers.clear(); _updateAnimation(onlyWhenMissing: true); // Immediately update the newly instanced artboard and compute // bounds so that the widget can take up the necessary space From 578fa3779d1e4a54a093003b62542a9b25d29d4b Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Thu, 26 Dec 2019 10:39:00 -0800 Subject: [PATCH 55/59] =?UTF-8?q?Getting=20ybbaigo=E2=80=99s=20PR=20into?= =?UTF-8?q?=20a=20master=20branch=20and=20working=20on=20fixing=20up=20the?= =?UTF-8?q?=20examples.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/simple/lib/main.dart | 12 ++++++++---- flare_flutter/lib/flare_actor.dart | 18 +++++++++++++++++- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/example/simple/lib/main.dart b/example/simple/lib/main.dart index 395d38e..bbae35b 100644 --- a/example/simple/lib/main.dart +++ b/example/simple/lib/main.dart @@ -1,6 +1,8 @@ import "package:flare_flutter/flare_actor.dart"; import "package:flare_flutter/flare_cache_builder.dart"; import "package:flutter/material.dart"; +import 'package:flutter/services.dart'; +import 'package:flare_flutter/provider/asset_flare.dart'; void main() => runApp(MyApp()); @@ -27,6 +29,8 @@ class MyHomePage extends StatefulWidget { class _MyHomePageState extends State { String _animationName = "idle"; + final asset = AssetFlare(bundle: rootBundle, name: "assets/Filip.flr"); + @override Widget build(BuildContext context) { return Scaffold( @@ -39,12 +43,12 @@ class _MyHomePageState extends State { children: [ Expanded( child: FlareCacheBuilder( - ["assets/Filip.flr"], + [asset], builder: (BuildContext context, bool isWarm) { return !isWarm - ? Container(child:Text("NO")) - : FlareActor( - "assets/Filip.flr", + ? Container(child: Text("NO")) + : FlareActor.asset( + asset, alignment: Alignment.center, fit: BoxFit.contain, animation: _animationName, diff --git a/flare_flutter/lib/flare_actor.dart b/flare_flutter/lib/flare_actor.dart index 2284356..1589c25 100644 --- a/flare_flutter/lib/flare_actor.dart +++ b/flare_flutter/lib/flare_actor.dart @@ -88,7 +88,7 @@ class FlareActor extends LeafRenderObjectWidget { this.artboard, }) : flareProvider = null; - FlareActor.asset( + FlareActor.rootBundle( String name, { this.boundsNode, this.animation, @@ -105,6 +105,22 @@ class FlareActor extends LeafRenderObjectWidget { }) : filename = null, flareProvider = AssetFlare(bundle: rootBundle, name: name); + const FlareActor.asset( + this.flareProvider, { + this.boundsNode, + this.animation, + this.fit = BoxFit.contain, + this.alignment = Alignment.center, + this.isPaused = false, + this.snapToEnd = false, + this.controller, + this.callback, + this.color, + this.shouldClip = true, + this.sizeFromArtboard = false, + this.artboard, + }) : filename = null; + @override RenderObject createRenderObject(BuildContext context) { return FlareActorRenderObject() From 6a1d0649c455ee76cc0e8789ca2b9364aa7cfba5 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Thu, 26 Dec 2019 10:43:29 -0800 Subject: [PATCH 56/59] Fixing pubspec and revving version to 2.0.0 as the asset provider breaks backwards compatibility. --- flare_flutter/pubspec.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/flare_flutter/pubspec.yaml b/flare_flutter/pubspec.yaml index 720d3d9..766ef1a 100644 --- a/flare_flutter/pubspec.yaml +++ b/flare_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: flare_flutter description: Vector design and runtime animation for Flutter. -version: 1.8.3 +version: 2.0.0 author: "Rive Team " homepage: https://github.com/2d-inc/Flare-Flutter environment: @@ -8,7 +8,8 @@ environment: dependencies: flutter: sdk: flutter - flare_dart: ^2.3.0 + flare_dart: + path: ../flare_dart/ meta: ^1.0.5 dev_dependencies: flutter_test: From 8edbb5932f70830d097a4c83b7e65f9be7e3cd7c Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Thu, 26 Dec 2019 10:52:34 -0800 Subject: [PATCH 57/59] Fixing change color example. --- .gitignore | 8 ++++++++ .../change_color/assets/Change Color Example.flr | Bin 907 -> 0 bytes example/change_color/lib/main.dart | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) delete mode 100644 example/change_color/assets/Change Color Example.flr diff --git a/.gitignore b/.gitignore index c8dd2c9..2f57fc8 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,11 @@ Generated.xcconfig .packages .dart_tool +/example/favorite/ios/Flutter/flutter_export_environment.sh +/example/change_color/ios/Flutter/flutter_export_environment.sh +/example/simple/ios/Flutter/Flutter.podspec +/example/simple/ios/Flutter/flutter_export_environment.sh +/example/change_color/ios/Flutter/Flutter.podspec +/example/favorite/ios/Flutter/Flutter.podspec +/flare_flutter/ios/Flutter +/example/change_color/assets/change_color_example.flr diff --git a/example/change_color/assets/Change Color Example.flr b/example/change_color/assets/Change Color Example.flr deleted file mode 100644 index f693071abb7b5f1fc0f45d1595d0b910a276e0e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 907 zcmZvaO=uHA6oB7Msx6B@APWmUXh1I!ijYtcB<`$H_Yzcc(92#TX_|ww?b-@Pg!Lza zhyYpLp``49#U^M7caSa=%JT%-fSl%(t)?%e6#P(PTu5d*2-Nu z0RZ&OyJ)ob)fI^*)-hTs3JG zotGS0eWI@;gW^9|j4!eG1E`LVz|yX`d9w^FUJ-DF6;-7u8{POAOhiAD~| zti8tYD6%U`igDrC{)~Ia^{}I|dxB~RFPs%}SVX3j_u`ice6qh={^G%xL}BXaz$M|{ zgX6zTIs){mK4ZOFG+Gl*T~axKeyoWvqH-Y{-zHcj4;?lne|rs%Z|L>TjD@0jy7ERk z8G(1!Y&y7r413cYsRbn_D{g5GhM7pLM8e}PZ^;R6jPhas7t0f);7O5qawK`t with FlareController { // the App.build method, and use it to set our appbar title. title: Text(widget.title), ), - body: FlareActor("assets/Change Color Example.flr", // You can find the example project here: https://www.2dimensions.com/a/castor/files/flare/change-color-example + body: FlareActor("assets/change_color_example.flr", // You can find the example project here: https://www.2dimensions.com/a/castor/files/flare/change-color-example fit: BoxFit.contain, alignment: Alignment.center, controller: this), floatingActionButton: FloatingActionButton( onPressed: _incrementCounter, From b12e9512c722290af799efdcd6fed8d3cf110530 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Thu, 26 Dec 2019 11:19:29 -0800 Subject: [PATCH 58/59] Fixing smiley_switch example. --- .../assets/{Smiley Switch.flr => smiley_switch.flr} | Bin example/checkbox/lib/smiley_switch.dart | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename example/checkbox/assets/{Smiley Switch.flr => smiley_switch.flr} (100%) diff --git a/example/checkbox/assets/Smiley Switch.flr b/example/checkbox/assets/smiley_switch.flr similarity index 100% rename from example/checkbox/assets/Smiley Switch.flr rename to example/checkbox/assets/smiley_switch.flr diff --git a/example/checkbox/lib/smiley_switch.dart b/example/checkbox/lib/smiley_switch.dart index b85fc75..c73295d 100644 --- a/example/checkbox/lib/smiley_switch.dart +++ b/example/checkbox/lib/smiley_switch.dart @@ -14,7 +14,7 @@ class SmileySwitch extends StatelessWidget { child: Container( width: 200, height: 100, - child: FlareActor("assets/Smiley Switch.flr", + child: FlareActor("assets/smiley_switch.flr", snapToEnd: snapToEnd, animation: isOn ? "On" : "Off"))); } From 04ac1f85699ba2f9f633ca376c7e0a13cd55f2ec Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Thu, 26 Dec 2019 11:26:29 -0800 Subject: [PATCH 59/59] Fixing space_reload example. --- .../assets/{Space Demo.flr => space_demo.flr} | Bin example/space_reload/lib/refresh_control.dart | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename example/space_reload/assets/{Space Demo.flr => space_demo.flr} (100%) diff --git a/example/space_reload/assets/Space Demo.flr b/example/space_reload/assets/space_demo.flr similarity index 100% rename from example/space_reload/assets/Space Demo.flr rename to example/space_reload/assets/space_demo.flr diff --git a/example/space_reload/lib/refresh_control.dart b/example/space_reload/lib/refresh_control.dart index f86b6b2..295bd21 100644 --- a/example/space_reload/lib/refresh_control.dart +++ b/example/space_reload/lib/refresh_control.dart @@ -98,7 +98,7 @@ class _CupertinoRefreshControlDemoState _refreshTriggerPullDistance = refreshTriggerPullDistance; _refreshIndicatorExtent = refreshIndicatorExtent; - return FlareActor("assets/Space Demo.flr", + return FlareActor("assets/space_demo.flr", alignment: Alignment.center, animation: "idle", fit: BoxFit.cover,