2 * Copyright © 2010-2011 Intel Corporation
3 * Copyright © 2008-2011 Kristian Høgsberg
4 * Copyright © 2013-2014 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_PRIVATE_H_
31 #define _ICO_WINDOW_MGR_PRIVATE_H_
33 /* Manager management table */
35 struct wl_resource *resource; /* Manager resource */
36 struct wl_list link; /* link to next manager */
39 /* Cleint management table */
41 struct wl_client *client; /* Wayland client */
42 int pid; /* ProcessId (pid) */
43 char appid[ICO_IVI_APPID_LENGTH];/* ApplicationId(from AppCore AUL) */
44 struct uifw_manager *mgr; /* Manager table (if manager) */
45 char manager; /* Manager flag (Need send event) */
46 char fixed_appid; /* ApplicationId fix flag(and counter) */
47 char noconfigure; /* no need configure event */
48 char privilege; /* privilege aplication */
49 char *shmbuf; /* shared memory for surface image */
50 int bufsize; /* shared memory buffer size */
51 int bufnum; /* number of shared memory buffer */
52 struct wl_listener destroy_listener; /* client destroy listener */
53 struct wl_list surface_link; /* surface list of same client */
54 struct wl_list link; /* client list */
57 /* Node information */
58 struct uifw_node_table {
59 uint16_t node; /* node Id */
60 uint16_t displayno; /* weston display number */
61 struct weston_output *output; /* weston output */
62 int disp_x; /* display frame buffer X-coordinate */
63 int disp_y; /* display frame buffer Y-coordinate */
64 int disp_width; /* display width */
65 int disp_height; /* display height */
68 /* Surface map table */
69 struct uifw_win_surface;
70 struct uifw_surface_map {
71 struct uifw_win_surface *usurf; /* UIFW surface */
72 struct uifw_client *uclient; /* UIFW client */
73 struct weston_buffer *curbuf; /* current buffer */
74 char filepath[ICO_IVI_FILEPATH_LENGTH];
75 /* surface image file path */
76 uint32_t format; /* format */
77 uint16_t type; /* buffer type(currently only EGL buffer)*/
78 uint16_t width; /* width */
79 uint16_t height; /* height */
80 uint16_t stride; /* stride */
81 int16_t framerate; /* update frame rate (frame/sec) */
82 int16_t interval; /* interval time (ms) */
83 uint32_t lasttime; /* last event time (ms) */
84 char initflag; /* map event send flag(0=no/1=yes) */
85 char eventque; /* send event queue flag */
86 char res[2]; /* (unused) */
87 struct wl_list map_link; /* surface map list */
88 struct wl_list surf_link; /* surface map list from UIFW surface */
91 /* Animation information */
92 struct uifw_win_surface_animation { /* wndow animation */
93 struct weston_animation animation; /* weston animation control */
94 uint16_t type; /* current animation type */
95 uint16_t anima; /* curremt animation Id */
96 uint16_t next_anima; /* next animation Id */
97 uint16_t hide_anima; /* animation Id for hide */
98 uint16_t hide_time; /* animation time(ms) for hide */
99 uint16_t show_anima; /* animation Id for show */
100 uint16_t show_time; /* animation time(ms) for show */
101 uint16_t move_anima; /* animation Id for move */
102 uint16_t move_time; /* animation time(ms) for move */
103 uint16_t resize_anima; /* animation Id for resize */
104 uint16_t resize_time; /* animation time(ms) for resize */
105 uint16_t time; /* current animation time(ms) */
106 uint16_t pos_x; /* start/end X-coordinate */
107 uint16_t pos_y; /* start/end Y-coordinate */
108 uint16_t pos_width; /* start/end width */
109 uint16_t pos_height; /* start/end height */
110 float alpha; /* original alpha */
111 short current; /* animation current percentage */
112 char state; /* animation state */
113 char visible; /* need hide(1)/show(2) at end of animation*/
114 char restrain_configure; /* restrain surface resize */
115 char ahalf; /* after half */
116 char no_configure; /* no send configure to client */
117 char res; /* (unused) */
118 uint32_t starttime; /* start time(ms) */
119 void *animadata; /* animation data */
121 struct uifw_win_surface_anima_save { /* wndow animation save */
122 uint16_t saved; /* flag for original saved */
123 uint16_t type; /* current animation type */
124 uint16_t anima; /* curremt animation Id */
125 uint16_t next_anima; /* next animation Id */
126 uint16_t hide_anima; /* animation Id for hide */
127 uint16_t hide_time; /* animation time(ms) for hide */
128 uint16_t show_anima; /* animation Id for show */
129 uint16_t show_time; /* animation time(ms) for show */
130 uint16_t move_anima; /* animation Id for move */
131 uint16_t move_time; /* animation time(ms) for move */
132 uint16_t resize_anima; /* animation Id for resize */
133 uint16_t resize_time; /* animation time(ms) for resize */
137 struct shell_surface;
138 struct ivi_layout_surface;
139 struct uifw_win_surface {
140 uint32_t surfaceid; /* UIFW SurfaceId */
141 struct uifw_node_table *node_tbl; /* Node manager of ico_window_mgr */
142 struct weston_surface *surface; /* Weston surface */
143 struct ivi_layout_surface *ivisurf; /* Weston layout surface */
144 struct uifw_client *uclient; /* Client */
145 struct wl_resource *shsurf_resource; /* wl_shell_surface resource */
146 struct wl_listener surface_destroy_listener; /* destroy listener */
147 int x; /* X-coordinate */
148 int y; /* Y-coordinate */
149 uint16_t width; /* Width */
150 uint16_t height; /* Height */
151 uint16_t client_width; /* Widht that a client(App) required */
152 uint16_t client_height; /* Height that a client(App) required */
153 uint16_t configure_width; /* Widht that a client(App) configured */
154 uint16_t configure_height; /* Height that a client(App) configured */
155 char winname[ICO_IVI_WINNAME_LENGTH];/* Window name */
156 char visible; /* visibility */
157 char internal_propchange; /* internal surface property change */
158 char restrain_configure; /* restrant configure event */
159 struct uifw_win_surface_animation
160 animation; /* window animation information */
161 struct uifw_win_surface_anima_save
162 org_animation; /* save original wndow animation */
163 struct wl_list client_link; /* surface list of same client */
164 struct wl_list surf_map; /* surface map list */
165 struct wl_list input_region; /* surface input region list */
166 struct uifw_win_surface *next_idhash; /* UIFW SurfaceId hash list */
167 struct uifw_win_surface *next_wshash; /* Weston SurfaceId hash list */
170 /* animation operation */
171 /* default animation */
172 #define ICO_WINDOW_MGR_ANIMATION_NONE 0 /* no animation */
174 /* return code of animation hook function*/
175 #define ICO_WINDOW_MGR_ANIMATION_RET_NOANIMA -1 /* no animation */
176 #define ICO_WINDOW_MGR_ANIMATION_RET_ANIMA 0 /* animation */
177 #define ICO_WINDOW_MGR_ANIMATION_RET_ANIMANOCTL 1 /* animation but no control */
179 /* animation state */
180 #define ICO_WINDOW_MGR_ANIMATION_STATE_NONE 0 /* not animation */
181 #define ICO_WINDOW_MGR_ANIMATION_STATE_SHOW 1 /* show(in) animation */
182 #define ICO_WINDOW_MGR_ANIMATION_STATE_HIDE 2 /* hide(out) animation */
183 #define ICO_WINDOW_MGR_ANIMATION_STATE_MOVE 3 /* move animation */
184 #define ICO_WINDOW_MGR_ANIMATION_STATE_RESIZE 4 /* resize animation */
186 /* extended(plugin) animation operation */
187 #define ICO_WINDOW_MGR_ANIMATION_NAME 0 /* convert animation name to Id */
188 #define ICO_WINDOW_MGR_ANIMATION_DESTROY 99 /* surface destroy */
189 #define ICO_WINDOW_MGR_ANIMATION_OPNONE 0 /* no animation */
190 #define ICO_WINDOW_MGR_ANIMATION_OPHIDE 1 /* change to hide */
191 #define ICO_WINDOW_MGR_ANIMATION_OPSHOW 2 /* change to show */
192 #define ICO_WINDOW_MGR_ANIMATION_OPMOVE 3 /* surface move */
193 #define ICO_WINDOW_MGR_ANIMATION_OPRESIZE 4 /* surface resize */
194 #define ICO_WINDOW_MGR_ANIMATION_OPCANCEL 9 /* animation cancel */
195 #define ICO_WINDOW_MGR_ANIMATION_OPHIDEPOS 11 /* change to hide with position */
196 #define ICO_WINDOW_MGR_ANIMATION_OPSHOWPOS 12 /* change to show with position */
198 /* Visible control at end of animation */
199 #define ICO_WINDOW_MGR_ANIMA_NOCONTROL_AT_END 0 /* no need show/hide at end of anima*/
200 #define ICO_WINDOW_MGR_ANIMA_SHOW_AT_END 1 /* surface show at end of animation*/
201 #define ICO_WINDOW_MGR_ANIMA_HIDE_AT_END 2 /* surface hide at end of animation*/
203 /* Prototype for function */
204 /* find uifw_client table */
205 struct uifw_client *ico_window_mgr_find_uclient(struct wl_client *client);
206 /* get client applicationId */
207 char *ico_window_mgr_get_appid(struct wl_client* client);
208 /* get display coordinate */
209 void ico_window_mgr_get_display_coordinate(int displayno, int *x, int *y);
210 /* get buffer width */
211 int ico_ivi_surface_buffer_width(struct weston_surface *es);
212 /* get buffer height */
213 int ico_ivi_surface_buffer_height(struct weston_surface *es);
214 /* get buffer size */
215 void ico_ivi_surface_buffer_size(struct weston_surface *es, int *width, int *height);
216 /* get surface primary view */
217 struct weston_view *ico_ivi_get_primary_view(struct uifw_win_surface *usurf);
218 /* change weston surface */
219 void ico_window_mgr_set_weston_surface(struct uifw_win_surface *usurf, int x, int y,
220 int width, int height);
221 /* get UIFW client table */
222 struct uifw_client *ico_window_mgr_get_uclient(const char *appid);
223 /* get UIFW surface table */
224 struct uifw_win_surface *ico_window_mgr_get_usurf(const uint32_t surfaceid);
225 /* get UIFW surface table */
226 struct uifw_win_surface *ico_window_mgr_get_usurf_client(const uint32_t surfaceid,
227 struct wl_client *client);
228 /* get application surface */
229 struct uifw_win_surface *ico_window_mgr_get_client_usurf(const char *target);
230 /* set window animation hook */
231 void ico_window_mgr_set_hook_animation(int (*hook_animation)(const int op, void *data));
232 /* set surface attribute change hook */
233 void ico_window_mgr_set_hook_change(void (*hook_change)(struct uifw_win_surface *usurf));
234 /* set surface destory hook */
235 void ico_window_mgr_set_hook_destory(void (*hook_destroy)(struct uifw_win_surface *usurf));
236 /* set input region set/unset hook */
237 void ico_window_mgr_set_hook_inputregion(void (*hook_inputregion)(
238 int set, struct uifw_win_surface *usurf, int32_t x, int32_t y,
239 int32_t width, int32_t height, int32_t hotspot_x, int32_t hotspot_y,
240 int32_t cursor_x, int32_t cursor_y, int32_t cursor_width,
241 int32_t cursor_height, uint32_t attr));
243 #endif /*_ICO_WINDOW_MGR_PRIVATE_H_*/