summaryrefslogtreecommitdiff
path: root/src/lib/ector (follow)
AgeCommit message (Collapse)Author
2019-12-10ector: Fix build warning about unused variableAli Alzyod
Reviewers: bu5hm4n, Hermet, devilhorns Reviewed By: devilhorns Subscribers: devilhorns, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10851
2019-12-06vg ector: Call a pair of ector begin/end for ector buffer drawing.Hermet Park
While we render vector drawing on ector,it uses ector buffers for subsequent compositions. In this sequence, it switches ector buffer with a composition target, while resuing the global ector context. Previously, it trickly switched ector buffer, it broke the ector begin/end pair. Now, it needs to recover global ector buffer once the composition finished. Thus ector buffer need to return the current pixels information for this.
2019-12-06ector_software_rasterizer: use dynamic array by span size.JunsuChoi
Summary: When use with intersect mask, if span_count over span array size, composition is to be wrong. So, In this case, we use dynamic array by span_count. Test Plan: N/A Reviewers: Hermet, smohanty, kimcinoo Reviewed By: Hermet Subscribers: vtorri, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10748
2019-12-05Ector: Prevent access to NULLJunsuChoi
Summary: ector thread can called *data(task) after deleting task object. Test Plan: N/A Reviewers: Hermet, kimcinoo, smohanty Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10804
2019-11-29eo files: Avoid container<ptr(value_type)> usage.Lauro Moura
Summary: Value types are already assumed to be stored by pointer (e.g. `int val = *(node->data);`) This commit just changes the current usage of the `ptr` modifier in the ptr, not affecting the parser. Reviewers: q66, segfaultxavi, bu5hm4n, felipealmeida Reviewed By: q66 Subscribers: cedric, #reviewers, #committers, brunobelo Tags: #efl Differential Revision: https://phab.enlightenment.org/D10769
2019-10-14eolian: fix eolian errors with EOLIAN_ENFORCE_SINCE=1WooHyun Jung
Summary: This is not the end of fixing eolian errors. I need to keep fixing more. Test Plan: 1. export EOLIAN_ENFORCE_SINCE=1 2. ninja Reviewers: q66, segfaultxavi, zmike, bu5hm4n, Jaehyun_Cho Reviewed By: segfaultxavi, Jaehyun_Cho Subscribers: Jaehyun_Cho, stefan_schmidt, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10370
2019-09-17ector: refer exact stride size for jumping buffer lines.Hermet Park
Actual buffer and used width size could be different, stride must be referred.
2019-09-11ector: removed cairo backend.Hermet Park
For reducing maintainability burden, We drop supporting cairo backend. The default backend is to software implementation from now. It's well maintained so far and works good.x
2019-09-11ector: don't alloc memory if the size is 0.Hermet Park
2019-09-11ector: code refactoring.Hermet Park
more neat and clean code, no logical changes.
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-09-04ector: add FIXME for coming issues.Hermet Park
We have no any test resouce but it seems very weird code... Leave a comment for future task.
2019-09-04ector: fix a wrong target buffer size.Hermet Park
the target buffer is allocated by backend engine, The buffer size must be specified with the stride, not the width. It's real dimension can be different with the our request.
2019-08-30ector gradient: ++ optmization.Hermet Park
we know what size will be used for every span, this graident buffer will be overwritten with new one, So it doesn't need to clear every spans.
2019-08-30ector: remove unnecessary blending processing.Hermet Park
gradient buffer in masking doesn't need to apply anti-aliasing since it would be taken by masking buffer. This also fixes memory overflow case if the tbuffer is lack of size.
2019-08-30ector: code refactoring.Hermet Park
just renamed internal variables, no logical changes.
2019-08-29eolian: drop @crefDaniel Kolesa
In the end this was just a failed experiment that didn't turn out to be practical. For now, revert back to ptr(const(T)) until a proper replacement for pointer syntax is added.
2019-08-22efl_canvas_vg_shape/ector_software : Set and use stroke miterlimitJunsuChoi
Summary: efl_canvas_vg_shape is set to miterlimit with Efl.Gfx.Shape.stroke_miterlimit and pass the value from rasterizer to freetype. NOTE: The default value is 4. It only refers to the standard of web svg. https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-miterlimit Depends D9657 Test Plan: N/A Reviewers: Hermet, smohanty, kimcinoo Subscribers: cedric, #committers, #reviewers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9665
2019-08-22ector_software_rasterizer: Change default value of stroke linejoinJunsuChoi
Summary: SW_FT_STROKER_LINEJOIN_MITER is same SW_FT_STROKER_LINEJOIN_MITER_VARIABLE We pass miterlimit values in fixed-point type. Therefore, change the default value to SW_FT_STROKER_LINEJOIN_MITER_FIXED. Test Plan: N/A Reviewers: Hermet, smohanty, kimcinoo Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9656
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-08-08ector: ++safety.Hermet Park
null handling just in corner case.
2019-08-05ector_software_rasterizer: Add default value for stroke's miter_limitJunsuChoi
Summary: Currently the default value of miter_limit is defined as 0. miter_limit should be specified to a value other than 0. becuase it is affected by width. See below for an explanation of this. https://www.freetype.org/freetype2/docs/reference/ft2-glyph_stroker.html#ft_stroker_linejoin There is no particular reason why the default value is 0x4. It only refers to the standard of web svg. https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-miterlimit Test Plan: setenv("ECTOR_BACKEND", "default", 1); elm_init(argc, argv); Evas_Object *win = elm_win_util_standard_add(NULL, "test"); evas_object_smart_callback_add(win, "delete,request", win_del, 0); elm_win_autodel_set(win, 1); Evas_Object *bg = elm_bg_add(win); elm_bg_color_set(bg, 255,255,255); evas_object_size_hint_align_set(bg, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(bg); Evas *evas = evas_object_evas_get(win); Evas_Object *vg = evas_object_vg_add(evas); evas_object_show(vg); Evas_Object *container = evas_vg_container_add(vg); Evas_Object *shape = evas_vg_shape_add(container); //Default is EFL_GFX_JOIN_MITER evas_vg_shape_append_rect(shape, 0, 0, 100 , 100, 0, 0); evas_vg_shape_stroke_color_set(shape, 255, 0, 0, 255); evas_vg_shape_stroke_width_set(shape, 10); evas_vg_node_origin_set(shape, 50, 150); shape = evas_vg_shape_add(container); evas_vg_shape_append_rect(shape, 0, 0, 100 , 100, 0, 0); evas_vg_shape_stroke_join_set(shape, EFL_GFX_JOIN_BEVEL); evas_vg_shape_stroke_color_set(shape, 255, 0, 0, 255); evas_vg_shape_stroke_width_set(shape, 10); evas_vg_node_origin_set(shape, 200, 150); shape = evas_vg_shape_add(container); evas_vg_shape_append_rect(shape, 0, 0, 100 , 100, 0, 0); evas_vg_shape_stroke_join_set(shape, EFL_GFX_JOIN_ROUND); evas_vg_shape_stroke_color_set(shape, 255, 0, 0, 255); evas_vg_shape_stroke_width_set(shape, 10); evas_vg_node_origin_set(shape, 350, 150); evas_object_vg_root_node_set(vg, container); elm_object_content_set(bg, vg); elm_win_resize_object_add(win, bg); evas_object_resize(win, WIDTH, HEIGHT); evas_object_show(win); elm_run(); elm_shutdown(); Reviewers: smohanty, Hermet, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9492
2019-07-26ector: Prevent access to NULL buffer in software rasterizerJunsuChoi
Summary: Prevents a crash caused by a null pointer exception when ector surface buffer is NULL. Test Plan: N/A Reviewers: Hermet, smohanty, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9390
2019-07-22Ector.Renderer : Implement Ector.Renderer.(Software).Image classJunsuChoi
Summary: Implement a class and drawer that outputs image data from the Ector. Image data is output with a vector object and supports transform. Test Plan: N/A Reviewers: Hermet, smohanty, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9218
2019-07-09Ector.Renderer: Prevent too many unref.JunsuChoi
Summary: pd-> surface will try efl_xref whenever surface_set is called. desturctor is called from a subclass, ref and unref do not match. So, Add this condition temporarily. Test Plan: N/A Reviewers: Hermet, smohanty, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9235
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-05-26eolian: rename @warn_unused and its associated APIDaniel Kolesa
@warn_unused in syntax is now called @no_unused - this is because "warning about unused" is a C thing (or rather, an extension to C) and various languages might want to use stricter behavior for this. Its associated API does the reverse now - it lets you query whether being unused is allowed at all. This is to match future behavior of Eolian (once it supports versioning) that will likely reverse it. @feature
2019-05-26eolian: remove param @nonullDaniel Kolesa
This has been deprecated for a while and is not strictly necessary - as a part of an effort to stabilize Eolian, remove this. Eolian will eventually gain support for versioning and use a reversed behavior (i.e. no NULL by default), but the API it wlll use for that will be very different. Features can always be added, it's much harder to drop them. @feature
2019-05-15ector_software_rasterizer: Improved masking calculation.JunsuChoi
Summary: The memory allocation for the buffer size is improved to allocate only the width size. Test Plan: N/A Reviewers: Hermet, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, smohanty, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D8873
2019-05-09eolian: move from eo_prefix to c_prefixDaniel Kolesa
2019-05-09ector_software_rasterizer : Move duplicate allocaJunsuChoi
Summary: Move the alloca() outside of the loop. Test Plan: N/A Reviewers: Hermet, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, smohanty, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D8869
2019-05-08ector_software_rasterizer: Support gradient mask blendingJunsuChoi
Summary: This patch supports mask blending of gradient shapes. Test Plan: N/A Reviewers: Hermet, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, smohanty, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D8855
2019-04-11ector_software_rasterizer: Implement mask blending function.JunsuChoi
Summary: Add Mask blend function(Add, Substract, Intersect, Difference) this blending function only use mask blending case. Test Plan: N/A Reviewers: Hermet Reviewed By: Hermet Subscribers: cedric, kimcinoo, #reviewers, smohanty, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D8509
2019-04-02docs: Fix common misspellings in H filesXavi Artigas
Fixed all appearances of words from this list in H files: https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines
2019-03-20docs: Remove obsolete @since tags from EO filesXavi Artigas
Summary: All legacy @since tags have already moved to the *.legacy.h files. EO files are now devoid of @since tags (except some eldbus still needed for legacy). Upcoming patches will add @since 1.22 to those APIs which come out of beta in this release. APIs marked @beta do not need @since tags. Test Plan: Everything builds, EO docs (like DocFX) have no Since tags. Reviewers: zmike, bu5hm4n, lauromoura, cedric Reviewed By: cedric Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D8430
2019-03-14build: add a option to disable eo file installationMarcel Hollerbach
Summary: this is done because .eo files are not stable, and in order to stop people depending on it, its better for now to disable the installation of them for now. ref T7676 Reviewers: stefan_schmidt, cedric, zmike, devilhorns Reviewed By: zmike Subscribers: #reviewers, #committers Tags: #efl Maniphest Tasks: T7676 Differential Revision: https://phab.enlightenment.org/D7897
2019-03-11eolian: enable checking of beta/stable contexts in all classesDaniel Kolesa
Summary: This enables all the checks unconditionally, without ignoring classes that don't have an Efl namespace. This required a lot of beta marking to make it build. It most likely doesn't mark types correctly, as that is not fully enabled yet. Reviewers: zmike, cedric, segfaultxavi, bu5hm4n Reviewed By: segfaultxavi Subscribers: #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D8266
2019-03-08headers: ensure Efl.h is always included behind BETA define guardsMike Blumenkrantz
Reviewed-by: Cedric BAIL <cedric.bail@free.fr> Differential Revision: https://phab.enlightenment.org/D8244
2019-03-08eo files: mark a bunch of types with @betaMike Blumenkrantz
Summary: these are all types that we do not currently want to release Depends on D8102 Reviewers: segfaultxavi Reviewed By: segfaultxavi Subscribers: segfaultxavi, cedric Tags: #efl_api Differential Revision: https://phab.enlightenment.org/D8241
2019-01-22ector: remove unused functionMarcel Hollerbach
done is not called, nor implemented in a single spot, lets remove it. It can still be readded once its needed. ref T5719 Reviewed-by: Cedric BAIL <cedric.bail@free.fr> Differential Revision: https://phab.enlightenment.org/D7713
2019-01-18efl: convert all abstracts to the new eolian syntaxMarcel Hollerbach
ref T7459 Reviewed-by: Daniel Kolesa <daniel@octaforge.org> Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es> Differential Revision: https://phab.enlightenment.org/D7686
2019-01-18efl: convert all mixins to new eolian syntaxMarcel Hollerbach
ref T7459 Reviewed-by: Daniel Kolesa <daniel@octaforge.org> Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es> Differential Revision: https://phab.enlightenment.org/D7685
2019-01-18efl: convert all classes to the new eolian syntaxMarcel Hollerbach
ref T7459 Reviewed-by: Daniel Kolesa <daniel@octaforge.org> Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es> Differential Revision: https://phab.enlightenment.org/D7684
2019-01-17evas: make classes abstractMarcel Hollerbach
Summary: those classes are defining pure_virtual functions, so the class should be abstract. ref T7632 Depends on D7670 Reviewers: cedric, segfaultxavi, zmike, q66 Reviewed By: segfaultxavi Subscribers: #reviewers, #committers Tags: #efl Maniphest Tasks: T7632 Differential Revision: https://phab.enlightenment.org/D7671
2019-01-16evas/engines/gl_generic: remove multiclass inheritanceDaniel Kolesa
evas_ector_gl_buffer/evas_ector_gl_image_buffer contained a regular class in extensions list, which is wrong.
2019-01-11efl: refactor all mixinsMarcel Hollerbach
Differential Revision: https://phab.enlightenment.org/D7585
2018-12-28efl gfx_path: remove EFL_GFX_PATH_EVENT_CHANGEDHermet Park
Summary: Here is an additional optmization patch for removing unnecessary updation of path, For instance, let's assume this scenario: If one vg object has 20 path nodes(shapes), and every single nodes would have 50 path changes. (like, append_cubic, append_rect, append_xxx ...); There would 1000 events triggering. Furthermore, if there are 20 vector objects in one view, hese events would be triggered 20000 in one frame. It's insane, actually I could figured out that happens. and it took a lot of cpu consumption in some vector usages. efl_gfx_path_commit() is my idea to avoid this. When path is ready, the path need to get this api call in the last to make object changed properly. @feature Reviewers: #committers, cedric Reviewed By: #committers, cedric Subscribers: segfaultxavi, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D7494
2018-12-26Revert "efl gfx_path: remove EFL_GFX_PATH_EVENT_CHANGED"Hermet Park
This reverts commit 7c38c0c9154b0971ccb8ecf5ea8f15467cfb6662. Oops, didn't intend this patch.
2018-12-26efl gfx_path: remove EFL_GFX_PATH_EVENT_CHANGEDHermet Park
Summary: Here is an additional optmization patch for removing unnecessary updation of path, For instance, let's assume this scenario: If one vg object has 20 path nodes(shapes), and every single nodes would have 50 path changes. (like, append_cubic, append_rect, append_xxx ...); There would 1000 events triggering. Furthermore, if there are 20 vector objects in one view, hese events would be triggered 20000 in one frame. It's insane, actually I could figured out that happens. and it took a lot of cpu consumption in some vector usages. efl_gfx_path_commit() is my idea to avoid this. When path is ready, the path need to get this api call in the last to make object changed properly. @feature Reviewers: #committers, cedric Subscribers: segfaultxavi, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D7494