Elementary: Bg header split.

This commit is contained in:
Daniel Zaoui 2013-04-28 09:41:30 +03:00
parent 8bc9e75374
commit c4c815c120
4 changed files with 300 additions and 281 deletions

View File

@ -29,287 +29,13 @@
* @li @ref bg_03_example_page
*/
#define ELM_OBJ_BG_CLASS elm_obj_bg_class_get()
const Eo_Class *elm_obj_bg_class_get(void) EINA_CONST;
extern EAPI Eo_Op ELM_OBJ_BG_BASE_ID;
enum
{
ELM_OBJ_BG_SUB_ID_FILE_SET,
ELM_OBJ_BG_SUB_ID_FILE_GET,
ELM_OBJ_BG_SUB_ID_OPTION_SET,
ELM_OBJ_BG_SUB_ID_OPTION_GET,
ELM_OBJ_BG_SUB_ID_COLOR_SET,
ELM_OBJ_BG_SUB_ID_COLOR_GET,
ELM_OBJ_BG_SUB_ID_LOAD_SIZE_SET,
ELM_OBJ_BG_SUB_ID_LAST
};
#define ELM_OBJ_BG_ID(sub_id) (ELM_OBJ_BG_BASE_ID + sub_id)
/**
* @def elm_obj_bg_file_set
* @since 1.8
*
* Set the file (image or edje collection) to give life for the
* background
*
* @param[in] file
* @param[in] group
* @param[out] ret
*
* @see elm_bg_file_set
*/
#define elm_obj_bg_file_set(file, group, ret) ELM_OBJ_BG_ID(ELM_OBJ_BG_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, file), EO_TYPECHECK(const char *, group), EO_TYPECHECK(Eina_Bool *, ret)
/**
* @def elm_obj_bg_file_get
* @since 1.8
*
* Get the file (image or edje collection) set on a given background
*
* @param[out] file
* @param[out] group
*
* @see elm_bg_file_get
*/
#define elm_obj_bg_file_get(file, group) ELM_OBJ_BG_ID(ELM_OBJ_BG_SUB_ID_FILE_GET), EO_TYPECHECK(const char **, file), EO_TYPECHECK(const char **, group)
/**
* @def elm_obj_bg_option_set
* @since 1.8
*
* Set the mode of display for a given background widget's image
*
* @param[in] option
*
* @see elm_bg_option_set
*/
#define elm_obj_bg_option_set(option) ELM_OBJ_BG_ID(ELM_OBJ_BG_SUB_ID_OPTION_SET), EO_TYPECHECK(Elm_Bg_Option, option)
/**
* @def elm_obj_bg_option_get
* @since 1.8
*
* Get the mode of display for a given background widget's image
*
* @param[out] ret
*
* @see elm_bg_option_get
*/
#define elm_obj_bg_option_get(ret) ELM_OBJ_BG_ID(ELM_OBJ_BG_SUB_ID_OPTION_GET), EO_TYPECHECK(Elm_Bg_Option *, ret)
/**
* @def elm_obj_bg_color_set
* @since 1.8
*
* Set the color on a given background widget
*
* @param[in] r
* @param[in] g
* @param[in] b
*
* @see elm_bg_color_set
*/
#define elm_obj_bg_color_set(r, g, b) ELM_OBJ_BG_ID(ELM_OBJ_BG_SUB_ID_COLOR_SET), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b)
/**
* @def elm_obj_bg_color_get
* @since 1.8
*
* Get the color set on a given background widget
*
* @param[out] r
* @param[out] g
* @param[out] b
*
* @see elm_bg_color_get
*/
#define elm_obj_bg_color_get(r, g, b) ELM_OBJ_BG_ID(ELM_OBJ_BG_SUB_ID_COLOR_GET), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b)
/**
* @def elm_obj_bg_load_size_set
* @since 1.8
*
* Set the size of the pixmap representation of the image set on a
* given background widget.
*
* @param[in] w
* @param[in] h
*
* @see elm_bg_load_size_set
*/
#define elm_obj_bg_load_size_set(w, h) ELM_OBJ_BG_ID(ELM_OBJ_BG_SUB_ID_LOAD_SIZE_SET), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h)
/**
* Identifiers on how a background widget is to display its image --
* if it was set to use an image file.
*
* @see elm_bg_option_set()
* @see elm_bg_option_get()
*
* @ingroup Bg
*/
typedef enum
{
ELM_BG_OPTION_CENTER, /**< center the background image */
ELM_BG_OPTION_SCALE, /**< scale the background image, retaining aspect ratio */
ELM_BG_OPTION_STRETCH, /**< stretch the background image to fill the widget's area */
ELM_BG_OPTION_TILE, /**< tile background image at its original size */
ELM_BG_OPTION_LAST /**< sentinel value, also used to indicate errors */
} Elm_Bg_Option;
/**
* Add a new background to the parent
*
* @param parent The parent object
* @return The new object or @c NULL if it cannot be created
*
* @ingroup Bg
*/
EAPI Evas_Object *elm_bg_add(Evas_Object *parent);
/**
* Set the file (image or edje collection) to give life for the
* background
*
* @param obj The background object handle
* @param file The file path
* @param group Optional key (group in Edje) within the file
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
*
* This sets the image file used in the background object. If the
* image comes from an Edje group, it will be stretched to completely
* fill the background object. If it comes from a traditional image file, it
* will by default be centered in this widget's are (thus retaining
* its aspect), what could lead to some parts being not visible. You
* may change the mode of exhibition for a real image file with
* elm_bg_option_set().
*
* @note Once the image of @p obj is set, a previously set one will be
* deleted, even if @p file is @c NULL.
*
* @note This will only affect the contents of one of the background's
* swallow spots, namely @c "elm.swallow.background". If you want to
* achieve the @c Layout's file setting behavior, you'll have to call
* that method on this object.
*
* @ingroup Bg
*/
EAPI Eina_Bool elm_bg_file_set(Evas_Object *obj, const char *file, const char *group);
/**
* Get the file (image or edje collection) set on a given background
* widget
*
* @param obj The background object handle
* @param file Where to store the requested file's path
* @param group Where to store the optional key within @a file, @b if
* it's an Edje file
*
* @note Use @c NULL pointers on the file components you're not
* interested in: they'll be ignored by the function.
*
* @ingroup Bg
*/
EAPI void elm_bg_file_get(const Evas_Object *obj, const char **file, const char **group);
/**
* Set the mode of display for a given background widget's image
*
* @param obj The background object handle
* @param option The desired background option (see #Elm_Bg_Option)
*
* This sets how the background widget will display its image. This
* will only work if the elm_bg_file_set() was previously called with
* an image file on @a obj. The image can be display tiled, scaled,
* centered or stretched.
*
* @see elm_bg_option_get()
*
* @ingroup Bg
*/
EAPI void elm_bg_option_set(Evas_Object *obj, Elm_Bg_Option option);
/**
* Get the mode of display for a given background widget's image
*
* @param obj The background object handle
* @return The image displaying mode in use for @a obj or #ELM_BG_OPTION_LAST,
* on errors.
*
* @see elm_bg_option_set() for more details
*
* @ingroup Bg
*/
EAPI Elm_Bg_Option elm_bg_option_get(const Evas_Object *obj);
/**
* Set the color on a given background widget
*
* @param obj The background object handle
* @param r The red color component's value
* @param g The green color component's value
* @param b The blue color component's value
*
* This sets the color used for the background rectangle, in RGB
* format. Each color component's range is from 0 to 255.
*
* @note You probably only want to use this function if you haven't
* previously called elm_bg_file_set(), so that you just want a solid
* color background.
*
* @see elm_bg_color_get()
*
* @ingroup Bg
*/
EAPI void elm_bg_color_set(Evas_Object *obj, int r, int g, int b);
/**
* Get the color set on a given background widget
*
* @param obj The background object handle
* @param r Where to store the red color component's value
* @param g Where to store the green color component's value
* @param b Where to store the blue color component's value
*
* @note Use @c NULL pointers on the file components you're not
* interested in: they'll be ignored by the function.
*
* @see elm_bg_color_get() for more details
*
* @ingroup Bg
*/
EAPI void elm_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b);
/**
* Set the size of the pixmap representation of the image set on a
* given background widget.
*
* @param obj The background object handle
* @param w The new width of the image pixmap representation.
* @param h The new height of the image pixmap representation.
*
* @warning This function just makes sense if an image file was set on
* @p obj, with elm_bg_file_set().
*
* This function sets a new size for pixmap representation of the
* given bg image. It allows for the image to be loaded already in the
* specified size, reducing the memory usage and load time (for
* example, when loading a big image file with its load size set to a
* smaller size)
*
* @note This is just a hint for the underlying system. The real size
* of the pixmap may differ depending on the type of image being
* loaded, being bigger than requested.
*
* @ingroup Bg
*/
EAPI void elm_bg_load_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
#include "elm_bg_common.h"
#ifdef EFL_EO_API_SUPPORT
#include "elm_bg_eo.h"
#endif
#ifndef EFL_NOLEGACY_API_SUPPORT
#include "elm_bg_legacy.h"
#endif
/**
* @}
*/

View File

@ -0,0 +1,18 @@
/**
* Identifiers on how a background widget is to display its image --
* if it was set to use an image file.
*
* @see elm_bg_option_set()
* @see elm_bg_option_get()
*
* @ingroup Bg
*/
typedef enum
{
ELM_BG_OPTION_CENTER, /**< center the background image */
ELM_BG_OPTION_SCALE, /**< scale the background image, retaining aspect ratio */
ELM_BG_OPTION_STRETCH, /**< stretch the background image to fill the widget's area */
ELM_BG_OPTION_TILE, /**< tile background image at its original size */
ELM_BG_OPTION_LAST /**< sentinel value, also used to indicate errors */
} Elm_Bg_Option;

View File

@ -0,0 +1,128 @@
#define ELM_OBJ_BG_CLASS elm_obj_bg_class_get()
const Eo_Class *elm_obj_bg_class_get(void) EINA_CONST;
extern EAPI Eo_Op ELM_OBJ_BG_BASE_ID;
enum
{
ELM_OBJ_BG_SUB_ID_FILE_SET,
ELM_OBJ_BG_SUB_ID_FILE_GET,
ELM_OBJ_BG_SUB_ID_OPTION_SET,
ELM_OBJ_BG_SUB_ID_OPTION_GET,
ELM_OBJ_BG_SUB_ID_COLOR_SET,
ELM_OBJ_BG_SUB_ID_COLOR_GET,
ELM_OBJ_BG_SUB_ID_LOAD_SIZE_SET,
ELM_OBJ_BG_SUB_ID_LAST
};
#define ELM_OBJ_BG_ID(sub_id) (ELM_OBJ_BG_BASE_ID + sub_id)
/**
* @def elm_obj_bg_file_set
* @since 1.8
*
* Set the file (image or edje collection) to give life for the
* background
*
* @param[in] file
* @param[in] group
* @param[out] ret
*
* @see elm_bg_file_set
*
* @ingroup Bg
*/
#define elm_obj_bg_file_set(file, group, ret) ELM_OBJ_BG_ID(ELM_OBJ_BG_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, file), EO_TYPECHECK(const char *, group), EO_TYPECHECK(Eina_Bool *, ret)
/**
* @def elm_obj_bg_file_get
* @since 1.8
*
* Get the file (image or edje collection) set on a given background
*
* @param[out] file
* @param[out] group
*
* @see elm_bg_file_get
*
* @ingroup Bg
*/
#define elm_obj_bg_file_get(file, group) ELM_OBJ_BG_ID(ELM_OBJ_BG_SUB_ID_FILE_GET), EO_TYPECHECK(const char **, file), EO_TYPECHECK(const char **, group)
/**
* @def elm_obj_bg_option_set
* @since 1.8
*
* Set the mode of display for a given background widget's image
*
* @param[in] option
*
* @see elm_bg_option_set
*
* @ingroup Bg
*/
#define elm_obj_bg_option_set(option) ELM_OBJ_BG_ID(ELM_OBJ_BG_SUB_ID_OPTION_SET), EO_TYPECHECK(Elm_Bg_Option, option)
/**
* @def elm_obj_bg_option_get
* @since 1.8
*
* Get the mode of display for a given background widget's image
*
* @param[out] ret
*
* @see elm_bg_option_get
*
* @ingroup Bg
*/
#define elm_obj_bg_option_get(ret) ELM_OBJ_BG_ID(ELM_OBJ_BG_SUB_ID_OPTION_GET), EO_TYPECHECK(Elm_Bg_Option *, ret)
/**
* @def elm_obj_bg_color_set
* @since 1.8
*
* Set the color on a given background widget
*
* @param[in] r
* @param[in] g
* @param[in] b
*
* @see elm_bg_color_set
*
* @ingroup Bg
*/
#define elm_obj_bg_color_set(r, g, b) ELM_OBJ_BG_ID(ELM_OBJ_BG_SUB_ID_COLOR_SET), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b)
/**
* @def elm_obj_bg_color_get
* @since 1.8
*
* Get the color set on a given background widget
*
* @param[out] r
* @param[out] g
* @param[out] b
*
* @see elm_bg_color_get
*
* @ingroup Bg
*/
#define elm_obj_bg_color_get(r, g, b) ELM_OBJ_BG_ID(ELM_OBJ_BG_SUB_ID_COLOR_GET), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b)
/**
* @def elm_obj_bg_load_size_set
* @since 1.8
*
* Set the size of the pixmap representation of the image set on a
* given background widget.
*
* @param[in] w
* @param[in] h
*
* @see elm_bg_load_size_set
*
* @ingroup Bg
*/
#define elm_obj_bg_load_size_set(w, h) ELM_OBJ_BG_ID(ELM_OBJ_BG_SUB_ID_LOAD_SIZE_SET), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h)

View File

@ -0,0 +1,147 @@
/**
* Add a new background to the parent
*
* @param parent The parent object
* @return The new object or @c NULL if it cannot be created
*
* @ingroup Bg
*/
EAPI Evas_Object *elm_bg_add(Evas_Object *parent);
/**
* Set the file (image or edje collection) to give life for the
* background
*
* @param obj The background object handle
* @param file The file path
* @param group Optional key (group in Edje) within the file
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
*
* This sets the image file used in the background object. If the
* image comes from an Edje group, it will be stretched to completely
* fill the background object. If it comes from a traditional image file, it
* will by default be centered in this widget's are (thus retaining
* its aspect), what could lead to some parts being not visible. You
* may change the mode of exhibition for a real image file with
* elm_bg_option_set().
*
* @note Once the image of @p obj is set, a previously set one will be
* deleted, even if @p file is @c NULL.
*
* @note This will only affect the contents of one of the background's
* swallow spots, namely @c "elm.swallow.background". If you want to
* achieve the @c Layout's file setting behavior, you'll have to call
* that method on this object.
*
* @ingroup Bg
*/
EAPI Eina_Bool elm_bg_file_set(Evas_Object *obj, const char *file, const char *group);
/**
* Get the file (image or edje collection) set on a given background
* widget
*
* @param obj The background object handle
* @param file Where to store the requested file's path
* @param group Where to store the optional key within @a file, @b if
* it's an Edje file
*
* @note Use @c NULL pointers on the file components you're not
* interested in: they'll be ignored by the function.
*
* @ingroup Bg
*/
EAPI void elm_bg_file_get(const Evas_Object *obj, const char **file, const char **group);
/**
* Set the mode of display for a given background widget's image
*
* @param obj The background object handle
* @param option The desired background option (see #Elm_Bg_Option)
*
* This sets how the background widget will display its image. This
* will only work if the elm_bg_file_set() was previously called with
* an image file on @a obj. The image can be display tiled, scaled,
* centered or stretched.
*
* @see elm_bg_option_get()
*
* @ingroup Bg
*/
EAPI void elm_bg_option_set(Evas_Object *obj, Elm_Bg_Option option);
/**
* Get the mode of display for a given background widget's image
*
* @param obj The background object handle
* @return The image displaying mode in use for @a obj or #ELM_BG_OPTION_LAST,
* on errors.
*
* @see elm_bg_option_set() for more details
*
* @ingroup Bg
*/
EAPI Elm_Bg_Option elm_bg_option_get(const Evas_Object *obj);
/**
* Set the color on a given background widget
*
* @param obj The background object handle
* @param r The red color component's value
* @param g The green color component's value
* @param b The blue color component's value
*
* This sets the color used for the background rectangle, in RGB
* format. Each color component's range is from 0 to 255.
*
* @note You probably only want to use this function if you haven't
* previously called elm_bg_file_set(), so that you just want a solid
* color background.
*
* @see elm_bg_color_get()
*
* @ingroup Bg
*/
EAPI void elm_bg_color_set(Evas_Object *obj, int r, int g, int b);
/**
* Get the color set on a given background widget
*
* @param obj The background object handle
* @param r Where to store the red color component's value
* @param g Where to store the green color component's value
* @param b Where to store the blue color component's value
*
* @note Use @c NULL pointers on the file components you're not
* interested in: they'll be ignored by the function.
*
* @see elm_bg_color_get() for more details
*
* @ingroup Bg
*/
EAPI void elm_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b);
/**
* Set the size of the pixmap representation of the image set on a
* given background widget.
*
* @param obj The background object handle
* @param w The new width of the image pixmap representation.
* @param h The new height of the image pixmap representation.
*
* @warning This function just makes sense if an image file was set on
* @p obj, with elm_bg_file_set().
*
* This function sets a new size for pixmap representation of the
* given bg image. It allows for the image to be loaded already in the
* specified size, reducing the memory usage and load time (for
* example, when loading a big image file with its load size set to a
* smaller size)
*
* @note This is just a hint for the underlying system. The real size
* of the pixmap may differ depending on the type of image being
* loaded, being bigger than requested.
*
* @ingroup Bg
*/
EAPI void elm_bg_load_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);