Commit Graph

176 Commits

Author SHA1 Message Date
Jean-Philippe Andre 0a19a87c0e Evas image: Return proper path even with mmap
Since we're using a union (u.{f,file} we can't just
return u.file when the file was set as an mmap source.

@fix
2015-04-10 16:47:12 +09:00
Cedric BAIL a395f5ded5 efl: add Efl.Gfx.View and use it in Evas.Image. 2015-04-03 16:23:26 +02:00
Cedric BAIL 7ba7ed4a1c efl: add Efl.Gfx.Fill and migrate Evas.Image to it. 2015-04-03 16:23:24 +02:00
Cedric BAIL c2e75544e1 efl: move mmap API to be part of Efl_File class. 2015-04-03 16:23:13 +02:00
Jean-Philippe Andre bea9567d0e Evas GL: Kill runtime warnings caused by auto fallback
The previous commit modifies the concept of direct rendering
vs. indirect rendering, so some runtime checks (in debug mode
only) will fail.

This commit introduces two new engine functions:
 - gl_get_pixels_pre
 - gl_get_pixels_post

The latter will be used in a later patch for optimization.
2015-03-03 20:08:16 +09:00
Jean-Philippe Andre a14492ef73 Evas GL: Automatic fallback to indirect rendering when the scene has
not changed.

Automatically fallback to indirect rendering on FBO or X11 Pixmap
if the Evas Object Image is not marked as dirty. This should
improve the performance and/or power consumption in those
rare cases where this area of the canvas needs to be redrawn
but the GL content has not changed.

@feature
2015-03-03 18:11:32 +09:00
Jean-Philippe Andre fab0d7f9d3 Evas masking: Simplify previous commit
Call object's function to get the private engine_data (here, the
image object). Thanks Dongyeon for your patch which inspired me to
do that instead of forcing pre_render.
2015-02-27 13:06:09 +09:00
Jean-Philippe Andre fddaf62fcc Evas masking: Add fast path for image-only masks in GL.
This will currently optimize most of the masks when using the
GL engine[1].

This is a very special case that adds a highly optimized path
for masking in GL. It works by creating a virtual image, containing
a pointer to the original image and a new geometry[2].

Instead of creating a new FBO-based surface (image_map_surface),
we refer to the original image and adjust the mask geometry on
the fly.

KNOWN BUGS:
- masking a map with such a scaled image is now broken.

[1] Right now all masks are simple Evas Object Image, so that means
    all cases of masking, except masks of masks, or masks of maps,
    will be optimized with this new method.

[2] This virtual image mechanism is still quite hackish and may
    be improved (for memory usage, refcounting, etc...)
2015-02-27 13:06:09 +09:00
Jean-Philippe Andre 93d167ac87 Evas GL: Add hidden config values for direct rendering options
Those 2 new values are here to avoid using environment variables
that have side effects on the whole application.

I'm actually wondering if we shouldn't just kill off the env
vars altogether. Also, direct override is a terrible option that
should never be used.
Memory optimization can make sense (needs more testing tho).
2015-02-24 22:12:00 +09:00
Tom Hacohen 648ad2591c Fix code to conform to recent Eo changes. 2015-02-23 17:16:02 +00:00
Carsten Haitzler d3527da0ab evas - image obj - filled mode - never use invalid 0x0 fill
this fixes a lot of noise for filled image objects that set fill to
0x0 if objetc is 0x0. this clamps minimum fill at 1x1 and thus keeps
things silent and sensible. also just silently ignore 0x0 filled image
objects. noise is not that useful.
2015-02-12 22:30:10 +09:00
Carsten Haitzler 7c5f92d702 evas - render - have lock point to allow for async obj walk + update add
this adds a lock for when walking all the objects to generate render
commands for an async render. this allows even the object tree walk
plus update area caluclation to be moved off into async if every oject
that can change canvas state actually does so correctly. this change
adds all those lock block calls to synchronise with an async object
tree walk.
2015-02-12 11:06:40 +09:00
kabeer khan 46b9b23144 evas: add image orient set/get API in software backend for now.
Summary:
Added API's to rotate(0, 90, 180, 270), flip(horizontal, vertical, transpose, transverse)
evas image object. Also added example to demonstrate this.

Signed-off-by: kabeer khan <kabeer.khan@samsung.com>

Reviewers: raster, stephenmhouston, cedric

Subscribers: stephenmhouston, cedric

Differential Revision: https://phab.enlightenment.org/D1950

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-02-11 17:30:54 +01:00
Jean-Philippe Andre 89ee8e1446 Evas masking: Prevent drawing masks in the wrong surface
Masks should be actually rendered only to their specific target
surface.
2015-02-04 12:39:49 +09:00
Jean-Philippe Andre 8b889f4892 Evas masking: Fix blending of some border images 2015-01-23 17:24:51 +09:00
Cedric BAIL 201df16d67 evas: reorder structure to avoid structural hole. 2015-01-20 18:46:03 +01:00
Jean-Philippe Andre 2a0201d571 Evas masking: Allow setting an image object as clipper
The render function is not yet implemented, but this
prepares the infra used to set an object other than
Rectangle as a clipper.

@feature
2015-01-07 15:06:02 +09:00
Jean-Philippe Andre 4cf2d75715 Evas GL: Fix direct rendering with client-side rotation
There was a problem when checking whether the current surface
is compatible with direct rendering. In case of client-side
rotation (it's a flag set on the surface by the app), a surface
can be directly rendered even if the rotation is not 0.

But, before this patch, it was assumed that the surface was
current. Which doesn't make sense because make_current is
called by the pixel callback, from the application, and this
happens *after* we check for direct rendering.

As a consequence, it was not possible to mix directly rendered
surfaces with FBO-based ones, and use client-side rotation.

This patch should solve that issue.
2014-12-10 10:52:22 +09:00
ChunEon Park 215b52ecc1 evas/map : set antialias context for map rendering. 2014-11-26 12:22:55 +09:00
Jean-Philippe Andre fe677a0518 Evas: Use common function for proxy_subrender
Merges functions from:
- filters
- image object
2014-11-12 17:11:49 +09:00
Jean-Philippe Andre 792ac17736 Evas image: Use macros ENFN/ENDT to improve code readability
These macros replace some very repetitive code:
 - define ENFN obj->layer->evas->engine.func
 - define ENDT obj->layer->evas->engine.data.output

This commit includes lots of space changes as well.
This is a purely cosmetic commit.
2014-11-12 16:52:52 +09:00
Jean-Philippe Andre 4fb138a65f Evas: Remove ugly REND_DBG
Here's a macro that's used for debugging in some of the ugliest
ways possible: avoid passing an extra argument to a function when the
cost of always passing it is negligible (it's an int).

Fixes T1749.
2014-11-12 15:26:59 +09:00
Tae-Hwan Kim e96576cbc3 evas: Use Eina_Bool
Summary: Use EINA_TRUE/EINA_FALSE instead of 1, 0

Reviewers: raster, cedric, Hermet

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1633
2014-11-03 20:27:56 +09:00
Cedric BAIL c3b4a573a2 evas: fix increased memory usage in Evas.
Eina_Cow does memory comparison during standby time. So in expedite as we don't
have any standby time, we end up allocating some vast amount of memory that
will never be compared. It is way simpler to compare that the data are not
going to change before hand. It should also reduce the CPU consumed during
idle time.

This patch save about 1MB of data at peak time in expedite.
2014-10-29 06:15:11 +01:00
Jean-Philippe Andre 7db01ea396 Evas filters: Remove useless source_count and cow checks 2014-10-22 14:27:50 +09:00
Jean-Philippe Andre b5ccb00ba7 Evas filters: Feed some cow to the image objects
Same as for the text objects.
Fixes T1725.

Cedric, please run again your memory test, please.
2014-10-22 13:00:20 +09:00
Jean-Philippe Andre 9a0e128f23 Evas GL: Enable direct rendering even with alpha images 2014-10-20 12:16:08 +09:00
Tom Hacohen a7560dbc61 Eo: Change eo_add/del/unref behaviour.
Before this change eo_add() used to create an object with 1 ref, and if
the object had a parent, a second ref.
Now, eo_add() always returns an object with 1 ref, and eo_add_ref()
    preserves the old behaviour (for bindings).

eo_unref now un-parents if refcount is 0, and eo_del() is an alias for
eo_unref (will change to be a way to ensure an object is dead and goes
        to zombie-land even if still refed).
2014-09-25 17:38:45 +01:00
Mike Blumenkrantz 5375e154fe fix config.h inclusion across the tree 2014-09-23 15:56:46 -04:00
Dmytro Dadyka 0d2f4dbc11 [Evas/evas-3d] Add shadow maps. Added two scene-API functions for enable and disable shadows on the scene. Added 6 light-API function for set and get the light projection.
Reviewers: raster, cedric, Hermet

Subscribers: raster, cedric

Differential Revision: https://phab.enlightenment.org/D1330
2014-09-03 21:19:16 +09:00
Tom Hacohen 69219fe1e2 Efl interface: Add image interface and start using it. 2014-08-21 11:02:11 +01:00
Tom Hacohen 500c4019dd Interface file: Update file interface and use it for image. 2014-08-21 11:02:11 +01:00
Carsten Haitzler faaaf55f7a evas images - animated gifs
there are deep down bugs in evas with animated gifs. espeically if you
have multiple instances of the same gif, but for now let's just
address the problem where we have entire frames of animation
vanishing. this is because the animation frame set failed and thus
didnt notify the rest of evas. have it ignore this fail for now so
things work out.
2014-08-18 18:01:51 +09:00
ChunEon Park b179c1d82e evas/proxy: When src object has no proxies, redraw flag is set for EINA_FALSE.
[Problem] When obj which has src object(proxy concept) are excluded from render_object,
src object's 'proxy.redraw' isn't change although src obj have not proxies.
because 'proxy.redraw' flag is changed to EINA_FALSE only in obj's subrender() called.

[Resolution] When the count of source obj's proxies is 0, src obj's 'proxy.redraw' is set for EINA_FALSE.

Signed-Off-By: Min Kyoung Kim <mer.kim@samsung.com>
2014-08-14 15:29:26 +09:00
Tom Hacohen 7f3a44894b Evas canvas eolian: Fix namespace and class name for the evas canvas. 2014-06-30 17:47:06 +01:00
Jean-Philippe Andre 10e8b72667 Evas: Fix potential memory leak (save with encoding) 2014-06-18 16:28:37 +09:00
Jean-Philippe Andre d0d9dbfdba Evas: Add encoding parameter to the savers
ecore_evas_convert: Add -e/--encoding option

This uses directly the encoding parameter.
For now, used only by the TGV saver, but there is no other way
to specify between ETC1 and ETC2. And we don't have a mixed ETC1+2
mode (yet).

@feature
2014-06-13 16:05:48 +09:00
Tom Hacohen 0fc3279db9 Efl: Update code to use the new class names generated by eolian. 2014-06-03 11:28:01 +01:00
ChunEon Park d497cd4364 evas/evas3d: reset image properies if the image is used for scene. 2014-05-12 19:55:47 +09:00
Cedric Bail d8652193fc evas: fix uninitialized value being used when the engine doesn't support Evas_3D.
CID 1211988
2014-05-10 11:44:57 +02:00
ChunEon Park a5b89f17b3 evas - removed stdlib.h math.h header include in each source files.
It's included in the evas_common_private.h.
2014-05-07 16:33:23 +09:00
ChunEon Park 8e9657ebb6 evas/evas3d: don't be crash when it's running on sw backened.
It doesn't have a plan that evas3d supports sw backened in the near future,
let it prenvent engine function access in case of sw backened.
2014-05-07 16:23:53 +09:00
ChunEon Park fac0ab79b0 evas/evas3d: exceptional handling if a camera doesn't set to a scene. 2014-04-30 20:24:20 +09:00
ChunEon Park c399017cef evas - removed unncessary header include
it's already done in evas_common_private.h. no need it in each file.
2014-04-29 15:44:29 +09:00
Jean-Philippe Andre ed0ac9fec7 Evas image: Gracefully handle filter failures
Add proper callback and mark filter as invalid in case of failure.
This might still trigger a redraw.
2014-04-27 17:41:40 +09:00
Jean-Philippe Andre ee840eecd1 Evas image: Skip draw when the image size is < 0 due to filter padding
If the Image Object size is smaller than the required padding,
nothing should be drawn, so just skip it.
2014-04-27 17:41:40 +09:00
Jean-Philippe Andre 89acf9cf28 Evas image: Add read-only property filter_padding
Returns l, r, t, b and true/false if the filter is used & valid.
2014-04-27 17:41:40 +09:00
Jean-Philippe Andre fe0f7566d5 Evas filters: Fix image with filters using fill mode
Depending on the "filled" flag, adjust how the image is filtered.
Filled: take padding into account and zoom out original image if needed
Non filled: we're tiling anyways, so padding doesn't have any meaning
2014-04-27 17:41:40 +09:00
Jean-Philippe Andre 223e1258c1 Evas filters: Quick redraw using output buffer
In Image_Object, reuse the previous output buffer if it is
still valid (image didn't change, etc...).
2014-04-27 17:41:40 +09:00
Jean-Philippe Andre 59cf013db9 Evas filters: Add support for Evas_Object_Image
This adds filter support to Image objects as well.
The exact same filters can run on Text and on Images
(provided some colorspace limitations are respected).

This basically adds:
- Support for RGBA input buffer
- Eo entry points for Image filter support
- Implement basic filter support in Evas_Image
2014-04-27 17:41:40 +09:00