summaryrefslogtreecommitdiff
path: root/src/lib/evas/canvas/evas_vg_private.h (follow)
AgeCommit message (Collapse)Author
2020-09-14Merge branch 'master' into devs/hermet/lottieHermet Park
2020-09-11Efl.Canvas.Vg: When VG container has transparency, ector buffer created ↵JunsuChoi
synchronously Summary: If the container has transparency, it internally alpha blends with ector buffer. So ector buffer must be created synchronously. Test Plan: N/A Reviewers: Hermet, smohanty Reviewed By: Hermet Subscribers: #reviewers, #committers, cedric, herb, kimcinoo Tags: #efl Differential Revision: https://phab.enlightenment.org/D12140
2020-09-11Merge branch 'master' into devs/hermet/lottieHermet Park
2020-09-09evas vg: check object changed as wellShinwoo Kim
Summary: evas cannot render vg object if Efl_Canvas_Vg_Object_Data.changed is ture and Evas_Object_Protected_Data.changed is false, when vg object marks itself as changed. Above case is possible depending on the draw area which is calculated by eng_output_redraws_next_update_get. If this function returns NULL, the vg object render function is not called, and vd->changed remains true. Only vd->obj->changed is set to false by vas_object_change_reset. Reviewers: Hermet, jsuya, herb, raster Reviewed By: raster Subscribers: raster, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12136
2020-08-14Add wrap mode feature for vector objectTaehyub Kim
Summary: This feature supports the wrap mode for vg object. when the wrap mode is enabled, vg object will be shown with out spaces. Depends on D11931 Test Plan: N/A Reviewers: Hermet, kimcinoo, jsuya Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12073
2020-08-14evas_vg_cache: Add sector_list_getJunsuChoi
Summary: Add an API that if there is sector data in animation, returns a list of it. Test Plan: N/A Reviewers: Hermet, kimcinoo, herb Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11929
2020-06-09evas_vg_cache: Don't caching vg file if value_provider is applied.Hermet Park
Summary: value_provider can change the value of the property received from VG file. When a file is cached, the changed properties are applied to all other objects using the same file. So. If value provider is applied, evas_vg_cache is not caching vg file. Test Plan: N/A Reviewers: Hermet, herb, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11924
2020-06-09evas_vg_cache: Don't caching vg file if value_provider is applied.JunsuChoi
Summary: value_provider can change the value of the property received from VG file. When a file is cached, the changed properties are applied to all other objects using the same file. So. If value provider is applied, evas_vg_cache is not caching vg file. Test Plan: N/A Reviewers: Hermet, herb, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11924
2020-06-03Efl.Canvas.Vg.Object: Optimize Ector Surface SizeJunsuChoi
Summary: The ector surface size was determined by the size of the vg object. vg object is usually sized by the size of the container. So, the ector surface is set unnecessarily large. This patch sets the ector surface size to the path boundary. And the path boundary refers to the stroke width and miterlimit. Test Plan: vector sample {F3887634} {F3887632} [grey area is ector surface size] {F3887633} Reviewers: Hermet, kimcinoo, smohanty, herb Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11865
2020-06-01Efl.Gfx.Vg.Value_Provider: Move internal function changed_flag to eo.JunsuChoi
Summary: changed_flag was declared in the private header for internal use(static_lib). However, as the meson script has been changed, it can no longer be used. changed_flag can display the property to which the changed among the properties of value_provider. there is no problem in providing it as an eo function, so move the function to eo. Test Plan: N/A Reviewers: Hermet, herb, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11894
2020-03-23canvas vg: drop vg cache buffers if object were destroyed.Hermet Park
Previous vg didn't take care of cached buffers which were allocated in it's lifetime because the cache buffers are managed by its own cache buffer mgr, it has a limitation count of buffers also buffers can be cleared when engine is shutdown. This behavior is actually working properly but not well optimized since it lost a chance to clear grown buffers. Now vg do clear used buffers when object is invalidated.
2019-12-13evas vg: revise buffer caching method.Hermet Park
for better precise buffer cache key, We make a unique key name combining root node + size + frame index. Now, we can reuse the root node for animation and caching buffers.
2019-11-29evas vector: operate cached vector file data per evas instances.Hermet Park
each vfd loaders construct vector tree data, these can be belongs to evas instance, they are not likely shareable. We should operate vfd separately.
2019-11-28evas vector: make it stable caching logic.Hermet Park
We need a more precise caching mechanism to save memory. Current root node(key) is limited for caching buffers, when to share by the multiple animated instances. This patch is a step for further optmization work, at the moment we disable the caching buffers for the animated instances.
2019-11-18evas vg: improve caching methods for better precise behaviors.Hermet Park
Previously, json file data won't be shared between instances. Now, objects can share the json data if they use the same file resource.
2019-11-12evas_cache_vg : Implements sector_get/set internal APIsJunsuChoi
Summary: These APIs to get and set frames for a specific section in vg animation. get API looks for a sector by name in the markerlist of VG_File_Data. Then return start and end frames. Depends on D10504 Test Plan: N/A Reviewers: Hermet, smohanty, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10505
2019-10-16efl_canvas_vg : Propagates the alpha color of the parentJunsuChoi
Summary: The current color is affected by the parent's opacity. If p_opacity is set, it will be applied to the current color. Test Plan: N/A Reviewers: Hermet, smohanty, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10399
2019-10-08evas_vg_cache: Hashkey of cache use value provider listJunsuChoi
Summary: Even if the same window, the same file, and the same size, different images may be requested due to property changes caused by value_provider. Test Plan: N/A Reviewers: Hermet, smohanty, kimcinoo Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10303
2019-10-02Efl.Gfx.Vg.Value_Provider: Introduce property change feature of ↵JunsuChoi
Efl.Ui.Animation_View Summary: Efl.Gfx.Vg.Value_Provider is an object for integrating and managing the properties of vector objects. These values are dependent on the keypath. Keypath is the target a specific content or a set of contents that will be updated. It can include the specific name of the contents, wildcard(*) or Globstar(**). The valueProvider is borrowed from another library that uses a vector object of type json, such as Efl.Ui.Animation_View (https://github.com/airbnb/lottie-ios/blob/5fc0e59e0cb85d3586b1d0d1cf4a2c9669b91d15/lottie-swift/src/Public/iOS/AnimatedControl.swift#L50) This feature should be used with some patches that apply to the vg json loader and Efl.Canvas.Vg.Object. Test Plan: N/A Reviewers: Hermet, kimcinoo, smohanty Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9874
2019-09-18canvas vg: code refactoring.Hermet Park
remove unnecessary reference cooridnates.
2019-09-11evas vg: optimize memory in layer blending.Hermet Park
Same method to 321035d1e7d58fb9165b7ee55c1962d39c859caa By far, with previous memory optimization, The memory usage is reduced to half of composition buffer size.
2019-09-11canvas vg: optimize memory usage in composition.Hermet Park
Ector buffer allocates memory in default, We don't need to allocate buffer memory additionally to handle over outside. We can map/unmap ector buffer for reusing this.
2019-09-10evas_vg_cache: Hashkey in cache uses evasJunsuChoi
Summary: Vg_entry is shared by different child windows. When two or more objects load the same file When resizing, cache_vg_entry_render can delete an active entry while creating a new entry and deleting an existing entry. Therefore, use cache data added evas Test Plan: [enable json loader] --- a/meson_options.txt +++ b/meson_options.txt @@ -203,7 +203,7 @@ option('evas-loaders-disabler', type : 'array', description : 'List of modular image/vector load ..... choices : ['gst', 'pdf', 'ps', 'raw', 'svg', 'rs ..... - value : ['webp', 'json'] + value : ['webp'] [Test] elementary_test -> Animation View click -> play -> Animation View click again -> ... Reviewers: Hermet, smohanty, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9740
2019-09-06ector: code refactoring.Hermet Park
Current vector drawing requires several methods for compositing, it's shouldnt have only masking but other blending functions such as matte in lottie, porter&duff in android, etc. Previously we didn't specify this method name, just reserved the options and now we started to define the methods with ector_renderer_composite_method() with Efl.Gfx.VG_Composite_Method instead of mask_set().
2019-08-20Revert "ector: code refactoring."Hermet Park
This reverts commit dad166f84a02cfffc2a07bc804e7b7e35ed4a40d. Ector is not public, this breaks enlightenment compilation,
2019-08-20ector: code refactoring.Hermet Park
Current vector drawing requires several methods for compositing, it's shouldnt have only masking but other blending functions such as matte in lottie, porter&duff in android, etc. Previously we didn't specify this method name, just reserved the options and now we started to define the methods with ector_renderer_composite_method() instead of mask_set().
2019-06-21evas vector: support lottie animation as using json loader.Hermet Park
Summary: This patch extends efl_canvas_vg_object class to implement efl_gfx_frame_controller to suppor any playable animation on it. Plus, vector object takes care of lottie animation by using json loader. it's caching mechanism is changed to cache only static frame, not all frames. vg_cache supports json loader and make it animation request properly. This feature has been stabilized enough, it's using in Samsung Galaxy Watch active product, proved its stability enough. Depends on {D8940} Co-authored-by: JunsuChoi <jsuya.choi@samsung.com> Reviewers: #committers, jsuya Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D8941
2019-06-20ector: Fix precomp layer rendering issue when it has alpha valueJunsuChoi
Summary: When the precomp layer(parent layer) has alpha transparency and has more than 1 child layer and they overlap each other if vg object just propagate the alpha to child layer it will be applied twice in overlapped area. Even if the child layer does not have alpha transparency, parent alpha is applied to each child. Test Plan: N/A Reviewers: Hermet, smohanty Reviewed By: Hermet Subscribers: cedric, #reviewers, kimcinoo, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9072
2019-03-12evas vg: replace to eina_file instance caching by vg.Hermet Park
Here is a replacement to use eina_file from a vg obj instance to map file data by vg loaders. This brings a benefit that integrated access to load data between vg object and vg loaders.
2019-02-27efl.file_save: rework save flagsMike Blumenkrantz
Summary: instead of passing a string which requires reading docs to know which arbitrary string key=value sets can be passed, use an extensible struct which contains more easily referenced values ref T7672 Depends on D8035 Reviewers: segfaultxavi Reviewed By: segfaultxavi Subscribers: segfaultxavi, cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T7672 Differential Revision: https://phab.enlightenment.org/D8039
2019-01-28evas vg: improve masking render logic.Hermet Park
Previous masking image is generated on vg rendering time, though context is changed to main vg rendering to masking, This had a issue that ector context switching which is not allowed in software backend because of asynchronou method. Now, this improvment brings the masking rendering move to vg render pre step with synchronous rendering method, then use the masking surface in the main vg rendering.
2018-12-20evas vg: optimize vg object internal connections.Hermet Park
Dectected huge amount of unnecessray internal events triggering which were signaled via vg nodes. By events, nodes were connected with each others, and finally reaches to vg object to update its rendering properly. However GFX_PATH_CHANGE signal is too commonly triggered for scenarios, listening and response it is too burdensome. We acutally don't need to do this if all nodes could share the vg object. Nodes directly notify vg object to update it. Next patch will come to remove stupid GFX_PATH_CHANGE that's aweful in performance wise.
2018-12-17evas vg: remove redundant function code.Hermet Park
2018-12-07evas ector: add software implmentation for masking feature.Hermet Park
This implementation uses Ector_Buffer to generate mask image from vg container, and pass it to Ector engine. Ector renderer could blend this image as a mask. Yet only vg container works as a mask, we could extend shape to support masking later. Still vector gl drawing is not completed, We use software ector buffer to draw on it. This is on progessing.
2018-12-07evas vg: revise basic vg cache logic.Hermet Park
There was a big trouble that vg cache didn't free cached data properly. Plus, there was a unnecessary copy of vg tree data. This revised version is a improvement of our evas vg cache in stable and optmization.
2018-12-07evas vg: code refactoring.Hermet Park
capsulate vector file data from efl canvas vg. hide vector file data structure, capsulate it, cut off the dependency by vector object. yet it has evas_cache_entry interface.
2018-12-07evas vg: code refactoring.Hermet Park
keep internal variable and structre names consisteny. no logical changes.
2018-12-07evas vg: code refactoring.Hermet Park
make code clean and neat, no logic changes. use macro to reduce lines. rename ambiguous internal variables. remove unused variables.
2018-11-21evas vg: code refactoring.Hermet Park
This doesn't change any logics. just renamed internal variables and functions.
2018-11-14evas vg: optimize gradient sequences.Hermet Park
Summary: 1. Pointed out gradient prepare step triggered duplicatedly, because they are immediate children of container. But gradients is desigend to fill shape, shape could get ready of the gradients which are applied to. So, container doesn't need to prepare gradient children. 2. Ector shape does prepare its gradient renderer in it's prepare time, each gradients objects doesn't need to prepare renderer separately. Here code skip duplication of sequences of gradients preparation step. by cleaning up logic. Reviewers: #committers Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D7269
2018-09-10Revert "evas vg: changed "vg object" to "vg""Hermet Park
This reverts commit ec69abed9d63e7876238dffc4b0d3398d1cd1be1. Ooops, I didn't intended this patch. @#!@#!@#!@#
2018-09-10evas vg: changed "vg object" to "vg"Hermet Park
Summary: Following our naming rule, rename to like other primitives. i.e. efl_canvas_rect, efl_canvas_image, efl_canvas_vg ... Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D7013
2018-06-15evas vg: prevent a corner-case crash.Hermet Park
tbh, current vg interfaces a little bit bad... here is one scenario to this stupid case. efl_parent_set() and evas_object_vg_root_node_set() both do re-parent job. They could be conflicted if user calls both apis in either way. efl_parent_set(root_node, NULL); but Vg Object still keeps the root node which is just a dangling pointer that occurs a crash while rendering.
2018-04-24Efl.Canvas.Vg.Object (from Efl.Canvas.Vg)Xavi Artigas
Also, Efl.Canvas.Vg.* (from Efl.Canvas.VG.*) Ref https://phab.enlightenment.org/T6847 Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-03-29evas: parent of an Efl.Vg.Node can also be a Efl.Canvas.VGCedric BAIL
2018-02-21efl_vg: namespace movesMike Blumenkrantz
efl.vg -> efl.canvas.vg.node efl.vg.* -> efl.canvas.vg.* ref T6714
2018-02-12efl_vg: use efl.object's name property instead of implementing a new oneMike Blumenkrantz
2017-12-13efl: Move VG-specific change event to efl.gfx.pathJean-Philippe Andre
2017-11-10evas/vg: use surface cache for efl vg canvasdevs/subhransu/evas_vgsubhransu mohanty
2017-10-27evas/vg: Added vg tree caching supportsubhransu mohanty