From 4cb915605f6c25d14aa9fa81a24c0c1007035d6d Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Sun, 19 Jul 2020 18:18:34 -0700 Subject: [PATCH] Revving format to 2 with smaller string encoding. --- example/assets/blue_artboard.riv | Bin 461 -> 0 bytes example/assets/colors_juice.riv | Bin 21963 -> 0 bytes example/assets/cubic_work.riv | Bin 10483 -> 0 bytes example/assets/draworderanimation_3.riv | Bin 837 -> 0 bytes example/assets/jet_fighter.riv | Bin 7789 -> 0 bytes example/assets/ping_pong.riv | Bin 7487 -> 0 bytes example/assets/tape_deck.riv | Bin 13495 -> 0 bytes example/assets/teeny_tiny.riv | Bin 0 -> 62601 bytes example/assets/web_&_desktop_2.riv | Bin 26305 -> 0 bytes example/lib/main.dart | 4 ++-- lib/src/core/field_types/core_string_type.dart | 3 ++- lib/src/rive_core/runtime/runtime_header.dart | 2 +- .../utilities/binary_buffer/binary_reader.dart | 4 ++-- .../utilities/binary_buffer/binary_writer.dart | 6 ++++-- 14 files changed, 11 insertions(+), 8 deletions(-) delete mode 100644 example/assets/blue_artboard.riv delete mode 100644 example/assets/colors_juice.riv delete mode 100644 example/assets/cubic_work.riv delete mode 100644 example/assets/draworderanimation_3.riv delete mode 100644 example/assets/jet_fighter.riv delete mode 100644 example/assets/ping_pong.riv delete mode 100644 example/assets/tape_deck.riv create mode 100644 example/assets/teeny_tiny.riv delete mode 100644 example/assets/web_&_desktop_2.riv diff --git a/example/assets/blue_artboard.riv b/example/assets/blue_artboard.riv deleted file mode 100644 index 53252c82dd3e3d807f1ba875d975e176a786c25d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 461 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 JK8H1x`~cnTd;b6c diff --git a/example/assets/jet_fighter.riv b/example/assets/jet_fighter.riv deleted file mode 100644 index 2cbbae7776688bb0a9562b67e3ce89fcd40a8a6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7789 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 diff --git a/example/assets/ping_pong.riv b/example/assets/ping_pong.riv deleted file mode 100644 index 0a513b8f6d48b03de7843ffd894f64432c6d7c8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7487 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 diff --git a/example/assets/tape_deck.riv b/example/assets/tape_deck.riv deleted file mode 100644 index 96fcaa654f1297860ea12f2e86eff00f2071ed05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13495 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 G@jn4Fb-W2^-*>LA$-URwYp?y;Yp=cb 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 diff --git a/example/lib/main.dart b/example/lib/main.dart index 88729b6..6b8fd0f 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -44,7 +44,7 @@ class _MyHomePageState extends State { // Load the animation file from the bundle, note that you could also // download this. The RiveFile just expects a list of bytes. - rootBundle.load('assets/colors_juice.riv').then( + rootBundle.load('assets/teeny_tiny.riv').then( (data) async { var file = RiveFile(); // Load the RiveFile from the binary data. @@ -56,7 +56,7 @@ class _MyHomePageState extends State { // Add a controller to play back a known animation on the main/default // artboard.We store a reference to it so we can toggle playback. artboard.addController( - _controller = SimpleAnimation('walk'), + _controller = SimpleAnimation('idle'), ); setState(() => _riveArtboard = artboard); } diff --git a/lib/src/core/field_types/core_string_type.dart b/lib/src/core/field_types/core_string_type.dart index 1599a9c..cec1892 100644 --- a/lib/src/core/field_types/core_string_type.dart +++ b/lib/src/core/field_types/core_string_type.dart @@ -3,7 +3,8 @@ import 'package:rive/src/utilities/binary_buffer/binary_reader.dart'; class CoreStringType extends CoreFieldType { @override - String deserialize(BinaryReader reader) => reader.readString(); + String deserialize(BinaryReader reader) => + reader.readString(explicitLength: false); @override String lerp(String from, String to, double f) => from; diff --git a/lib/src/rive_core/runtime/runtime_header.dart b/lib/src/rive_core/runtime/runtime_header.dart index 231920f..333bb35 100644 --- a/lib/src/rive_core/runtime/runtime_header.dart +++ b/lib/src/rive_core/runtime/runtime_header.dart @@ -4,7 +4,7 @@ import 'package:rive/src/utilities/binary_buffer/binary_reader.dart'; import 'exceptions/rive_format_error_exception.dart'; class RuntimeHeader { - static const int majorVersion = 1; + static const int majorVersion = 2; static const int minorVersion = 0; static const String fingerprint = 'RIVE'; final int ownerId; diff --git a/lib/src/utilities/binary_buffer/binary_reader.dart b/lib/src/utilities/binary_buffer/binary_reader.dart index eb529b1..f2006c9 100644 --- a/lib/src/utilities/binary_buffer/binary_reader.dart +++ b/lib/src/utilities/binary_buffer/binary_reader.dart @@ -115,8 +115,8 @@ class BinaryReader { /// Read a string encoded into the stream. Strings are encoded with a varuint /// integer length written first followed by length number of utf8 encoded /// bytes. - String readString() { - int length = readVarUint(); + String readString({bool explicitLength = true}) { + int length = explicitLength ? readVarUint() : buffer.lengthInBytes; String value = _utf8Decoder.convert(Uint8List.view( buffer.buffer, buffer.offsetInBytes + _readIndex, length)); _readIndex += length; diff --git a/lib/src/utilities/binary_buffer/binary_writer.dart b/lib/src/utilities/binary_buffer/binary_writer.dart index 5c9a4af..1ef1ae7 100644 --- a/lib/src/utilities/binary_buffer/binary_writer.dart +++ b/lib/src/utilities/binary_buffer/binary_writer.dart @@ -151,9 +151,11 @@ class BinaryWriter { /// Encode a string into the buffer. Strings are encoded with a varuint /// integer length written first followed by length number of utf8 encoded /// bytes. - void writeString(String value) { + void writeString(String value, {bool explicitLength = true}) { var list = _utf8Encoder.convert(value); - writeVarUint(list.length); + if (explicitLength) { + writeVarUint(list.length); + } write(list); }