* Update nuget dependencies to latest non-prerelease versions.
* Updating the version of .NET Core UWP support.
I had previously updated the Nugets for the solution, but apparently that's not sufficent.
* Refactor codegen to output multiple versions.
This does not output multiple versions - that is coming in
a subsequent change.
* Handle the LoadedImageSurface objects in a way that will allow them to be shared between different versions.
* Fix licensing headers on a couple of source files.
* Stop using C# 8 switch statements.
They're not usable from LottieViewer because UWP doesn't allow C# 8 yet.
* Build break
I missed converting one of the switch expressions.
* CR feedback - comment tweaks.
* Versioning stage 2. Translate multiple times to support multiple UAP versions.
This translates but does not yet codegen the multiple versions.
* A few small things I noticed in CR.
* CR feedback.
* Fix build break.
* Work in progress towards versioning.
This adds a number of pieces required to generate version-adaptive code, but doesn't
yet hook those pieces up. This allows testing against a corpus to ensure nothing is
broken. A future commit will add version-adaptivity.
* Fix build break.
* CR style feedback.
I meant to fix this but must have forgotten. It was a byproduct of some experimentation.
* CR feedback.
* CR feedback.
* CR feedback.
* Remove the -ClassName command line option from LottieGen.
The -ClassName option allowed you to override the name generated for a class for a Lottie. However it was
rarely used, and it makes no sense when using globs to specify more than one Lottie file. The functionality
to control your class name is still available via a workaround: rename your .json file.
* Cosing style fixes.
Deal with colors that have objects in the alpha channel.
Deal with key frame that are redundant (they have a following keyframe at the same frame offset).
Deal with assets that have non-unique IDs.
Report unexpected exceptions in LottieGen.
* Enable more linear gradient fill cases, including animated linear gradients.
* Addressing CR feedback.
* Better stats for LottieGen (#148)
* LottieGen reports stats to a TSV file instead of CSV.
Added a more general stats reporting mechanism.
* LottieGen: eliminate Verbose option and replace with much better stats file outputs.
* CR feedback.
* Enable more linear gradient fill cases, including animated linear gradients.
* Addressing CR feedback.
* Refactor parsing of gradient stops to separate the color and opacity stops.
Ignore opacity if it is specified for a gradient, rather than rendering nothing.
* Atomize empty arrays. Renaming of the contents of ShapeGroup to be consistent with ShapeLayer.
* LottieGen reports stats to a TSV file instead of CSV.
Added a more general stats reporting mechanism.
* LottieGen: eliminate Verbose option and replace with much better stats file outputs.
* CR feedback.
* Preparing for implementation of gradients.
* Make LottieGenCorpus more deterministic.
Previously the output depended on the width of the console, and sorting ignored case.
* Upgrading to SDK 18362 (May 2019) so that we can use RadialGradientBrush.
* Initial changes for multi shape mask and matte translation support
* Add new tranlation issues and fix some issues after merge
* Editing TranslateAndApplyMasks return value when VisualSurface is not supported
* Address some minor issues
* Addressing PR comments
* Updating translation issue files to be UTF-8 with no BOM
* fixing some issues after the sync and merge with master
* Fixing issues found when running the lottieGen comparison script
* Addressing Further PR comments
* Addressing previous iteration comments
* Add data representation of IRandomAccessStream for use by LoadedImageSurface.
LoadedImageSurface doesn't actually do anything with IRandomAccessStream yet.
Also tweaked the samples csproj to get rid of a warning.
* CR feedback, and fixing race in the build.
* Fix cake file.
* Work around race condition in the build.
* Fix typo on commen
* Move the YAML object model and writer into its own project so it can be shared by UIData.
The YAML stuff was exclusive to LottieData before. But now I want to use Yaml for dumping WinCompData trees, thus this refactoring.
* Fix the licensing header.
* Adding some of the pieces needed for supporting image assets
Support for embedded images in Lottie files.
Introducing the WinUIXamlMediaData project so we can bring in LoadedImageSource for loading images.
* Small refactor for readability.
* Replace the CompositionSurfaceBase with ICompositionSurface.
The CompositionSurfaceBase made sense when the only implementations of ICompositionSurface
were also CompositionObjects. But with support for LoadedImageSurface that all changes.
This change is only part of the solution - in order to support LoadedImageSurface without
introducing a circular dependency between WinCompData and WinUIXamlData we will need to
add a new project for anything that needs to refer to both of them, i.e. the ObjectGraph,
Instantiator, Optimizer, codegen, and the dumpers.
* Fixing build break.
Adding CleanObjs.cmd script to easily delete all obj directories. This can be useful when diagnosing build issues because the regular clean doesn't delete objs.
* Respond to CR feedback.
* Squashing Eli's Mask and Matte work in progress onto master.
* Simeon's CR feedback for simple things that are easier to change directly than to explain and iterate on.
* Addressing iteration 1 feedback
* Fixes issues after merge with master
* Addressing iteration 2 feedback
* Addressing iteration 3 feedback
* Update version number for builds to 5.1.1-... ready for release.
We should have updated to 5.1.0 when we released 5.1.0 - we missed it. Now that we are preparing for 5.1.1 it's time to update the build version number.
* Update readme version numbers.
I came across a Lottie with an empty color string, so rather than failing, treat that as transparent.
Improved the way the LottieGenCorpus discovers errors by making it watch stderr as well as stdout.
* Update version numbers in README to 5.0.0.
Now that we're aligned with the toolkit major version number update the docs.
* Simplify syntax to get the latest prerelese version of LottieGen.
If you only specify a partial version string ("-prelease" in this case) the system will try to match it.
Enables D2D geometry groups to be expressed, but doesn't use them in the translator yet.
Even though nothing is using the geometry groups yet, this does change the output a little as a result of making CanvasGeometry equatable and thus enabling the optimizer to share some geometries that previously were not considered shareable.
* Add ability to dump Lottie files as YAML.
The YAML is easier to read than XML. The YAML output exists to help debug issues with Lottie files. It's much easier to read the YAML than the raw JSON. Note that the dump is not complete - some properties may not show up. It's at least as good as the XML however so checking it in, and we can add more properties as needed.
The main motivation for this is to use LottieGen in tests over large numbers of json files. This is much quicker than starting LottieGen for each file.
Previously we supported wildcards, but that only worked for files in a single directory. Now you can specify wildcards and globstars (**) anywhere in the input. For example C:\foo**\myfiles*.json
When specifying .json files with globbing, the outputs will be placed in subdirectories of the output folder corresponding to the subdirectories that were expanded relative to the non-globbed part of the input path. This ensures that if the same input filename exists in multiple places, the LottieGen outputs for each will end up in distinct place.
Also refactored the tool to allow parallel processing, and turned on parallel processing.
I also added a .sln file just for LottieGen to make development faster on my Surface Go which struggles with the main .sln fille.
Paths such as c:mystuff\foo.json were not being parsed correctly.
Also, fix the install script for LottieGen - I'd accidentally left a hard-coded version number in there.
Unless strict mode is enabled, we'll report parsing and translation issues as warnings rather than errors so as not to scare users
Add a script to easily install LottieGen from code you build locally.
Remove the GlobalSuppressions.cs files that were not supposed to be there.
Fix some code analysis warnings that were being disabled in the GlobalSuppressions.cs files.
We were using configurations to define each build product. That allowed the CI build to build only the projects we want, but it confuses people. So we'll always build everything in CI and go back to Debug and Release configurations only.
Also added a bunch of README content to help people navigate the code.
Take advantage of the ReadOnlySpan for key frame trimming.
Ensure that initial values are set for Position and Anchor if key frame trimming removes all the frames. This same work needs to be done for other animatable properties, so I've added the ability to know whether the initial value needs to be set, but the code isn't yet handling it everywhere.
Switch to newest JSON parser.
Optimize allocations by using ReadOnlySpan<T> in places where we previously use IEnumerable<T> as a way of protecting arrays for modification.