Граф коммитов

97 Коммитов

Автор SHA1 Сообщение Дата
Simeon 0297d549ba
Add support for WUC Vector4KeyFrameAnimation. (#186)
* Add support for WUC Vector4KeyFrameAnimation.

This is a prerequisite for supporting opacity and color animated at the same time on the same object.
2019-11-15 09:53:06 -08:00
Simeon 9928d5ec25
Enable Arm64 builds (#179)
* Enable ARM64 builds.

* More.

* Updating Win2d version. 1.24 is needed to support ARM64.

* Remove person's alias that leaked into the appx package.
2019-11-01 11:42:52 -07:00
Simeon 5e2bc5c879
Update nuget dependencies to latest non-prerelease versions. (#164)
* 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.
2019-10-24 10:49:02 -07:00
Simeon c2cf5396f8
Refactor codegen to output multiple versions. (#159)
* 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.
2019-10-23 11:30:34 -07:00
Simeon 2a7eb97b52
Versioning stage 2. Translate multiple times to support multiple UAP versions. (#157)
* 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.
2019-10-21 11:38:14 -07:00
Simeon bce52d5d86
Prerequisites for versioning. (#156)
* 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.
2019-10-16 15:32:20 -07:00
Simeon 43fd94d977
Remove class name option (#150)
* 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.
2019-09-05 18:31:55 -07:00
Simeon 2d77ccb946
Harden against some unexpected cases in Lottie json files. (#149)
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.
2019-09-05 16:29:07 -07:00
Simeon b305a19d76
Enable more linear gradient fill cases, including animated linear gradients. (#146)
* 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.
2019-09-05 13:45:30 -07:00
Simeon 030728876a
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.
2019-09-04 16:15:43 -07:00
Simeon aeb87289e1
Prepare for gradients (#143)
* 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.
2019-08-29 10:03:44 -07:00
eliezerpMS 645d423a8f
Multi-shape mask and matte translation (#106)
* 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
2019-06-03 18:47:35 -07:00
plaiMS 0f111f8ae6
Merge branch 'master' into EnableImageLayer 2019-05-20 10:07:35 -07:00
Phyllis Lai 84beaee818 Change asset list to Uri data type. Added remark for LT0030. 2019-05-19 19:01:59 -07:00
Simeon f2542f8349
Add data representation of IRandomAccessStream for use by LoadedImage… (#112)
* 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
2019-05-17 16:10:19 -07:00
Phyllis Lai b2052802cc More code improvements per PR feedback. 2019-05-16 16:18:11 -07:00
Phyllis Lai bb5335c6c3 Added two subclasses of LoadedImageSurface, one for LoadFromStream, one for LoadFromUri. Plus other code improvements per code review feedback. 2019-05-16 13:36:30 -07:00
plaiMS fcfdd2384d
Merge branch 'master' into EnableImageLayer 2019-05-10 15:24:25 -07:00
Phyllis Lai 45d537fc20 Adding support for external image file and embedded images. Output list of expected files in LottieViewer and LottieGen in case of external image file. 2019-05-08 16:37:54 -07:00
Simeon 78d854dbb4
Move the YAML object model so UIData can use it. (#108)
* 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.
2019-05-06 11:30:22 -07:00
Phyllis Lai 61db17e1eb Refactoring code that references WinUIXamlMediaData and WinCompData to UIData. 2019-04-25 10:18:48 -07:00
plaiMS c26a0390d4 Adding a new project UIData to reference WinUIXamlMediaData. (#102)
* Added new project to reference WinUIXamlMediaData

* Reorder imports in alphabetical order.
2019-04-24 09:53:20 -07:00
Simeon 2fceb1c692
Adding some of the pieces needed for supporting image assets (#101)
* 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.
2019-04-22 14:45:46 -07:00
Simeon 75436d753c Masks and mattes part1 (#76)
* 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
2019-03-13 16:00:17 -07:00
Simeon 7f33ec96c5
Update README files now that we're on version 5.1.1. (#82) 2019-03-08 17:16:52 -08:00
Simeon d734bd5f2d
Update build version number (#74)
* 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.
2019-03-08 16:43:40 -08:00
Simeon 68d769e8ca
Updating versions of various packages. (#83)
Updating versions and fixing a typo in the LottieSamples app.
2019-03-08 15:00:47 -08:00
Simeon c00e843fbd
Don't repeat the name of the property used for reporting stats. (#77) 2019-03-08 13:25:52 -08:00
sohchatt 26b03b2649
README Updates (#65)
- README Improvements + links
- Add Version History
2019-02-19 11:27:27 -08:00
Simeon a2fcb38105
Globbing was broken for some types of path. Fix SplitPath to always return directory path with a trailing slash to make it easier for callers to deal with the path. (#50) 2019-01-29 10:07:59 -08:00
Simeon fb52096058
Allow color strings to be empty in Lottie json files. (#47)
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.
2019-01-23 16:06:54 -08:00
Simeon e66f0e197c
Rename the Lottie Shape class to Path. (#46)
It was called Shape originally because its type code is "sh" and it is contained by a ShapeLayer, but it's not the right name. Path is the right name.
2019-01-08 13:17:17 -08:00
sohchatt 8fd6e436c7 Update README.md (#29) 2019-01-07 16:30:08 -08:00
Simeon 8a556f69c6
Turn on warnings as errors. (#43)
Enable more warnings and fix ones that were easy.
2019-01-04 18:17:55 -08:00
Simeon d95ab8a7ad
Update version numbers in README to 5.0.0. (#27)
* 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.
2019-01-04 11:49:26 -08:00
Simeon Cran cf82c9be12 Fix bugs discovered in testing. 2019-01-03 16:09:24 -08:00
Simeon 873f85aa30
Add support for D2D geometry groups (#36)
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.
2019-01-02 17:26:25 -08:00
Simeon e76ca2258b
Add ability to dump Lottie files as YAML. (#33)
* 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.
2018-12-25 02:54:36 -08:00
Simeon 275de9cd63
Add globbing support to LottieGen. (#31)
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.
2018-12-23 09:42:32 -08:00
Ibraheem Osama 7a265e8baf Minor conventions changes (#17)
* minor coding styling changes
* Removing unused varaibles
2018-12-07 15:47:13 -08:00
Simeon Cran 608e50066c Handle file patterns that have a drive letter and a relative path.
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.
2018-12-05 19:19:34 -08:00
Simeon Cran 74b3f5f1d1 Report parsing and translation issues as warnings rather than errors, unless in strict mode.
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.
2018-12-05 12:01:24 -08:00
Simeon Cran 10c5f77839 Tweaking the build to make it more sensible. 2018-12-01 17:04:41 -08:00
Simeon Cran e1273a7d06 Make the solution and build look more normal.
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.
2018-12-01 17:04:41 -08:00
Simeon Cran 48c3182233 Better key frame trimming. Definitely set initial transform value.
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.
2018-11-30 10:11:44 -08:00
Simeon Cran b014855ed7 Update NuGets, optimize allocations.
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.
2018-11-27 18:00:58 -08:00
Simeon Cran d02b78d15b Initial commit of Lottie-Windows source. 2018-11-21 12:18:46 -08:00