1 #ifndef E_COMP_OBJECT_INTERN_H
2 #define E_COMP_OBJECT_INTERN_H
5 #include "e_comp_object.h"
8 #include <wayland-server.h>
10 //#ifdef REFACTOR_DESK_AREA
11 typedef struct _E_Comp_Object E_Comp_Object;
16 int x, y, w, h; // geometry
20 E_Comp_Object_Frame client_inset;
30 Eina_Stringshare *frame_theme;
31 Eina_Stringshare *frame_name;
32 Eina_Stringshare *visibility_effect; //effect when toggling visibility
34 E_Comp_Object_Content_Type content_type; // type of e.swallow.content
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
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
55 Evas_Native_Surface *ns; //for custom gl rendering
57 struct wl_listener buffer_destroy_listener;
59 unsigned int update_count; // how many updates have happened to this obj
61 unsigned int opacity; // opacity set with _NET_WM_WINDOW_OPACITY
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
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
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
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
86 Eina_Bool updates_exist : 1;
87 Eina_Bool updates_full : 1; // entire object will be updated
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;
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.
106 } indicator; //indicator object for internal client
110 Evas_Object *mask_obj;
113 int mask_x, mask_y, mask_w, mask_h;
116 Eina_Bool render_trace : 1; // trace co->obj rendering on canvas
118 tbm_surface_h tbm_surface;
119 E_Comp_Image_Filter image_filter;
120 Eina_Bool set_mouse_callbacks;
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;
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 set_layer;
150 struct wl_signal stack_above;
151 struct wl_signal stack_below;
152 struct wl_signal image_filter_set;
153 struct wl_signal render_op_set;
154 struct wl_signal content_type_set;
155 struct wl_signal color_set;
156 struct wl_signal color_visible_set;
157 struct wl_signal resize;
160 Eina_Bool color_visible;
164 typedef struct _E_Comp_Object_Data_Set_Layer
168 } E_Comp_Object_Data_Set_Layer;
170 typedef struct _E_Comp_Object_Data_Stack_Above
173 Evas_Object *above_obj; // above_obj
174 } E_Comp_Object_Data_Stack_Above;
176 typedef struct _E_Comp_Object_Data_Stack_Below
179 Evas_Object *below_obj; // below_obj
180 } E_Comp_Object_Data_Stack_Below;
182 extern EINTERN int E_EVENT_COMP_OBJECT_ADD;
183 extern EINTERN int E_EVENT_COMP_OBJECT_IMG_RENDER;
184 extern EINTERN int E_EVENT_COMP_OBJECT_EFFECT_START;
185 extern EINTERN int E_EVENT_COMP_OBJECT_EFFECT_END;
187 EINTERN void e_comp_object_init(void);
188 EINTERN void e_comp_object_shutdown(void);
190 EINTERN Evas_Object *e_comp_object_client_add(E_Client *ec);
191 EINTERN Eina_Bool e_comp_object_alpha_get(Evas_Object *obj);
192 EINTERN Eina_Bool e_comp_object_color_visible_get(Evas_Object *obj);
193 EINTERN void e_comp_object_clear(Evas_Object *obj);
194 EINTERN Eina_Bool e_comp_object_redirected_get(Evas_Object *obj);
195 EINTERN Eina_Bool e_comp_object_mirror_visibility_check(Evas_Object *obj);
196 EINTERN void e_comp_object_input_objs_del(Evas_Object *obj);
197 EINTERN Eina_Bool e_comp_object_hwc_update_exists(Evas_Object *obj);
198 EINTERN void e_comp_object_damage_trace_debug(Eina_Bool onoff);
200 EINTERN Eina_Bool e_comp_object_frame_allowed(Evas_Object *obj);
201 EINTERN void e_comp_object_frame_geometry_get(Evas_Object *obj, int *l, int *r, int *t, int *b);
202 EINTERN void e_comp_object_frame_geometry_set(Evas_Object *obj, int l, int r, int t, int b);
203 EINTERN Eina_Bool e_comp_object_frame_exists(Evas_Object *obj);
204 EINTERN Eina_Bool e_comp_object_frame_theme_set(Evas_Object *obj, const char *name);
205 EINTERN void e_comp_object_frame_extends_get(Evas_Object *obj, int *x, int *y, int *w, int *h);
207 EINTERN E_Zone *e_comp_object_util_zone_get(Evas_Object *obj);
208 EINTERN void e_comp_object_util_del_list_append(Evas_Object *obj, Evas_Object *to_del);
209 EINTERN void e_comp_object_util_del_list_remove(Evas_Object *obj, Evas_Object *to_del);
210 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);
211 EINTERN void e_comp_object_util_center(Evas_Object *obj);
212 EINTERN void e_comp_object_util_center_on(Evas_Object *obj, Evas_Object *on);
213 EINTERN void e_comp_object_util_center_pos_get(Evas_Object *obj, int *x, int *y);
214 EINTERN void e_comp_object_util_fullscreen(Evas_Object *obj);
216 EINTERN Eina_Bool e_comp_object_damage_exists(Evas_Object *obj);
217 EINTERN void e_comp_object_shape_apply(Evas_Object *obj);
218 EINTERN void e_comp_object_redirected_set(Evas_Object *obj, Eina_Bool set);
219 EINTERN void e_comp_object_blank(Evas_Object *obj, Eina_Bool set);
220 EINTERN void e_comp_object_size_update(Evas_Object *obj, int w, int h);
222 EINTERN void e_comp_object_render_update_add(Evas_Object *obj);
223 EINTERN void e_comp_object_render_update_del(Evas_Object *obj);
225 EINTERN void e_comp_object_native_surface_set(Evas_Object *obj, Eina_Bool set);
226 EINTERN void e_comp_object_native_surface_override(Evas_Object *obj, Evas_Native_Surface *ns);
228 EINTERN Eina_Bool e_comp_object_effect_allowed_get(Evas_Object *obj);
229 EINTERN void e_comp_object_effect_clip(Evas_Object *obj);
230 EINTERN void e_comp_object_effect_unclip(Evas_Object *obj);
232 EINTERN void e_comp_object_transform_bg_vertices_set(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices);
233 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);
234 EINTERN void e_comp_object_transform_transp_vertices_set(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices);
235 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 //#ifdef REFACTOR_DESK_AREA
239 EINTERN void e_comp_object_layer_update(Evas_Object *obj, Evas_Object *above, Evas_Object *below);
241 EINTERN int e_comp_object_layer_get(Evas_Object *obj);
243 EINTERN Eina_Bool e_comp_object_content_unset(Evas_Object* obj);
244 EINTERN Evas_Object *e_comp_object_content_get(Evas_Object* obj);
246 EINTERN E_Client *e_comp_object_dim_client_get(void);
247 EINTERN void e_comp_object_dim_mask_set(Evas_Object *obj, Eina_Bool set);
249 EINTERN void e_comp_object_indicator_swallow(Evas_Object *obj, Evas_Object *indicator);
250 EINTERN void e_comp_object_indicator_unswallow(Evas_Object *obj, Evas_Object *indicator);
251 EINTERN void e_comp_object_indicator_size_set(Evas_Object *obj, int w, int h);
253 EINTERN Eina_Bool e_comp_object_image_filter_set(Evas_Object *obj, E_Comp_Image_Filter filter);
254 EINTERN E_Comp_Image_Filter e_comp_object_image_filter_get(Evas_Object *obj);
256 EINTERN E_Map *e_comp_object_map_get(const Evas_Object *obj);
257 EINTERN void e_comp_object_map_update(Evas_Object *obj);
259 EINTERN void e_comp_object_render_op_set(Evas_Object *obj, Evas_Render_Op op);
260 EINTERN Evas_Render_Op e_comp_object_render_op_get(Evas_Object *obj);
261 EINTERN Eina_Bool e_comp_object_render_trace_set(Evas_Object *obj, Eina_Bool set);
263 //#ifdef REFACTOR_DESK_AREA
264 typedef void (*E_Comp_Object_Stack_Func)(Evas_Object *obj, Evas_Object *stack);
267 //#ifdef REFACTOR_DESK_AREA
268 EINTERN void e_comp_object_lower(E_Comp_Object *cw, Evas_Object *obj);
269 EINTERN void e_comp_object_raise(Evas_Object *obj);
270 EINTERN void e_comp_object_layer_set(Evas_Object *obj, short layer);
271 EINTERN void e_comp_object_stack_above(Evas_Object *obj, Evas_Object *target);
272 EINTERN void e_comp_object_stack_below(Evas_Object *obj, Evas_Object *target);
273 EINTERN void e_comp_object_transform_obj_stack_update(Evas_Object *obj);
277 EINTERN void e_comp_object_lower_listener_add(Evas_Object *obj, struct wl_listener *listener);
278 //#ifdef REFACTOR_DESK_AREA
279 EINTERN void e_comp_object_lower_done_listener_add(Evas_Object *obj, struct wl_listener *listener);
280 EINTERN void e_comp_object_raise_listener_add(Evas_Object *obj, struct wl_listener *listener);
282 EINTERN void e_comp_object_show_listener_add(Evas_Object *obj, struct wl_listener *listener);
283 EINTERN void e_comp_object_hide_listener_add(Evas_Object *obj, struct wl_listener *listener);
284 //#ifdef REFACTOR_DESK_AREA
285 EINTERN void e_comp_object_set_layer_listener_add(Evas_Object *obj, struct wl_listener *listener);
286 EINTERN void e_comp_object_stack_above_listener_add(Evas_Object *obj, struct wl_listener *listener);
287 EINTERN void e_comp_object_stack_below_listener_add(Evas_Object *obj, struct wl_listener *listener);
290 EINTERN void e_comp_object_image_filter_set_listener_add(Evas_Object *obj, struct wl_listener *listener);
291 EINTERN void e_comp_object_render_op_set_listener_add(Evas_Object *obj, struct wl_listener *listener);
292 EINTERN void e_comp_object_content_type_set_listener_add(Evas_Object *obj, struct wl_listener *listener);
293 EINTERN void e_comp_object_color_set_listener_add(Evas_Object *obj, struct wl_listener *listener);
294 EINTERN void e_comp_object_color_visible_set_listener_add(Evas_Object *obj, struct wl_listener *listener);
295 EINTERN void e_comp_object_resize_listener_add(Evas_Object *obj, struct wl_listener *listener);