NOTE: it would be nicer to setup a specific context for each snapshot
and walk all the child below. If any of them did change, only trigger the
full redraw in that case (and of course only if a filter with blurr does
use it somewhere).
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.
*this does not affect any "stable" code paths - it's render2 and some
added region code that i MAY have to use to fix some bugs/issues as i
am noticing tilebuf being pretty silly and just doing bounding boxes.
region code lifted from xserver (mit-x11 license thus compatible with
evas bsd) and it's been stripped down and cleaned up with some tilebuf
optimizations like remembering the last rect add/del to avoid work
when repetedly adding/delling the same rects (very common).
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.
Summary:
Apart from evas_canvas3d_node_look_at_set() all other things are referenced.
Tried to reference it to @Evas.Canvas3D.Node.look_at_set(). But getting error.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric, tasn, q66
Reviewed By: q66
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2822
This fixes a scenario in which paragraphs in the current layout still
store visual lines from the previous layout. This is possible if the
text uses an ellipsis format, allowing the layout work to stop at a
certain paragraph. This inconsistency affects some query functions that
consider lines which may be irrelevant in the current layout.
Test Case: see added test case to evas_suite.
@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
This patch deprecates the following functions:
- evas_object_image_data_convert
- evas_object_image_pixels_import
- evas_object_image_reload
I could not find any place where they are used.
The old documentation is kept in the header, but not as a doxygen
anymore.
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).
Summary:
Introducing a new feature for Evas Textblock. This allows the layout to
wrap around other evas objects.
The following API is added:
- obstacle_add
- obstacle_del
- obstacle_update
Evas objects can now serve as textblock obstacles, if positioned and
visible on the text area. The text will wrap around the obstacles
according to the wrapping mode set to it.
This also modifies the current wrapping code to handle obstacle wrap
points as well. The wrap index query function is modified so that
forward-scanning (specific cases) may be disabled when treating
obstacle wrap point.
RTL text is currently unsupported by this feature.
Consult added docs and example for usage.
@feature
Test Plan: Evas example and test in evas_suite are provided with this.
Reviewers: tasn
Subscribers: raster, JackDanielZ, cedric
Differential Revision: https://phab.enlightenment.org/D2405
This includes proxies, 3d scenes and normal images.
There is still a problem as the GL engine returns NULL on
data_get.
This kinda goes against the EO API declaration as
eo_obj is used as a mutable argument, but internal data was
already modified before this patch.
TODO: Draw maps, filters, etc... in a dedicated surface to save
them as they truly are (ie. filtered images).
Somehow I broke this when introducing the eo mixin.
This is what broke @cedric's work on the snapshot widget!
TODO: Verify that the contents changed, and not just X,Y.
This updates it->x when visiting each item in the line layout code,
as it was always 0, even when it was used during item rollback.
Fortunately, in the above case a 0 value was actually expected, so
this does not actually affect current behavior.
This fix is mainly for consistency and future development.
This fixes a case with wrapping, where the text has a mixture of 'none'
and 'word' wrapping modes, and the layout function decides to
roll-back a few items.
The test case is added to the evas_suite.
This might not be a common case, or even a case we had defined a proper
behavior to, but since it causes an infinite loop, it needs to be fixed.
@fix
Summary:
opaque value keeps previous image's value
when image data be changed by file_set/mmap_set api
@fix
Test Plan:
1) Make a evas rectangle object has color
2) Make a evas image object with jpg file.
3) Replace image data with png file by evas_object_image_file_set.
Reviewers: Hermet, cedric, jypark
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2774
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Let's assume we have a textblock with one paragraph at y = 3 and h = 50
At the moment, passing 60 (after the paragraph) to line_coord_set picks
the last line, however passing 0, just fails. This fixes that.
Thanks to Vladyslav Shevchenko for reporting it in D2574.
@fix
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.
This should preserve ABI stability with earlier versions of
edje_cc while still providing more advanced control over
proxy bindings for evas filters from EDC.
Also fix proxy binding for filters.
@feature
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).
Summary: Coverity reports that eina_thread_queue_wait was returning
NULL and thus msg variable being used here causes dereferencing a null
pointer.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Those objects should never be rendered on the canvas, even if they
are visible. On the other hand, they need to be rendered in mask or
proxy surfaces.
note: this patch includes some extra whitespaces changes :(
@feature
Evas_event_feed_mouse_cancel generates mouse up event if it meets situation witch mouse should be canceled.
but app also have to know this information. I add cancel information into evas up event generated by cancel function.
@fix
Summary:
Size may be zero while allocating interfaces private data,
when NULL is passed in EVAS_SMART_SUBCLASS_IFACE_NEW for ifaces argument.
If size is 0, then malloc() returns either NULL, or a unique pointer
value that can later be successfully passed to free(). It is implementation
dependent. This case would be likely to occur in case of smart classes with
no interfaces.
@fix
Signed-off-by: Vaibhav Gupta <g.vaibhav1@samsung.com>
Reviewers: raster, Hermet, tasn, cedric
Subscribers: SanghyeonLee, sachin.dev, singh.amitesh, cedric
Differential Revision: https://phab.enlightenment.org/D2679
Summary:
As we always call evas_object_inject in every Evas Object's ctcor,
it seems sensible to move this repeated bit of code to the super
(Evas.Object).
Test Plan: Expedite, Elementary_Test and pretty much everything
Reviewers: cedric, raster
Subscribers: JackDanielZ, cedric
Differential Revision: https://phab.enlightenment.org/D2665
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Evas_3D_Mesh_Primitive is a enum starting from 0 so it never will be below 0.
Just as the compiler tells us. Remove unneeded check.
lib/evas/canvas/evas_3d_primitive.c:48:4: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
So I don't like this data being void and stride being in bytes, but changing it
for silencing a warning will be a massive change. I will put that on the major
cleanup that Evas_3D need to receive.
Summary:
Old algorithm searched specified frame of the base frame and when it could not find the specified frame it ignored. So the bounding box was not synchronized with the object.
New algorithm always returns specified base frame or frame interpolation between the nearest base frames. That does synchronizes mesh object and his bounding box.
Reviewers: Hermet, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2594
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Evas GL now supports surfaceless make current, where
evas_gl_make_current can be called with sfc parameter NULL.
This closely resembles EGL_KHR_surfaceless_context extension,
where applications that only want to render to client API targets
can make current to NULL surface instead of creating a dummy egl surface.
@feature
This was not really useful and against the Eolian guidelines.
While I promised I won't break things until the 27th, I was ill
(still am), so I'm giving myself a 1 day pass. :P
if yuou use 709 instead of 601 yuv (ycbcr) evas will just be wrong and
use 601. this fixes that and implements 709. it also fixes a scaling
bug for yuv in the gl engine. no one noticed but me, so i won't call
this a bug fix, and it can go into the next efl release - no need to
backport unless it actually bothers peolpe (which it seemingly doesn't)
Summary:
For showing text error like spell error thick underline is used hence added the underline height support.
@feature
Test Plan: test case added in evas textblock test.
Reviewers: raster, shilpasingh, tasn
Subscribers: govi, rajeshps, cedric
Differential Revision: https://phab.enlightenment.org/D2531
TAsn comment: I wonder if the format should be renamed to
underline_relheight instead of height. If you have any thoughts, please
let me know.
Summary:
Use fourth component texture. Update mechanism generation pixels, scene renderer
to texture and geting color pixels from texture. Update shader for color pick.
Reviewers: Hermet, raster, cedric
Reviewed By: cedric
Subscribers: Oleksander, cedric
Differential Revision: https://phab.enlightenment.org/D2549
Summary: Now mechanism of creation of primitives is similar to model loading.
Reviewers: Oleksander, Hermet, raster, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2516
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
For calculation 'aabb' need to know how mesh was transformed.
So for primary data of mesh was calculate all transformation.
Reviewers: Hermet, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2563
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Eo files will now fail to compile if a cycle is detected.
This required some temporary changes in existing eo files
(we had 2 cycles) for which I added a FIXME (they do not
affect C generation).
@feature
This is another cleanup in perparation for the Eo stable release.
This is no longer needed thanks to the proper error reporting with
eo_constructor()'s new return value.
The finalizer change cleans it up a bit so it catches more cases/issues.
This also means that the finalizer cleans up the object in all cases,
and not only some.
@feature.