Summary:
Evas supports UltraLight, UltraBold as font weight.
These terms have same weight value as ExtraLight, ExtraBold.
Some applications, for example, fontforge, use ExtraLight, ExtraBold terms for these weight values.
So, it would be better to support these terms, too.
@feature
Test Plan: None
Reviewers: tasn, woohyun, herdsman
Reviewed By: herdsman
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3126
Summary:
A bit of useless claim, becouse parameter coord always have value 0 or 1 or 2.
May be for escape problem in future.
@fix
CID: 1339781
Reviewers: raster, cedric
Reviewed By: cedric
Differential Revision: https://phab.enlightenment.org/D3349
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This rely on a faster code path to upload dynamic texture. Once we get support
for gbm, we should see significant performance improvement in speed, but this
first step is already a 5 times improvement (Ok, we get from really bad, to not
really useful...).
Summary:
Refactoring code of functions e3d_drawable_scene_render,
e3d_drawable_scene_render_to_texture,_shadowmap_render to have possibility
render in scene to additional texture
See T2761
Reviewers: Hermet, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3142
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
- image_file_colorspace_get
This will be used to determine the best loading format, especially
targeted at edje_cc / edje_decc so we can avoid ETC re-encoding.
- image_data_has
Checks whether the image is currently loaded in (CPU) memory,
and also returns the current colorspace.
Summary:
Use same way using color pick under GLES and not:
Use GL_RGBA texture insted of GL_RED
Generate and pass to engine 3 components color of mesh
See T2761
Reviewers: cedric, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3135
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: This API builds vertex and index data of convex hull around the given mesh.
Reviewers: raster, perepelits.m, Hermet, cedric
Reviewed By: cedric
Subscribers: cedric, artem.popov
Differential Revision: https://phab.enlightenment.org/D2799
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
While cached surfaces is a topic we're discussing recently,
this code is dead right now, and we will have to redesign the
buffer caching better to handle proxies, maps, smart objects, etc...
If the filtered object (text or image object) was deleted, its
output image (cached inside the filter data) would be freed
immediately. This could cause crashes in case of async rendering.
@fix
the overhead didnt show up in y tests. do show up with certain
expedite tests. hmmm. last time i messed with region code it was
actually same speed as tiler. bonus was it was fully accurate.
this optimizes draw ctxt cutouts by skipping small ones and
remembering the last cutout added so it isn't double-added as well as
extending the minimum cutout array to 512 and going up in blocks of
512 instead of 128. also optimize the clipping code a bit more.
this move evas tiler that does update handling to use fully correct
regions using region.[xh]. this also removed old unused regionbuf code
and a bunch of commented out code no longer needed. much simpler now
and easier to maintain.
Summary:
Firstly it was the main point of in CID1323089 from Coverity, but this variable is unused. So I've deleted it.
CID1323089
Reviewers: raster, Hermet, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3067
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Inside a proxy, clipping information might be wrong since the
source object may be at a different position than within
the proxy. If source_clip is not set, then we need to discard
all clips that are outside the proxy context.
So we just propagate the clip information inside the current
draw context, and even recurse from clipper to clipper to
find the final state of clipping.
Map and proxies and others (who said masks?) should definitely
rely more on the same model.
This code is not a mess. At all. You gotta love evas_render.
Use context_dup to inherit from previous contexts in a clean
manner. This removes the need for restoring the previous
clip information.
Plus, this commit removes lines of code so it must be good, right?
After clip_image_get, the old mask may be replaced by a new one,
and unref'ed, but it is later on set back as the context mask image.
Maybe it's possible that there was 0 reference and the image
got freed in between.
No idea how to test this.
@fix
This should theorically work, need some test. Design is easy to understand. Render
every part of a snapshot object by rendering the content below it, before rendering
the stack above it using that object content.
Summary: This is a logic of tangent data calculation, we need it in order to avoid bugs with normal mapping after building with opengl=yes.
Reviewers: Hermet, raster, cedric
Reviewed By: cedric
Subscribers: Oleksander, cedric, artem.popov
Differential Revision: https://phab.enlightenment.org/D2802
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Before this patch, those EGL/EvasGL functions can not work
without a current context. But EGL does not require any
current context for those to work, or at least, this should
be left to the driver to decide.
Evas GL was only able to get a pointer to the display
if a context was current.
The display pointer should be infered from Evas_GL unless
we can find a current display. EGL does not require a
context to be current in most of these function calls.
This should bring evasgl a little bit closer to EGL in terms
of behaviour (those are EGL-only extensions, btw).
Thanks @spacegrapher for the quick review
@fix
evas_gl_native_context_get is an internal function
passed around from an evas engine to evas_gl so that we can
implement evasglCreateImageForContext without exposing
any evas engine internal structure to evas_gl.
It's all a ittle bit ugly but the previous solution with
dlsym(DEFAULT) didn't work.
This is a complex situation:
- Smart object A contains image I
- A is proxied into an image B
- B is marked as source_invisible, which means A is invisible
- Mask M is applied to image I
- Mask M is ALSO a smart child of A
Because of all that, mask M could not be rendered into its private
mask surface, as it was falling under the case of "parent_src_invisible".
This patch checks that the object is not a mask during the
parent_src_invisible check.
@fix
i think this has been disabled for a while. image unloading is broken
- esp with gl enigne as due to async move it was effectively disabled.
this re-enables it. unloading is deferred with a managed list of things
needing unloading and then when any async sw renders are not busy any
more - do the unload then in the mainloop of all pending/flagged
images to unload
@fix
Summary: This is an algorithm which calcuates a convex hull of some mesh, in fact it returns vertex, index, normal and color datas, though the new mesh could be build just as for AABB
Reviewers: raster, Hermet, cedric
Subscribers: cedric, artem.popov
Differential Revision: https://phab.enlightenment.org/D2585
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Those two functions were doing exactly the same thing[1], which
is free an image, so this commit only attempts to simplify the code
a little bit.
[1] Actually image_map_surface_free() might even not have worked
properly with cserve2 sw (calling unload instead of close).
Otherwise there would be conflicts in certain circumstances.
This also requires adding const on many existing functions,
and similar work is necessary in Elementary.
@fix
This flag should be set iif the string passed is to be executed
rather than assigned. This is used to pass complex arguments
as data, like tables (eg. color class).
Deep down internally there was already a name, but no API could
really set it properly.
Here Edje will set the name of the filter based on the part name
or the data item name if relevant.
This creates the new interface
Efl.Gfx.Filter
And the implementation is a mixin (evas_filter_mixin.c):
Evas.Filter
All the filter rendering code has now been moved to this
new file. TODO: Merge image filtering.
Reuse previous code for buffer. Keeps API stability.
The new class "color" is here for a more convenient color
representation. This way, colors can be represented in more
natural ways like: {r,g,b[,a]}, 0xaarrggbb, "red", "#rrggbb"
Class color is implemented in pure Lua, and adds a .lua file
to Evas' share folder.
This will improve the debug output of evas and specifically
allow setting "evas_filter" log level to a higher or lower
value depending on what you are debugging :)
Now we're ready to implement runtime changes to the filters'
state (color classes, edje state, etc...), as the Lua function
will be run whenver required.
This will allow changing the state of the filter and re-run it
without re-creating the Lua_State object. This is to handle size,
color, animation state and scale changes (amongst other things).