1 #ifndef E_COMP_OBJECT_INTERN_H
2 #define E_COMP_OBJECT_INTERN_H
4 #include <wayland-server.h>
6 //#ifdef REFACTOR_DESK_AREA
7 typedef struct _E_Comp_Object E_Comp_Object;
12 int x, y, w, h; // geometry
16 E_Comp_Object_Frame client_inset;
26 Eina_Stringshare *frame_theme;
27 Eina_Stringshare *frame_name;
28 Eina_Stringshare *visibility_effect; //effect when toggling visibility
30 E_Comp_Object_Content_Type content_type; // type of e.swallow.content
32 Evas_Object *smart_obj; // smart object
33 Evas_Object *clip; // clipper over effect object
34 Evas_Object *input_obj; // input smart object
35 Evas_Object *obj; // composite object
36 Evas_Object *frame_object; // for client frames
37 Evas_Object *shobj; // shadow object
38 Evas_Object *effect_obj; // effects object
39 Evas_Object *transform_bg_obj; // transform backgroung with keep_ratio option
44 Evas_Object *transform_tranp_obj;// transform transp rect obj
45 Evas_Object *default_input_obj; // default input object
46 unsigned int layer; //e_comp_canvas_layer_map(cw->ec->layer)
47 Eina_List *obj_mirror; // extra mirror objects
48 Eina_Tiler *updates; //render update regions
49 Eina_Tiler *pending_updates; //render update regions which are about to render
51 Evas_Native_Surface *ns; //for custom gl rendering
53 struct wl_listener buffer_destroy_listener;
55 unsigned int update_count; // how many updates have happened to this obj
57 unsigned int opacity; // opacity set with _NET_WM_WINDOW_OPACITY
59 unsigned int animating; // it's busy animating
60 unsigned int failures; //number of consecutive e_pixmap_image_draw() failures
61 unsigned int force_visible; //number of visible obj_mirror objects
62 Eina_Bool delete_pending : 1; // delete pending
63 Eina_Bool defer_hide : 1; // flag to get hide to work on deferred hide
64 Eina_Bool showing : 1; // object is currently in "show" animation
65 Eina_Bool hiding : 1; // object is currently in "hide" animation
66 Eina_Bool visible : 1; // is visible
68 Eina_Bool shaped : 1; // is shaped
69 Eina_Bool update : 1; // has updates to fetch
70 Eina_Bool redirected : 1; // has updates to fetch
71 Eina_Bool native : 1; // native
73 Eina_Bool nocomp : 1; // nocomp applied
74 Eina_Bool hwc_need_update : 1; // this window updated while on e_plane to do hw composite
75 Eina_Bool real_hid : 1; // last hide was a real window unmap
77 Eina_Bool effect_set : 1; //effect_obj has a valid group
78 Eina_Bool effect_running : 1; //effect_obj is playing an animation
79 Eina_Bool effect_clip : 1; //effect_obj is clipped
80 Eina_Bool effect_clip_able : 1; //effect_obj will be clipped for effects
82 Eina_Bool updates_exist : 1;
83 Eina_Bool updates_full : 1; // entire object will be updated
85 Eina_Bool force_move : 1;
86 Eina_Bool frame_extends : 1; //frame may extend beyond object size
87 Eina_Bool blanked : 1; //window is rendering blank content (externally composited)
88 Eina_Bool external_content : 1; // e.swallow.content(obj) is set by external evas object
89 Eina_Bool user_alpha_set : 1;
90 Eina_Bool user_alpha : 1;
94 Evas_Object *obj; // mask object: transparent parts of this comp object allow to copy the alpha to current H/W plane.
95 Evas_Render_Op saved_render_op; // saved render operation value to restore when clear a mask.
102 } indicator; //indicator object for internal client
106 Evas_Object *mask_obj;
109 int mask_x, mask_y, mask_w, mask_h;
112 Eina_Bool render_trace : 1; // trace co->obj rendering on canvas
114 tbm_surface_h tbm_surface;
115 E_Comp_Image_Filter image_filter;
116 Eina_Bool set_mouse_callbacks;
121 E_Comp_Wl_Buffer_Ref buffer_ref;
122 Eina_Bool pending_move_set;
123 int pending_move_x, pending_move_y;
124 Eina_Bool pending_resize_set;
125 int pending_resize_w, pending_resize_h;
126 } render_update_lock;
139 struct wl_signal lower;
140 struct wl_signal lower_done;
141 struct wl_signal raise;
142 struct wl_signal show;
143 struct wl_signal hide;
144 struct wl_signal set_layer;
145 struct wl_signal stack_above;
146 struct wl_signal stack_below;
151 typedef struct _E_Comp_Object_Data_Set_Layer
155 } E_Comp_Object_Data_Set_Layer;
157 typedef struct _E_Comp_Object_Data_Stack_Above
160 Evas_Object *above_obj; // above_obj
161 } E_Comp_Object_Data_Stack_Above;
163 typedef struct _E_Comp_Object_Data_Stack_Below
166 Evas_Object *below_obj; // below_obj
167 } E_Comp_Object_Data_Stack_Below;
169 extern EINTERN int E_EVENT_COMP_OBJECT_ADD;
170 extern EINTERN int E_EVENT_COMP_OBJECT_IMG_RENDER;
171 extern EINTERN int E_EVENT_COMP_OBJECT_EFFECT_START;
172 extern EINTERN int E_EVENT_COMP_OBJECT_EFFECT_END;
174 EINTERN void e_comp_object_init(void);
175 EINTERN void e_comp_object_shutdown(void);
177 EINTERN Evas_Object *e_comp_object_client_add(E_Client *ec);
178 EINTERN Eina_Bool e_comp_object_alpha_get(Evas_Object *obj);
179 EINTERN Eina_Bool e_comp_object_color_visible_get(Evas_Object *obj);
180 EINTERN void e_comp_object_clear(Evas_Object *obj);
181 EINTERN Eina_Bool e_comp_object_redirected_get(Evas_Object *obj);
182 EINTERN Eina_Bool e_comp_object_mirror_visibility_check(Evas_Object *obj);
183 EINTERN void e_comp_object_input_objs_del(Evas_Object *obj);
184 EINTERN Eina_Bool e_comp_object_hwc_update_exists(Evas_Object *obj);
185 EINTERN void e_comp_object_damage_trace_debug(Eina_Bool onoff);
187 EINTERN Eina_Bool e_comp_object_frame_allowed(Evas_Object *obj);
188 EINTERN void e_comp_object_frame_geometry_get(Evas_Object *obj, int *l, int *r, int *t, int *b);
189 EINTERN void e_comp_object_frame_geometry_set(Evas_Object *obj, int l, int r, int t, int b);
190 EINTERN Eina_Bool e_comp_object_frame_title_set(Evas_Object *obj, const char *name);
191 EINTERN Eina_Bool e_comp_object_frame_exists(Evas_Object *obj);
192 EINTERN Eina_Bool e_comp_object_frame_theme_set(Evas_Object *obj, const char *name);
193 EINTERN void e_comp_object_frame_extends_get(Evas_Object *obj, int *x, int *y, int *w, int *h);
195 EINTERN E_Zone *e_comp_object_util_zone_get(Evas_Object *obj);
196 EINTERN void e_comp_object_util_del_list_append(Evas_Object *obj, Evas_Object *to_del);
197 EINTERN void e_comp_object_util_del_list_remove(Evas_Object *obj, Evas_Object *to_del);
198 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);
199 EINTERN void e_comp_object_util_center(Evas_Object *obj);
200 EINTERN void e_comp_object_util_center_on(Evas_Object *obj, Evas_Object *on);
201 EINTERN void e_comp_object_util_center_pos_get(Evas_Object *obj, int *x, int *y);
202 EINTERN void e_comp_object_util_fullscreen(Evas_Object *obj);
204 EINTERN Eina_Bool e_comp_object_damage_exists(Evas_Object *obj);
205 EINTERN void e_comp_object_shape_apply(Evas_Object *obj);
206 EINTERN void e_comp_object_redirected_set(Evas_Object *obj, Eina_Bool set);
207 EINTERN void e_comp_object_blank(Evas_Object *obj, Eina_Bool set);
208 EINTERN void e_comp_object_size_update(Evas_Object *obj, int w, int h);
210 EINTERN void e_comp_object_render_update_add(Evas_Object *obj);
211 EINTERN void e_comp_object_render_update_del(Evas_Object *obj);
213 EINTERN void e_comp_object_native_surface_set(Evas_Object *obj, Eina_Bool set);
214 EINTERN void e_comp_object_native_surface_override(Evas_Object *obj, Evas_Native_Surface *ns);
216 EINTERN Eina_Bool e_comp_object_effect_allowed_get(Evas_Object *obj);
217 EINTERN void e_comp_object_effect_clip(Evas_Object *obj);
218 EINTERN void e_comp_object_effect_unclip(Evas_Object *obj);
220 EINTERN void e_comp_object_transform_bg_vertices_set(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices);
221 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);
222 EINTERN void e_comp_object_transform_transp_vertices_set(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices);
223 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);
225 //#ifdef REFACTOR_DESK_AREA
227 EINTERN void e_comp_object_layer_update(Evas_Object *obj, Evas_Object *above, Evas_Object *below);
229 EINTERN int e_comp_object_layer_get(Evas_Object *obj);
231 EINTERN Eina_Bool e_comp_object_content_unset(Evas_Object* obj);
232 EINTERN Evas_Object *e_comp_object_content_get(Evas_Object* obj);
234 EINTERN E_Client *e_comp_object_dim_client_get(void);
235 EINTERN void e_comp_object_dim_mask_set(Evas_Object *obj, Eina_Bool set);
237 EINTERN void e_comp_object_indicator_swallow(Evas_Object *obj, Evas_Object *indicator);
238 EINTERN void e_comp_object_indicator_unswallow(Evas_Object *obj, Evas_Object *indicator);
239 EINTERN void e_comp_object_indicator_size_set(Evas_Object *obj, int w, int h);
241 EINTERN Eina_Bool e_comp_object_image_filter_set(Evas_Object *obj, E_Comp_Image_Filter filter);
242 EINTERN E_Comp_Image_Filter e_comp_object_image_filter_get(Evas_Object *obj);
244 EINTERN E_Map *e_comp_object_map_get(const Evas_Object *obj);
245 EINTERN void e_comp_object_map_update(Evas_Object *obj);
247 EINTERN void e_comp_object_render_op_set(Evas_Object *obj, Evas_Render_Op op);
248 EINTERN Evas_Render_Op e_comp_object_render_op_get(Evas_Object *obj);
249 EINTERN Eina_Bool e_comp_object_render_trace_set(Evas_Object *obj, Eina_Bool set);
251 //#ifdef REFACTOR_DESK_AREA
252 typedef void (*E_Comp_Object_Stack_Func)(Evas_Object *obj, Evas_Object *stack);
255 //#ifdef REFACTOR_DESK_AREA
256 EINTERN void e_comp_object_lower(E_Comp_Object *cw, Evas_Object *obj);
257 EINTERN void e_comp_object_raise(Evas_Object *obj);
258 EINTERN void e_comp_object_layer_set(Evas_Object *obj, short layer);
259 EINTERN void e_comp_object_stack_above(Evas_Object *obj, Evas_Object *target);
260 EINTERN void e_comp_object_stack_below(Evas_Object *obj, Evas_Object *target);
261 EINTERN void e_comp_object_transform_obj_stack_update(Evas_Object *obj);
265 EINTERN void e_comp_object_lower_listener_add(Evas_Object *obj, struct wl_listener *listener);
266 //#ifdef REFACTOR_DESK_AREA
267 EINTERN void e_comp_object_lower_done_listener_add(Evas_Object *obj, struct wl_listener *listener);
268 EINTERN void e_comp_object_raise_listener_add(Evas_Object *obj, struct wl_listener *listener);
270 EINTERN void e_comp_object_show_listener_add(Evas_Object *obj, struct wl_listener *listener);
271 EINTERN void e_comp_object_hide_listener_add(Evas_Object *obj, struct wl_listener *listener);
272 //#ifdef REFACTOR_DESK_AREA
273 EINTERN void e_comp_object_set_layer_listener_add(Evas_Object *obj, struct wl_listener *listener);
274 EINTERN void e_comp_object_stack_above_listener_add(Evas_Object *obj, struct wl_listener *listener);
275 EINTERN void e_comp_object_stack_below_listener_add(Evas_Object *obj, struct wl_listener *listener);