00001
00002 #ifndef EWL_ENGINES_H
00003 #define EWL_ENGINES_H
00004
00005 enum Ewl_Engine_Window_Hooks
00006 {
00007 EWL_ENGINE_WINDOW_NEW,
00008 EWL_ENGINE_WINDOW_DESTROY,
00010 EWL_ENGINE_WINDOW_MOVE,
00012 EWL_ENGINE_WINDOW_RESIZE,
00013 EWL_ENGINE_WINDOW_MIN_MAX_SIZE_SET,
00014 EWL_ENGINE_WINDOW_SHOW,
00015 EWL_ENGINE_WINDOW_HIDE,
00017 EWL_ENGINE_WINDOW_TITLE_SET,
00018 EWL_ENGINE_WINDOW_NAME_CLASS_SET,
00020 EWL_ENGINE_WINDOW_BORDERLESS_SET,
00022 EWL_ENGINE_WINDOW_DIALOG_SET,
00023 EWL_ENGINE_WINDOW_STATES_SET,
00024 EWL_ENGINE_WINDOW_HINTS_SET,
00025 EWL_ENGINE_WINDOW_TRANSIENT_FOR,
00026 EWL_ENGINE_WINDOW_LEADER_SET,
00027 EWL_ENGINE_WINDOW_RAISE,
00028 EWL_ENGINE_WINDOW_LOWER,
00030 EWL_ENGINE_WINDOW_KEYBOARD_GRAB,
00031 EWL_ENGINE_WINDOW_KEYBOARD_UNGRAB,
00032 EWL_ENGINE_WINDOW_POINTER_GRAB,
00033 EWL_ENGINE_WINDOW_POINTER_UNGRAB,
00035 EWL_ENGINE_WINDOW_SELECTION_TEXT_SET,
00036 EWL_ENGINE_WINDOW_GEOMETRY_GET,
00038 EWL_ENGINE_WINDOW_DND_AWARE_SET,
00039 EWL_ENGINE_WINDOW_DESKTOP_SIZE_GET,
00041 EWL_ENGINE_WINDOW_DND_DRAG_TYPES_SET,
00042 EWL_ENGINE_WINDOW_DND_DRAG_START,
00043 EWL_ENGINE_WINDOW_DND_DRAG_DROP,
00044 EWL_ENGINE_WINDOW_DND_DRAG_DATA_SEND,
00046 EWL_ENGINE_WINDOW_MAX
00047 };
00048
00049 enum Ewl_Engine_Canvas_Hooks
00050 {
00051 EWL_ENGINE_CANVAS_SETUP,
00052 EWL_ENGINE_CANVAS_OUTPUT_SET,
00054 EWL_ENGINE_CANVAS_RENDER,
00055 EWL_ENGINE_CANVAS_FREEZE,
00056 EWL_ENGINE_CANVAS_THAW,
00057
00058 EWL_ENGINE_CANVAS_DAMAGE_ADD,
00059
00060 EWL_ENGINE_CANVAS_MAX
00061 };
00062
00063 enum Ewl_Engine_Theme_Hooks
00064 {
00065 EWL_ENGINE_THEME_FREEZE,
00066 EWL_ENGINE_THEME_THAW,
00067
00068 EWL_ENGINE_THEME_DATA_GET,
00069
00070 EWL_ENGINE_THEME_WIDGET_GROUP,
00071
00072 EWL_ENGINE_THEME_OBJECT_ADD,
00073 EWL_ENGINE_THEME_OBJECT_DEL,
00074 EWL_ENGINE_THEME_OBJECT_MOVE,
00075 EWL_ENGINE_THEME_OBJECT_RESIZE,
00076 EWL_ENGINE_THEME_OBJECT_SHOW,
00077 EWL_ENGINE_THEME_OBJECT_HIDE,
00078 EWL_ENGINE_THEME_OBJECT_CLIP_SET,
00079 EWL_ENGINE_THEME_OBJECT_CLIP_UNSET,
00080 EWL_ENGINE_THEME_OBJECT_FILE_SET,
00081 EWL_ENGINE_THEME_OBJECT_LOAD_ERROR,
00082 EWL_ENGINE_THEME_OBJECT_MIN_SIZE_GET,
00083 EWL_ENGINE_THEME_OBJECT_MAX_SIZE_GET,
00084 EWL_ENGINE_THEME_OBJECT_SIGNAL_SEND,
00085 EWL_ENGINE_THEME_OBJECT_PART_TEXT_SET,
00086 EWL_ENGINE_THEME_OBJECT_COLOR_CLASS_SET,
00087
00088 EWL_ENGINE_THEME_CLIP_ADD,
00089 EWL_ENGINE_THEME_CLIP_DEL,
00090 EWL_ENGINE_THEME_CLIP_CLIPEES_GET,
00091 EWL_ENGINE_THEME_CLIP_COLOR_SET,
00092
00093 EWL_ENGINE_THEME_WIDGET_STACK_ADD,
00094 EWL_ENGINE_THEME_WIDGET_LAYER_UPDATE,
00095 EWL_ENGINE_THEME_MAX,
00096 };
00097
00098 enum Ewl_Engine_Pointer_Hooks
00099 {
00100 EWL_ENGINE_POINTER_DATA_NEW,
00101 EWL_ENGINE_POINTER_FREE,
00102 EWL_ENGINE_POINTER_GET,
00103 EWL_ENGINE_POINTER_SET,
00104 EWL_ENGINE_POINTER_MAX
00105 };
00106
00107 typedef enum Ewl_Engine_Window_Hooks Ewl_Engine_Window_Hooks;
00108 typedef enum Ewl_Engine_Theme_Hooks Ewl_Engine_Theme_Hooks;
00109 typedef enum Ewl_Engine_Canvas_Hooks Ewl_Engine_Canvas_Hooks;
00110 typedef enum Ewl_Engine_Pointer_Hooks Ewl_Engine_Pointer_Hooks;
00111
00112 #define EWL_ENGINE(engine) ((Ewl_Engine *)engine)
00113
00117 typedef struct Ewl_Engine Ewl_Engine;
00118
00122 typedef struct Ewl_Engine_Info Ewl_Engine_Info;
00123
00127 struct Ewl_Engine_Info
00128 {
00129 void (*shutdown)(Ewl_Engine *engine);
00131 struct
00132 {
00133 void **window;
00134 void **canvas;
00135 void **theme;
00136 void **pointer;
00137 } hooks;
00138 };
00139
00143 struct Ewl_Engine
00144 {
00145 Ecore_Plugin * plugin;
00147 Ecore_DList *dependancies;
00148 Ewl_Engine_Info *functions;
00150 };
00151
00152 extern Ecore_Path_Group *ewl_engines_path;
00153
00154 int ewl_engines_init(void);
00155 void ewl_engines_shutdown(void);
00156
00157 Ecore_List *ewl_engine_names_get(void);
00158
00159 Ewl_Engine *ewl_engine_new(const char *name,
00160 int *argc, char ** argv);
00161
00162 void ewl_engine_event_handlers_init(void);
00163 void ewl_engine_event_handlers_shutdown(void);
00164
00165 void ewl_engine_engine_shutdown(Ewl_Window *win);
00166
00167 void ewl_engine_window_new(Ewl_Window *win);
00168 void ewl_engine_window_destroy(Ewl_Window *win);
00169
00170 void ewl_engine_window_move(Ewl_Window *win);
00171 void ewl_engine_window_resize(Ewl_Window *win);
00172 void ewl_engine_window_min_max_size_set(Ewl_Window *win);
00173 void ewl_engine_window_show(Ewl_Window *win);
00174 void ewl_engine_window_hide(Ewl_Window *win);
00175
00176 void ewl_engine_window_title_set(Ewl_Window *win);
00177 void ewl_engine_window_name_class_set(Ewl_Window *win);
00178
00179 void ewl_engine_window_borderless_set(Ewl_Window *win);
00180 void ewl_engine_window_dialog_set(Ewl_Window *win);
00181 void ewl_engine_window_states_set(Ewl_Window *win);
00182 void ewl_engine_window_hints_set(Ewl_Window *win);
00183 void ewl_engine_window_transient_for(Ewl_Window *win);
00184 void ewl_engine_window_leader_set(Ewl_Window *win);
00185
00186 void ewl_engine_window_raise(Ewl_Window *win);
00187 void ewl_engine_window_lower(Ewl_Window *win);
00188
00189 int ewl_engine_keyboard_grab(Ewl_Window *win);
00190 void ewl_engine_keyboard_ungrab(Ewl_Window *win);
00191 int ewl_engine_pointer_grab(Ewl_Window *win);
00192 void ewl_engine_pointer_ungrab(Ewl_Window *win);
00193
00194 void ewl_engine_window_geometry_get(Ewl_Window *win, int root,
00195 int *width, int *height);
00196 void ewl_engine_embed_selection_text_set(Ewl_Embed *emb,
00197 const char *txt);
00198 void ewl_engine_embed_dnd_aware_set(Ewl_Embed *embed);
00199 void ewl_engine_embed_dnd_drag_types_set(Ewl_Embed *embed,
00200 char **types,
00201 unsigned int num);
00202 void ewl_engine_embed_dnd_drag_start(Ewl_Embed *embed);
00203 void ewl_engine_embed_dnd_drag_drop(Ewl_Embed *embed);
00204 int ewl_engine_embed_dnd_drag_data_send(Ewl_Embed *embed,
00205 void *handle,
00206 void *data,
00207 int size);
00208 void ewl_engine_desktop_size_get(Ewl_Embed *embed, int *w, int *h);
00209
00210 void ewl_engine_canvas_setup(Ewl_Window *win, int debug);
00211 void ewl_engine_canvas_output_set(Ewl_Embed *emb, int x, int y,
00212 int width, int height);
00213 void ewl_engine_canvas_render(Ewl_Embed *embed);
00214 void ewl_engine_canvas_freeze(Ewl_Embed *embed);
00215 void ewl_engine_canvas_thaw(Ewl_Embed *embed);
00216 void ewl_engine_canvas_damage_add(Ewl_Embed *embed, int x, int y,
00217 int w, int h);
00218
00219 void ewl_engine_theme_freeze(Ewl_Embed *embed);
00220 void ewl_engine_theme_thaw(Ewl_Embed *embed);
00221 char *ewl_engine_theme_data_get(Ewl_Widget *w, char *key);
00222
00223 int ewl_engine_pointer_data_new(Ewl_Embed *embed,
00224 unsigned int *data, int w, int h);
00225 void ewl_engine_pointer_free(Ewl_Embed *embed, int pointer);
00226 void ewl_engine_pointer_set(Ewl_Embed *embed, int pointer);
00227 int ewl_engine_pointer_get(Ewl_Embed *embed);
00228
00234 typedef void (*Ewl_Engine_Cb_Window_New)(Ewl_Window *win);
00235 typedef void (*Ewl_Engine_Cb_Window_Destroy)(Ewl_Window *win);
00236 typedef void (*Ewl_Engine_Cb_Window_Move)(Ewl_Window *win);
00238 typedef void (*Ewl_Engine_Cb_Window_Resize)(Ewl_Window *win);
00239 typedef void (*Ewl_Engine_Cb_Window_Min_Max_Size_Set)(Ewl_Window *win);
00241 typedef void (*Ewl_Engine_Cb_Window_Show)(Ewl_Window *win);
00242 typedef void (*Ewl_Engine_Cb_Window_Hide)(Ewl_Window *win);
00243 typedef void (*Ewl_Engine_Cb_Window_Title_Set)(Ewl_Window *win);
00244 typedef void (*Ewl_Engine_Cb_Window_Name_Class_Set)(Ewl_Window *win);
00246 typedef void (*Ewl_Engine_Cb_Window_Borderless_Set)(Ewl_Window *win);
00248 typedef void (*Ewl_Engine_Cb_Window_Dialog_Set)(Ewl_Window *win);
00250 typedef void (*Ewl_Engine_Cb_Window_Transient_For)(Ewl_Window *win);
00252 typedef void (*Ewl_Engine_Cb_Window_Leader_Set)(Ewl_Window *win);
00254 typedef void (*Ewl_Engine_Cb_Window_States_Set)(Ewl_Window *win);
00255 typedef void (*Ewl_Engine_Cb_Window_Hints_Set)(Ewl_Window *win);
00256 typedef void (*Ewl_Engine_Cb_Window_Raise)(Ewl_Window *win);
00257 typedef void (*Ewl_Engine_Cb_Window_Lower)(Ewl_Window *win);
00258 typedef int (*Ewl_Engine_Cb_Keyboard_Grab)(Ewl_Window *win);
00259 typedef void (*Ewl_Engine_Cb_Keyboard_Ungrab)(Ewl_Window *win);
00261 typedef int (*Ewl_Engine_Cb_Pointer_Grab)(Ewl_Window *win);
00262 typedef void (*Ewl_Engine_Cb_Pointer_Ungrab)(Ewl_Window *win);
00263 typedef void (*Ewl_Engine_Cb_Window_Selection_Text_Set)(Ewl_Embed *emb,
00264 const char *txt);
00266 typedef void (*Ewl_Engine_Cb_Window_Geometry_Get)(Ewl_Window *win,
00267 int *width, int *height);
00269 typedef void (*Ewl_Engine_Cb_Window_Dnd_Aware_Set)(Ewl_Embed *embed);
00271 typedef void (*Ewl_Engine_Cb_Window_Dnd_Drag_Types_Set)(Ewl_Embed *embed, char **types, unsigned int num);
00272 typedef void (*Ewl_Engine_Cb_Window_Dnd_Drag_Start)(Ewl_Embed *embed);
00273 typedef void (*Ewl_Engine_Cb_Window_Dnd_Drag_Drop)(Ewl_Embed *embed);
00274 typedef int (*Ewl_Engine_Cb_Window_Dnd_Drag_Data_Send)(Ewl_Embed *embed, void *handle, void *data, int size);
00275 typedef void (*Ewl_Engine_Cb_Window_Desktop_Size_Get)(Ewl_Embed *embed,
00276 int *w, int *h);
00278 typedef void (*Ewl_Engine_Cb_Canvas_Setup)(Ewl_Window *win, int debug);
00279 typedef void (*Ewl_Engine_Cb_Canvas_Output_Set)(Ewl_Embed *emb, int x, int y,
00280 int width, int height);
00281 typedef void (*Ewl_Engine_Cb_Canvas_Render)(Ewl_Embed *embed);
00282 typedef void (*Ewl_Engine_Cb_Canvas_Freeze)(Ewl_Embed *embed);
00283 typedef void (*Ewl_Engine_Cb_Canvas_Thaw)(Ewl_Embed *embed);
00284 typedef void (*Ewl_Engine_Cb_Canvas_Damage_Add)(Ewl_Embed *embed,
00285 int x, int y, int w, int h);
00286 typedef void (*Ewl_Engine_Cb_Theme_Freeze)();
00287 typedef void (*Ewl_Engine_Cb_Theme_Thaw)();
00288 typedef char *(*Ewl_Engine_Cb_Theme_Data_Get)(const char *path, char *key);
00289 typedef void *(*Ewl_Engine_Cb_Theme_Widget_Group)(Ewl_Widget *w);
00290 typedef void *(*Ewl_Engine_Cb_Theme_Object_Add)(Ewl_Embed *embed);
00291 typedef void (*Ewl_Engine_Cb_Theme_Object_Del)(void *obj);
00292 typedef void (*Ewl_Engine_Cb_Theme_Object_Move)(void *obj, int x, int y);
00293 typedef void (*Ewl_Engine_Cb_Theme_Object_Resize)(void *obj, int w, int h);
00294 typedef void *(*Ewl_Engine_Cb_Theme_Object_Show)(void *obj);
00295 typedef void *(*Ewl_Engine_Cb_Theme_Object_Hide)(void *obj);
00296 typedef void *(*Ewl_Engine_Cb_Theme_Object_Clip_Set)(void *obj, void *clip);
00297 typedef void *(*Ewl_Engine_Cb_Theme_Object_Clip_Unset)(void *obj);
00298 typedef void (*Ewl_Engine_Cb_Theme_Object_Stack_Add)(Ewl_Widget *w);
00299 typedef void (*Ewl_Engine_Cb_Theme_Object_Layer_Update)(Ewl_Widget *w);
00300 typedef void (*Ewl_Engine_Cb_Theme_Object_File_Set)(void *obj, char *path,
00301 char *group);
00302 typedef void *(*Ewl_Engine_Cb_Theme_Object_Load_Error)(void *obj);
00303 typedef void (*Ewl_Engine_Cb_Theme_Object_Min_Size_Get)(void *obj, int *w, int *h);
00304 typedef void (*Ewl_Engine_Cb_Theme_Object_Max_Size_Get)(void *obj, int *w, int *h);
00305 typedef void (*Ewl_Engine_Cb_Theme_Object_Signal_Send)(void *obj,
00306 char *state, char *source);
00307 typedef void (*Ewl_Engine_Cb_Theme_Object_Part_Text_Set)(void *obj,
00308 char *part, char *text);
00309 typedef void (*Ewl_Engine_Cb_Theme_Object_Color_Class_Set)(char *name, int r,
00310 int g, int b, int r2,
00311 int g2, int b2, int r3,
00312 int g3, int b3);
00313 typedef void *(*Ewl_Engine_Cb_Theme_Clip_Add)(Ewl_Embed *embed);
00314 typedef void (*Ewl_Engine_Cb_Theme_Clip_Del)(void *clip);
00315 typedef void *(*Ewl_Engine_Cb_Theme_Clip_Clipees_Get)(void *clip);
00316 typedef void (*Ewl_Engine_Cb_Theme_Clip_Color_Set)(void *clip, int r, int g,
00317 int b, int a);
00318
00319 typedef int (*Ewl_Engine_Cb_Pointer_Data_New)(Ewl_Embed *embed,
00320 unsigned int *data,
00321 int w, int h);
00322 typedef void (*Ewl_Engine_Cb_Pointer_Free)(Ewl_Embed *embed, int pointer);
00323 typedef void (*Ewl_Engine_Cb_Pointer_Set)(Ewl_Embed *embed, int pointer);
00324 typedef int (*Ewl_Engine_Cb_Pointer_Get)(Ewl_Embed *embed);
00325
00326 #endif
00327