Migrating source code to RSA from private.
[framework/uifw/e17.git] / src / bin / e_container.h
1 #ifdef E_TYPEDEFS
2
3 typedef enum _E_Container_Shape_Change
4 {
5    E_CONTAINER_SHAPE_ADD,
6    E_CONTAINER_SHAPE_DEL,
7    E_CONTAINER_SHAPE_SHOW,
8    E_CONTAINER_SHAPE_HIDE,
9    E_CONTAINER_SHAPE_MOVE,
10    E_CONTAINER_SHAPE_RESIZE,
11    E_CONTAINER_SHAPE_RECTS
12 } E_Container_Shape_Change;
13
14 typedef struct _E_Container                E_Container;
15 typedef struct _E_Border_List              E_Border_List;
16 typedef struct _E_Container_Shape          E_Container_Shape;
17 typedef struct _E_Container_Shape_Callback E_Container_Shape_Callback;
18 typedef struct _E_Event_Container_Resize   E_Event_Container_Resize;
19
20 #else
21 #ifndef E_CONTAINER_H
22 #define E_CONTAINER_H
23
24 #define E_CONTAINER_TYPE (int) 0xE0b01003
25 #define E_CONTAINER_SHAPE_TYPE (int) 0xE0b01004
26
27 struct _E_Container
28 {
29    E_Object             e_obj_inherit;
30    
31    Ecore_X_Window       win;
32    int                  x, y, w, h;
33    char                 visible : 1;
34    E_Manager           *manager;
35    
36    unsigned int         num;
37    const char          *name;
38    
39    Ecore_Evas          *bg_ecore_evas;
40    Evas                *bg_evas;
41    Evas_Object         *bg_blank_object;
42    Ecore_X_Window       bg_win;
43    Ecore_X_Window       event_win;
44    
45    Eina_List           *shapes;
46    Eina_List           *shape_change_cb;
47    Eina_List           *zones;
48
49    unsigned int clients;
50    struct {
51       Ecore_X_Window win;
52       Eina_List *clients;
53    } layers[7];
54    
55    Ecore_X_Window       scratch_win;
56 };
57
58 struct _E_Border_List
59 {
60    E_Container *container;
61    Eina_Array   client_array;
62    int          pos;
63 };
64
65 struct _E_Container_Shape
66 {
67    E_Object       e_obj_inherit;
68    
69    E_Container   *con;
70    int            x, y, w, h;
71    unsigned char  visible : 1;
72    struct {
73       int x, y, w, h;
74    } solid_rect;
75    Eina_List     *shape;
76 };
77
78 struct _E_Container_Shape_Callback
79 {
80    void (*func) (void *data, E_Container_Shape *es, E_Container_Shape_Change ch);
81    void *data;
82 };
83
84 struct _E_Event_Container_Resize
85 {
86    E_Container *container;
87 };
88
89 EINTERN int          e_container_init(void);
90 EINTERN int          e_container_shutdown(void);
91
92 EAPI E_Container *e_container_new(E_Manager *man);
93 EAPI void         e_container_show(E_Container *con);
94 EAPI void         e_container_hide(E_Container *con);
95 EAPI E_Container *e_container_current_get(E_Manager *man);
96 EAPI E_Container *e_container_number_get(E_Manager *man, int num);
97 EAPI void         e_container_move(E_Container *con, int x, int y);
98 EAPI void         e_container_resize(E_Container *con, int w, int h);
99 EAPI void         e_container_move_resize(E_Container *con, int x, int y, int w, int h);
100 EAPI void         e_container_raise(E_Container *con);
101 EAPI void         e_container_lower(E_Container *con);
102
103 EAPI E_Border_List *e_container_border_list_first(E_Container *con);
104 EAPI E_Border_List *e_container_border_list_last(E_Container *con);
105 EAPI E_Border      *e_container_border_list_next(E_Border_List *list);
106 EAPI E_Border      *e_container_border_list_prev(E_Border_List *list);
107 EAPI void           e_container_border_list_free(E_Border_List *list);
108
109 EAPI E_Zone      *e_container_zone_at_point_get(E_Container *con, int x, int y);
110 EAPI E_Zone      *e_container_zone_number_get(E_Container *con, int num);
111 EAPI E_Zone      *e_container_zone_id_get(E_Container *con, int id);
112
113 EAPI E_Desk            *e_container_desk_window_profile_get(E_Container *con, const char *profile);
114
115 EAPI E_Container_Shape *e_container_shape_add(E_Container *con);
116 EAPI void               e_container_shape_show(E_Container_Shape *es);
117 EAPI void               e_container_shape_hide(E_Container_Shape *es);
118 EAPI void               e_container_shape_move(E_Container_Shape *es, int x, int y);
119 EAPI void               e_container_shape_resize(E_Container_Shape *es, int w, int h);
120 EAPI Eina_List         *e_container_shape_list_get(E_Container *con);
121 EAPI void               e_container_shape_geometry_get(E_Container_Shape *es, int *x, int *y, int *w, int *h);
122 EAPI E_Container       *e_container_shape_container_get(E_Container_Shape *es);
123 EAPI void               e_container_shape_change_callback_add(E_Container *con, void (*func) (void *data, E_Container_Shape *es, E_Container_Shape_Change ch), void *data);
124 EAPI void               e_container_shape_change_callback_del(E_Container *con, void (*func) (void *data, E_Container_Shape *es, E_Container_Shape_Change ch), void *data);
125 EAPI Eina_List         *e_container_shape_rects_get(E_Container_Shape *es);
126 EAPI void               e_container_shape_rects_set(E_Container_Shape *es, Ecore_X_Rectangle *rects, int num);
127 EAPI void               e_container_shape_solid_rect_set(E_Container_Shape *es, int x, int y, int w, int h);
128 EAPI void               e_container_shape_solid_rect_get(E_Container_Shape *es, int *x, int *y, int *w, int *h);
129
130 EAPI int                e_container_borders_count(E_Container *con);
131 EAPI void               e_container_border_add(E_Border *bd);
132 EAPI void               e_container_border_remove(E_Border *bd);
133 EAPI void               e_container_window_raise(E_Container *con, Ecore_X_Window win, int layer);
134 EAPI void               e_container_window_lower(E_Container *con, Ecore_X_Window win, int layer);
135 EAPI E_Border          *e_container_border_raise(E_Border *bd);
136 EAPI E_Border          *e_container_border_lower(E_Border *bd);
137 EAPI void               e_container_border_stack_above(E_Border *bd, E_Border *above);
138 EAPI void               e_container_border_stack_below(E_Border *bd, E_Border *below);
139
140 EAPI void               e_container_all_freeze(void);
141 EAPI void               e_container_all_thaw(void);
142
143 extern EAPI int E_EVENT_CONTAINER_RESIZE;
144
145 #endif
146 #endif