e_comp_object: remove "hiding" smart call
[platform/upstream/enlightenment.git] / src / bin / e_comp_object_intern.h
1 #ifndef E_COMP_OBJECT_INTERN_H
2 #define E_COMP_OBJECT_INTERN_H
3
4 #include "e_intern.h"
5 #include "e_comp_object.h"
6 #include "e_object.h"
7
8 #include <wayland-server.h>
9
10 //#ifdef REFACTOR_DESK_AREA
11 typedef struct _E_Comp_Object E_Comp_Object;
12 struct _E_Comp_Object
13 {
14    EINA_INLIST;
15
16    int                  x, y, w, h;  // geometry
17
18    E_Client *ec;
19
20    E_Comp_Object_Frame client_inset;
21    struct
22    {
23       double          start;
24       double          val;
25       int             x, y;
26       E_Direction     dir;
27       Ecore_Animator *anim;
28    } shade;
29
30    Eina_Stringshare   *frame_theme;
31    Eina_Stringshare   *frame_name;
32    Eina_Stringshare   *visibility_effect; //effect when toggling visibility
33
34    E_Comp_Object_Content_Type content_type; // type of e.swallow.content
35
36    Evas_Object         *smart_obj;  // smart object
37    Evas_Object         *clip; // clipper over effect object
38    Evas_Object         *input_obj; // input smart object
39    Evas_Object         *obj;  // composite object
40    Evas_Object         *frame_object; // for client frames
41    Evas_Object         *shobj;  // shadow object
42    Evas_Object         *effect_obj; // effects object
43    Evas_Object         *transform_bg_obj;   // transform backgroung with keep_ratio option
44    struct
45      {
46         int r, g, b, a;
47      } transform_bg_color;
48    Evas_Object         *transform_tranp_obj;// transform transp rect obj
49    Evas_Object         *default_input_obj; // default input object
50    unsigned int         layer; //e_comp_canvas_layer_map(cw->ec->layer)
51    Eina_List           *obj_mirror;  // extra mirror objects
52    Eina_Tiler          *updates; //render update regions
53    Eina_Tiler          *pending_updates; //render update regions which are about to render
54
55    Evas_Native_Surface *ns; //for custom gl rendering
56
57    struct wl_listener   buffer_destroy_listener;
58
59    unsigned int         update_count;  // how many updates have happened to this obj
60
61    unsigned int         opacity;  // opacity set with _NET_WM_WINDOW_OPACITY
62
63    unsigned int         animating;  // it's busy animating
64    unsigned int         failures; //number of consecutive e_pixmap_image_draw() failures
65    unsigned int         force_visible; //number of visible obj_mirror objects
66    Eina_Bool            delete_pending : 1;  // delete pending
67    Eina_Bool            defer_hide : 1;  // flag to get hide to work on deferred hide
68    Eina_Bool            showing : 1;  // object is currently in "show" animation
69    Eina_Bool            hiding : 1;   // object is currently in "hide" animation
70    Eina_Bool            visible : 1;  // is visible
71
72    Eina_Bool            shaped : 1;  // is shaped
73    Eina_Bool            update : 1;  // has updates to fetch
74    Eina_Bool            redirected : 1;  // has updates to fetch
75    Eina_Bool            native : 1;  // native
76
77    Eina_Bool            nocomp : 1;  // nocomp applied
78    Eina_Bool            hwc_need_update : 1;  // this window updated while on e_plane to do hw composite
79    Eina_Bool            real_hid : 1;  // last hide was a real window unmap
80
81    Eina_Bool            effect_set : 1; //effect_obj has a valid group
82    Eina_Bool            effect_running : 1; //effect_obj is playing an animation
83    Eina_Bool            effect_clip : 1; //effect_obj is clipped
84    Eina_Bool            effect_clip_able : 1; //effect_obj will be clipped for effects
85
86    Eina_Bool            updates_exist : 1;
87    Eina_Bool            updates_full : 1; // entire object will be updated
88
89    Eina_Bool            force_move : 1;
90    Eina_Bool            frame_extends : 1; //frame may extend beyond object size
91    Eina_Bool            blanked : 1; //window is rendering blank content (externally composited)
92    Eina_Bool            external_content : 1; // e.swallow.content(obj) is set by external evas object
93    Eina_Bool            user_alpha_set : 1;
94    Eina_Bool            user_alpha : 1;
95
96    struct
97      {
98         Evas_Object         *obj; // mask object: transparent parts of this comp object allow to copy the alpha to current H/W plane.
99         Evas_Render_Op       saved_render_op; // saved render operation value to restore when clear a mask.
100      } mask;
101
102    struct
103      {
104         Evas_Object         *obj;
105         int                  w, h;
106      } indicator; //indicator object for internal client
107
108    struct
109      {
110         Evas_Object         *mask_obj;
111         Eina_Bool           enable;
112         Eina_Bool           mask_set;
113         int                 mask_x, mask_y, mask_w, mask_h;
114      } dim;
115
116    Eina_Bool            render_trace : 1; // trace co->obj rendering on canvas
117
118    tbm_surface_h        tbm_surface;
119    E_Comp_Image_Filter  image_filter;
120    Eina_Bool            set_mouse_callbacks;
121
122    struct
123      {
124         int lock;
125         E_Comp_Wl_Buffer_Ref buffer_ref;
126         Eina_Bool            pending_move_set;
127         int                  pending_move_x, pending_move_y;
128         Eina_Bool            pending_resize_set;
129         int                  pending_resize_w, pending_resize_h;
130      } render_update_lock;
131
132    struct
133      {
134         Eina_Bool        set;
135         Eina_Bool        setting;
136         int              user_r;
137         int              user_g;
138         int              user_b;
139         int              user_a;
140      } transparent;
141
142    struct
143      {
144         struct wl_signal lower;
145         struct wl_signal lower_done;
146         struct wl_signal raise;
147         struct wl_signal show;
148         struct wl_signal hide;
149         struct wl_signal hiding;
150         struct wl_signal set_layer;
151         struct wl_signal stack_above;
152         struct wl_signal stack_below;
153         struct wl_signal image_filter_set;
154         struct wl_signal render_op_set;
155         struct wl_signal content_type_set;
156         struct wl_signal color_set;
157         struct wl_signal color_visible_set;
158         struct wl_signal resize;
159      } events;
160
161    Eina_Bool color_visible;
162 };
163 //#endif
164
165 typedef struct _E_Comp_Object_Data_Set_Layer
166 {
167    E_Comp_Object *cw;
168    int   layer; // layer
169 } E_Comp_Object_Data_Set_Layer;
170
171 typedef struct _E_Comp_Object_Data_Stack_Above
172 {
173    E_Comp_Object *cw;
174    Evas_Object   *above_obj; // above_obj
175 } E_Comp_Object_Data_Stack_Above;
176
177 typedef struct _E_Comp_Object_Data_Stack_Below
178 {
179    E_Comp_Object *cw;
180    Evas_Object   *below_obj; // below_obj
181 } E_Comp_Object_Data_Stack_Below;
182
183 extern EINTERN int E_EVENT_COMP_OBJECT_ADD;
184 extern EINTERN int E_EVENT_COMP_OBJECT_IMG_RENDER;
185 extern EINTERN int E_EVENT_COMP_OBJECT_EFFECT_START;
186 extern EINTERN int E_EVENT_COMP_OBJECT_EFFECT_END;
187
188 EINTERN void e_comp_object_init(void);
189 EINTERN void e_comp_object_shutdown(void);
190
191 EINTERN Evas_Object *e_comp_object_client_add(E_Client *ec);
192 EINTERN Eina_Bool    e_comp_object_alpha_get(Evas_Object *obj);
193 EINTERN Eina_Bool    e_comp_object_color_visible_get(Evas_Object *obj);
194 EINTERN void         e_comp_object_clear(Evas_Object *obj);
195 EINTERN Eina_Bool    e_comp_object_redirected_get(Evas_Object *obj);
196 EINTERN Eina_Bool    e_comp_object_mirror_visibility_check(Evas_Object *obj);
197 EINTERN void         e_comp_object_input_objs_del(Evas_Object *obj);
198 EINTERN Eina_Bool    e_comp_object_hwc_update_exists(Evas_Object *obj);
199 EINTERN void         e_comp_object_damage_trace_debug(Eina_Bool onoff);
200
201 EINTERN Eina_Bool e_comp_object_frame_allowed(Evas_Object *obj);
202 EINTERN void      e_comp_object_frame_geometry_get(Evas_Object *obj, int *l, int *r, int *t, int *b);
203 EINTERN void      e_comp_object_frame_geometry_set(Evas_Object *obj, int l, int r, int t, int b);
204 EINTERN Eina_Bool e_comp_object_frame_exists(Evas_Object *obj);
205 EINTERN Eina_Bool e_comp_object_frame_theme_set(Evas_Object *obj, const char *name);
206 EINTERN void      e_comp_object_frame_extends_get(Evas_Object *obj, int *x, int *y, int *w, int *h);
207
208 EINTERN E_Zone   *e_comp_object_util_zone_get(Evas_Object *obj);
209 EINTERN void      e_comp_object_util_del_list_append(Evas_Object *obj, Evas_Object *to_del);
210 EINTERN void      e_comp_object_util_del_list_remove(Evas_Object *obj, Evas_Object *to_del);
211 EINTERN void      e_comp_object_util_autoclose(Evas_Object *obj, E_Comp_Object_Autoclose_Cb del_cb, E_Comp_Object_Key_Cb cb, const void *data);
212 EINTERN void      e_comp_object_util_center(Evas_Object *obj);
213 EINTERN void      e_comp_object_util_center_on(Evas_Object *obj, Evas_Object *on);
214 EINTERN void      e_comp_object_util_center_pos_get(Evas_Object *obj, int *x, int *y);
215 EINTERN void      e_comp_object_util_fullscreen(Evas_Object *obj);
216
217 EINTERN Eina_Bool e_comp_object_damage_exists(Evas_Object *obj);
218 EINTERN void      e_comp_object_shape_apply(Evas_Object *obj);
219 EINTERN void      e_comp_object_redirected_set(Evas_Object *obj, Eina_Bool set);
220 EINTERN void      e_comp_object_blank(Evas_Object *obj, Eina_Bool set);
221 EINTERN void      e_comp_object_size_update(Evas_Object *obj, int w, int h);
222
223 EINTERN void      e_comp_object_render_update_add(Evas_Object *obj);
224 EINTERN void      e_comp_object_render_update_del(Evas_Object *obj);
225
226 EINTERN void      e_comp_object_native_surface_set(Evas_Object *obj, Eina_Bool set);
227 EINTERN void      e_comp_object_native_surface_override(Evas_Object *obj, Evas_Native_Surface *ns);
228
229 EINTERN Eina_Bool e_comp_object_effect_allowed_get(Evas_Object *obj);
230 EINTERN void      e_comp_object_effect_clip(Evas_Object *obj);
231 EINTERN void      e_comp_object_effect_unclip(Evas_Object *obj);
232
233 EINTERN void      e_comp_object_transform_bg_vertices_set(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices);
234 EINTERN void      e_comp_object_transform_bg_vertices_set_with_zoom(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices, E_Util_Transform_Zoom zoom);
235 EINTERN void      e_comp_object_transform_transp_vertices_set(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices);
236 EINTERN void      e_comp_object_transform_transp_vertices_set_with_zoom(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices, E_Util_Transform_Zoom zoom);
237
238 //#ifdef REFACTOR_DESK_AREA
239 //#else
240 EINTERN void      e_comp_object_layer_update(Evas_Object *obj, Evas_Object *above, Evas_Object *below);
241 //#endif
242 EINTERN int       e_comp_object_layer_get(Evas_Object *obj);
243
244 EINTERN Eina_Bool    e_comp_object_content_unset(Evas_Object* obj);
245 EINTERN Evas_Object *e_comp_object_content_get(Evas_Object* obj);
246
247 EINTERN E_Client *e_comp_object_dim_client_get(void);
248 EINTERN void      e_comp_object_dim_mask_set(Evas_Object *obj, Eina_Bool set);
249
250 EINTERN void e_comp_object_indicator_swallow(Evas_Object *obj, Evas_Object *indicator);
251 EINTERN void e_comp_object_indicator_unswallow(Evas_Object *obj, Evas_Object *indicator);
252 EINTERN void e_comp_object_indicator_size_set(Evas_Object *obj, int w, int h);
253
254 EINTERN Eina_Bool           e_comp_object_image_filter_set(Evas_Object *obj, E_Comp_Image_Filter filter);
255 EINTERN E_Comp_Image_Filter e_comp_object_image_filter_get(Evas_Object *obj);
256
257 EINTERN E_Map *e_comp_object_map_get(const Evas_Object *obj);
258 EINTERN void   e_comp_object_map_update(Evas_Object *obj);
259
260 EINTERN void           e_comp_object_render_op_set(Evas_Object *obj, Evas_Render_Op op);
261 EINTERN Evas_Render_Op e_comp_object_render_op_get(Evas_Object *obj);
262 EINTERN Eina_Bool      e_comp_object_render_trace_set(Evas_Object *obj, Eina_Bool set);
263
264 //#ifdef REFACTOR_DESK_AREA
265 typedef void (*E_Comp_Object_Stack_Func)(Evas_Object *obj, Evas_Object *stack);
266 //#endif
267
268 //#ifdef REFACTOR_DESK_AREA
269 EINTERN void e_comp_object_lower(E_Comp_Object *cw, Evas_Object *obj);
270 EINTERN void e_comp_object_raise(Evas_Object *obj);
271 EINTERN void e_comp_object_layer_set(Evas_Object *obj, short layer);
272 EINTERN void e_comp_object_stack_above(Evas_Object *obj, Evas_Object *target);
273 EINTERN void e_comp_object_stack_below(Evas_Object *obj, Evas_Object *target);
274 EINTERN void e_comp_object_transform_obj_stack_update(Evas_Object *obj);
275 //#endif
276
277 // listeners
278 EINTERN void e_comp_object_lower_listener_add(Evas_Object *obj, struct wl_listener *listener);
279 //#ifdef REFACTOR_DESK_AREA
280 EINTERN void e_comp_object_lower_done_listener_add(Evas_Object *obj, struct wl_listener *listener);
281 EINTERN void e_comp_object_raise_listener_add(Evas_Object *obj, struct wl_listener *listener);
282 //#endif
283 EINTERN void e_comp_object_show_listener_add(Evas_Object *obj, struct wl_listener *listener);
284 EINTERN void e_comp_object_hide_listener_add(Evas_Object *obj, struct wl_listener *listener);
285 EINTERN void e_comp_object_hiding_listener_add(Evas_Object *obj, struct wl_listener *listener);
286 //#ifdef REFACTOR_DESK_AREA
287 EINTERN void e_comp_object_set_layer_listener_add(Evas_Object *obj, struct wl_listener *listener);
288 EINTERN void e_comp_object_stack_above_listener_add(Evas_Object *obj, struct wl_listener *listener);
289 EINTERN void e_comp_object_stack_below_listener_add(Evas_Object *obj, struct wl_listener *listener);
290 //#endif
291
292 EINTERN void e_comp_object_image_filter_set_listener_add(Evas_Object *obj, struct wl_listener *listener);
293 EINTERN void e_comp_object_render_op_set_listener_add(Evas_Object *obj, struct wl_listener *listener);
294 EINTERN void e_comp_object_content_type_set_listener_add(Evas_Object *obj, struct wl_listener *listener);
295 EINTERN void e_comp_object_color_set_listener_add(Evas_Object *obj, struct wl_listener *listener);
296 EINTERN void e_comp_object_color_visible_set_listener_add(Evas_Object *obj, struct wl_listener *listener);
297 EINTERN void e_comp_object_resize_listener_add(Evas_Object *obj, struct wl_listener *listener);
298
299 #endif