tizen 2.4 release
[framework/uifw/elementary.git] / src / lib / elm_photocam.h
1 /**
2  * @defgroup Photocam Photocam
3  * @ingroup elm_widget_group
4  *
5  * @image html photocam_inheritance_tree.png
6  * @image latex photocam_inheritance_tree.eps
7  *
8  *
9  * Photocam is a widget meant specifically for displaying
10  * high-resolution digital camera photos, giving speedy feedback (fast
11  * load), zooming and panning as well as fitting logic, all with low
12  * memory footprint. It is entirely focused on @b jpeg images, and
13  * takes advantage of properties of the jpeg format (via Evas loader
14  * features in the jpeg loader).
15  *
16  * Signals that you can add callbacks for are:
17  * @li @c "clicked" - This is called when a user has clicked the photo
18  *        without dragging around.
19  * @li @c "press" - This is called when a user has pressed down on the
20  *        photo.
21  * @li @c "longpressed" - This is called when a user has pressed down
22  *        on the photo for a long time without dragging around.
23  * @li @c "clicked,double" - This is called when a user has
24  *        double-clicked the photo.
25  * @li @c "load" - Photo load begins.
26  * @li @c "loaded" - This is called when the image file load is
27  *        complete for the first view (low resolution blurry version).
28  * @li @c "load,detail" - Photo detailed data load begins.
29  * @li @c "loaded,detail" - This is called when the image file load is
30  *        complete for the detailed image data (full resolution
31  *        needed).
32  * @li @c "zoom,start" - Zoom animation started.
33  * @li @c "zoom,stop" - Zoom animation stopped.
34  * @li @c "zoom,change" - Zoom changed when using an auto zoom mode.
35  * @li @c "scroll" - the content has been scrolled (moved)
36  * @li @c "scroll,anim,start" - scrolling animation has started
37  * @li @c "scroll,anim,stop" - scrolling animation has stopped
38  * @li @c "scroll,drag,start" - dragging the contents around has started
39  * @li @c "scroll,drag,stop" - dragging the contents around has stopped
40  * @li @c "focused" - When the photocam has received focus. (since 1.8)
41  * @li @c "unfocused" - When the photocam has lost focus. (since 1.8)
42  *
43  * This widget implements the @b @ref elm-scrollable-interface
44  * interface, so that all (non-deprecated) functions for the base @ref
45  * Scroller widget also work for photocam objects.
46  *
47  * Some calls on the photocam's API are marked as @b deprecated, as
48  * they just wrap the scrollable widgets counterpart functions. Use
49  * the ones we point you to, for each case of deprecation here,
50  * instead -- eventually the deprecated ones will be discarded (next
51  * major release).
52  *
53  * @{
54  */
55
56 /**
57  * @brief Types of zoom available.
58  */
59 typedef enum
60 {
61    ELM_PHOTOCAM_ZOOM_MODE_MANUAL = 0, /**< Zoom controlled normally by elm_photocam_zoom_set */
62    ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT, /**< Zoom until photo fits in photocam */
63    ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL, /**< Zoom until photo fills photocam */
64    ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT_IN, /**< Zoom in until photo fits in photocam */
65    ELM_PHOTOCAM_ZOOM_MODE_LAST
66 } Elm_Photocam_Zoom_Mode;
67
68 /**
69  * Structure associated with smart callback 'download,progress'.
70  * @since 1.8
71  */
72 typedef struct _Elm_Photocam_Progress Elm_Photocam_Progress;
73
74 struct _Elm_Photocam_Progress
75 {
76    double now;
77    double total;
78 };
79
80
81 /**
82  * Structre associated with smart callback 'download,error'
83  * @since 1.8
84  */
85 typedef struct _Elm_Photocam_Error Elm_Photocam_Error;
86 struct _Elm_Photocam_Error
87 {
88    int status;
89
90    Eina_Bool open_error;
91 };
92
93 #ifdef EFL_EO_API_SUPPORT
94 #include "elm_photocam_eo.h"
95 #endif
96 #ifndef EFL_NOLEGACY_API_SUPPORT
97 #include "elm_photocam_legacy.h"
98 #endif
99 /**
100  * @}
101  */