#ifndef _ICO_WINDOW_MGR_H_
#define _ICO_WINDOW_MGR_H_
+/* Cleint management table */
+struct uifw_client {
+ struct wl_client *client; /* Wayland client */
+ int pid; /* ProcessId (pid) */
+ char appid[ICO_IVI_APPID_LENGTH]; /* ApplicationId(from AppCore AUL) */
+ char manager; /* Manager flag (Need send event) */
+ char noconfigure; /* no need configure event */
+ char res[2];
+ struct wl_resource *resource;
+ struct wl_list link;
+};
+
+/* UIFW surface */
struct shell_surface;
+struct uifw_win_surface {
+ uint32_t id; /* UIFW SurfaceId */
+ int layer; /* LayerId */
+ struct weston_surface *surface; /* Weston surface */
+ struct shell_surface *shsurf; /* Shell(IVI-Shell) surface */
+ struct uifw_client *uclient; /* Client */
+ int x; /* X-axis */
+ int y; /* Y-axis */
+ int width; /* Width */
+ int height; /* Height */
+ struct _uifw_win_surface_animation { /* wndow animation */
+ struct weston_animation animation; /* animation control */
+ short type; /* animation type */
+ short type_next; /* next animation type */
+ short current; /* animation current percentage */
+ char state; /* animation state */
+ char visible; /* need visible(1)/hide(2) at end of animation*/
+ uint32_t starttime; /* start time(ms) */
+ } animation;
+ void *animadata; /* animation data */
+ struct wl_list link; /* surface link list */
+ struct uifw_win_surface *next_idhash; /* UIFW SurfaceId hash list */
+ struct uifw_win_surface *next_wshash; /* Weston SurfaceId hash list */
+};
+
+/* animation operation */
+/* default animation */
+#define ICO_WINDOW_MGR_ANIMATION_NONE 0 /* no animation */
+
+/* return code of animation hook function*/
+#define ICO_WINDOW_MGR_ANIMATION_RET_NOANIMA -1 /* no animation */
+#define ICO_WINDOW_MGR_ANIMATION_RET_ANIMA 0 /* animation */
+#define ICO_WINDOW_MGR_ANIMATION_RET_ANIMASHOW 1 /* animation with visible */
+
+/* animation state */
+#define ICO_WINDOW_MGR_ANIMATION_STATE_NONE 0 /* not animation */
+#define ICO_WINDOW_MGR_ANIMATION_STATE_IN 1 /* show(in) animation */
+#define ICO_WINDOW_MGR_ANIMATION_STATE_OUT 2 /* hide(out) animation */
+#define ICO_WINDOW_MGR_ANIMATION_STATE_MOVE 3 /* move animation */
+#define ICO_WINDOW_MGR_ANIMATION_STATE_RESIZE 4 /* resize animation */
+
+/* extended(plugin) animation operation */
+#define ICO_WINDOW_MGR_ANIMATION_TYPE 0 /* convert animation name to value*/
+#define ICO_WINDOW_MGR_ANIMATION_DESTROY 99 /* surface destroy */
+#define ICO_WINDOW_MGR_ANIMATION_OPIN 1 /* change to show */
+#define ICO_WINDOW_MGR_ANIMATION_OPOUT 2 /* change to hide */
+#define ICO_WINDOW_MGR_ANIMATION_OPMOVE 3 /* surface move */
+#define ICO_WINDOW_MGR_ANIMATION_OPRESIZE 4 /* surface resize */
+#define ICO_WINDOW_MGR_ANIMATION_OPCANCEL 9 /* animation cancel */
/* Prototype for function */
+ /* get client applicationId */
char *ico_window_mgr_appid(struct wl_client* client);
+ /* set window animation hook */
+void ico_window_mgr_set_animation(int (*hook_animation)(const int op, void *data));
#endif /*_ICO_WINDOW_MGR_H_*/
+