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.
From now on, constructors should return a value, usually the object
being worked on, or NULL (if the constructor failed). This can also
be used for implementing singletons, by just always returning the same
object from the constructor.
This is one of the final steps towards stabilizing Eo.
@feature
Instead of "@in type name;" we now use "@in name: type;". This change
is done because of consistency with the rest of Eolian; pretty much
every other part of Eolian syntax uses the latter form.
This is a big breaking change in the .eo format, so please update your
.eo files accordingly and compile Elementary together with the EFL.
@feature
if your virtual size is fairly big AND your actual object size is also
big, you easily overflow a signed int for intermediate coordinate
calculations, resulting in seeing only a small fractin of your objects
correctly. this fixes that by expanding up to long longs internally to
allow for the added space needed for the multiplications
@fix
Summary:
Used engine function for load image/data and use texture unit through
Evas_GL_Image object
Used Evas_ColorSpace format instead Evas_3D_Color/Pixel format
Added transformation matrix for adjusting texture unit coordinates in shader
Added property in Evas_3D_Texture for mark possibility get texture without atlas
(see https://phab.enlightenment.org/conpherence/54/, I suppose it will done
after this patch)
Reviewers: Hermet, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2371
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
On minimizing, free all mask surfaces. This could save a lot
of memory.
Also, write "proxy" COW only when there is a surface (the "proxy"
pointer itself is always valid and non-NULL).
They are not implemented, so they should not be marked as implemented.
Eo already properly handles functions that are not implemented, this is
completely unnecessary.
This function is deprecated, because del_full should be used instead.
Still, the documentation specifies in which order the callbacks should
be deleted.
Fixes T2077 (not really fixes according to the comment but fixes
according to the doc).
Right now the engines don't support mask tiles so we can't
just scale up an image on-the-fly when doing a masking operation.
Skip fast path and force render of border images into their own surface.
Situation:
- Evas Object A has a clip C and a map M.
Problem:
- Clip C will be applied once inside the map surface S and
again when the surface S is drawn to the canvas.
Solution:
- Track whether the current object is the mapped object
or a child of the mapped object. In the first case,
discard the clipper when rendering to the map surface.
In the second case, the child's clipper is PROBABLY[*]
inside the map, so it should be applied when rendering the
map surface itself.
Note: This also applies to masks.
[*] This is clearly not the ultimate clipping fix.
It seems like before the switch to Eo, all the object_*_add functions
had magic checks that only allowed non NULL Evas pointers to be passed.
Since we switched to Eo we apparently missed the early failure we used
to have, and we instead fail later. This patch should fix that.
Thanks to jaehwan for reporting.
@fix
Summary: This fixes a reported resource leak (by coverity).
_pack_meshes_vertex_data allocates memory stored in 'vertices' however
vertices is never free'd unless count > 0
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
Add pointer to target billboard node in Evas_3D_Node
Skip set flags change orientation for billboard node
Add method node_billboard_update to use it for change orientation during traverse
by nodes
Split API evas_3d_node_look_at_set to have possibility change orientation of node
without set flags
Reviewers: cedric, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2245