summaryrefslogtreecommitdiff
path: root/src/lib/ector/software (follow)
AgeCommit message (Collapse)Author
12 daysGet rid of trailing whitespaces (5 / 14)Elyes HAOUAS
Remove trailing whitespaces Differential Revision: https://phab.enlightenment.org/D12003
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-04-14meson: do not install namespace problem legacy filesMarcel Hollerbach
these files are not required for the unified API, but they have namespace problems, so for now, do not install them Differential Revision: https://phab.enlightenment.org/D11665
2020-04-13Ector: Refer to visibility of Ector_Renderer when doing rle_update.JunsuChoi
Summary: An object with visibility false may not have a normal path or data. It can cause invalid access or affect other ector renderers. This is a patch to prevent them. Test Plan: N/A Reviewers: Hermet, kimcinoo, herb Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11689
2020-03-23ector: fix pointer checkingMarcel Hollerbach
we want to check if the pointer is available, and not the value of the pointer. This fixes some "Jump depends on uninitialized value" messages from valgrind.
2019-12-19ector software: catch up losing tasks among the threads.Hermet Park
This is a subsequent change after 8465904c19ea3de2c94c25259ca6a75d0241b4f1. The major change is almost same but just for gradient stuff.
2019-12-19ector software: catch up losing tasks among the threads.Hermet Park
Summary: ector sw uses thread pool internally to process rle job parallel. First of all, we lost task handles which allocated to each threads, we must free the task data after thread done. Secondly, tasks can be managed by one shape instance, the instance can't catch upon multiple instances alive. only last task can be attached to the shape instance. Thus, obvisouly the instance doesn't expect to handle multiple tasks at the same time, one instance only take care of one task on threading pool. Reviewers: jsuya, cedric, smohanty, kimcinoo Reviewed By: jsuya Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10916
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-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-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-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-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-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-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
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
2018-12-07ector software: Be careful at alloca() usage.Hermet Park
allocate one spare span memory then reuse it.
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-07ector: code refactoring.Hermet Park
make code clean and neat. no logical changes.
2018-12-03meson: use eolian_gen with -SMarcel Hollerbach
this ensures that eolian does not parse installed .eo files Differential Revision: https://phab.enlightenment.org/D7405
2018-11-28evas ector: Replace renderer preparation responsibility.Hermet Park
Replace fill/stroke renderer preparation of shapes to canvas vg, These renderer now is triggered by their own instances.
2018-11-23ector software: make a pair of ref/unref.Hermet Park
public_shape missed get xunref, it won't reache to zero reference. @fix