355ecadc1f26d807ccfff14738689bebabf504a3
[framework/uifw/ethumb.git] / src / lib / client / Ethumb_Client.h
1 #ifndef __ETHUMB_CLIENT_H__
2 #define __ETHUMB_CLIENT_H__ 1
3
4 #include <Ethumb.h>
5
6 #ifdef EAPI
7 # undef EAPI
8 #endif
9
10 #ifdef _WIN32
11 # ifdef EFL_ETHUMB_CLIENT_BUILD
12 #  ifdef DLL_EXPORT
13 #   define EAPI __declspec(dllexport)
14 #   define GNUC_NULL_TERMINATED
15 #  else
16 #   define EAPI
17 #   define GNUC_NULL_TERMINATED
18 #  endif /* ! DLL_EXPORT */
19 # else
20 #  define EAPI __declspec(dllimport)
21 #  define GNUC_NULL_TERMINATED
22 # endif /* ! EFL_ETHUMB_CLIENT_BUILD */
23 #else
24 # ifdef __GNUC__
25 #  if __GNUC__ >= 4
26 #   define EAPI __attribute__ ((visibility("default")))
27 #   define GNUC_NULL_TERMINATED __attribute__((__sentinel__))
28 #  else
29 #   define EAPI
30 #  define GNUC_NULL_TERMINATED
31 #  endif
32 # else
33 #  define EAPI
34 #  define GNUC_NULL_TERMINATED
35 # endif
36 #endif /* ! _WIN32 */
37
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41
42 /**
43  * @defgroup Ethumb_Client Ethumb Client
44  *
45  * @{
46  */
47
48 /**
49  * @defgroup Ethumb_Client_Basics Ethumb Client Basics
50  *
51  * Functions that all users must know of to use Ethumb_Client.
52  *
53  * @{
54  */
55
56 /**
57  * @brief client handle.
58  *
59  * The client handle is created by ethumb_client_connect() and
60  * destroyed by ethumb_client_disconnect(). The connection and
61  * requests are asynchronous and callbacks should be used to report
62  * both success and failure of calls.
63  */
64 typedef struct _Ethumb_Client Ethumb_Client;
65
66 /**
67  * @brief reports results of ethumb_client_connect()
68  *
69  * @param data extra context given to ethumb_client_connect().
70  * @param client handle of the current connection to server.
71  * @param success @c EINA_TRUE if connected or @c EINA_FALSE if it was
72  *        not possible.
73  */
74 typedef void (*Ethumb_Client_Connect_Cb)(void *data, Ethumb_Client *client, Eina_Bool success);
75
76 /**
77  * @brief reports server connection ended.
78  *
79  * Functions of this type may be called if they are set with
80  * ethumb_client_on_server_die_callback_set().
81  *
82  * @param data extra context given to ethumb_client_on_server_die_callback_set().
83  * @param client handle of the current connection to server.
84  */
85 typedef void (*Ethumb_Client_Die_Cb)(void *data, Ethumb_Client *client);
86
87 /**
88  * @brief reports results of ethumb_client_generate().
89  *
90  * @param data extra context given to ethumb_client_generate().
91  * @param client handle of the current connection to server.
92  * @param id identifier returned by ethumb_client_generate().
93  * @param file path set with ethumb_client_file_set().
94  * @param key value set with ethumb_client_file_set() or @c NULL.
95  * @param thumb_path where thumbnail was stored, either set with
96  *        ethumb_client_thumb_path_set() or automatically calculated
97  *        using parameters.
98  * @param thumb_key key inside thumb_path where thumbnail was stored or @c NULL.
99  * @param success @c EINA_TRUE if generated or @c EINA_FALSE on errors.
100  */
101 typedef void (*Ethumb_Client_Generate_Cb)(void *data, Ethumb_Client *client, int id, const char *file, const char *key, const char *thumb_path, const char *thumb_key, Eina_Bool success);
102
103 /**
104  * @brief reports results of ethumb_client_generate_cancel()
105  *
106  * @param data extra context given to ethumb_client_generate_cancel()
107  * @param client handle of the current connection to server.
108  */
109 typedef void (*Ethumb_Client_Generate_Cancel_Cb)(void *data, Eina_Bool success);
110
111 EAPI int ethumb_client_init(void);
112 EAPI int ethumb_client_shutdown(void);
113
114 EAPI Ethumb_Client * ethumb_client_connect(Ethumb_Client_Connect_Cb connect_cb, const void *data, Eina_Free_Cb free_data);
115 EAPI void ethumb_client_disconnect(Ethumb_Client *client);
116 EAPI void ethumb_client_on_server_die_callback_set(Ethumb_Client *client, Ethumb_Client_Die_Cb server_die_cb, const void *data, Eina_Free_Cb free_data);
117
118 /**
119  * @}
120  */
121
122 /**
123  * @defgroup Ethumb_Client_Setup Ethumb Client Fine Tune Setup
124  *
125  * How to fine tune thumbnail generation, setting size, aspect, orientation,
126  * frames, quality and so on.
127  *
128  * @{
129  */
130
131 EAPI void ethumb_client_fdo_set(Ethumb_Client *client, Ethumb_Thumb_FDO_Size s);
132 EAPI void ethumb_client_size_set(Ethumb_Client *client, int tw, int th);
133 EAPI void ethumb_client_size_get(const Ethumb_Client *client, int *tw, int *th);
134 EAPI void ethumb_client_format_set(Ethumb_Client *client, Ethumb_Thumb_Format f);
135 EAPI Ethumb_Thumb_Format ethumb_client_format_get(const Ethumb_Client *client);
136 EAPI void ethumb_client_aspect_set(Ethumb_Client *client, Ethumb_Thumb_Aspect a);
137 EAPI Ethumb_Thumb_Aspect ethumb_client_aspect_get(const Ethumb_Client *client);
138 EAPI void ethumb_client_orientation_set(Ethumb_Client *client, Ethumb_Thumb_Orientation o);
139 EAPI Ethumb_Thumb_Orientation ethumb_client_orientation_get(const Ethumb_Client *client);
140 EAPI void ethumb_client_crop_align_set(Ethumb_Client *client, float x, float y);
141 EAPI void ethumb_client_crop_align_get(const Ethumb_Client *client, float *x, float *y);
142 EAPI void ethumb_client_quality_set(Ethumb_Client *client, int quality);
143 EAPI int ethumb_client_quality_get(const Ethumb_Client *client);
144 EAPI void ethumb_client_compress_set(Ethumb_Client *client, int compress);
145 EAPI int ethumb_client_compress_get(const Ethumb_Client *client);
146 EAPI Eina_Bool ethumb_client_frame_set(Ethumb_Client *client, const char *file, const char *group, const char *swallow);
147 EAPI void ethumb_client_dir_path_set(Ethumb_Client *client, const char *path);
148 EAPI const char * ethumb_client_dir_path_get(const Ethumb_Client *client);
149 EAPI void ethumb_client_category_set(Ethumb_Client *client, const char *category);
150 EAPI const char * ethumb_client_category_get(const Ethumb_Client *client);
151 EAPI void ethumb_client_video_time_set(Ethumb_Client *client, float time);
152 EAPI void ethumb_client_video_start_set(Ethumb_Client *client, float start);
153 EAPI void ethumb_client_video_interval_set(Ethumb_Client *client, float interval);
154 EAPI void ethumb_client_video_ntimes_set(Ethumb_Client *client, unsigned int ntimes);
155 EAPI void ethumb_client_video_fps_set(Ethumb_Client *client, unsigned int fps);
156 EAPI void ethumb_client_document_page_set(Ethumb_Client *client, unsigned int page);
157
158 EAPI void ethumb_client_ethumb_setup(Ethumb_Client *client);
159
160 EAPI void ethumb_client_thumb_path_set(Ethumb_Client *client, const char *path, const char *key);
161 EAPI void ethumb_client_thumb_path_get(Ethumb_Client *client, const char **path, const char **key);
162 /**
163  * @}
164  */
165
166 /**
167  * @addtogroup Ethumb_Client_Basics Ethumb Client Basics
168  * @{
169  */
170 EAPI Eina_Bool ethumb_client_file_set(Ethumb_Client *client, const char *path, const char *key);
171 EAPI void ethumb_client_file_get(Ethumb_Client *client, const char **path, const char **key);
172 EAPI void ethumb_client_file_free(Ethumb_Client *client);
173
174 EAPI Eina_Bool ethumb_client_thumb_exists(Ethumb_Client *client);
175 EAPI int  ethumb_client_generate(Ethumb_Client *client, Ethumb_Client_Generate_Cb generated_cb, const void *data, Eina_Free_Cb free_data);
176 EAPI void ethumb_client_generate_cancel(Ethumb_Client *client, int id, Ethumb_Client_Generate_Cancel_Cb cancel_cb, const void *data, Eina_Free_Cb free_data);
177 EAPI void ethumb_client_generate_cancel_all(Ethumb_Client *client);
178 /**
179  * @}
180  */
181
182 /**
183  * @}
184  */
185
186
187 #ifdef __cplusplus
188 }
189 #endif
190 #endif /* __ETHUMB_CLIENT_H__ */