Age | Commit message (Collapse) | Author |
|
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
|
|
|
|
more neat and clean code, no logical changes.
|
|
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().
|
|
We have no any test resouce but it seems very weird code...
Leave a comment for future task.
|
|
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.
|
|
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.
|
|
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.
|
|
just renamed internal variables, no logical changes.
|
|
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
|
|
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
|
|
This reverts commit dad166f84a02cfffc2a07bc804e7b7e35ed4a40d.
Ector is not public, this breaks enlightenment compilation,
|
|
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().
|
|
null handling just in corner case.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
ref T7459
Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7686
|
|
ref T7459
Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7685
|
|
ref T7459
Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7684
|
|
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
|
|
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
|
|
This reverts commit 7c38c0c9154b0971ccb8ecf5ea8f15467cfb6662.
Oops, didn't intend this patch.
|
|
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
|
|
allocate one spare span memory then reuse it.
|
|
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.
|
|
make code clean and neat.
no logical changes.
|
|
this ensures that eolian does not parse installed .eo files
Differential Revision: https://phab.enlightenment.org/D7405
|
|
this ensures that eolian does not parse installed .eo files
Differential Revision: https://phab.enlightenment.org/D7405
|
|
Replace fill/stroke renderer preparation of shapes to canvas vg,
These renderer now is triggered by their own instances.
|
|
public_shape missed get xunref,
it won't reache to zero reference.
@fix
|
|
you were not able to disable the header checks, so if the header was not
there it indicated that you could turn it of. However, the option check
was in the has_header if not outside of it. Further more, header checks
are done in the subdirectory that is done for header checks,
unneccessary cpu_**** flags are removed, global optimization options are
added to the global_arguments instead of just the package_c_args, which
leads to the fact that also all binaries etc. are build by default with
those optimization flags.
This also reduces the amount of options to a minimum of 1 option, to
just control if there should be the optimization or not.
This also changes from host_maschine to target_mschine, since we
probebly want to enable the optimization for the target maschine, not
the host.
Differential Revision: https://phab.enlightenment.org/D7296
|
|
Summary:
the optimization that is build here requries a few .eo.h files - so
ensure that they are generated before they are used.
This fixes the build of efl.
Reviewers: ManMower, raster
Reviewed By: ManMower
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7295
|
|
|
|
Ector shutdown couldn't terminate engine properly
since it's counting statement is wrong.
|
|
|
|
This uses the meson/ninja depfile functionality + eolian to make
sure proper dependencies between generated files and .eo files
are managed, to ensure consistent re-generation of all generated
files that are affected upon .eo file modification.
For custom rules with multiple outputs, Ninja currently does not
support depfiles. Therefore, split those into two custom rules
so that the depfiles functionality can be enabled. While this
is ugly and slows down the process a little by having to invoke
Eolian twice instead of once, it has to be done and it's still
better than what we had in Autotools anyway.
Differential revision: D7187
Fixes T6700.
|
|
a new shiny buildtool that currently completes in the total of ~ 4 min..
1 min. conf time
2:30 min. build time
Where autotools takes:
1:50 min. conf time
3:40 min. build time.
meson was taken because it went quite good for enlightenment, and is a traction gaining system that is also used by other mayor projects. Additionally, the DSL that is defined my meson makes the configuration of the builds a lot easier to read.
Further informations can be gathered from the README.meson
Right now, bindings & windows support are missing.
It is highly recommented to use meson 0.48 due to optimizations in meson
that reduced the time the meson call would need.
Co-authored-by: Mike Blumenkrantz <zmike@samsung.com>
Differential Revision: https://phab.enlightenment.org/D7012
Depends on D7011
|
|
This changes a lot of things all across the EFL. Previously,
methods tagged @const had both their external prototype and
internal impl generated with const on object, while property
getters only had const on the external API. This is now changed
and it all has const everywhere.
Ref T6859.
|
|
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
|
|
Shape implements a property, sw/gl/cairo implements a method
rename method to op_fill
|
|
|