341 Commits

Author SHA1 Message Date
a86d5e5f02 Code generator fixes alternative
three commits

1 - updated the generator
2 - ran generator against core
3 - ran generator against core runtime

i tried to remove all the changes that are not the comment change

Diffs=
1292ebe56 Code generator fixes alternative (#5584)
094afae0b Adding target origin to transform constraint. (#5559)

Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
2023-07-14 11:06:02 +00:00
ca712600bc refactor: asset resolving
Adds some cleanup to this previous PR: https://github.com/rive-app/rive/pull/5411/files

- Brings back some classes and parameters and mark them as deprecated.
- Changed the naming for parameters
- Removed asset resolving from the high level `RiveAnimation` widget, prefer to manage this by loading in your own `RiveFile`. This is to avoid introducing too many changes that we may revert down the line
- Removed code comments that were intended as questions, marked some as TODOs
- Improved documentation and cleaned up example

The cached asset example now has a button to hot swap out assets at runtime by keeping a reference to the asset. This works for images, but not for Fonts.
- We can either remove this example for the time being
- Or investigate why it does not swap out (I would expect it to)

Diffs=
94e3490ae refactor: asset resolving (#5563)
bae069339 Stop automatically pruning empty segments in RawPath (#5557)
2d2d8c413 Line Height & Paragraph Spacing (#5552)

Co-authored-by: Gordon <pggordonhayes@gmail.com>
2023-07-13 14:06:41 +00:00
d58c3c762b Runtime modifiers
Finally ready! Some highlights:
- Text objects own TextModifierGroups
- A TextModifierGroup defines a set of operations (Modifiers) to perform on ranges of the whole Text object.
- The ranges are defined by TextModifierRanges which are owned by TextModiferGroups. Each TextModifierGroup can have multiple TextModifierRanges, meaning that the set of Modifiers will perform on the final selection defined by TextModifierRanges.
- TextModifierRanges select portions of the text in a Text object based on rules that define the strength of the selection. The strength of multiple TextModifierRanges can be blended together meaning selection strength can be above 1 and below 0 (optionally clamped).
- There are three fundamental modifications:
  1. Transform where glyphs are individually transformed by a matrix
  2. Paint where glyphs are drawn with different paint (currently only opacity is supported, but later Fill and Stroke will be too).
  3. Shape where a selection can have shaping properties (currently variable axes later also font size) changed. This is the most complex one as it requires [two pass shaping](ef2d0d3ca3/packages/runtime/src/text/text.cpp (L578-L598)).

Diffs=
8086bdbf9 Runtime modifiers (#5512)
1a271c437 Get more compiling on MSVC (#5547)
5a18c89bd Swap propertyKeys between follow path and text core defs (#5543)
942bb8c94 Fix conflicting core key ids and set follow path offset to default false (#5541)
dcf320c64 Follow Path Constraint (Editor & CPP Runtime) (#5510)

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
2023-07-12 18:19:56 +00:00
8e9077dbf7 Adding origin to text.
Adds origin to text object that works just like the origin of a parametric path. It can be moved in freeze mode too. Adds support in the editor, Flutter runtime, and C++ runtime.

Diffs=
9b8dacbac Adding origin to text. (#5533)
797fb4cbd Add CMake support for building Android and Catch2 Tests (#5468)

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
2023-07-07 22:11:27 +00:00
e42bfd2599 Add cdn overwrite
allowing the cdn to be set per asset, defaults to our public production cdn.

its a "little" wasteful, but should only find usage when we are exporting .riv's from uat (which will be a little bit bigger as a result of this)

We could put the cdn base url onto the rivefile as a whole, i don't think it buys us much & this is simpler.
also considered putting the default string into the runtime (where it was priori to this) but i think its better of in the defs (as the defs would default to an empty string otherwise, which makes the code ever so slightly messier to read). I think this comes out just a crappy if we ever change the default cdn url.

Diffs=
5c76c52e1 Add cdn overwrite (#5522)

Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
2023-07-06 13:13:09 +00:00
0e3fdf8de5 Caching example
(basing this pr onto our dart runtime change for now, to limit scope)

made some small tweaks to function names, mostly to get fonts and images to "feel" more similar.

broke out "decode' into parsing the asset first.

makes it possible to cache images/fonts with our dart runtime, example included

Diffs=
40302069e Caching example (#5517)

Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
2023-07-06 10:50:13 +00:00
5def5d7b1c Font dart runtime
There are a number of questions I'd like to resolve before considering to merge this. also a few thigns to clean up no doubt

# Questions before merging
To customize loading out of band assets, we expect our users to implement
```
abstract class FileAssetLoader {
  Future<bool> load(FileAsset asset);
  bool isCompatible(FileAsset asset) => true;
}
```

1. is this a good interface (i've changed `loadContents`, to `load`)? (if we like this we should change this in cpp too)
2. `FileAssetLoader` is a mouth-full, would `AssetLoader` be better?
3. We are passing `FileAssets` (our core objects) to users with some slight api extensions, is that good? should we just wrap this in an Asset class (I had this before, its not a lot of work to get it back)

things sorted
- [x] cdn "loading" vs url loading
    - just sticking with cdn, users can customize for url
- [x] asset class for consumers of our runtime.
    - i've avoided this one for now, just extending our FileAsset
- [x] Importer/Resolver/Loader. I flipped some names around, mostly because I want our end users to provide an `AssetLoader`, not a resolver.

things to sort out down the line, i'm declaring them out of scope for this pr, fft disagree:
- Fallback font, I see we have a fallback font file hardcoded in the runtime. should investigate if we can include an asset for people like this, or if we need to have users set this if they want to use fallback fonts.
- Image Placement, we should strip width/height from runtimes on ImageAssets
- What do we want to do about asset loading / decoding errors
- TextStyle has both assetId & fontAssetId it gets assetId from the file asset referencer, its nbd,

Diffs=
06e959ad2 Font dart runtime (#5411)

Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
2023-07-06 08:49:14 +00:00
ba5f9afbac add skip to core string type, to avoid trying to parse bytearrays as …
…strings

an approach we could do to sort this out

Diffs=
9007b7f92 add skip to core string type, to avoid trying to parse bytearrays as … (#5503)

Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
2023-06-29 13:41:29 +00:00
fe30e35068 Run generate
just trying to flush through some of the bits coming out of running generate core runtime & generate core runtime without making a mess in other pr's .
this is split into four commits which might be helpful when looking at the changes here.

Diffs=
ad72cfce5 Run generate (#5490)
7ee5f7d5a Increases the margin for the approx call to some of the wangs formula… (#5506)
2f224da7f Runtime ellipsis (#5482)

Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
2023-06-29 08:29:17 +00:00
13adb8da86 Bump Flutter runtime version and changelog, small analyze fix
Following our runtimes upgrade docs here: https://www.notion.so/rive-app/Updating-Runtimes-e03da3c30a0448e59e72e82e3e8f9f6f

Unsure if this needs to be committed and pushed down first before doing the flutter publish, or after. @luigi-rosso ?

Diffs=
ca5884788 Bump Flutter runtime version and changelog, small analyze fix (#5495)
500d878a2 fix viewer build (#5493)

Co-authored-by: Zachary Plata <plata.zach@gmail.com>
2023-06-27 17:20:07 +00:00
93c1ca86e2 Feature options on Fonts
Adds runtime and editor support for setting feature flags on a Font.

The biggest change to the font engine is that the feature options are now stored on the Font object itself instead of hard-coded during shaping. This is nice as it requires no extra data to be piped through for individual run styling. It also means that we generalized the concept of creating a variable font as configuring a version of the font (see withOptions replacing makeVariation) so that variable axis and feature settings are treated as options to a Font configuration.

This also allows us to track existing variations and options on the configured Font such that any further call to "withOptions" on that already configured Font will propagate previous changes if not overridden. This fortuitously also fixes an issue the modifiers were exhibiting where a variation set on the TextStyle that wasn't part of the modifier set would be lost.

Diffs=
31d9a5424 Feature options on Fonts (#5479)
8b7587241 Runtime/interpolate states cpp (#5437)

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
2023-06-26 17:36:43 +00:00
4893a3e79e Add transition interpolation to the runtime
Just ran `generate_core_runtime.sh` which added quite a lot of stuff. The change is quite minimal, I'll highlight it with a few comments in the PR.
I'll also adding a test for these new cubic exports just in case!

Fixes the Flutter bit for #5404

Diffs=
59858e333 Add transition interpolation to the runtime (#5429)

Co-authored-by: Umberto Sonnino <umberto@rive.app>
2023-06-19 18:53:56 +00:00
76b43e1cc2 Add setting custom headers
adding pr from the community https://github.com/rive-app/rive-flutter/pull/314, including an update to how we make sure credits for contributions are kept when our mono scripts merge changes upstream.

Some companies don't let the rive file URLs without authentication, that's why they need to send headers in the network request.

Example of how to use:

```
RiveAnimation.network(
          'https://cdn.rive.app/animations/vehicles.riv',
          headers: {'Authorization': '{token}'},
        )
```

The same idea is in the [flutter_svg package](https://pub.dev/documentation/flutter_svg/latest/svg/SvgPicture/SvgPicture.network.html)

Diffs=
c163c1a7f Add setting custom headers (#5327)

Co-authored-by: Ahmed Wahba <a.tarek360@gmail.com>
Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
2023-05-31 11:56:54 +00:00
37eb623b96 Text modifiers!
Adds support for text modifiers, which are a set a of operations that can run on a per character basis to transform, reshape, and fade resulting glyphs.

Adds:
- Modifier groups which encompass a set of modifications done to a range of the text.
- Range selectors which help define the range the modifier applies to (multiple range selectors can be included to build up the final selection of a modifier group).
- Variation modifiers which allow animating variable fonts per character.
- Origin, Translation, Rotation, and Scale modification.
- Opacity modifiers.

Diffs=
9695de6e3 Text modifiers! (#5288)
a9f8a1c5d Macos take2 (#5258)
2023-05-25 17:53:23 +00:00
32672e1326 replace performResize with computeDryLayout
fix up an edge case where we require computeDryLayout over performResize

https://docs.flutter.dev/release/breaking-changes/renderbox-dry-layout

the default implementation of performResize uses dryLayout so we can get rid of our override there. I was not able to make a unit test that fails without computeDryLayout, but an app with the below will throw this error

```
══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY
╞═════════════════════════════════════════════════════════
The following assertion was thrown during performLayout():
The RiveRenderObject class does not implement "computeDryLayout".
If you are not writing your own RenderBox subclass, then this is not
your fault. Contact support: https://github.com/flutter/flutter/issues/new?template=2_bug.md
```

```
import 'package:flutter/material.dart';
import 'package:rive/rive.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: LayoutBuilder(builder: (context, constraints) {
        return SingleChildScrollView(
          child: ConstrainedBox(
            constraints: BoxConstraints(
              minHeight: constraints.maxHeight,
            ),
            child: const IntrinsicHeight(
              child: Column(
                children: <Widget>[
                  Wrap(
                    children: [
                      SizedBox(
                        height: 100,
                        child: IntrinsicHeight(
                          child: RiveAnimation.network(
                            'https://cdn.rive.app/animations/vehicles.riv',
                          ),
                        ),
                      ),
                    ],
                  ),
                ],
              ),
            ),
          ),
        );
      }),
    );
  }
}
```

Diffs=
4f7d11d85 replace performResize with computeDryLayout (#5278)
2023-05-24 10:59:05 +00:00
6395bceaf7 Joystick ordering
Fixes issue with dependencies discussed here:
https://github.com/rive-app/rive/pull/5275

Joysticks now build their own DAG and export in the correct order for runtime.

Diffs=
f2ecb824b Joystick ordering (#5277)
2023-05-23 05:23:17 +00:00
a0e536a331 Joystick updates
- Adds invert x/y to joystick (Thanks @alxgibsn)
- Adds the invert to Flutter and C++ runtimes.
- Updates Cpp core generator to latest Flutter+NNBD.
- Fixes warnings and errors from latest Flutter (Dart SDK really).

Diffs=
a4fb3dc7d Joystick updates (#5261)
8f8e06b9e Attempt fixing the builds with new Docker images (#5253)
7768798a7 Update to Flutter 3.10.0 (#5247)
2023-05-20 18:07:35 +00:00
0d010f0191 Joysticks & Slider!
Diffs=
7acff50d4 Joysticks & Slider! (#5249)
e65175b88 Fix flickering caught in high level runtimes. (#5243)
2023-05-16 04:44:51 +00:00
6dd6778410 Aabb3
pr containing the changes here https://github.com/rive-app/rive/pull/3581

I've made a new branch/pr, just so its easier for you to check that i've not rebased something important tout...
I've also tried to remove most uses of [], bounds_resize does math using it.. it probably can get reworked, we just need to update a few things, like what edges are represented like etc...

Diffs=
d0bca2e72 Aabb3 (#5226)
2023-05-08 09:06:16 +00:00
86846ca956 Minor changes for publishing rive_flutter to pub.dev
Diffs=
8115f9a07 Minor changes for publishing rive_flutter to pub.dev (#5117)
abc600932 Propagate collapse to path composer. (#5116)
9266e0d30 Fix for runtime crash with skins nested in solo nodes. (#5109)
2023-04-14 00:17:17 +00:00
8379e840da Blend animation direct change
- silence a few linter issues
- update default blend animation mix value to be 100. its either 0 or 100, 1 made no sense. i think 100 is right.
- made a clamped input converter to set values between 0 & 100 nicely & it rounds values when you drag

adds option for selecting setting the mix input or the mix value on uat @alxgibsn, what do we want this to say? "Set Blend Value? "Set Mix Value?

<img width="320" alt="image" src="https://user-images.githubusercontent.com/1216025/229121083-d8233155-4bce-475e-bdb3-697ebd951360.png">

can have both by input and by value, they look very subtlely different
<img width="272" alt="image" src="https://user-images.githubusercontent.com/1216025/229121329-f8bd8596-0247-42f9-bd82-1979778b8ad3.png">

Diffs=
d9fc7d927 Blend animation direct change (#5080)
2023-04-03 12:14:44 +00:00
a7ba0546b9 add directBlendState by mix value, bypassing setting inputs
fixes https://github.com/rive-app/rive/issues/5039

lets you set integer values as input

https://user-images.githubusercontent.com/1216025/228241518-2d08812d-c283-4a15-a94d-9bb72544ecc3.mp4

todo (leaving because i want feedback first):
- [x] add tests
- [x] update cpp runtime
- [x] run `generate_core_runtime.sh`
- [x] run `generate_core.sh` for cpp

Diffs=
6df791fe4 add directBlendState by mix value, bypassing setting inputs (#5053)
2023-03-30 14:25:22 +00:00
6fa4cca892 Adds solo support to flutter runtime.
Diffs=
011f9ab58 Adds solo support to flutter runtime. (#5068)
d9952ae77 Fix clipping issue caused by wrong fillRule (#5067)
2023-03-29 22:36:54 +00:00
428b1a6dad Solos
So far:
- [x] Editor
- [x] Dart Tests
- [x] Flutter Runtime
- [x] C++ Runtime
- [x] C++ Tests

Hierarchy interaction:
<img width="280" alt="CleanShot 2023-03-24 at 21 44 53@2x" src="https://user-images.githubusercontent.com/454182/227696646-09f9cbe5-c482-4bab-aae9-b0b36c16047e.png">

Nesting:
<img width="394" alt="CleanShot 2023-03-24 at 21 45 23@2x" src="https://user-images.githubusercontent.com/454182/227696653-b1132ba1-5471-4c6d-9b59-20387389ae12.png">

Inspector active solo selection:
<img width="253" alt="CleanShot 2023-03-24 at 21 45 33@2x" src="https://user-images.githubusercontent.com/454182/227696660-6676acfa-15ab-4ae2-a866-4b7898bc1f52.png">

Animatable with timeline hierarchy value too:
<img width="510" alt="CleanShot 2023-03-24 at 21 46 07@2x" src="https://user-images.githubusercontent.com/454182/227696686-255064c9-43fd-4213-9e3f-9cd46cca9de3.png">

Diffs=
daaf140ba Solos (#5047)
44ef23f7e Text fix variable and opacity (#5017)
3c396d3b8 Text style variation at runtime. (#5014)
2023-03-28 23:39:09 +00:00
ae4f4e71dd prepping flutter runtime release
just prepping for a rive-flutter runtime release

Diffs=
ea255ef1b prepping flutter runtime release (#4994)
6e95e7e1f fix up the viewer to progress time even when we miss a frame or two (#4912)
b90ac530a Decompose accounts for 0 scale, adds test. (#4975)
2023-03-13 19:19:49 +00:00
fbe1850620 force blend states to keepGoing
makes blend states keepGoing!

fixes a regression introduced when looking at keep going of states when deciding if to advance them. for blend states specifically mixing is done as well as animating animation instances, and if the mix value changes we need to apply this change.

@luigi-rosso struggled to build state machines into an automated test on the cpp side before. going to add one loading a `.riv` for this I think, at least to cover some basics here.

btw, I assume we also want this behaviour for direct blend states

https://2dimensions.slack.com/archives/CHMAP278R/p1677820699177779

Diffs=
2504d2ab2 force blend states to keepGoing (#4922)
2023-03-03 18:08:36 +00:00
fe57e817f3 Fix negative speeds in state machines
look commit by commit potentially, last couple of commits are running core generator

& its quite a small change code wise, so it'd be good to get feedback on the actual change sooner rather than later

there are at least a couple of changes in there that should make you question if this is a good idea so i expect some feedback.

add to cpp: (i just got it working in the viewer, probably broke some things)
- [x] negative time fix
- [x] combine state speed to determine time for state
- [x] no longer carry spilled time into new advances

add test
- [x] negative time fix to state machines
- [x] negative combined time state fix to state machines
- [ ] no longer carry spilled time into new advances @luigi-rosso i tried adding tests for this, but i was not really able to construct a state machine instance (with an animations, an animation state and the right transition) in tests I had to add a bunch of public methods all over the place, can you show me the way? probably not a blocker for merging this)

apply changes to rive_flutter
- [x] run script (ran both core generator and core generator runtime, the runtime one wanted to remove a load of comments so i didnt let those bits be committed. but still.. annoying)

Diffs=
bc6c6f467 Fix negative speeds in state machines (#4887)
040a27c1c Generate Android builds directly from premake (#4871)
12285f625 Put SIMD perf warnings behind a flag (#4861)
157a399d2 update id in code (#4855)
2023-02-28 11:53:47 +00:00
236ae26640 Speed 4793
adds speed on states!

currently just to animation states 👇
<img width="1121" alt="image" src="https://user-images.githubusercontent.com/1216025/217915050-0bea976f-88b1-4aef-aeb0-bed6f36cc577.png">

I've called this 'AdvanceableState', which we could make blendstates/etc inherit from to give em the powers... not sure if there's a better name people can come up with here... also not sure if that empty lookin' class is the right way to do it, so i'd love feedback on that (and if there's a different example somewhere that would be super helpful to see as well)

also fixed up the generator scripts for dart 3, at least the dart ones, the cpp ones were beyond my patience, gotta dart 2.12 for those...

also fixed an issue where we were checking speed against playing backwards, not speed and direction!

@alxgibsn going to bug you for some styling input

works in both editor and viewer!

going to look about adding a test.. or two....

https://user-images.githubusercontent.com/1216025/217915843-6126d3cf-bf19-4a9d-9a95-adb3a498e75d.mov

https://user-images.githubusercontent.com/1216025/217915852-252d4f78-280e-4a63-838c-39d6b27e3e31.mov

Diffs=
ffeb9afaf Speed 4793 (#4806)
2023-02-16 10:29:00 +00:00
27be816a46 Update flutter runtime
- ran ```dev/generate_core_runtime.sh build```
- cleaned up a lot of accumulated changes from the last few months that needed to be stripped/modified for the rutnime
- removed no longer supported lining options from analysis files
- fixed up defs for some editor only features so they don't transpile
- added some more details to changelog
- bumped pubspec version

Diffs=
aa8c750bd Update flutter runtime (#4835)
2023-02-15 23:47:35 +00:00
00798ca173 Perf/flutter runtime opacity check
- Adds checks to see if a drawable has a 0% opacity before performing draw commands
- Add skinning example

Diffs=
a61f4c6b5 apply changes to rive_core
8152b8a02 docs: update CHANGELOG
b8f61022c perf: check if opacity is 0 before drawing
4c4826e67 chore: add typedef argument names
ff94982f9 docs: add skinning sample
f1ddd88d4 Fix artboard pieces slowly popping in. (#4818)
3039909c2 Update to using deployment workflow similar to ios
53a8f9517 Fix direction when looping. (#4786)
4c5a576ad Fix ping pong hang (#4776)
ae1e02afc Fix tess test linking (#4773)
4ecbf9321 Fix remap based on issue JC caught. (#4771)
89e38b700 allow negative speed (#4770)
4d115b4c6 Adding GLSL100 for tess renderer. (#4767)
31a3972aa ios shaders for tess (#4765)
686e5125b Add dependency to correct grand parent for linear gradients. (#4753)
e737ee427 Revert "Update to using deployment workflow similar to ios"
de0e57d55 Update to using deployment workflow similar to ios
051769242 Runtime Text! (#4741)
331ad0d55 Build cleanups
2538229d6 Use Rive's libpng premake dependency in golden testing
42a0377bc Fix condition with trim paths where all contours are 0 length. (#4722)
ea1c83d02 Use os.copyfile() instead of the '{COPY}' command
5c03e1640 Remove forcing arch to arm64 for libpng (#4715)
404a04d35 Cleaning up libpng premake to be isolated/stand-alone. (#4713)
2023-02-13 18:13:08 +00:00
82e5dc984c perf: fix didUpdateWidget and artboard config
This resolves a performance and usability issue where certain conditions would result in Rive needlessly reconfiguring/initializing the Rive artboard (as well as downloading/loading Rive files). If `onInit`, `animations`, `controllers`, or `stateMachines` were passed in as an argument to `RiveAnimation` the above issue is triggered on each widget rebuild. Under certain conditions this could result in an animation constantly restarting, bad performance, or Flutter ending up in a `setState` callback loop.

This PR also clears the list of local controllers each time init is called.

Resolves: https://github.com/rive-app/rive-flutter/issues/277

This also fixes bugs in our example app
- Play/Pause not working
- One shot animation behaving oddly

Diffs=
9af05d044 docs: update changelog
cb7fd6d14 test: add rive animation onInit tests
107ae16bc refactor: naming and call logic
6857aa691 docs: add additional code docs
f3ba4f015 perf: fix didUpdateWidget configure loop
7d0aaaff3 Adjust RiveAnimation didUpdateWidget condition (https://github.com/rive-app/rive-flutter/issues/278)
d4c6dd4ab Add more helper functions
6a8f9e249 Fix tess for C++11 and add to github action (#4571)
c8b5fdadd More SIMD features
87f079a10 RawPath::Iter improvements
2023-01-10 08:59:52 +00:00
cac78883af Value Graph Export + Runtime Support!!
- Renamed CubicInterpolator to CubicEaseInterpolator so that CubicInterpolator can now be the base class for both CubicEaseInterpolator and CubicValueInterpolator.
- Added CubicValueInterpolator to cpp and Flutter runtimes.
- Test in cpp runtime for the new cubic value interpolation.

Diffs=
1e80ad08f Value Graph Export + Runtime Support!! (#4524)
c532f8658 Shorten harfbuzz/SheenBidi directory paths
312a6c778 Drop the runtime to C++11
de4fe4d71 export MAKE_SKIA_FILE from all top-level scripts that build Skia
75a6b74b8 Beef up testing in tools/*
79f98695a Don't show interactive download progress when premaking on bots
b7fd1d825 Move golden testing into tools/
2022-12-14 22:15:43 +00:00
af6e7d4c07 rive_common package
I started adding Text features to rive_core and realized that the dependency structure is going to be very difficult to manage here. Here's why:

## rive_core
 - has most of the runtime logic for things like IK, mesh, shapes, etc

## rive_flutter
 - depends on rive_core (not directly but we transpile rive_core to rive_flutter)
 - also includes the FFI/WASM text runtime

The problem is that rive_core needs the FFI/WASM text runtime. So we have a cyclic dependency. We've dealt with something similar (not quite as extreme) by abstracting things like nested artboards, but it gets very complex for a verbose API like the text one.

## rive_common
What this PR does is reworks a lot of shared logic like Math (Vec2D, Mat2D, etc), low-level text runtime (FFI/WASM), etc into a "rive_common" package. We've had shared packages before but none that have been shared by rive_flutter and rive_editor. I think it's finally time to bite the bullet here.

This will make it much easier to work through some of the obtuse abstraction patterns we've had to do to disambiguate if you're using a Vec2D from the runtime or the editor, for example.

Yes, this means we'll only have one set of math classes, one set of binary writer/readers, etc. I only did the bare minimum necessary to move text into rive_common in this first pass but we can do more as we go forward.

## TODO:
- [x] move Text WASM & FFI to rive_common
- [x] move Math used by text (Mat2D, Vec2D, TransformComponents, PathInterface, etc) to rive_common
- [x] move utilities used by text (binary reader/writer) to rive_common
- [x] fix core_generator and core_generator_runtime
- [x] fix github actions to use new paths
- [x] publish rive_common to pub.dev and unlist it

Diffs=
12c6ee130 rive_common package (#4434)
5a24e63d0 Initialize isClosed on TessRenderPath (#4431)
2022-11-19 20:19:05 +00:00
e618def5cd Text
Uses it in the artboard title but also updates the flutter runtime massively to support FFI & WASM C++ Rive Text. PRing to let the tests run.

Diffs=
3be5ff0d8 Text (#4372)
90245a5e1 Fix the Android debug build
0a0f3c267 Fix for missing animation in a blend state. (#4415)
440512dca Add simd::if_then_else (#4403)
ec9fb5bfc Revert "Update SIMD booleans to use bitwise logic operators"
701d8dee2 Update SIMD booleans to use bitwise logic operators
e98b93a61 Add SIMD fallbacks for missing builtins
466f68e3a Add some more core math and SIMD functions
2022-11-15 23:07:11 +00:00
85d6b04212 Changes from PR#258 2022-10-26 09:51:26 -07:00
6d229dcdd9 add simple test & an example showing selection of different rive files 2022-08-26 18:16:13 +01:00
fd7911330e Allow initialiing a Rive Animation providing the RiveFile.
Provide a way to set the Key, and check the widget to reconfigure the Rive animation if attributes changed
2022-08-26 18:16:13 +01:00
8f62c6b629 Updating for latest rive editor changes (events & nested animation sync). 2022-08-15 14:51:06 -07:00
7289978fa9 Adding support for align listener action. 2022-06-18 16:11:30 -07:00
e7262ee544 New corner radius logic. 2022-06-16 15:51:45 -07:00
6e97a2c076 Support for nested inputs. 2022-06-16 15:51:45 -07:00
4a5a49bae3 Rename events to listeners. 2022-05-30 17:10:04 -07:00
a2dabd6c41 antialiasing typo fixed
There is a typo on the `antialiasing` description.
2022-05-26 16:06:37 -07:00
7b15ea0cad fix warnings while maintaining compatibility 2022-05-26 16:05:25 -07:00
2ac9a3c5a0 Fixing origin 2022-05-26 15:24:55 -07:00
5b752605f6 Consider artboard origin when computed artboard local coord. 2022-05-26 15:24:55 -07:00
590d584a2f Fixes for nested state machines. 2022-05-26 13:15:59 -07:00
483f5b15f1 Changes for nested state machines. 2022-05-26 13:13:28 -07:00
fef6090e78 Cleanup based on previous PR 2022-05-18 11:15:37 -07:00
338d739bf7 Add a Listener to the RiveAnimation widget when a StateMachineController has events. 2022-05-18 11:15:37 -07:00