8044dc14c9cd7b07fd2470703fa39e6b37c57583
[platform/core/uifw/e-mod-tizen-effect.git] / src / e_mod_effect.h
1 #ifndef E_MOD_EFFECT_H
2 # define E_MOD_EFFECT_H
3
4 # include <e.h>
5 # include <tizen-extension-server-protocol.h>
6
7 #define EFFINF(f, cp, ec, x...) ELOGF("EFFECT", f, cp, ec, ##x)
8 #define EFFDBG(f, cp, ec, x...)                            \
9    do                                                      \
10      {                                                     \
11         if ((!cp) && (!ec))                                \
12           DBG("EWL|%20.20s|             |             |"f, \
13               "EFFECT", ##x);                                   \
14         else                                               \
15           DBG("EWL|%20.20s|cp:0x%08x|ec:0x%08x|"f,         \
16               "EFFECT",                                         \
17               (unsigned int)(cp),                          \
18               (unsigned int)(ec),                          \
19               ##x);                                        \
20      }                                                     \
21    while (0)
22
23 typedef struct _E_Effect E_Effect;
24 typedef enum _E_Effect_Type E_Effect_Type;
25 typedef enum _E_Effect_Group E_Effect_Group;
26
27 enum _E_Effect_Type
28 {
29    E_EFFECT_TYPE_SHOW,
30    E_EFFECT_TYPE_HIDE,
31    E_EFFECT_TYPE_ICONIFY,
32    E_EFFECT_TYPE_UNICONIFY,
33    E_EFFECT_TYPE_RESTACK_SHOW,
34    E_EFFECT_TYPE_RESTACK_HIDE,
35    E_EFFECT_TYPE_LAUNCH,
36    E_EFFECT_TYPE_NONE,
37 };
38
39 enum _E_Effect_Group
40 {
41    E_EFFECT_GROUP_NORMAL,
42    E_EFFECT_GROUP_HOME,
43    E_EFFECT_GROUP_LOCKSCREEN,
44    E_EFFECT_GROUP_KEYBOARD,
45    E_EFFECT_GROUP_BACKGROUND,
46    E_EFFECT_GROUP_NONE,
47 };
48
49 struct _E_Effect
50 {
51    struct wl_global *global;
52    Eina_Hash *resources;
53    const char *file;
54    const char *style;
55
56    Eina_List *providers;
57    Eina_List *event_hdlrs;
58    Eina_List *hooks_ec;
59
60    Eina_Hash *clients;
61
62    struct {
63         Evas_Object *obj;
64    }layers[E_CLIENT_LAYER_COUNT];
65
66    struct {
67       Eina_List *old;
68       Eina_List *cur;
69    } stack;
70
71    struct {
72       Edje_Signal_Cb cb;
73       E_Client *ec;
74       void *data;
75       E_Effect_Type type;
76    } next_done;
77
78    Eina_List *under_layers;
79    Eina_Bool under_checked;
80 };
81
82 EAPI Eina_Bool e_mod_effect_init(void);
83 EAPI void e_mod_effect_shutdown(void);
84
85 #endif