Skip to content

Commit

Permalink
Squashed commit of the following:
Browse files Browse the repository at this point in the history
commit e9712a4
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Thu Nov 7 12:32:17 2019 -0800

    Bumping versions.

commit 366cdc0
Author: Luigi Rosso <luigi.rosso@gmail.com>
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 53a7c65
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Wed Nov 6 17:30:42 2019 -0800

    Updating flare_flutter version.

commit b391dd4
Merge: 1e9b22e 9ec074b
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Wed Nov 6 17:28:34 2019 -0800

    Merge branch 'warmth_fix'

commit 9ec074b
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Wed Nov 6 15:43:31 2019 -0800

    Call setState if mounted.

commit c66ac64
Author: Luigi Rosso <luigi.rosso@gmail.com>
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 1e9b22e
Author: Umberto Sonnino <rimher@gmail.com>
Date:   Wed Nov 6 19:02:25 2019 +0100

    Init mat before inverting

commit bc07b87
Author: Umberto Sonnino <rimher@gmail.com>
Date:   Wed Nov 6 19:00:13 2019 +0100

    Remove local flare_dart from examples pubspec #184

commit e1cca7c
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Tue Oct 29 12:50:30 2019 -0700

    Bumping versions, merging optimal_load branch, and persisting settings in checkbox example.

commit 55cae39
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Tue Oct 29 12:41:43 2019 -0700

    Copy transform affects stroke properly when instancing shapes.

commit 43716dd
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Mon Oct 28 12:52:09 2019 -0700

    Prevent coldLoad (async) from happening when widget isn’t ready to load.

commit 506837e
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Fri Oct 25 13:00:56 2019 -0700

    Improving loading.

commit 9ee95b9
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Fri Oct 25 10:42:42 2019 -0700

    Make sure overrideColor is set even when drawableNodes is null.

commit 7d59de1
Author: Umberto Sonnino <rimher@gmail.com>
Date:   Fri Oct 25 13:15:34 2019 +0100

    Move null check

commit 528af53
Author: Umberto Sonnino <rimher@gmail.com>
Date:   Fri Oct 25 13:10:17 2019 +0100

    Insert null checks for artboards with no drawables #178

commit 33f23a7
Author: Umberto Sonnino <rimher@gmail.com>
Date:   Fri Oct 25 12:16:16 2019 +0100

    Remove GradientColor override of ActorPaint opacity getter #179

commit 59ba2f0
Author: Umberto Sonnino <rimher@gmail.com>
Date:   Thu Oct 24 09:31:41 2019 +0100

    Document the `actor_animatino.apply()` function

commit d77438f
Author: Umberto Sonnino <rimher@gmail.com>
Date:   Thu Oct 24 09:31:10 2019 +0100

    Fix division by 0 on transform constraint

commit f0cf988
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Fri Oct 11 12:59:13 2019 -0700

    Fix reading of JSON clip values. Issue #172

commit a7796e0
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Fri Oct 11 12:39:48 2019 -0700

    Mitigating issue #172.

commit 373c14a
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Wed Oct 9 14:21:47 2019 -0700

    Fixing issue with image clipping.

commit ae1c901
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Wed Oct 9 11:19:16 2019 -0700

    Fix merge bugs.

commit d8cb780
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Wed Oct 9 11:09:42 2019 -0700

    Adding support for difference clipping.

commit bf99a76
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Tue Oct 8 19:07:26 2019 -0700

    Matching stable version

commit 9becc74
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Tue Oct 8 13:58:11 2019 -0700

    Bumping flare_dart to 2.0 due to breaking changes.

commit 0a292cc
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Tue Oct 8 13:39:57 2019 -0700

    Bumping versions and changelogs.

commit 431a98e
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Tue Oct 8 13:35:26 2019 -0700

    Fixing up analysis issues for #169

commit 72fb6fc
Merge: 4d00202 dc68dea
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Tue Oct 8 13:02:17 2019 -0700

    Merge branch 'master' of https://github.com/2d-inc/Flare-Flutter

commit 4d00202
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Tue Oct 8 13:02:11 2019 -0700

    Cleaning up analysis issues.

commit dc68dea
Merge: 5ca8d49 f1d9749
Author: Luigi Rosso <luigi-rosso@users.noreply.github.com>
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 f1d9749
Author: Mehmet Fidanboylu <mehmetf@google.com>
Date:   Tue Oct 8 10:20:58 2019 -0700

    Do the same changes to flare_dart

commit 64f395e
Author: Mehmet Fidanboylu <mehmetf@google.com>
Date:   Tue Oct 8 10:17:51 2019 -0700

    Escalate the severity of unused imports in analyzer

commit 5ca8d49
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Mon Oct 7 11:22:38 2019 -0700

    Bumping versions and changelog.

commit 874ce8e
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Mon Oct 7 11:20:28 2019 -0700

    Adding support for nodes inside of shapes.

commit 4d06431
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Fri Oct 4 18:06:09 2019 -0700

    Introducing FlareTesting.setup();

commit 2c5f420
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Fri Oct 4 13:44:25 2019 -0700

    Clamping trim start/end.

commit daba34d
Author: Luigi Rosso <luigi.rosso@gmail.com>
Date:   Mon Sep 30 21:21:55 2019 +0200

    Cherry picking critical lints from #1 63 and updating for pub.
  • Loading branch information
luigi-rosso committed Nov 7, 2019
1 parent ee997b7 commit 0b759df
Show file tree
Hide file tree
Showing 6 changed files with 83 additions and 3 deletions.
4 changes: 4 additions & 0 deletions flare_dart/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
12 changes: 12 additions & 0 deletions flare_dart/lib/actor_image.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion flare_dart/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: flare_dart
description: Vector design and runtime animation.
version: 2.2.3
version: 2.2.4
author: "2Dimensions Team <info@2dimensions.com>"
homepage: https://github.com/2d-inc/Flare-Flutter
environment:
Expand Down
4 changes: 4 additions & 0 deletions flare_flutter/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
62 changes: 61 additions & 1 deletion flare_flutter/lib/flare.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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<bool> 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<bool>();
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<bool> 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();
Expand Down Expand Up @@ -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());

Expand Down
2 changes: 1 addition & 1 deletion flare_flutter/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -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 <info@2dimensions.com>"
homepage: https://github.com/2d-inc/Flare-Flutter
environment:
Expand Down

0 comments on commit 0b759df

Please sign in to comment.