Welcome Ethumb, it's ready to get out of PROTO.
[framework/uifw/ethumb.git] / src / lib / Ethumb.h
1 #ifndef __ETHUMB_H__
2 #define __ETHUMB_H__ 1
3
4 #ifndef EAPI
5 #ifdef _WIN32
6 # ifdef EFL_EVAS_BUILD
7 #  ifdef DLL_EXPORT
8 #   define EAPI __declspec(dllexport)
9 #   define GNUC_NULL_TERMINATED
10 #  else
11 #   define EAPI
12 #   define GNUC_NULL_TERMINATED
13 #  endif /* ! DLL_EXPORT */
14 # else
15 #  define EAPI __declspec(dllimport)
16 #  define GNUC_NULL_TERMINATED
17 # endif /* ! EFL_EVAS_BUILD */
18 #else
19 # ifdef __GNUC__
20 #  if __GNUC__ >= 4
21 #   define EAPI __attribute__ ((visibility("default")))
22 #   define GNUC_NULL_TERMINATED __attribute__((__sentinel__))
23 #  else
24 #   define EAPI
25 #  define GNUC_NULL_TERMINATED
26 #  endif
27 # else
28 #  define EAPI
29 #  define GNUC_NULL_TERMINATED
30 # endif
31 #endif /* ! _WIN32 */
32 #endif /* EAPI */
33
34 #include <Ecore.h>
35 #include <Ecore_Evas.h>
36 #include <Evas.h>
37 #include <Eina.h>
38
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42
43 enum _Ethumb_Thumb_FDO_Size
44 {
45    ETHUMB_THUMB_NORMAL,
46    ETHUMB_THUMB_LARGE
47 };
48
49 typedef enum _Ethumb_Thumb_FDO_Size Ethumb_Thumb_FDO_Size;
50
51 enum _Ethumb_Thumb_Format
52 {
53    ETHUMB_THUMB_FDO,
54    ETHUMB_THUMB_JPEG,
55    ETHUMB_THUMB_EET
56 };
57
58 typedef enum _Ethumb_Thumb_Format Ethumb_Thumb_Format;
59
60 enum _Ethumb_Thumb_Aspect
61 {
62    ETHUMB_THUMB_KEEP_ASPECT,
63    ETHUMB_THUMB_IGNORE_ASPECT,
64    ETHUMB_THUMB_CROP
65 };
66
67 typedef enum _Ethumb_Thumb_Aspect Ethumb_Thumb_Aspect;
68
69 typedef struct _Ethumb_Frame Ethumb_Frame;
70 typedef struct _Ethumb Ethumb;
71 typedef void (*Ethumb_Generate_Cb)(void *data, Ethumb *e, Eina_Bool success);
72
73 EAPI int ethumb_init(void);
74 EAPI int ethumb_shutdown(void);
75
76 EAPI Ethumb * ethumb_new(void) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
77 EAPI void ethumb_free(Ethumb *e);
78
79 EAPI void ethumb_thumb_fdo_set(Ethumb *e, Ethumb_Thumb_FDO_Size s) EINA_ARG_NONNULL(1);
80
81 EAPI void ethumb_thumb_size_set(Ethumb *e, int tw, int th) EINA_ARG_NONNULL(1);
82 EAPI void ethumb_thumb_size_get(const Ethumb *e, int *tw, int *th) EINA_ARG_NONNULL(1);
83
84 EAPI void ethumb_thumb_format_set(Ethumb *e, Ethumb_Thumb_Format f) EINA_ARG_NONNULL(1);
85 EAPI Ethumb_Thumb_Format ethumb_thumb_format_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
86
87 EAPI void ethumb_thumb_aspect_set(Ethumb *e, Ethumb_Thumb_Aspect a) EINA_ARG_NONNULL(1);
88 EAPI Ethumb_Thumb_Aspect ethumb_thumb_aspect_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
89
90 EAPI void ethumb_thumb_crop_align_set(Ethumb *e, float x, float y) EINA_ARG_NONNULL(1);
91 EAPI void ethumb_thumb_crop_align_get(const Ethumb *e, float *x, float *y) EINA_ARG_NONNULL(1);
92
93 EAPI void ethumb_thumb_quality_set(Ethumb *e, int quality) EINA_ARG_NONNULL(1);
94 EAPI int ethumb_thumb_quality_get(const Ethumb *e) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT EINA_PURE;
95
96 EAPI void ethumb_thumb_compress_set(Ethumb *e, int compress) EINA_ARG_NONNULL(1);
97 EAPI int ethumb_thumb_compress_get(const Ethumb *e) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT EINA_PURE;
98
99 EAPI Eina_Bool ethumb_frame_set(Ethumb *e, const char *theme_file, const char *group, const char *swallow) EINA_ARG_NONNULL(1);
100 EAPI void ethumb_frame_get(const Ethumb *e, const char **theme_file, const char **group, const char **swallow) EINA_ARG_NONNULL(1);
101
102 EAPI void ethumb_thumb_dir_path_set(Ethumb *e, const char *path) EINA_ARG_NONNULL(1);
103 EAPI const char * ethumb_thumb_dir_path_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
104
105 EAPI void ethumb_thumb_category_set(Ethumb *e, const char *category) EINA_ARG_NONNULL(1);
106 EAPI const char * ethumb_thumb_category_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
107
108
109 EAPI void ethumb_video_start_set(Ethumb *e, float start) EINA_ARG_NONNULL(1);
110 EAPI float ethumb_video_start_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
111 EAPI void ethumb_video_time_set(Ethumb *e, float time) EINA_ARG_NONNULL(1);
112 EAPI float ethumb_video_time_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
113 EAPI void ethumb_video_interval_set(Ethumb *e, float interval) EINA_ARG_NONNULL(1);
114 EAPI float ethumb_video_interval_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
115 EAPI void ethumb_video_ntimes_set(Ethumb *e, int ntimes) EINA_ARG_NONNULL(1);
116 EAPI int ethumb_video_ntimes_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
117 EAPI void ethumb_video_fps_set(Ethumb *e, int fps) EINA_ARG_NONNULL(1);
118 EAPI int ethumb_video_fps_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
119
120
121 EAPI void ethumb_document_page_set(Ethumb *e, int page) EINA_ARG_NONNULL(1);
122 EAPI int ethumb_document_page_get(const Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
123
124 EAPI Eina_Bool ethumb_file_set(Ethumb *e, const char *path, const char *key) EINA_ARG_NONNULL(1, 2);
125 EAPI void ethumb_file_get(const Ethumb *e, const char **path, const char **key) EINA_ARG_NONNULL(1);
126 EAPI void ethumb_file_free(Ethumb *e) EINA_ARG_NONNULL(1);
127 EAPI void ethumb_thumb_path_set(Ethumb *e, const char *path, const char *key) EINA_ARG_NONNULL(1);
128 EAPI void ethumb_thumb_path_get(Ethumb *e, const char **path, const char **key) EINA_ARG_NONNULL(1);
129 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);
130 EAPI Eina_Bool ethumb_exists(Ethumb *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
131
132 #ifdef __cplusplus
133 }
134 #endif
135 #endif /* __ETHUMB_H__ */