/** * Add a new image to the parent. * * @param parent The parent object * @return The new object or NULL if it cannot be created * * @see elm_image_file_set() * * @ingroup Elm_Image */ EAPI Evas_Object *elm_image_add(Evas_Object *parent); /** * Set the file that will be used as the image's source. * * @param obj The image object * @param file The path to file that will be used as image source * @param 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. * * @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 Elm_Image */ EAPI Eina_Bool elm_image_file_set(Evas_Object *obj, const char *file, const char *group); /** * Get the file that will be used as image. * * @see elm_image_file_set() * * @ingroup Elm_Image * * @param[out] file The path to file that will be used as image source * @param[out] 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. */ EAPI void elm_image_file_get(const Eo *obj, const char **file, const char **group); /** * Set the prescale size for the image * * @param obj The image object * @param size The prescale size. This value is used for both width and * height. * * This function sets a new size for pixmap representation of the given * image. It allows the image to be loaded already in the specified size, * reducing the memory usage and load time when loading a big image with load * size set to a smaller size. * * It's equivalent to the elm_bg_load_size_set() function for bg. * * @note this is just a hint, the real size of the pixmap may differ * depending on the type of image being loaded, being bigger than requested. * * @see elm_image_prescale_get() * @see elm_bg_load_size_set() * * @ingroup Elm_Image */ EAPI void elm_image_prescale_set(Evas_Object *obj, int size); /** * Get the prescale size for the image * * @param obj The image object * @return The prescale size * * @see elm_image_prescale_set() * * @ingroup Elm_Image */ EAPI int elm_image_prescale_get(const Evas_Object *obj); /** * Set the file that will be used as the image's source. * * @param obj The image object * @param file The handler to an Eina_File that will be used as image source * @param 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. * * @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 Elm_Image */ EAPI Eina_Bool elm_image_mmap_set(Evas_Object *obj, const Eina_File *file, const char *group); /** * @brief Control 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). * * @param[in] smooth @c true if smooth scaling should be used, @c false * otherwise. Default is @c true. * * @ingroup Elm_Image */ EAPI void elm_image_smooth_set(Evas_Object *obj, Eina_Bool smooth); /** * @brief Get the smooth effect for an image. * * Get 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). * * @return @c true if smooth scaling should be used, @c false otherwise. * Default is @c true. * * @ingroup Elm_Image */ EAPI Eina_Bool elm_image_smooth_get(const Evas_Object *obj); /** * 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, but * not start it yet. 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 Elm_Image * @since 1.7 * * @param[in] play @c EINA_TRUE to start the animation, @c EINA_FALSE otherwise. Default is @c EINA_FALSE. */ EAPI void elm_image_animated_play_set(Evas_Object *obj, Eina_Bool play); /** * 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 Elm_Image * @since 1.7 */ EAPI Eina_Bool elm_image_animated_play_get(const Evas_Object *obj); /** * * 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 Elm_Image * @since 1.7 * * @param[in] anim @c EINA_TRUE if the object is to animate itself, * @c EINA_FALSE otherwise. Default is @c EINA_FALSE. */ EAPI void elm_image_animated_set(Evas_Object *obj, Eina_Bool anim); /** * * 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 Elm_Image * @since 1.7 * */ EAPI Eina_Bool elm_image_animated_get(const Evas_Object *obj); /** * * 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 Elm_Image * @since 1.7 * */ EAPI Eina_Bool elm_image_animated_available_get(const Evas_Object *obj); /** * @brief Contrtol if the image is 'editable'. * * This means the image is a valid drag target for drag and drop, and can be * cut or pasted too. * * @param[in] set Turn on or off editability. Default is @c false. * * @ingroup Elm_Image */ EAPI void elm_image_editable_set(Evas_Object *obj, Eina_Bool set); /** * @brief Contrtol if the image is 'editable'. * * This means the image is a valid drag target for drag and drop, and can be * cut or pasted too. * * @return Turn on or off editability. Default is @c false. * * @ingroup Elm_Image */ EAPI Eina_Bool elm_image_editable_get(const Evas_Object *obj); /** * @brief 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 @c format string should be something like $"png", $"jpg", $"tga", * $"tiff", $"bmp" etc, when provided ($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. * * @param[in] img The binary data that will be used as image source * @param[in] size The size of binary data blob @c img * @param[in] format (Optional) expected format of @c img bytes * @param[in] key Optional indexing key of @c img to be passed to the image * loader (eg. if @c img is a memory-mapped EET file) * * @return @c true = success, @c false = error * * @since 1.7 * * @ingroup Elm_Image */ EAPI Eina_Bool elm_image_memfile_set(Evas_Object *obj, const void *img, size_t size, const char *format, const char *key); /** * @brief Control the scale of the object's image. * * @param[in] scale Object's image scale. * * @since 1.7 * * @ingroup Elm_Image */ EAPI void elm_image_scale_set(Evas_Object *obj, double scale); /** * @brief Control the scale of the object's image. * * @return Object's image scale. * * @since 1.7 * * @ingroup Elm_Image */ EAPI double elm_image_scale_get(const Evas_Object *obj); /** * @brief Control 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 ($fill_outside is * @c false) or let the extra width or height go outside of the object, and the * image will fill the entire object ($fill_outside is @c true). * * @note This option will have no effect if @ref elm_image_aspect_fixed_get is * set to @c false. * * See also @ref Elm.Image.fill_inside. * * @param[in] fill_outside @c true if the object is filled outside, @c false * otherwise. Default is @c false. * * @ingroup Elm_Image */ EAPI void elm_image_fill_outside_set(Evas_Object *obj, Eina_Bool fill_outside); /** * @brief Control 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 ($fill_outside is * @c false) or let the extra width or height go outside of the object, and the * image will fill the entire object ($fill_outside is @c true). * * @note This option will have no effect if @ref elm_image_aspect_fixed_get is * set to @c false. * * See also @ref Elm.Image.fill_inside. * * @return @c true if the object is filled outside, @c false otherwise. Default * is @c false. * * @ingroup Elm_Image */ EAPI Eina_Bool elm_image_fill_outside_get(const Evas_Object *obj); /** * @brief Enable or disable preloading of the image * * @param[in] disabled If true, preloading will be disabled * * @ingroup Elm_Image */ EAPI void elm_image_preload_disabled_set(Evas_Object *obj, Eina_Bool disabled); /** Using Evas_Image_Orient enums. * * @since 1.14 * * @ingroup Elm_Image */ typedef enum _Elm_Image_Orient_Type { ELM_IMAGE_ORIENT_NONE = 0 /* Evas.Image_Orient.orient_none */, ELM_IMAGE_ORIENT_0 = 0 /* Evas.Image_Orient.orient_0 */, ELM_IMAGE_ROTATE_90 = 1 /* Evas.Image_Orient.orient_90 */, ELM_IMAGE_ORIENT_90 = 1 /* Evas.Image_Orient.orient_90 */, ELM_IMAGE_ROTATE_180 = 2 /* Evas.Image_Orient.orient_180 */, ELM_IMAGE_ORIENT_180 = 2 /* Evas.Image_Orient.orient_180 */, ELM_IMAGE_ROTATE_270 = 3 /* Evas.Image_Orient.orient_270 */, ELM_IMAGE_ORIENT_270 = 3 /* Evas.Image_Orient.orient_270 */, ELM_IMAGE_FLIP_HORIZONTAL = 4 /* Evas.Image_Orient.flip_horizontal */, ELM_IMAGE_FLIP_VERTICAL = 5 /* Evas.Image_Orient.flip_vertical */, ELM_IMAGE_FLIP_TRANSPOSE = 6 /* Evas.Image_Orient.flip_transpose */, ELM_IMAGE_FLIP_TRANSVERSE = 7 /* Evas.Image_Orient.flip_transverse */ } Elm_Image_Orient; /** * @brief Contrtol the image orientation. * * This function allows to rotate or flip the given image. * * @param[in] orient The image orientation Elm.Image.Orient Default is * #ELM_IMAGE_ORIENT_NONE. * * @ingroup Elm_Image */ EAPI void elm_image_orient_set(Evas_Object *obj, Elm_Image_Orient orient); /** * @brief Contrtol the image orientation. * * This function allows to rotate or flip the given image. * * @return The image orientation Elm.Image.Orient Default is * #ELM_IMAGE_ORIENT_NONE. * * @ingroup Elm_Image */ EAPI Elm_Image_Orient elm_image_orient_get(const Evas_Object *obj); /** * @brief Get the inlined image object of the image widget. * * 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. * * @return The inlined image object, or NULL if none exists * * @ingroup Elm_Image */ EAPI Evas_Object *elm_image_object_get(const Evas_Object *obj); /** * @brief Get the current size of the image. * * This is the real size of the image, not the size of the object. * * @param[out] w Pointer to store width, or NULL. * @param[out] h Pointer to store height, or NULL. * * @ingroup Elm_Image */ EAPI void elm_image_object_size_get(const Evas_Object *obj, int *w, int *h); /** * @brief Control whether the object's image can be resized to a size smaller * than the original one. * * @param[in] resize_down whether resizing down is allowed * * @since 1.7 * * @ingroup Elm_Image */ EAPI void elm_image_resize_down_set(Evas_Object *obj, Eina_Bool resize_down); /** * @brief Control whether the object's image can be resized to a size smaller * than the original one. * * @return whether resizing down is allowed * * @since 1.7 * * @ingroup Elm_Image */ EAPI Eina_Bool elm_image_resize_down_get(const Evas_Object *obj); /** * @brief Control whether the object's image can be resized to a size larget * than the original one. * * @param[in] resize_up whether resizing up is allowed * * @since 1.7 * * @ingroup Elm_Image */ EAPI void elm_image_resize_up_set(Evas_Object *obj, Eina_Bool resize_up); /** * @brief Control whether the object's image can be resized to a size larget * than the original one. * * @return whether resizing up is allowed * * @since 1.7 * * @ingroup Elm_Image */ EAPI Eina_Bool elm_image_resize_up_get(const Evas_Object *obj); /** Re-evaluate the object's final geometry. * * @since 1.7 * * @ingroup Elm_Image */ EAPI void elm_image_sizing_eval(Evas_Object *obj); /** * @brief Control if the object is (up/down) resizable. * * This function limits the image resize ability. If @c size_up is set to * @c false, the object can't have its height or width resized to a value * higher than the original image size. Same is valid for @c size_down. * * @param[in] up A bool to set if the object is resizable up. Default is * @c true. * @param[in] down A bool to set if the object is resizable down. Default is * @c true. * * @ingroup Elm_Image */ EAPI void elm_image_resizable_set(Evas_Object *obj, Eina_Bool up, Eina_Bool down); /** * @brief Control if the object is (up/down) resizable. * * This function limits the image resize ability. If @c size_up is set to * @c false, the object can't have its height or width resized to a value * higher than the original image size. Same is valid for @c size_down. * * @param[out] up A bool to set if the object is resizable up. Default is * @c true. * @param[out] down A bool to set if the object is resizable down. Default is * @c true. * * @ingroup Elm_Image */ EAPI void elm_image_resizable_get(const Evas_Object *obj, Eina_Bool *up, Eina_Bool *down); /** * @brief Control scaling behaviour 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 @ref elm_image_resizable_get and * @ref elm_widget_scale_get * * @param[in] no_scale @c true if the object is not scalable, @c false * otherwise. Default is @c false. * * @ingroup Elm_Image */ EAPI void elm_image_no_scale_set(Evas_Object *obj, Eina_Bool no_scale); /** * @brief Control scaling behaviour 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 @ref elm_image_resizable_get and * @ref elm_widget_scale_get * * @return @c true if the object is not scalable, @c false otherwise. Default * is @c false. * * @ingroup Elm_Image */ EAPI Eina_Bool elm_image_no_scale_get(const Evas_Object *obj); #include "elm_image.eo.legacy.h"