forked from enlightenment/efl
Evas image: Move content_hint and scale_hint to Efl.Image
This commit is contained in:
parent
35f8d81d97
commit
055ea6445a
|
@ -2,13 +2,13 @@
|
||||||
efl_eolian_legacy_files = \
|
efl_eolian_legacy_files = \
|
||||||
lib/efl/interfaces/efl_gfx_fill.eo \
|
lib/efl/interfaces/efl_gfx_fill.eo \
|
||||||
lib/efl/interfaces/efl_gfx_base.eo \
|
lib/efl/interfaces/efl_gfx_base.eo \
|
||||||
|
lib/efl/interfaces/efl_image.eo \
|
||||||
lib/efl/interfaces/efl_image_animated.eo \
|
lib/efl/interfaces/efl_image_animated.eo \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
efl_eolian_files = \
|
efl_eolian_files = \
|
||||||
lib/efl/interfaces/efl_control.eo \
|
lib/efl/interfaces/efl_control.eo \
|
||||||
lib/efl/interfaces/efl_file.eo \
|
lib/efl/interfaces/efl_file.eo \
|
||||||
lib/efl/interfaces/efl_image.eo \
|
|
||||||
lib/efl/interfaces/efl_image_load.eo \
|
lib/efl/interfaces/efl_image_load.eo \
|
||||||
lib/efl/interfaces/efl_player.eo \
|
lib/efl/interfaces/efl_player.eo \
|
||||||
lib/efl/interfaces/efl_text.eo \
|
lib/efl/interfaces/efl_text.eo \
|
||||||
|
|
|
@ -103,6 +103,7 @@ static inline void efl_gfx_color16_type_set(Efl_Gfx_Color *color,
|
||||||
#include "interfaces/efl_gfx_types.eot.h"
|
#include "interfaces/efl_gfx_types.eot.h"
|
||||||
#include "interfaces/efl_gfx_fill.eo.legacy.h"
|
#include "interfaces/efl_gfx_fill.eo.legacy.h"
|
||||||
#include "interfaces/efl_gfx_base.eo.legacy.h"
|
#include "interfaces/efl_gfx_base.eo.legacy.h"
|
||||||
|
#include "interfaces/efl_image.eo.legacy.h"
|
||||||
#include "interfaces/efl_image_animated.eo.legacy.h"
|
#include "interfaces/efl_image_animated.eo.legacy.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,20 @@
|
||||||
|
enum Efl.Image.Content_Hint
|
||||||
|
{
|
||||||
|
[[How an image's data is to be treated by EFL, for optimization.]]
|
||||||
|
none = 0, [[No hint on the content (default).]]
|
||||||
|
dynamic = 1, [[The content will change over time.]]
|
||||||
|
static = 2 [[The content won't change over time.]]
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Efl.Image.Scale_Hint
|
||||||
|
{
|
||||||
|
/* FIXME: Legacy is in Emile, where it does not belong. */
|
||||||
|
[[How an image's data is to be treated by EFL, with regard to scaling cache.]]
|
||||||
|
none = 0, [[No hint on the scaling (default).]]
|
||||||
|
dynamic = 1, [[Image will be re-scaled over time, thus turning scaling cache OFF for its data.]]
|
||||||
|
static = 2 [[Image will not be re-scaled over time, thus turning scaling cache ON for its data.]]
|
||||||
|
}
|
||||||
|
|
||||||
interface Efl.Image ()
|
interface Efl.Image ()
|
||||||
{
|
{
|
||||||
[[Common APIs for all 2D images that can be rendered on the canvas.]]
|
[[Common APIs for all 2D images that can be rendered on the canvas.]]
|
||||||
|
@ -132,5 +149,52 @@ interface Efl.Image ()
|
||||||
fill: Efl.Gfx.Border_Fill_Mode; [[Fill mode of the center region.]]
|
fill: Efl.Gfx.Border_Fill_Mode; [[Fill mode of the center region.]]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Note: those are obscure features of evas image. Expose in Efl.Image? */
|
||||||
|
@property content_hint {
|
||||||
|
set {
|
||||||
|
[[Set the content hint setting of a given image object of the
|
||||||
|
canvas.
|
||||||
|
|
||||||
|
This function sets the content hint value of the given image
|
||||||
|
of the canvas. For example, if you're on the GL engine and
|
||||||
|
your driver implementation supports it, setting this hint to
|
||||||
|
#EVAS_IMAGE_CONTENT_HINT_DYNAMIC will make it need zero copies
|
||||||
|
at texture upload time, which is an "expensive" operation.
|
||||||
|
]]
|
||||||
|
}
|
||||||
|
get {
|
||||||
|
[[Get the content hint setting of a given image object of the
|
||||||
|
canvas.
|
||||||
|
|
||||||
|
This returns #EVAS_IMAGE_CONTENT_HINT_NONE on error.
|
||||||
|
]]
|
||||||
|
}
|
||||||
|
values {
|
||||||
|
hint: Efl.Image.Content_Hint; [[Dynamic or static content hint,
|
||||||
|
see @Efl.Image.Content_Hint]]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@property scale_hint {
|
||||||
|
set {
|
||||||
|
[[Set the scale hint of a given image of the canvas.
|
||||||
|
|
||||||
|
This function sets the scale hint value of the given image
|
||||||
|
object in the canvas, which will affect how Evas is to cache
|
||||||
|
scaled versions of its original source image.
|
||||||
|
]]
|
||||||
|
}
|
||||||
|
get {
|
||||||
|
[[Get the scale hint of a given image of the canvas.
|
||||||
|
|
||||||
|
This function returns the scale hint value of the given image
|
||||||
|
object of the canvas.
|
||||||
|
]]
|
||||||
|
}
|
||||||
|
values {
|
||||||
|
hint: Efl.Image.Scale_Hint; [[Scalable or static size hint,
|
||||||
|
see @Efl.Image.Scale_Hint]]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -246,6 +246,11 @@ typedef struct _Evas_Event_Hold Evas_Event_Hold; /**< Event structure f
|
||||||
typedef struct _Evas_Event_Render_Post Evas_Event_Render_Post; /**< Event structure that may come with #EVAS_CALLBACK_RENDER_POST event callbacks @since 1.8 */
|
typedef struct _Evas_Event_Render_Post Evas_Event_Render_Post; /**< Event structure that may come with #EVAS_CALLBACK_RENDER_POST event callbacks @since 1.8 */
|
||||||
typedef struct _Evas_Event_Axis_Update Evas_Event_Axis_Update; /**< Event structure for #EVAS_CALLBACK_AXIS_UPDATE event callbacks @since 1.13 */
|
typedef struct _Evas_Event_Axis_Update Evas_Event_Axis_Update; /**< Event structure for #EVAS_CALLBACK_AXIS_UPDATE event callbacks @since 1.13 */
|
||||||
|
|
||||||
|
typedef Efl_Image_Content_Hint Evas_Image_Content_Hint;
|
||||||
|
#define EVAS_IMAGE_CONTENT_HINT_NONE EFL_IMAGE_CONTENT_HINT_NONE
|
||||||
|
#define EVAS_IMAGE_CONTENT_HINT_DYNAMIC EFL_IMAGE_CONTENT_HINT_DYNAMIC
|
||||||
|
#define EVAS_IMAGE_CONTENT_HINT_STATIC EFL_IMAGE_CONTENT_HINT_STATIC
|
||||||
|
|
||||||
typedef enum _Evas_Alloc_Error
|
typedef enum _Evas_Alloc_Error
|
||||||
{
|
{
|
||||||
EVAS_ALLOC_ERROR_NONE = 0, /**< No allocation error */
|
EVAS_ALLOC_ERROR_NONE = 0, /**< No allocation error */
|
||||||
|
|
|
@ -3378,6 +3378,55 @@ EAPI void evas_object_image_orient_set(Evas_Object *obj, Evas_Image_Orient orien
|
||||||
*/
|
*/
|
||||||
EAPI Evas_Image_Orient evas_object_image_orient_get(const Evas_Object *obj);
|
EAPI Evas_Image_Orient evas_object_image_orient_get(const Evas_Object *obj);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the content hint setting of a given image object of the canvas.
|
||||||
|
*
|
||||||
|
* This function sets the content hint value of the given image of the canvas.
|
||||||
|
* For example, if you're on the GL engine and your driver implementation
|
||||||
|
* supports it, setting this hint to #EVAS_IMAGE_CONTENT_HINT_DYNAMIC will make
|
||||||
|
* it need zero copies at texture upload time, which is an "expensive"
|
||||||
|
* operation.
|
||||||
|
*
|
||||||
|
* @param[in] hint The content hint value, one of the
|
||||||
|
* @ref Evas_Image_Content_Hint ones.
|
||||||
|
*/
|
||||||
|
EAPI void evas_object_image_content_hint_set(Evas_Object *obj, Evas_Image_Content_Hint hint);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the content hint setting of a given image object of the canvas.
|
||||||
|
*
|
||||||
|
* This returns #EVAS_IMAGE_CONTENT_HINT_NONE on error.
|
||||||
|
*
|
||||||
|
* @return The content hint value, one of the @ref Evas_Image_Content_Hint
|
||||||
|
* ones.
|
||||||
|
*/
|
||||||
|
EAPI Evas_Image_Content_Hint evas_object_image_content_hint_get(const Evas_Object *obj);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the scale hint of a given image of the canvas.
|
||||||
|
*
|
||||||
|
* This function sets the scale hint value of the given image object in the
|
||||||
|
* canvas, which will affect how Evas is to cache scaled versions of its
|
||||||
|
* original source image.
|
||||||
|
*
|
||||||
|
* @param[in] hint The scale hint, a value in @ref Evas_Image_Scale_Hint.
|
||||||
|
*
|
||||||
|
* @ingroup Evas_Image
|
||||||
|
*/
|
||||||
|
EAPI void evas_object_image_scale_hint_set(Evas_Object *obj, Evas_Image_Scale_Hint hint);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the scale hint of a given image of the canvas.
|
||||||
|
*
|
||||||
|
* This function returns the scale hint value of the given image object of the
|
||||||
|
* canvas.
|
||||||
|
*
|
||||||
|
* @return The scale hint, a value in @ref Evas_Image_Scale_Hint.
|
||||||
|
*
|
||||||
|
* @ingroup Evas_Image
|
||||||
|
*/
|
||||||
|
EAPI Evas_Image_Scale_Hint evas_object_image_scale_hint_get(const Evas_Object *obj);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Sets the size of the given image object.
|
* Sets the size of the given image object.
|
||||||
|
|
|
@ -913,7 +913,7 @@ evas_cache2_image_scale_load(Image_Entry *im,
|
||||||
lo.scale_load.dst_w = dst_w;
|
lo.scale_load.dst_w = dst_w;
|
||||||
lo.scale_load.dst_h = dst_h;
|
lo.scale_load.dst_h = dst_h;
|
||||||
lo.scale_load.smooth = smooth;
|
lo.scale_load.smooth = smooth;
|
||||||
lo.scale_load.scale_hint = im->scale_hint;
|
lo.scale_load.scale_hint = (Emile_Image_Scale_Hint) im->scale_hint;
|
||||||
|
|
||||||
evas_cache2_image_cache_key_create(hkey, im->file, pathlen,
|
evas_cache2_image_cache_key_create(hkey, im->file, pathlen,
|
||||||
im->key, keylen, &lo);
|
im->key, keylen, &lo);
|
||||||
|
|
|
@ -5,53 +5,6 @@ class Evas.Image (Evas.Object, Efl.File, Efl.Image, Efl.Image_Load, Efl.Image_An
|
||||||
legacy_prefix: evas_object_image;
|
legacy_prefix: evas_object_image;
|
||||||
eo_prefix: evas_obj_image;
|
eo_prefix: evas_obj_image;
|
||||||
methods {
|
methods {
|
||||||
/* weird stuff - hints */
|
|
||||||
@property content_hint {
|
|
||||||
set {
|
|
||||||
[[Set the content hint setting of a given image object of the
|
|
||||||
canvas.
|
|
||||||
|
|
||||||
This function sets the content hint value of the given image
|
|
||||||
of the canvas. For example, if you're on the GL engine and
|
|
||||||
your driver implementation supports it, setting this hint to
|
|
||||||
#EVAS_IMAGE_CONTENT_HINT_DYNAMIC will make it need zero copies
|
|
||||||
at texture upload time, which is an "expensive" operation.
|
|
||||||
]]
|
|
||||||
}
|
|
||||||
get {
|
|
||||||
[[Get the content hint setting of a given image object of the
|
|
||||||
canvas.
|
|
||||||
|
|
||||||
This returns #EVAS_IMAGE_CONTENT_HINT_NONE on error.
|
|
||||||
]]
|
|
||||||
}
|
|
||||||
values {
|
|
||||||
hint: Evas.Image_Content_Hint; [[The content hint value, one of
|
|
||||||
the @Evas.Image_Content_Hint ones.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@property scale_hint {
|
|
||||||
set {
|
|
||||||
[[Set the scale hint of a given image of the canvas.
|
|
||||||
|
|
||||||
This function sets the scale hint value of the given image
|
|
||||||
object in the canvas, which will affect how Evas is to cache
|
|
||||||
scaled versions of its original source image.
|
|
||||||
]]
|
|
||||||
}
|
|
||||||
get {
|
|
||||||
[[Get the scale hint of a given image of the canvas.
|
|
||||||
|
|
||||||
This function returns the scale hint value of the given image
|
|
||||||
object of the canvas.
|
|
||||||
]]
|
|
||||||
}
|
|
||||||
values {
|
|
||||||
hint: Evas.Image_Scale_Hint; [[The scale hint, a value in
|
|
||||||
@Evas.Image_Scale_Hint.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* GL View */
|
/* GL View */
|
||||||
@property pixels_dirty {
|
@property pixels_dirty {
|
||||||
set {
|
set {
|
||||||
|
@ -111,6 +64,10 @@ class Evas.Image (Evas.Object, Efl.File, Efl.Image, Efl.Image_Load, Efl.Image_An
|
||||||
Efl.Image.border_scale.set;
|
Efl.Image.border_scale.set;
|
||||||
Efl.Image.border_center_fill.get;
|
Efl.Image.border_center_fill.get;
|
||||||
Efl.Image.border_center_fill.set;
|
Efl.Image.border_center_fill.set;
|
||||||
|
Efl.Image.scale_hint.get;
|
||||||
|
Efl.Image.scale_hint.set;
|
||||||
|
Efl.Image.content_hint.get;
|
||||||
|
Efl.Image.content_hint.set;
|
||||||
Efl.Image_Animated.animated.get;
|
Efl.Image_Animated.animated.get;
|
||||||
Efl.Image_Animated.animated_frame.get;
|
Efl.Image_Animated.animated_frame.get;
|
||||||
Efl.Image_Animated.animated_frame.set;
|
Efl.Image_Animated.animated_frame.set;
|
||||||
|
|
|
@ -109,8 +109,8 @@ struct _Evas_Image_Data
|
||||||
int pixels_checked_out;
|
int pixels_checked_out;
|
||||||
int load_error;
|
int load_error;
|
||||||
|
|
||||||
Evas_Image_Scale_Hint scale_hint;
|
Efl_Image_Scale_Hint scale_hint;
|
||||||
Evas_Image_Content_Hint content_hint;
|
Efl_Image_Content_Hint content_hint;
|
||||||
|
|
||||||
Eina_Bool changed : 1;
|
Eina_Bool changed : 1;
|
||||||
Eina_Bool dirty_pixels : 1;
|
Eina_Bool dirty_pixels : 1;
|
||||||
|
@ -165,4 +165,6 @@ Evas_Native_Surface *_evas_image_native_surface_get(const Evas_Object *eo_obj);
|
||||||
# define EINA_COW_IMAGE_STATE_WRITE_END(Obj, Write) \
|
# define EINA_COW_IMAGE_STATE_WRITE_END(Obj, Write) \
|
||||||
EINA_COW_WRITE_END(evas_object_image_state_cow, Obj->cur, Write)
|
EINA_COW_WRITE_END(evas_object_image_state_cow, Obj->cur, Write)
|
||||||
|
|
||||||
|
#define FRAME_MAX 1024
|
||||||
|
|
||||||
#endif // EVAS_IMAGE_PRIVATE_H
|
#endif // EVAS_IMAGE_PRIVATE_H
|
||||||
|
|
|
@ -1657,7 +1657,7 @@ evas_object_image_native_surface_get(const Evas_Object *eo_obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_evas_image_scale_hint_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Image_Scale_Hint hint)
|
_evas_image_efl_image_scale_hint_set(Eo *eo_obj, Evas_Image_Data *o, Efl_Image_Scale_Hint hint)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
|
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
|
||||||
evas_object_async_block(obj);
|
evas_object_async_block(obj);
|
||||||
|
@ -1683,14 +1683,14 @@ _evas_image_scale_hint_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Image_Scale_Hint
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static Evas_Image_Scale_Hint
|
EOLIAN static Efl_Image_Scale_Hint
|
||||||
_evas_image_scale_hint_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
|
_evas_image_efl_image_scale_hint_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
|
||||||
{
|
{
|
||||||
return o->scale_hint;;
|
return o->scale_hint;
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_evas_image_content_hint_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Image_Content_Hint hint)
|
_evas_image_efl_image_content_hint_set(Eo *eo_obj, Evas_Image_Data *o, Efl_Image_Content_Hint hint)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
|
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
|
||||||
evas_object_async_block(obj);
|
evas_object_async_block(obj);
|
||||||
|
@ -1716,9 +1716,8 @@ _evas_image_content_hint_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Image_Content_
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FRAME_MAX 1024
|
EOLIAN static Efl_Image_Content_Hint
|
||||||
EOLIAN static Evas_Image_Content_Hint
|
_evas_image_efl_image_content_hint_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
|
||||||
_evas_image_content_hint_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
|
|
||||||
{
|
{
|
||||||
return o->content_hint;
|
return o->content_hint;
|
||||||
}
|
}
|
||||||
|
@ -4698,6 +4697,30 @@ evas_object_image_source_events_get(const Evas_Object *eo)
|
||||||
return _evas_image_proxy_source_events_get(eo);
|
return _evas_image_proxy_source_events_get(eo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
evas_object_image_content_hint_set(Evas_Object *obj, Evas_Image_Content_Hint hint)
|
||||||
|
{
|
||||||
|
return efl_image_content_hint_set(obj, hint);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI Evas_Image_Content_Hint
|
||||||
|
evas_object_image_content_hint_get(const Evas_Object *obj)
|
||||||
|
{
|
||||||
|
return efl_image_content_hint_get(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
evas_object_image_scale_hint_set(Evas_Object *obj, Evas_Image_Scale_Hint hint)
|
||||||
|
{
|
||||||
|
return efl_image_scale_hint_set(obj, (Efl_Image_Scale_Hint) hint);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI Evas_Image_Scale_Hint
|
||||||
|
evas_object_image_scale_hint_get(const Evas_Object *obj)
|
||||||
|
{
|
||||||
|
return (Evas_Image_Scale_Hint) efl_image_scale_hint_get(obj);
|
||||||
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
evas_object_image_source_visible_set(Evas_Object *eo, Eina_Bool visible)
|
evas_object_image_source_visible_set(Evas_Object *eo, Eina_Bool visible)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
type @extern Evas.Load_Error: int; /* FIXME: Need to migrate emile. */
|
type @extern Evas.Load_Error: int; /* FIXME: Need to migrate emile. */
|
||||||
type @extern Evas.Image_Scale_Hint: int; /* FIXME: Need to migrate emile. */
|
|
||||||
struct @extern Evas.Video_Surface; /* FIXME: The structure is full of the unsupported func pointers. */
|
struct @extern Evas.Video_Surface; /* FIXME: The structure is full of the unsupported func pointers. */
|
||||||
|
|
||||||
/* FIXME: Unsupported annonymous structures inside */
|
/* FIXME: Unsupported annonymous structures inside */
|
||||||
|
@ -231,14 +230,6 @@ enum Evas.Callback_Type
|
||||||
last [[kept as last element/sentinel -- not really an event]]
|
last [[kept as last element/sentinel -- not really an event]]
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Evas.Image_Content_Hint
|
|
||||||
{
|
|
||||||
[[How an image's data is to be treated by Evas, for optimization]]
|
|
||||||
none = 0, [[No hint at all]]
|
|
||||||
dynamic = 1, [[The contents will change over time]]
|
|
||||||
static = 2 [[The contents won't change over time]]
|
|
||||||
}
|
|
||||||
|
|
||||||
enum Evas.Image_Orient
|
enum Evas.Image_Orient
|
||||||
{
|
{
|
||||||
[[Possible orientation options for evas_object_image_orient_set().
|
[[Possible orientation options for evas_object_image_orient_set().
|
||||||
|
|
Loading…
Reference in New Issue