11 # ifdef EFL_ETHUMB_BUILD
13 # define EAPI __declspec(dllexport)
14 # define GNUC_NULL_TERMINATED
17 # define GNUC_NULL_TERMINATED
18 # endif /* ! DLL_EXPORT */
20 # define EAPI __declspec(dllimport)
21 # define GNUC_NULL_TERMINATED
22 # endif /* ! EFL_ETHUMB_BUILD */
26 # define EAPI __attribute__ ((visibility("default")))
27 # define GNUC_NULL_TERMINATED __attribute__((__sentinel__))
30 # define GNUC_NULL_TERMINATED
34 # define GNUC_NULL_TERMINATED
43 * @defgroup Ethumb Ethumb
48 * @defgroup Ethumb_Basics Ethumb Basics
50 * Functions that all users must know of to use Ethumb.
56 * @brief thumbnailer handle.
58 * The handle is returned by ethumb_new() and destroyed by ethumb_free().
60 typedef struct _Ethumb Ethumb;
63 * @brief reports results of ethumb_generate().
65 * @param data extra context given to ethumb_generate().
66 * @param e handle of the current thumbnailer.
67 * @param success @c EINA_TRUE if generated or @c EINA_FALSE on errors.
69 typedef void (*Ethumb_Generate_Cb)(void *data, Ethumb *e, Eina_Bool success);
71 EAPI int ethumb_init(void);
72 EAPI int ethumb_shutdown(void);
74 EAPI Ethumb * ethumb_new(void) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
75 EAPI void ethumb_free(Ethumb *e);
82 * @defgroup Ethumb_Setup Ethumb Fine Tune Setup
84 * How to fine tune thumbnail generation, setting size, aspect,
85 * frames, quality and so on.
90 EAPI Eina_Bool ethumb_frame_set(Ethumb *e, const char *theme_file, const char *group, const char *swallow) EINA_ARG_NONNULL(1);
91 EAPI void ethumb_frame_get(const Ethumb *e, const char **theme_file, const char **group, const char **swallow) EINA_ARG_NONNULL(1);
93 EAPI void ethumb_thumb_dir_path_set(Ethumb *e, const char *path) EINA_ARG_NONNULL(1);
94 EAPI const char *ethumb_thumb_dir_path_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
96 EAPI void ethumb_thumb_category_set(Ethumb *e, const char *category) EINA_ARG_NONNULL(1);
97 EAPI const char *ethumb_thumb_category_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
99 EAPI void ethumb_thumb_path_set(Ethumb *e, const char *path, const char *key) EINA_ARG_NONNULL(1);
100 EAPI void ethumb_thumb_path_get(Ethumb *e, const char **path, const char **key) EINA_ARG_NONNULL(1);
102 typedef enum _Ethumb_Thumb_FDO_Size
104 ETHUMB_THUMB_NORMAL, /**< 128x128 as defined by FreeDesktop.Org standard */
105 ETHUMB_THUMB_LARGE /**< 256x256 as defined by FreeDesktop.Org standard */
106 } Ethumb_Thumb_FDO_Size;
108 typedef enum _Ethumb_Thumb_Format
110 ETHUMB_THUMB_FDO, /**< PNG as defined by FreeDesktop.Org standard */
111 ETHUMB_THUMB_JPEG, /**< JPEGs are often smaller and faster to read/write */
112 ETHUMB_THUMB_EET /**< EFL's own storage system, supports key parameter */
113 } Ethumb_Thumb_Format;
115 typedef enum _Ethumb_Thumb_Aspect
117 ETHUMB_THUMB_KEEP_ASPECT, /**< keep original proportion between width and height */
118 ETHUMB_THUMB_IGNORE_ASPECT, /**< ignore aspect and foce it to match thumbnail's width and height */
119 ETHUMB_THUMB_CROP /**< keep aspect but crop (cut) the largest dimension */
120 } Ethumb_Thumb_Aspect;
122 EAPI void ethumb_thumb_fdo_set(Ethumb *e, Ethumb_Thumb_FDO_Size s) EINA_ARG_NONNULL(1);
124 EAPI void ethumb_thumb_size_set(Ethumb *e, int tw, int th) EINA_ARG_NONNULL(1);
125 EAPI void ethumb_thumb_size_get(const Ethumb *e, int *tw, int *th) EINA_ARG_NONNULL(1);
127 EAPI void ethumb_thumb_format_set(Ethumb *e, Ethumb_Thumb_Format f) EINA_ARG_NONNULL(1);
128 EAPI Ethumb_Thumb_Format ethumb_thumb_format_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
130 EAPI void ethumb_thumb_aspect_set(Ethumb *e, Ethumb_Thumb_Aspect a) EINA_ARG_NONNULL(1);
131 EAPI Ethumb_Thumb_Aspect ethumb_thumb_aspect_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
133 EAPI void ethumb_thumb_crop_align_set(Ethumb *e, float x, float y) EINA_ARG_NONNULL(1);
134 EAPI void ethumb_thumb_crop_align_get(const Ethumb *e, float *x, float *y) EINA_ARG_NONNULL(1);
136 EAPI void ethumb_thumb_quality_set(Ethumb *e, int quality) EINA_ARG_NONNULL(1);
137 EAPI int ethumb_thumb_quality_get(const Ethumb *e) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT EINA_PURE;
139 EAPI void ethumb_thumb_compress_set(Ethumb *e, int compress) EINA_ARG_NONNULL(1);
140 EAPI int ethumb_thumb_compress_get(const Ethumb *e) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT EINA_PURE;
142 EAPI void ethumb_video_start_set(Ethumb *e, float start) EINA_ARG_NONNULL(1);
143 EAPI float ethumb_video_start_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
144 EAPI void ethumb_video_time_set(Ethumb *e, float time) EINA_ARG_NONNULL(1);
145 EAPI float ethumb_video_time_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
146 EAPI void ethumb_video_interval_set(Ethumb *e, float interval) EINA_ARG_NONNULL(1);
147 EAPI float ethumb_video_interval_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
148 EAPI void ethumb_video_ntimes_set(Ethumb *e, unsigned int ntimes) EINA_ARG_NONNULL(1);
149 EAPI unsigned int ethumb_video_ntimes_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
150 EAPI void ethumb_video_fps_set(Ethumb *e, unsigned int fps) EINA_ARG_NONNULL(1);
151 EAPI unsigned int ethumb_video_fps_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
154 EAPI void ethumb_document_page_set(Ethumb *e, unsigned int page) EINA_ARG_NONNULL(1);
155 EAPI unsigned int ethumb_document_page_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
161 * @addtogroup Ethumb_Basics Ethumb Basics
164 EAPI Eina_Bool ethumb_file_set(Ethumb *e, const char *path, const char *key) EINA_ARG_NONNULL(1, 2);
165 EAPI void ethumb_file_get(const Ethumb *e, const char **path, const char **key) EINA_ARG_NONNULL(1);
166 EAPI void ethumb_file_free(Ethumb *e) EINA_ARG_NONNULL(1);
168 EAPI Eina_Bool ethumb_generate(Ethumb *e, Ethumb_Generate_Cb finished_cb, const void *data, Eina_Free_Cb free_data) EINA_ARG_NONNULL(1, 2);
169 EAPI Eina_Bool ethumb_exists(Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
181 #endif /* __ETHUMB_H__ */