Subhransu Mohanty [Mon, 13 Jul 2020 07:23:13 +0000 (16:23 +0900)]
parser: Fix build break in parser debug mode
Subhransu Mohanty [Wed, 8 Jul 2020 08:17:30 +0000 (17:17 +0900)]
rlottie: refactor lottie model and renderer code.
- move all the internal code to rlottie::internal namespace
- move model related code to rlottie::internal::model namespace
- move rendering code to rlottie::internal::renderer namespace.
- run clang-format
- removed LOT class prefix.
Subhransu Mohanty [Wed, 8 Jul 2020 04:50:50 +0000 (13:50 +0900)]
lottie/model: refactor code to remove LOTAnimatableShape class
Subhransu Mohanty [Fri, 3 Jul 2020 03:57:03 +0000 (12:57 +0900)]
rlottie/api: Added loadFromData() api with ColorFilter support
Some usecase needs to apply the color filter during parsing for theme
support.
Ex: Same resource can be used for different theme with different colorfilter
which will update the color pallet according to the theme.
Anton Sergeev [Sat, 25 Apr 2020 11:15:37 +0000 (14:15 +0300)]
Use round in frameAtPos
Without this fix frameAtPos doesn't return last frame
for position (1 - eps)
Subhransu Mohanty [Thu, 2 Jul 2020 06:56:58 +0000 (15:56 +0900)]
lottie/parser: refactor shape data parsing
Subhransu Mohanty [Tue, 30 Jun 2020 03:30:25 +0000 (12:30 +0900)]
freetype: cherry pick optimization patches from freetype.
Subhransu Mohanty [Thu, 25 Jun 2020 07:41:15 +0000 (16:41 +0900)]
optimization: added SurfaceCache to reduce intermediate buffers.
During rendering layers with mask/matte we need intermediate buffers
by keeping the surface cache we can reuse the same buffer for different
layer rendering to reduce memory footprint.
Subhransu Mohanty [Thu, 25 Jun 2020 03:46:49 +0000 (12:46 +0900)]
vector: cleanup ft_raster header
Subhransu Mohanty [Fri, 19 Jun 2020 07:09:22 +0000 (16:09 +0900)]
build fix
Subhransu Mohanty [Fri, 19 Jun 2020 01:26:43 +0000 (10:26 +0900)]
meson: added minimum meson version requirement
Subhransu Mohanty [Fri, 19 Jun 2020 01:04:12 +0000 (10:04 +0900)]
corrected version number of lottie library
Subhransu Mohanty [Mon, 8 Jun 2020 02:07:59 +0000 (11:07 +0900)]
example: Fix memory leak
Hermet Park [Wed, 8 Apr 2020 06:56:56 +0000 (15:56 +0900)]
use c++ standard type integer.
vc++ doesn't recognize uint type?
Hermet Park [Mon, 6 Apr 2020 07:46:44 +0000 (16:46 +0900)]
example: return the value properly.
this fixes a compile warning:
Change-Id: I40979b54309f62c25a6a9a65400f743c74135288
warning: no return statement in function returning non-void [-Wreturn-type]
Hermet Park [Fri, 20 Mar 2020 04:36:42 +0000 (13:36 +0900)]
updated license in the spec.
Changed this by protex guidance.
Change-Id: Ica8974af5d06ee5ea9e6e7f06f0d82c551599915
JunsuChoi [Fri, 20 Mar 2020 04:10:28 +0000 (13:10 +0900)]
Spec: Update license
Change-Id: I8d4a8ddfa38707dc15df25e4fbe49792aae80ed9
JunsuChoi [Wed, 11 Mar 2020 12:42:55 +0000 (21:42 +0900)]
vdrawable: Don't strdup for name data
The name information passed in is allocated and managed by the parser.
There is no need to duplicate the same data.
Change-Id: I9c488e654c01bdfe7c48388c29fad350cd261deb
Hermet Park [Tue, 17 Mar 2020 04:58:03 +0000 (13:58 +0900)]
correct rlottie license.
Change-Id: I947ab1db61d542d5d2e8adf729f35ecd83562ab7
JunsuChoi [Tue, 10 Mar 2020 10:40:42 +0000 (19:40 +0900)]
rlottie/capi: expose name info of node object
expose the keypath data of nodes such as fill and stroke.
Change-Id: I6d5f45a6cf1694f50b56f719d2d38a330812c575
Hermet Park [Tue, 10 Mar 2020 14:20:33 +0000 (23:20 +0900)]
build: disable thread_local if the thread is not supported.
Some version of ios/i386 compiler doesn support this thread_local feature.
Actually, thread_local doesn't necessary if the thread doesn't supported.
Change-Id: Ifcebef55f0809603695ce83cf4b35edab2e87188
JunsuChoi [Tue, 10 Mar 2020 09:31:55 +0000 (18:31 +0900)]
vector: Add name member in VDrawable
for expose of keypath.
Change-Id: I907fcdcc76b0f66e294e4df5073de39bb8bba549
Hermet Park [Thu, 5 Mar 2020 02:59:55 +0000 (11:59 +0900)]
add Skia opensource license.
Change-Id: I656e65534af9f0504536d0676a41d7adc7f37c6b
JunsuChoi [Fri, 14 Feb 2020 06:42:06 +0000 (15:42 +0900)]
rlottie: Refactor transformation matrix of proxymodel
Move value calculation given by property to proxy model
And add more sample to the demo.
JunsuChoi [Mon, 20 Jan 2020 01:22:40 +0000 (10:22 +0900)]
rlottie: Supports the Transform Rotation property.
Use setValue<rlottie::Property::TrRotation> return float type.
The value is degree. [0 ~ 360]
Example) example/demo
JunsuChoi [Thu, 16 Jan 2020 12:07:22 +0000 (21:07 +0900)]
rlottie: Supports the Transform Scale property.
Use setValue<rlottie::Property::TrScale> and return rlottie::Size type.
The default value of Size is 100. If it goes to zero it won't be visible.
If it is negative it will be flipped. If it is greater than 100, it will be enlarged.
Example) example/demo
JunsuChoi [Fri, 10 Jan 2020 08:40:32 +0000 (17:40 +0900)]
lottie: Remove duplicate model data.
mData is same as mModel in LOTContentGroupItem. So remove mData member.
Hermet Park [Tue, 7 Jan 2020 07:13:38 +0000 (16:13 +0900)]
Updated showcase images.
JunsuChoi [Tue, 31 Dec 2019 07:37:31 +0000 (16:37 +0900)]
rlottie: Supports the Transform Position property.
Use setValue<rlottie::Property::TrPosition> and return rlottie::Point type.
Example) example/demo
JunsuChoi [Tue, 24 Dec 2019 06:22:03 +0000 (15:22 +0900)]
example : Add reference header file for updated class name
The class name will be updated.
efl_ui_animation_view -> efl_ui_vg_animation
So add referenced file path.
subhransu mohanty [Fri, 29 Nov 2019 08:10:19 +0000 (17:10 +0900)]
rlottie: reenabled optimization when paint item has no content
subhransu mohanty [Fri, 29 Nov 2019 06:34:22 +0000 (15:34 +0900)]
rlottie: update the drawable before returning the result.
If the drawable is not updated in case of ZERO opacity it will keep the old value and
will render the old content.
subhransu mohanty [Fri, 29 Nov 2019 05:13:43 +0000 (14:13 +0900)]
rlottie: Disable optimization to fix regression
subhransu mohanty [Thu, 14 Nov 2019 06:54:49 +0000 (15:54 +0900)]
rlottie: Fix build break for debug build.
Caused by recent refactoring of the model objects.
JunsuChoi [Thu, 14 Nov 2019 00:56:15 +0000 (09:56 +0900)]
rlottie: Add initialization of pointer members that were not
Change-Id: Ice67910804be88496aad47d32cca430d9865de40
JunsuChoi [Thu, 14 Nov 2019 00:56:15 +0000 (09:56 +0900)]
rlottie: Add initialization of pointer members that were not
Change-Id: Ia1cf809c684241fcebef618c97f38d52081611a0
JunsuChoi [Thu, 7 Nov 2019 06:38:02 +0000 (15:38 +0900)]
Example : Update Strategy::eflVg in lottieview
The existing Strategy::eflVg make a vector object treeusing a node tree
from C++ rlottie API. But it didn't work well.
Loading a vector file into evas_object_vg works the same as internally.
[Test]
Prepare for latest EFL
rlottie build
./build/example/lottieviewTest 4
subhransu mohanty [Mon, 4 Nov 2019 07:41:28 +0000 (16:41 +0900)]
fixed memory leak in demo application
subhransu mohanty [Mon, 4 Nov 2019 06:53:22 +0000 (15:53 +0900)]
rlottie/model: lazy generation of layerlist
subhransu mohanty [Mon, 4 Nov 2019 03:52:44 +0000 (12:52 +0900)]
rlottie/parser: refactor to use local arena allocator for model tree creation.
subhransu mohanty [Mon, 4 Nov 2019 01:11:23 +0000 (10:11 +0900)]
rlottie: refactor to use a local arena allocator for shadow tree creation
This usecase is best suitable for local arena allocator as we have a fixed number
of objects to create and they all gets deleted at once. so by keeping a allocator
in the composition and use it to create all the objects using it will basically
flattened the memory layout of the shadow tree as all the memory comes from the one
memory allocator pool.
This improves the bencmark performance by 5%.
subhransu mohanty [Mon, 4 Nov 2019 01:07:53 +0000 (10:07 +0900)]
rlottie/vector: Added a local arena allocator to vector
This allocator is takes from skia's local arena allocator.
subhransu mohanty [Tue, 22 Oct 2019 04:12:01 +0000 (13:12 +0900)]
rlottie: refactor Pathitem Object to keep 2 path objects instead of 3.
subhransu mohanty [Fri, 1 Nov 2019 04:46:52 +0000 (13:46 +0900)]
rlottie/vector: refactor to make VPainter as POD object
subhransu mohanty [Fri, 1 Nov 2019 01:12:22 +0000 (10:12 +0900)]
rlottie: remove unused data member
subhransu mohanty [Thu, 31 Oct 2019 02:33:00 +0000 (11:33 +0900)]
rlottie: remove unused classes in rlottie to reduce library size
JunsuChoi [Wed, 30 Oct 2019 11:23:32 +0000 (20:23 +0900)]
VDrawable: Fix initial value of an enum
subhransu mohanty [Wed, 30 Oct 2019 09:47:00 +0000 (18:47 +0900)]
rlottie: reduce polling count for task scheduler to 2.
when the queue is empty the thread tries to steal from other queue
and it was doing it 32 times .. changed it to 2 as it was spinning for
long time before going to sleep. As we always give the tasks in batches
we can reduce the spin time.
subhransu mohanty [Wed, 30 Oct 2019 09:18:10 +0000 (18:18 +0900)]
lottie/opt: refactor drawable class to optimize object size
subhransu mohanty [Wed, 30 Oct 2019 00:19:36 +0000 (09:19 +0900)]
rlottie/opt: refactor renderList() api to return a Span to optimize the LayerObject size"
previously renderList() was returning a vector by keeping a vector object which was adding to
the overal size of the layer objects. by changing to a simple span object now only shpelayer has to keep
the vector and rest of the layer object types don't have to.
subhransu mohanty [Mon, 28 Oct 2019 10:47:07 +0000 (19:47 +0900)]
rlottie: added a dedicated pass to preprocess the render nodes
subhransu mohanty [Mon, 28 Oct 2019 07:17:22 +0000 (16:17 +0900)]
vector/rasterizer: safe rletask reset.
check if the previous task is finished before reseting the task .
if the previous task is not finished may lead to inconsistant task state.
Change-Id: Id242d9c9d11c691c084a5463b11b544352c0020c
JunsuChoi [Fri, 18 Oct 2019 02:39:43 +0000 (11:39 +0900)]
Example: Change findFrameAtMarker return type.
JunsuChoi [Fri, 18 Oct 2019 02:27:32 +0000 (11:27 +0900)]
CAPI: Support Marker feature for CAPI.
Add lottie_animation_get_markerlist() api
User can use this api and get information about each marker.
subhransu mohanty [Fri, 18 Oct 2019 01:38:52 +0000 (10:38 +0900)]
example: updated step size of slider in lottieviewer example
JunsuChoi [Thu, 17 Oct 2019 10:45:44 +0000 (19:45 +0900)]
Example: Implements marker demo
If there are markers in the lottie animation, user can set the play interval using the markerlist.
This demo is for play with markers.
meson build
ninja -C build install
./build/example/demo_marker
Nicholas Guriev [Wed, 16 Oct 2019 18:16:12 +0000 (21:16 +0300)]
Relocatable module of image loader
Anatoly Korniltsev [Wed, 16 Oct 2019 16:04:01 +0000 (19:04 +0300)]
Stack buffer overflow reproducer. Add option to compile the lib with asan for testing
subhransu mohanty [Thu, 17 Oct 2019 00:56:15 +0000 (09:56 +0900)]
vector: lower the tolerance value of VDasher from 1.0 to 0.1
Anatoly Korniltsev [Mon, 14 Oct 2019 07:14:28 +0000 (10:14 +0300)]
review fix: move reproducerts to test folder
Anatoly Korniltsev [Wed, 9 Oct 2019 22:03:56 +0000 (01:03 +0300)]
Prevent type confusion with NDEBUG
Hermet Park [Mon, 14 Oct 2019 06:13:59 +0000 (15:13 +0900)]
README: updated documentation.
Removed C api usage.
This is not good to add in this context before we guide its basic usages.
Hermet Park [Mon, 14 Oct 2019 05:14:16 +0000 (14:14 +0900)]
vector stb: free the memory properly in the exception cases.
Change-Id: I64103c03679f0fe14b31d904e5e35aa1c03e29ef
subhransu mohanty [Mon, 28 Oct 2019 07:17:22 +0000 (16:17 +0900)]
vector/rasterizer: safe rletask reset.
check if the previous task is finished before reseting the task .
if the previous task is not finished may lead to inconsistant task state.
Change-Id: I934636745fcc87474d511eaa1c7f9a44027f8d60
Hermet Park [Mon, 14 Oct 2019 05:14:16 +0000 (14:14 +0900)]
vector stb: free the memory properly in the exception cases.
Change-Id: Ib2699f068217f20f565a2045f7e0fc53f32a8f95
subhransu mohanty [Fri, 11 Oct 2019 06:05:13 +0000 (15:05 +0900)]
lottie/perf: Avoid triggering render of a paint node when final opacity is zero
JunsuChoi [Fri, 11 Oct 2019 02:57:09 +0000 (11:57 +0900)]
rlottie_capi: Add Alpha member in ImageInfo
subhransu mohanty [Fri, 11 Oct 2019 00:58:14 +0000 (09:58 +0900)]
vector: support rendering of texture brush with alpha.
Hermet Park [Thu, 10 Oct 2019 11:30:02 +0000 (20:30 +0900)]
README: remove an emptry space
subhransu mohanty [Thu, 10 Oct 2019 06:42:18 +0000 (15:42 +0900)]
vector: refcator VBrush to reduce memory footprint
Hermet Park [Thu, 10 Oct 2019 07:06:00 +0000 (16:06 +0900)]
updated README.
subhransu mohanty [Thu, 10 Oct 2019 04:34:18 +0000 (13:34 +0900)]
rlottie: refactor to reduce lottie item memory footprint
JunsuChoi [Thu, 10 Oct 2019 06:37:48 +0000 (15:37 +0900)]
README.md: Update Supported feature (Markers)
subhransu mohanty [Tue, 8 Oct 2019 04:33:57 +0000 (13:33 +0900)]
rlottie: support composition marker feature in lottie
Hermet Park [Mon, 7 Oct 2019 11:02:00 +0000 (20:02 +0900)]
doc: fix typo
Hermet Park [Fri, 4 Oct 2019 07:16:28 +0000 (16:16 +0900)]
vector stb_image: + fseek() error handling.
Shutdown code static analizer report...
Change-Id: I389049eb958b7c5d47435115343854af3527ec31
Hermet Park [Fri, 4 Oct 2019 06:39:12 +0000 (15:39 +0900)]
pixman vregion: remove unused function.
Thatis acutally wrong that might access invalid data.
The below line, memory indexing
box_type_t *box = PIXREGION_RECTS(reg) + index;
won't work properly since the reg memory is not the exact box_type_t.
Change-Id: I872235580de839a1cc19aad8c5e7564ae56cc68e
Hermet Park [Fri, 4 Oct 2019 06:19:06 +0000 (15:19 +0900)]
vector vrle: remove a line affecting nothing.
Change-Id: Ib0079788720e9e6c0175c4a925e6bbd3ac9c9ec4
Hermet Park [Fri, 4 Oct 2019 04:15:52 +0000 (13:15 +0900)]
vector stb_image: + fseek() error handling.
Shutdown code static analizer report...
Change-Id: If8b7f00f45eb845c89d35f6451f06853771e9315
Hermet Park [Fri, 4 Oct 2019 03:55:12 +0000 (12:55 +0900)]
vector/vdasher: initialize a member var with a default value.
Change-Id: Iaf9d4f10b17be6c60defdbfd99777dbcecaf7d4d
Hermet Park [Fri, 4 Oct 2019 03:44:04 +0000 (12:44 +0900)]
updated AUTHORS
Change-Id: I8d9e0c1ce10005a5a738d35518d72e3f632f4179
subhransu mohanty [Wed, 2 Oct 2019 07:04:38 +0000 (16:04 +0900)]
lottie/parser: reduce memory allocation during shapedata parsing
JunsuChoi [Wed, 2 Oct 2019 06:21:33 +0000 (15:21 +0900)]
Example : Enhancement dynamic property demo
Change json sample and add more cases.
subhransu mohanty [Wed, 2 Oct 2019 06:11:26 +0000 (15:11 +0900)]
vector/ft: refactor to reduce branch miss.
vtune profile shows branch miss in ft_trig_pseudo_polarize and ft_trig_pseudo_rotate
as both the if cases does similar expensive computation move then to start so that
we will not pay high penalty during branch miss.
JunsuChoi [Thu, 26 Sep 2019 11:24:36 +0000 (20:24 +0900)]
README.md : Add dynamic property
Nicholas Guriev [Fri, 27 Sep 2019 18:28:05 +0000 (21:28 +0300)]
Introduce export map to completely hide private symbols
Also put configureModelCacheSize into the rlottie namespace.
subhransu mohanty [Fri, 27 Sep 2019 07:01:14 +0000 (16:01 +0900)]
lottie/optimization: keep painter and surface in composition to avoid memory allocation
subhransu mohanty [Fri, 27 Sep 2019 06:59:44 +0000 (15:59 +0900)]
vector: added reset() api to VBitmap
subhransu mohanty [Thu, 26 Sep 2019 01:17:19 +0000 (10:17 +0900)]
lottie/optimization: keep a pathmesure object in trim item to avoid memory allocation
subhransu mohanty [Thu, 26 Sep 2019 01:16:10 +0000 (10:16 +0900)]
vector: refactor pathmesure to keep a scratch path object for memory efficieny
subhransu mohanty [Thu, 26 Sep 2019 01:15:00 +0000 (10:15 +0900)]
vector: refactor Vdasher to take result path as parameter
subhransu mohanty [Fri, 20 Sep 2019 06:50:47 +0000 (15:50 +0900)]
optimization: avoid memory allocation when shape data has animation keyframe.
because of generic LOTAnimatable interface when shape has animation data
we were always created temporary shape data duting lerp. by crating a specialization
of AnimatableShape data and directly updating path value during animation we avoid
lot of memory allocation and deallocation.
subhransu mohanty [Thu, 19 Sep 2019 07:56:46 +0000 (16:56 +0900)]
lottie/optimization: optimize rendering when layer has clipper and mask
When layer has clipper and mask we create a temporary rle in each frame rendering
by avoiding the extra Rle object avoids memory allocation and speeds up rendering.
subhransu mohanty [Thu, 19 Sep 2019 07:45:45 +0000 (16:45 +0900)]
vector/rle: added operator&=() api to VRle
Hermet Park [Tue, 17 Sep 2019 10:53:42 +0000 (19:53 +0900)]
vector/helper: let VGradientCache has perfect singletone interface.
John Preston [Sun, 1 Sep 2019 09:04:26 +0000 (12:04 +0300)]
Fix possible stack corruption.
John Preston [Sun, 1 Sep 2019 09:03:18 +0000 (12:03 +0300)]
Fix possible out of bounds reading.
Asserts could be disabled in the Release build.
John Preston [Sun, 1 Sep 2019 07:37:11 +0000 (10:37 +0300)]
Check that root layer was found.
Hermet Park [Mon, 16 Sep 2019 11:05:55 +0000 (20:05 +0900)]
vector: refactor code to remove a global instance.
This kind of global static instance is really dangerous in c++ because
We have no idea when the instance will be initalization exactly.
This might interrupt the program sequence, more worsely, it could break the program
while That breakage is totally up to the member instances of the class.
Very poor design.
Change-Id: I8ca788bad2fe2e90f9cd5449b84b1ed15c043f1e
Hermet Park [Mon, 16 Sep 2019 09:34:18 +0000 (18:34 +0900)]
example: bump up c++ version to 14 in cmake.
Change-Id: Ice8b4b685d54138a1b883611f7abb7eff642bb95