Eolian: Integration of Image
This commit is contained in:
parent
c48c2e2608
commit
fceca47f28
|
@ -593,7 +593,9 @@ BUILT_SOURCES = \
|
|||
elm_grid.eo.c \
|
||||
elm_grid.eo.h \
|
||||
elc_hoversel.eo.c \
|
||||
elc_hoversel.eo.h
|
||||
elc_hoversel.eo.h \
|
||||
elm_image.eo.c \
|
||||
elm_image.eo.h
|
||||
|
||||
EXTRA_DIST += \
|
||||
elm_widget.eo \
|
||||
|
@ -630,7 +632,8 @@ EXTRA_DIST += \
|
|||
elm_gesture_layer.eo \
|
||||
elm_glview.eo \
|
||||
elm_grid.eo \
|
||||
elc_hoversel.eo
|
||||
elc_hoversel.eo \
|
||||
elm_image.eo
|
||||
|
||||
nodist_includesunstable_HEADERS = \
|
||||
elm_widget.eo.h \
|
||||
|
@ -667,5 +670,6 @@ nodist_includesunstable_HEADERS = \
|
|||
elm_gesture_layer.eo.h \
|
||||
elm_glview.eo.h \
|
||||
elm_grid.eo.h \
|
||||
elc_hoversel.eo.h
|
||||
elc_hoversel.eo.h \
|
||||
elm_image.eo.h
|
||||
|
||||
|
|
|
@ -353,7 +353,7 @@ static void
|
|||
_edje_signals_free(Elm_Icon_Smart_Data *sd)
|
||||
{
|
||||
Edje_Signal_Data *esd;
|
||||
Elm_Image_Smart_Data *id = eo_data_scope_get(sd->obj, ELM_OBJ_IMAGE_CLASS);
|
||||
Elm_Image_Data *id = eo_data_scope_get(sd->obj, ELM_OBJ_IMAGE_CLASS);
|
||||
|
||||
EINA_LIST_FREE(sd->edje_signals, esd)
|
||||
{
|
||||
|
@ -372,7 +372,7 @@ _elm_icon_smart_file_set(Eo *obj, void *_pd, va_list *list)
|
|||
Evas_Object *pclip;
|
||||
|
||||
Elm_Icon_Smart_Data *sd = _pd;
|
||||
Elm_Image_Smart_Data *id = eo_data_scope_get(obj, ELM_OBJ_IMAGE_CLASS);
|
||||
Elm_Image_Data *id = eo_data_scope_get(obj, ELM_OBJ_IMAGE_CLASS);
|
||||
|
||||
const char *file = va_arg(*list, const char *);
|
||||
const char *key = va_arg(*list, const char *);
|
||||
|
@ -630,7 +630,7 @@ _elm_icon_signal_emit(Evas_Object *obj,
|
|||
const char *source)
|
||||
{
|
||||
|
||||
Elm_Image_Smart_Data *id = eo_data_scope_get(obj, ELM_OBJ_IMAGE_CLASS);
|
||||
Elm_Image_Data *id = eo_data_scope_get(obj, ELM_OBJ_IMAGE_CLASS);
|
||||
|
||||
if (!id->edje) return;
|
||||
|
||||
|
@ -648,7 +648,7 @@ _elm_icon_signal_callback_add(Evas_Object *obj,
|
|||
Edje_Signal_Data *esd;
|
||||
|
||||
ELM_ICON_DATA_GET(obj, sd);
|
||||
Elm_Image_Smart_Data *id = eo_data_scope_get(obj, ELM_OBJ_IMAGE_CLASS);
|
||||
Elm_Image_Data *id = eo_data_scope_get(obj, ELM_OBJ_IMAGE_CLASS);
|
||||
|
||||
if (!id->edje) return;
|
||||
|
||||
|
@ -679,7 +679,7 @@ _elm_icon_signal_callback_del(Evas_Object *obj,
|
|||
Eina_List *l;
|
||||
|
||||
ELM_ICON_DATA_GET(obj, sd);
|
||||
Elm_Image_Smart_Data *id = eo_data_scope_get(obj, ELM_OBJ_IMAGE_CLASS);
|
||||
Elm_Image_Data *id = eo_data_scope_get(obj, ELM_OBJ_IMAGE_CLASS);
|
||||
|
||||
if (!id->edje) return NULL;
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,547 @@
|
|||
class Elm_Image (Elm_Widget, Evas_Clickable_Interface)
|
||||
{
|
||||
eo_prefix: elm_obj_image;
|
||||
properties {
|
||||
editable {
|
||||
set {
|
||||
/*@
|
||||
Make the image 'editable'.
|
||||
|
||||
This means the image is a valid drag target for drag and drop, and can be
|
||||
cut or pasted too.
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
get {
|
||||
/*@
|
||||
Check if the image is 'editable'.
|
||||
|
||||
@return Editability.
|
||||
|
||||
A return value of EINA_TRUE means the image is a valid drag target
|
||||
for drag and drop, and can be cut or pasted too.
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
values {
|
||||
Eina_Bool set; /*@ Turn on or off editability. Default is @c EINA_FALSE. */
|
||||
}
|
||||
}
|
||||
smooth_scale {
|
||||
set {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
get {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
values {
|
||||
Eina_Bool smooth;
|
||||
}
|
||||
}
|
||||
resize_down {
|
||||
set {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
get {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
values {
|
||||
Eina_Bool resize_down;
|
||||
}
|
||||
}
|
||||
load_size {
|
||||
set {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
get {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
values {
|
||||
int size;
|
||||
}
|
||||
}
|
||||
animated_play {
|
||||
set {
|
||||
/*@
|
||||
Start or stop an image object's animation.
|
||||
|
||||
To actually start playing any image object's animation, if it
|
||||
supports it, one must do something like:
|
||||
|
||||
@code
|
||||
if (elm_image_animated_available_get(img))
|
||||
{
|
||||
elm_image_animated_set(img, EINA_TRUE);
|
||||
elm_image_animated_play_set(img, EINA_TRUE);
|
||||
}
|
||||
@endcode
|
||||
|
||||
elm_image_animated_set() will enable animation on the image, <b>but
|
||||
not start it yet</b>. This is the function one uses to start and
|
||||
stop animations on image objects.
|
||||
|
||||
@see elm_image_animated_available_get()
|
||||
@see elm_image_animated_set()
|
||||
@see elm_image_animated_play_get()
|
||||
|
||||
@ingroup Image
|
||||
@since 1.7 */
|
||||
}
|
||||
get {
|
||||
/*@
|
||||
Get whether an image object is under animation or not.
|
||||
|
||||
@return @c EINA_TRUE, if the image is being animated, @c EINA_FALSE
|
||||
otherwise.
|
||||
|
||||
@see elm_image_animated_play_get()
|
||||
|
||||
@ingroup Image
|
||||
@since 1.7 */
|
||||
}
|
||||
values {
|
||||
Eina_Bool play; /*@ @c EINA_TRUE to start the animation, @c EINA_FALSE
|
||||
otherwise. Default is @c EINA_FALSE. */
|
||||
}
|
||||
}
|
||||
resize_up {
|
||||
set {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
get {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
values {
|
||||
Eina_Bool resize_up;
|
||||
}
|
||||
}
|
||||
smooth {
|
||||
set {
|
||||
/*@
|
||||
Set the smooth effect for an image.
|
||||
|
||||
Set the scaling algorithm to be used when scaling the image. Smooth
|
||||
scaling provides a better resulting image, but is slower.
|
||||
|
||||
The smooth scaling should be disabled when making animations that change
|
||||
the image size, since it will be faster. Animations that don't require
|
||||
resizing of the image can keep the smooth scaling enabled (even if the
|
||||
image is already scaled, since the scaled image will be cached).
|
||||
|
||||
@see elm_image_smooth_get()
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
get {
|
||||
/*@
|
||||
Get the smooth effect for an image.
|
||||
|
||||
@return @c EINA_TRUE if smooth scaling is enabled, @c EINA_FALSE otherwise.
|
||||
|
||||
@see elm_image_smooth_set()
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
values {
|
||||
Eina_Bool smooth; /*@ @c EINA_TRUE if smooth scaling should be used, @c EINA_FALSE
|
||||
otherwise. Default is @c EINA_TRUE. */
|
||||
}
|
||||
}
|
||||
no_scale {
|
||||
set {
|
||||
/*@
|
||||
Disable scaling of this object.
|
||||
|
||||
This function disables scaling of the elm_image widget through the
|
||||
function elm_object_scale_set(). However, this does not affect the widget
|
||||
size/resize in any way. For that effect, take a look at
|
||||
elm_image_resizable_set().
|
||||
|
||||
@see elm_image_no_scale_get()
|
||||
@see elm_image_resizable_set()
|
||||
@see elm_object_scale_set()
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
get {
|
||||
/*@
|
||||
Get whether scaling is disabled on the object.
|
||||
|
||||
@return @c EINA_TRUE if scaling is disabled, @c EINA_FALSE otherwise
|
||||
|
||||
@see elm_image_no_scale_set()
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
values {
|
||||
Eina_Bool no_scale; /*@ @c EINA_TRUE if the object is not scalable, @c EINA_FALSE
|
||||
otherwise. Default is @c EINA_FALSE. */
|
||||
}
|
||||
}
|
||||
animated {
|
||||
set {
|
||||
/*@
|
||||
Set whether an image object (which supports animation) is to
|
||||
animate itself or not.
|
||||
|
||||
An image object, even if it supports animation, will be displayed
|
||||
by default without animation. Call this function with @a animated
|
||||
set to @c EINA_TRUE to enable its animation. To start or stop the
|
||||
animation, actually, use elm_image_animated_play_set().
|
||||
|
||||
@see elm_image_animated_get()
|
||||
@see elm_image_animated_available_get()
|
||||
@see elm_image_animated_play_set()
|
||||
|
||||
@ingroup Image
|
||||
@since 1.7 */
|
||||
}
|
||||
get {
|
||||
/*@
|
||||
Get whether an image object has animation enabled or not.
|
||||
|
||||
@return @c EINA_TRUE if the image has animation enabled,
|
||||
@c EINA_FALSE otherwise.
|
||||
|
||||
@see elm_image_animated_set()
|
||||
|
||||
@ingroup Image
|
||||
@since 1.7 */
|
||||
}
|
||||
values {
|
||||
Eina_Bool anim; /*@ @c EINA_TRUE if the object is to animate itself,
|
||||
@c EINA_FALSE otherwise. Default is @c EINA_FALSE. */
|
||||
}
|
||||
}
|
||||
scale {
|
||||
set {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
get {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
values {
|
||||
double scale;
|
||||
}
|
||||
}
|
||||
file {
|
||||
set {
|
||||
/*@
|
||||
Set the file that will be used as the image's source.
|
||||
|
||||
@return (@c EINA_TRUE = success, @c EINA_FALSE = error)
|
||||
|
||||
@see elm_image_file_get()
|
||||
|
||||
@note This function will trigger the Edje file case based on the
|
||||
extension of the @a file string (expects @c ".edj", for this
|
||||
case).
|
||||
|
||||
@note If you use animated gif image and create multiple image objects with
|
||||
one gif image file, you should set the @p group differently for each object.
|
||||
Or image objects will share one evas image cache entry and you will get
|
||||
unwanted frames.
|
||||
|
||||
@ingroup Image */
|
||||
return Eina_Bool;
|
||||
legacy null;
|
||||
}
|
||||
get {
|
||||
/*@
|
||||
Get the file that will be used as image.
|
||||
|
||||
@see elm_image_file_set()
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
values {
|
||||
const char *file; /*@ The path to file that will be used as image source */
|
||||
const char *group; /*@ The group that the image belongs to, in case it's an
|
||||
EET (including Edje case) file. This can be used as a key inside
|
||||
evas image cache if this is a normal image file not eet file. */
|
||||
}
|
||||
}
|
||||
fill_inside {
|
||||
set {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
get {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
values {
|
||||
Eina_Bool fill_inside;
|
||||
}
|
||||
}
|
||||
aspect_fixed {
|
||||
set {
|
||||
/*@
|
||||
Set whether the original aspect ratio of the image should be kept on resize.
|
||||
|
||||
The original aspect ratio (width / height) of the image is usually
|
||||
distorted to match the object's size. Enabling this option will retain
|
||||
this original aspect, and the way that the image is fit into the object's
|
||||
area depends on the option set by elm_image_fill_outside_set().
|
||||
|
||||
@see elm_image_aspect_fixed_get()
|
||||
@see elm_image_fill_outside_set()
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
get {
|
||||
/*@
|
||||
Get if the object retains the original aspect ratio.
|
||||
|
||||
@return @c EINA_TRUE if the object keeps the original aspect, @c EINA_FALSE
|
||||
otherwise.
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
values {
|
||||
Eina_Bool fixed; /*@ @c EINA_TRUE if the image should retain the aspect,
|
||||
@c EINA_FALSE otherwise. */
|
||||
}
|
||||
}
|
||||
orient {
|
||||
set {
|
||||
/*@
|
||||
Set the image orientation.
|
||||
|
||||
This function allows to rotate or flip the given image.
|
||||
|
||||
@see elm_image_orient_get()
|
||||
@see @ref Elm_Image_Orient
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
get {
|
||||
/*@
|
||||
Get the image orientation.
|
||||
|
||||
@return The image orientation @ref Elm_Image_Orient
|
||||
|
||||
@see elm_image_orient_set()
|
||||
@see @ref Elm_Image_Orient
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
values {
|
||||
Elm_Image_Orient orient; /*@ The image orientation @ref Elm_Image_Orient
|
||||
Default is #ELM_IMAGE_ORIENT_NONE. */
|
||||
}
|
||||
}
|
||||
fill_outside {
|
||||
set {
|
||||
/*@
|
||||
Set if the image fills the entire object area, when keeping the aspect ratio.
|
||||
|
||||
When the image should keep its aspect ratio even if resized to another
|
||||
aspect ratio, there are two possibilities to resize it: keep the entire
|
||||
image inside the limits of height and width of the object (@p fill_outside
|
||||
is @c EINA_FALSE) or let the extra width or height go outside of the object,
|
||||
and the image will fill the entire object (@p fill_outside is @c EINA_TRUE).
|
||||
|
||||
@note This option will have no effect if
|
||||
elm_image_aspect_fixed_set() is set to @c EINA_FALSE.
|
||||
|
||||
@see elm_image_fill_outside_get()
|
||||
@see elm_image_aspect_fixed_set()
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
get {
|
||||
/*@
|
||||
Get if the object is filled outside
|
||||
|
||||
@return @c EINA_TRUE if the object is filled outside, @c EINA_FALSE otherwise.
|
||||
|
||||
@see elm_image_fill_outside_set()
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
values {
|
||||
Eina_Bool fill_outside; /*@ @c EINA_TRUE if the object is filled outside,
|
||||
@c EINA_FALSE otherwise. Default is @c EINA_FALSE. */
|
||||
}
|
||||
}
|
||||
resizable {
|
||||
set {
|
||||
/*@
|
||||
Set if the object is (up/down) resizable.
|
||||
|
||||
This function limits the image resize ability. If @p size_up is set to
|
||||
@c EINA_FALSE, the object can't have its height or width resized to a value
|
||||
higher than the original image size. Same is valid for @p size_down.
|
||||
|
||||
@see elm_image_resizable_get()
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
get {
|
||||
/*@
|
||||
Get if the object is (up/down) resizable.
|
||||
|
||||
@see elm_image_resizable_set()
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
values {
|
||||
Eina_Bool up; /*@ A bool to set if the object is resizable up. Default is
|
||||
@c EINA_TRUE. */
|
||||
Eina_Bool down; /*@ A bool to set if the object is resizable down. Default
|
||||
is @c EINA_TRUE. */
|
||||
}
|
||||
}
|
||||
preload_disabled {
|
||||
set {
|
||||
/*@
|
||||
Enable or disable preloading of the image
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
values {
|
||||
Eina_Bool disabled; /*@ If EINA_TRUE, preloading will be disabled */
|
||||
}
|
||||
}
|
||||
mmap {
|
||||
set {
|
||||
/*@
|
||||
Set the file that will be used as the image's source.
|
||||
|
||||
@return (@c EINA_TRUE = success, @c EINA_FALSE = error)
|
||||
|
||||
@see elm_image_file_set()
|
||||
|
||||
@note This function will trigger the Edje file case based on the
|
||||
extension of the @a file string use to create the Eina_File (expects
|
||||
@c ".edj", for this case).
|
||||
|
||||
@note If you use animated gif image and create multiple image objects with
|
||||
one gif image file, you should set the @p group differently for each object.
|
||||
Or image objects will share one evas image cache entry and you will get
|
||||
unwanted frames.
|
||||
|
||||
@ingroup Image */
|
||||
return Eina_Bool;
|
||||
legacy null;
|
||||
}
|
||||
values {
|
||||
const Eina_File *file; /*@ The handler to an Eina_File that will be used as image source */
|
||||
const char *group; /*@ The group that the image belongs to, in case it's an
|
||||
EET (including Edje case) file. This can be used as a key inside
|
||||
evas image cache if this is a normal image file not eet file. */
|
||||
}
|
||||
}
|
||||
memfile {
|
||||
set {
|
||||
/*@
|
||||
Set a location in memory to be used as an image object's source
|
||||
bitmap.
|
||||
|
||||
This function is handy when the contents of an image file are
|
||||
mapped in memory, for example.
|
||||
|
||||
The @p format string should be something like @c "png", @c "jpg",
|
||||
@c "tga", @c "tiff", @c "bmp" etc, when provided (@c NULL, on the
|
||||
contrary). This improves the loader performance as it tries the
|
||||
"correct" loader first, before trying a range of other possible
|
||||
loaders until one succeeds.
|
||||
|
||||
@return (@c EINA_TRUE = success, @c EINA_FALSE = error)
|
||||
|
||||
@since 1.7
|
||||
|
||||
@ingroup Image */
|
||||
return Eina_Bool;
|
||||
}
|
||||
values {
|
||||
const void *img; /*@ The binary data that will be used as image source */
|
||||
size_t size; /*@ The size of binary data blob @p img */
|
||||
const char *format; /*@ (Optional) expected format of @p img bytes */
|
||||
const char *key; /*@ Optional indexing key of @p img to be passed to the
|
||||
image loader (eg. if @p img is a memory-mapped EET file) */
|
||||
}
|
||||
}
|
||||
animated_available {
|
||||
get {
|
||||
/*@
|
||||
Get whether an image object supports animation or not.
|
||||
|
||||
@return @c EINA_TRUE if the image supports animation,
|
||||
@c EINA_FALSE otherwise.
|
||||
|
||||
This function returns if this Elementary image object's internal
|
||||
image can be animated. Currently Evas only supports GIF
|
||||
animation. If the return value is @b EINA_FALSE, other
|
||||
@c elm_image_animated_xxx API calls won't work.
|
||||
|
||||
@see elm_image_animated_set()
|
||||
|
||||
@ingroup Image
|
||||
@since 1.7 */
|
||||
return Eina_Bool;
|
||||
}
|
||||
}
|
||||
object {
|
||||
get {
|
||||
/*@
|
||||
Get the inlined image object of the image widget.
|
||||
|
||||
@return The inlined image object, or NULL if none exists
|
||||
|
||||
This function allows one to get the underlying @c Evas_Object of type
|
||||
Image from this elementary widget. It can be useful to do things like get
|
||||
the pixel data, save the image to a file, etc.
|
||||
|
||||
@note Be careful to not manipulate it, as it is under control of
|
||||
elementary.
|
||||
|
||||
@ingroup Image */
|
||||
return Evas_Object *;
|
||||
}
|
||||
}
|
||||
object_size {
|
||||
get {
|
||||
/*@
|
||||
Get the current size of the image.
|
||||
|
||||
This is the real size of the image, not the size of the object.
|
||||
|
||||
@ingroup Image */
|
||||
}
|
||||
values {
|
||||
int w; /*@ Pointer to store width, or NULL. */
|
||||
int h; /*@ Pointer to store height, or NULL. */
|
||||
}
|
||||
}
|
||||
}
|
||||
methods {
|
||||
sizing_eval {
|
||||
/*@ No description supplied by the EAPI. */
|
||||
}
|
||||
}
|
||||
implements {
|
||||
class::constructor;
|
||||
Eo_Base::constructor;
|
||||
Evas_Smart::hide;
|
||||
Evas_Smart::clip::set;
|
||||
Evas_Smart::clip_unset;
|
||||
Evas_Smart::show;
|
||||
Evas_Smart::color::set;
|
||||
Evas_Smart::move;
|
||||
Evas_Smart::add;
|
||||
Evas_Smart::del;
|
||||
Evas_Smart::member_add;
|
||||
Evas_Smart::resize;
|
||||
Elm_Widget::theme_apply;
|
||||
Elm_Widget::event;
|
||||
}
|
||||
events {
|
||||
drop;
|
||||
clicked;
|
||||
download,start;
|
||||
download,progress;
|
||||
download,done;
|
||||
download,error;
|
||||
}
|
||||
|
||||
}
|
|
@ -3,6 +3,8 @@
|
|||
*
|
||||
* @{
|
||||
*/
|
||||
#include "elm_image.eo.h"
|
||||
#if 0
|
||||
#define ELM_OBJ_IMAGE_CLASS elm_obj_image_class_get()
|
||||
|
||||
const Eo_Class *elm_obj_image_class_get(void) EINA_CONST;
|
||||
|
@ -560,6 +562,7 @@ enum
|
|||
*/
|
||||
#define elm_obj_image_scale_get(ret) ELM_OBJ_IMAGE_ID(ELM_OBJ_IMAGE_SUB_ID_SCALE_GET), EO_TYPECHECK(double *, ret)
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @}
|
||||
|
|
|
@ -25,8 +25,8 @@
|
|||
/**
|
||||
* Base widget smart data extended with image instance data.
|
||||
*/
|
||||
typedef struct _Elm_Image_Smart_Data Elm_Image_Smart_Data;
|
||||
struct _Elm_Image_Smart_Data
|
||||
typedef struct _Elm_Image_Data Elm_Image_Data;
|
||||
struct _Elm_Image_Data
|
||||
{
|
||||
Evas_Object *hit_rect;
|
||||
Evas_Object *img;
|
||||
|
@ -67,7 +67,7 @@ struct _Elm_Image_Smart_Data
|
|||
*/
|
||||
|
||||
#define ELM_IMAGE_DATA_GET(o, sd) \
|
||||
Elm_Image_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_IMAGE_CLASS)
|
||||
Elm_Image_Data * sd = eo_data_scope_get(o, ELM_OBJ_IMAGE_CLASS)
|
||||
|
||||
#define ELM_IMAGE_DATA_GET_OR_RETURN(o, ptr) \
|
||||
ELM_IMAGE_DATA_GET(o, ptr); \
|
||||
|
|
Loading…
Reference in New Issue