2 * Copyright © 2010-2011 Intel Corporation
3 * Copyright © 2008-2011 Kristian Høgsberg
4 * Copyright © 2013 TOYOTA MOTOR CORPORATION.
6 * Permission to use, copy, modify, distribute, and sell this software and
7 * its documentation for any purpose is hereby granted without fee, provided
8 * that the above copyright notice appear in all copies and that both that
9 * copyright notice and this permission notice appear in supporting
10 * documentation, and that the name of the copyright holders not be used in
11 * advertising or publicity pertaining to distribution of the software
12 * without specific, written prior permission. The copyright holders make
13 * no representations about the suitability of this software for any
14 * purpose. It is provided "as is" without express or implied warranty.
16 * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
17 * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
18 * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
19 * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
20 * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
21 * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
22 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
25 * @brief Public functions in ico_window_mgr Weston plugin
30 #ifndef _ICO_WINDOW_MGR_H_
31 #define _ICO_WINDOW_MGR_H_
33 /* Manager management table */
35 struct wl_resource *resource; /* Manager resource */
36 int manager; /* Manager(=event send flag) */
37 struct wl_list link; /* link to next manager */
40 /* Cleint management table */
42 struct wl_client *client; /* Wayland client */
43 int pid; /* ProcessId (pid) */
44 char appid[ICO_IVI_APPID_LENGTH]; /* ApplicationId(from AppCore AUL) */
45 struct uifw_manager *mgr; /* Manager table (if manager) */
46 char manager; /* Manager flag (Need send event) */
47 char fixed_appid; /* ApplicationId fix flag(and counter) */
48 char noconfigure; /* no need configure event */
49 char res; /* (unused) */
50 struct wl_list surface_link; /* surface list of same client */
54 /* Node information */
55 struct uifw_node_table {
56 uint16_t node; /* node Id */
57 uint16_t displayno; /* weston display number */
58 struct weston_output *output; /* weston output */
59 int disp_x; /* display frame buffer X-coordinate */
60 int disp_y; /* display frame buffer Y-coordinate */
61 int disp_width; /* display width */
62 int disp_height; /* display height */
65 /* Layer management table */
66 struct uifw_win_layer {
67 uint32_t layer; /* Layer Id */
68 char visible; /* visibility */
69 char layertype; /* layer type */
70 char res[2]; /* (unused) */
71 struct wl_list surface_list; /* Surfacae list */
72 struct wl_list link; /* Link pointer for layer list */
75 /* Surface map table */
76 struct uifw_win_surface;
77 struct uifw_surface_map {
78 struct uifw_win_surface *usurf; /* UIFW surface */
79 struct uifw_client *uclient; /* UIFW client */
80 uint32_t eglname; /* EGL buffer name */
81 uint32_t format; /* format */
82 uint16_t type; /* buffer type(currently only EGL buffer)*/
83 uint16_t width; /* width */
84 uint16_t height; /* height */
85 uint16_t stride; /* stride */
86 uint16_t framerate; /* update frame rate (frame/sec) */
87 uint16_t interval; /* interval time (ms) */
88 uint32_t lasttime; /* last event time (ms) */
89 char initflag; /* map event send flag(0=no/1=yes) */
90 char eventque; /* send event queue flag */
91 char res[2]; /* (unused) */
92 struct wl_list map_link; /* surface map list */
93 struct wl_list surf_link; /* surface map list from UIFW surface */
98 struct uifw_win_surface {
99 uint32_t surfaceid; /* UIFW SurfaceId */
100 struct uifw_node_table *node_tbl; /* Node manager of ico_window_mgr */
101 struct uifw_win_layer *win_layer; /* surface layer */
102 struct uifw_win_layer *old_layer; /* saved surface layer for change full screen*/
103 struct weston_surface *surface; /* Weston surface */
104 struct shell_surface *shsurf; /* Shell(IVI-Shell) surface */
105 struct uifw_client *uclient; /* Client */
106 struct weston_transform transform; /* transform matrix */
107 float scalex; /* surface transform scale of X */
108 float scaley; /* surface transform scale of Y */
109 int x; /* X-coordinate */
110 int y; /* Y-coordinate */
111 short xadd; /* X-coordinate delta */
112 short yadd; /* Y-coordinate delta */
113 uint16_t width; /* Width */
114 uint16_t height; /* Height */
115 uint16_t client_width; /* Widht that a client(App) required */
116 uint16_t client_height; /* Height that a client(App) required */
117 uint16_t conf_width; /* Width that notified to client */
118 uint16_t conf_height; /* Height that notified to client */
119 uint32_t attributes; /* surface attributes */
120 char winname[ICO_IVI_WINNAME_LENGTH];/* Window name */
121 char disable; /* can not display */
122 char visible; /* visibility */
123 char raise; /* raise(top of the layer) */
124 char created; /* sended created event to manager */
125 char mapped; /* end of map */
126 char restrain_configure; /* restrant configure event */
127 char set_transform; /* surface transform flag */
128 char layertype; /* surface layer type */
129 char old_layertype; /* surface old layer type */
130 char res[3]; /* (unused) */
131 struct _uifw_win_surface_animation { /* wndow animation */
132 struct weston_animation animation; /* weston animation control */
133 uint16_t type; /* current animation type */
134 uint16_t anima; /* curremt animation Id */
135 uint16_t next_anima; /* next animation Id */
136 uint16_t hide_anima; /* animation Id for hide */
137 uint16_t hide_time; /* animation time(ms) for hide */
138 uint16_t show_anima; /* animation Id for show */
139 uint16_t show_time; /* animation time(ms) for show */
140 uint16_t move_anima; /* animation Id for move */
141 uint16_t move_time; /* animation time(ms) for move */
142 uint16_t resize_anima; /* animation Id for resize */
143 uint16_t resize_time; /* animation time(ms) for resize */
144 uint16_t time; /* current animation time(ms) */
145 uint16_t pos_x; /* start/end X-coordinate */
146 uint16_t pos_y; /* start/end Y-coordinate */
147 uint16_t pos_width; /* start/end width */
148 uint16_t pos_height; /* start/end height */
149 short current; /* animation current percentage */
150 char state; /* animation state */
151 char visible; /* need hide(1)/show(2) at end of animation*/
152 char restrain_configure; /* restrain surface resize */
153 char ahalf; /* after half */
154 char no_configure; /* no send configure to client */
155 char res; /* (unused) */
156 uint32_t starttime; /* start time(ms) */
157 void *animadata; /* animation data */
159 struct wl_list ivi_layer; /* surface list of same layer */
160 struct wl_list client_link; /* surface list of same client */
161 struct wl_list surf_map; /* surface map list */
162 struct wl_list input_region; /* surface input region list */
163 struct uifw_win_surface *next_idhash; /* UIFW SurfaceId hash list */
164 struct uifw_win_surface *next_wshash; /* Weston SurfaceId hash list */
168 #define ICO_WINDOW_MGR_LAYER_TYPE_NORMAL 0 /* normal layer */
169 #define ICO_WINDOW_MGR_LAYER_TYPE_BACKGROUND 1 /* touch input layer */
170 #define ICO_WINDOW_MGR_LAYER_TYPE_INPUT 7 /* touch input layer */
171 #define ICO_WINDOW_MGR_LAYER_TYPE_CURSOR 8 /* cursor layer */
173 /* animation operation */
174 /* default animation */
175 #define ICO_WINDOW_MGR_ANIMATION_NONE 0 /* no animation */
177 /* return code of animation hook function*/
178 #define ICO_WINDOW_MGR_ANIMATION_RET_NOANIMA -1 /* no animation */
179 #define ICO_WINDOW_MGR_ANIMATION_RET_ANIMA 0 /* animation */
180 #define ICO_WINDOW_MGR_ANIMATION_RET_ANIMANOCTL 1 /* animation but no control */
182 /* animation state */
183 #define ICO_WINDOW_MGR_ANIMATION_STATE_NONE 0 /* not animation */
184 #define ICO_WINDOW_MGR_ANIMATION_STATE_SHOW 1 /* show(in) animation */
185 #define ICO_WINDOW_MGR_ANIMATION_STATE_HIDE 2 /* hide(out) animation */
186 #define ICO_WINDOW_MGR_ANIMATION_STATE_MOVE 3 /* move animation */
187 #define ICO_WINDOW_MGR_ANIMATION_STATE_RESIZE 4 /* resize animation */
189 /* extended(plugin) animation operation */
190 #define ICO_WINDOW_MGR_ANIMATION_NAME 0 /* convert animation name to Id */
191 #define ICO_WINDOW_MGR_ANIMATION_DESTROY 99 /* surface destroy */
192 #define ICO_WINDOW_MGR_ANIMATION_OPNONE 0 /* no animation */
193 #define ICO_WINDOW_MGR_ANIMATION_OPHIDE 1 /* change to hide */
194 #define ICO_WINDOW_MGR_ANIMATION_OPSHOW 2 /* change to show */
195 #define ICO_WINDOW_MGR_ANIMATION_OPMOVE 3 /* surface move */
196 #define ICO_WINDOW_MGR_ANIMATION_OPRESIZE 4 /* surface resize */
197 #define ICO_WINDOW_MGR_ANIMATION_OPCANCEL 9 /* animation cancel */
198 #define ICO_WINDOW_MGR_ANIMATION_OPHIDEPOS 11 /* change to hide with position */
199 #define ICO_WINDOW_MGR_ANIMATION_OPSHOWPOS 12 /* change to show with position */
201 /* Prototype for function */
202 /* surface visible control */
203 void ico_window_mgr_set_visible(struct uifw_win_surface *usurf, const int visible);
204 /* get client applicationId */
205 char *ico_window_mgr_get_appid(struct wl_client* client);
206 /* get display coordinate */
207 void ico_window_mgr_get_display_coordinate(int displayno, int *x, int *y);
208 /* change weston surface */
209 void ico_window_mgr_set_weston_surface(struct uifw_win_surface *usurf, int x, int y,
210 int width, int height);
212 void ico_window_mgr_change_surface(struct uifw_win_surface *usurf,
213 const int to, const int manager);
214 /* check active keyboard surface */
215 int ico_window_mgr_ismykeyboard(struct uifw_win_surface *usurf);
216 /* get UIFW client table */
217 struct uifw_client *ico_window_mgr_get_uclient(const char *appid);
218 /* get UIFW surface table */
219 struct uifw_win_surface *ico_window_mgr_get_usurf(const uint32_t surfaceid);
220 /* get UIFW surface table */
221 struct uifw_win_surface *ico_window_mgr_get_usurf_client(const uint32_t surfaceid,
222 struct wl_client *client);
223 /* get application surface */
224 struct uifw_win_surface *ico_window_mgr_get_client_usurf(const char *target);
225 /* rebuild surface layer list */
226 void ico_window_mgr_restack_layer(struct uifw_win_surface *usurf);
227 /* touch layer control for input manager*/
228 void ico_window_mgr_touch_layer(int omit);
229 /* chek surface visibility */
230 int ico_window_mgr_is_visible(struct uifw_win_surface *usurf);
231 /* set active surface */
232 void ico_window_mgr_active_surface(struct weston_surface *surface);
233 /* set window animation hook */
234 void ico_window_mgr_set_hook_animation(int (*hook_animation)(const int op, void *data));
235 /* set surface visible change hook */
236 void ico_window_mgr_set_hook_visible(void (*hook_visible)(struct uifw_win_surface *usurf));
237 /* set surface destory hook */
238 void ico_window_mgr_set_hook_destory(void (*hook_destroy)(struct uifw_win_surface *usurf));
240 #endif /*_ICO_WINDOW_MGR_H_*/