263 lines
7.2 KiB
C
263 lines
7.2 KiB
C
/**
|
|
* @defgroup Thumb Thumb
|
|
*
|
|
* @image html img/widget/thumb/preview-00.png
|
|
* @image latex img/widget/thumb/preview-00.eps
|
|
*
|
|
* A thumb object is used for displaying the thumbnail of an image or video.
|
|
* You must have compiled Elementary with Ethumb_Client support and the DBus
|
|
* service must be present and auto-activated in order to have thumbnails to
|
|
* be generated. You must also have a Session bus, not System bus.
|
|
*
|
|
* Once the thumbnail object becomes visible, it will check if there is a
|
|
* previously generated thumbnail image for the file set on it. If not, it
|
|
* will start generating this thumbnail.
|
|
*
|
|
* Different config settings will cause different thumbnails to be generated
|
|
* even on the same file.
|
|
*
|
|
* Generated thumbnails are stored under @c $HOME/.thumbnails/. Check the
|
|
* Ethumb documentation to change this path, and to see other configuration
|
|
* options.
|
|
*
|
|
* Signals that you can add callbacks for are:
|
|
*
|
|
* - "clicked" - This is called when a user has clicked the thumb without dragging
|
|
* around.
|
|
* - "clicked,double" - This is called when a user has double-clicked the thumb.
|
|
* - "press" - This is called when a user has pressed down the thumb.
|
|
* - "generate,start" - The thumbnail generation started.
|
|
* - "generate,stop" - The generation process stopped.
|
|
* - "generate,error" - The generation failed.
|
|
* - "load,error" - The thumbnail image loading failed.
|
|
*
|
|
* available styles:
|
|
* - default
|
|
* - noframe
|
|
*
|
|
* An example of use of thumbnail:
|
|
*
|
|
* - @ref thumb_example_01
|
|
*/
|
|
|
|
/**
|
|
* @addtogroup Thumb
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @enum _Elm_Thumb_Animation_Setting
|
|
* @typedef Elm_Thumb_Animation_Setting
|
|
*
|
|
* Used to set if a video thumbnail is animating or not.
|
|
*
|
|
* @ingroup Thumb
|
|
*/
|
|
typedef enum
|
|
{
|
|
ELM_THUMB_ANIMATION_START = 0, /**< Play animation once */
|
|
ELM_THUMB_ANIMATION_LOOP, /**< Keep playing animation until stop is requested */
|
|
ELM_THUMB_ANIMATION_STOP, /**< Stop playing the animation */
|
|
ELM_THUMB_ANIMATION_LAST
|
|
} Elm_Thumb_Animation_Setting;
|
|
|
|
/**
|
|
* Add a new thumb object to the parent.
|
|
*
|
|
* @param parent The parent object.
|
|
* @return The new object or NULL if it cannot be created.
|
|
*
|
|
* @see elm_thumb_file_set()
|
|
* @see elm_thumb_ethumb_client_get()
|
|
*
|
|
* @ingroup Thumb
|
|
*/
|
|
EAPI Evas_Object *elm_thumb_add(Evas_Object *parent);
|
|
|
|
/**
|
|
* Reload thumbnail if it was generated before.
|
|
*
|
|
* @param obj The thumb object to reload
|
|
*
|
|
* This is useful if the ethumb client configuration changed, like its
|
|
* size, aspect or any other property one set in the handle returned
|
|
* by elm_thumb_ethumb_client_get().
|
|
*
|
|
* If the options didn't change, the thumbnail won't be generated again, but
|
|
* the old one will still be used.
|
|
*
|
|
* @see elm_thumb_file_set()
|
|
*
|
|
* @ingroup Thumb
|
|
*/
|
|
EAPI void elm_thumb_reload(Evas_Object *obj);
|
|
|
|
/**
|
|
* Set the file that will be used as thumbnail.
|
|
*
|
|
* @param obj The thumb object.
|
|
* @param file The path to file that will be used as thumb.
|
|
* @param key The key used in case of an EET file.
|
|
*
|
|
* The file can be an image or a video (in that case, acceptable extensions are:
|
|
* avi, mp4, ogv, mov, mpg and wmv). To start the video animation, use the
|
|
* function elm_thumb_animate().
|
|
*
|
|
* @see elm_thumb_file_get()
|
|
* @see elm_thumb_reload()
|
|
* @see elm_thumb_animate()
|
|
*
|
|
* @ingroup Thumb
|
|
*/
|
|
EAPI void elm_thumb_file_set(Evas_Object *obj, const char *file, const char *key);
|
|
|
|
/**
|
|
* Get the image or video path and key used to generate the thumbnail.
|
|
*
|
|
* @param obj The thumb object.
|
|
* @param file Pointer to filename.
|
|
* @param key Pointer to key.
|
|
*
|
|
* @see elm_thumb_file_set()
|
|
* @see elm_thumb_path_get()
|
|
*
|
|
* @ingroup Thumb
|
|
*/
|
|
EAPI void elm_thumb_file_get(const Evas_Object *obj, const char **file, const char **key);
|
|
|
|
/**
|
|
* Get the path and key to the image or video thumbnail generated by ethumb.
|
|
*
|
|
* One just needs to make sure that the thumbnail was generated before getting
|
|
* its path; otherwise, the path will be NULL. One way to do that is by asking
|
|
* for the path when/after the "generate,stop" smart callback is called.
|
|
*
|
|
* @param obj The thumb object.
|
|
* @param file Pointer to thumb path.
|
|
* @param key Pointer to thumb key.
|
|
*
|
|
* @see elm_thumb_file_get()
|
|
*
|
|
* @ingroup Thumb
|
|
*/
|
|
EAPI void elm_thumb_path_get(const Evas_Object *obj, const char **file, const char **key);
|
|
|
|
/**
|
|
* Set the animation state for the thumb object. If its content is an animated
|
|
* video, you may start/stop the animation or tell it to play continuously and
|
|
* looping.
|
|
*
|
|
* @param obj The thumb object.
|
|
* @param s The animation setting.
|
|
*
|
|
* @see elm_thumb_file_set()
|
|
*
|
|
* @ingroup Thumb
|
|
*/
|
|
EAPI void elm_thumb_animate_set(Evas_Object *obj, Elm_Thumb_Animation_Setting s);
|
|
|
|
/**
|
|
* Get the animation state for the thumb object.
|
|
*
|
|
* @param obj The thumb object.
|
|
* @return getting The animation setting or @c ELM_THUMB_ANIMATION_LAST,
|
|
* on errors.
|
|
*
|
|
* @see elm_thumb_animate_set()
|
|
*
|
|
* @ingroup Thumb
|
|
*/
|
|
EAPI Elm_Thumb_Animation_Setting elm_thumb_animate_get(const Evas_Object *obj);
|
|
|
|
/**
|
|
* Get the ethumb_client handle so custom configuration can be made.
|
|
*
|
|
* @return Ethumb_Client instance or NULL.
|
|
*
|
|
* This must be called before the objects are created to be sure no object is
|
|
* visible and no generation started.
|
|
*
|
|
* Example of usage:
|
|
*
|
|
* @code
|
|
* #include <Elementary.h>
|
|
* #ifndef ELM_LIB_QUICKLAUNCH
|
|
* EAPI_MAIN int
|
|
* elm_main(int argc, char **argv)
|
|
* {
|
|
* Ethumb_Client *client;
|
|
*
|
|
* elm_need_ethumb();
|
|
*
|
|
* // ... your code
|
|
*
|
|
* client = elm_thumb_ethumb_client_get();
|
|
* if (!client)
|
|
* {
|
|
* ERR("could not get ethumb_client");
|
|
* return 1;
|
|
* }
|
|
* ethumb_client_size_set(client, 100, 100);
|
|
* ethumb_client_crop_align_set(client, 0.5, 0.5);
|
|
* // ... your code
|
|
*
|
|
* // Create elm_thumb objects here
|
|
*
|
|
* elm_run();
|
|
* elm_shutdown();
|
|
* return 0;
|
|
* }
|
|
* #endif
|
|
* ELM_MAIN()
|
|
* @endcode
|
|
*
|
|
* @note There's only one client handle for Ethumb, so once a configuration
|
|
* change is done to it, any other request for thumbnails (for any thumbnail
|
|
* object) will use that configuration. Thus, this configuration is global.
|
|
*
|
|
* @ingroup Thumb
|
|
*/
|
|
EAPI void *elm_thumb_ethumb_client_get(void);
|
|
|
|
/**
|
|
* Get the ethumb_client connection state.
|
|
*
|
|
* @return EINA_TRUE if the client is connected to the server or EINA_FALSE
|
|
* otherwise.
|
|
*/
|
|
EAPI Eina_Bool elm_thumb_ethumb_client_connected_get(void);
|
|
|
|
/**
|
|
* Make the thumbnail 'editable'.
|
|
*
|
|
* @param obj Thumb object.
|
|
* @param edit Turn on or off editability. Default is @c EINA_FALSE.
|
|
*
|
|
* This means the thumbnail is a valid drag target for drag and drop, and can be
|
|
* cut or pasted too.
|
|
*
|
|
* @see elm_thumb_editable_get()
|
|
*
|
|
* @ingroup Thumb
|
|
*/
|
|
EAPI Eina_Bool elm_thumb_editable_set(Evas_Object *obj, Eina_Bool edit);
|
|
|
|
/**
|
|
* Make the thumbnail 'editable'.
|
|
*
|
|
* @param obj Thumb object.
|
|
* @return Editability.
|
|
*
|
|
* This means the thumbnail is a valid drag target for drag and drop, and can be
|
|
* cut or pasted too.
|
|
*
|
|
* @see elm_thumb_editable_set()
|
|
*
|
|
* @ingroup Thumb
|
|
*/
|
|
EAPI Eina_Bool elm_thumb_editable_get(const Evas_Object *obj);
|
|
|
|
/**
|
|
* @}
|
|
*/
|