dab9d30086c2f2eaf60fb84c4ba6bb1e1a8aefc8
[profile/ivi/ico-uxf-homescreen.git] / lib / system-controller / CicoSCWlWinMgrIF.h
1 /*
2  * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
3  *
4  * This program is licensed under the terms and conditions of the
5  * Apache License, version 2.0.  The full text of the Apache License is at
6  * http://www.apache.org/licenses/LICENSE-2.0
7  *
8  */
9
10 //==========================================================================
11 /**
12  *  @file   CicoSCWlWinMgrIF.h
13  *
14  *  @brief  This file is definition of CicoSCWlWinMgrIF class
15  */
16 //==========================================================================
17 #ifndef __CICO_SC_WL_WINMGR_IF_H__
18 #define __CICO_SC_WL_WINMGR_IF_H__
19
20 #include <wayland-client.h>
21 #include <ico_window_mgr-client-protocol.h>
22
23 #include "CicoSCWaylandIF.h"
24
25 //--------------------------------------------------------------------------
26 /**
27  *  @brief  This class is wayland interface of multi window manager
28  */
29 //--------------------------------------------------------------------------
30 class CicoSCWlWinMgrIF : public CicoSCWaylandIF {
31 public:
32     virtual void initInterface(void               *data,
33                                struct wl_registry *registry,
34                                uint32_t           name,
35                                const char         *interface,
36                                uint32_t           version);
37
38     virtual void createdCB(void *data,
39                            struct ico_window_mgr *ico_window_mgr,
40                            uint32_t surfaceid,
41                            const char *winname,
42                            int32_t pid,
43                            const char *appid,
44                            int32_t layertype);
45
46     virtual void nameCB(void *data,
47                         struct ico_window_mgr *ico_window_mgr,
48                         uint32_t surfaceid,
49                         const char *winname);
50
51     virtual void destroyedCB(void *data,
52                              struct ico_window_mgr *ico_window_mgr,
53                              uint32_t surfaceid);
54
55     virtual void visibleCB(void *data,
56                            struct ico_window_mgr *ico_window_mgr,
57                            uint32_t surfaceid,
58                            int32_t visible,
59                            int32_t raise,
60                            int32_t hint);
61
62     virtual void configureCB(void *data,
63                              struct ico_window_mgr *ico_window_mgr,
64                              uint32_t surfaceid,
65                              uint32_t node,
66                              int32_t layertype,
67                              uint32_t layer,
68                              int32_t x,
69                              int32_t y,
70                              int32_t width,
71                              int32_t height,
72                              int32_t hint);
73
74     virtual void activeCB(void *data,
75                           struct ico_window_mgr *ico_window_mgr,
76                           uint32_t surfaceid,
77                           int32_t active);
78
79     virtual void layerVisibleCB(void *data,
80                                 struct ico_window_mgr *ico_window_mgr,
81                                 uint32_t layer,
82                                 int32_t visible);
83
84     virtual void appSurfacesCB(void *data,
85                                struct ico_window_mgr *ico_window_mgr,
86                                const char *appid,
87                                int32_t    pid,
88                                struct wl_array *surfaces);
89
90     virtual void mapSurfaceCB(void *data,
91                               struct ico_window_mgr *ico_window_mgr,
92                               int32_t event,
93                               uint32_t surfaceid,
94                               uint32_t type,
95                               uint32_t target,
96                               int32_t width,
97                               int32_t height,
98                               int32_t stride,
99                               uint32_t format);
100
101     //
102     virtual void outputGeometryCB(void             *data,
103                                   struct wl_output *wl_output,
104                                   int32_t          x,
105                                   int32_t          y,
106                                   int32_t          physical_width,
107                                   int32_t          physical_height,
108                                   int32_t          subpixel,
109                                   const char       *make,
110                                   const char       *model,
111                                   int32_t          transform);
112
113     virtual void outputModeCB(void             *data,
114                               struct wl_output *wl_output,
115                               uint32_t         flags,
116                               int32_t          width,
117                               int32_t          height,
118                               int32_t          refresh);
119
120 protected:
121     // default constructor
122     CicoSCWlWinMgrIF();
123
124     // destructor
125     virtual ~CicoSCWlWinMgrIF();
126
127     // assignment operator
128     CicoSCWlWinMgrIF& operator=(const CicoSCWlWinMgrIF &object);
129
130     // copy constructor
131     CicoSCWlWinMgrIF(const CicoSCWlWinMgrIF &object);
132
133     // wrapper function ico_window_mgr_declare_manager
134     void declareManager(int32_t manager);
135
136     // wrapper function ico_window_mgr_set_window_layer
137     void setWindowLayer(uint32_t surfaceid, uint32_t layer);
138
139     // wrapper function ico_window_mgr_set_positionsize
140     void setPositionsize(uint32_t surfaceid, uint32_t node,
141                          int32_t x, int32_t y, int32_t width,
142                          int32_t height, int32_t flags);
143
144     // wrapper function ico_window_mgr_set_visible
145     void setVisible(uint32_t surfaceid, int32_t  visible,
146                     int32_t  raise, int32_t  flags);
147
148     // wrapper function ico_window_mgr_visible_animation
149     void visibleAnimation(uint32_t surfaceid, int32_t visible,
150                           int32_t x, int32_t y,
151                           int32_t width, int32_t height);
152
153     // wrapper function of ico_window_mgr_set_animation
154     void setAnimation(uint32_t surfaceid, int32_t type,
155                       const char *animation, int32_t time);
156
157     // wrapper function of ico_window_mgr_set_attributes
158     void setAttributes(uint32_t surfaceid, uint32_t attributes);
159
160     // wrapper function of ico_window_mgr_set_active
161     void setActive(uint32_t surfaceid, int32_t active);
162
163     // wrapper function of ico_window_mgr_set_layer_visible
164     void setLayerVisible(uint32_t layer, int32_t visible);
165
166     // wrapper function of ico_window_mgr_get_surfaces
167     void getSurfaces(const char *appid, int32_t pid);
168
169     // wrapper function of ico_window_mgr_set_map_buffer
170     void setmapBuffer(const char *shmname, int bufsize, int bufnum);
171
172     // wrapper function of ico_window_mgr_map_surface
173     void mapSurface(uint32_t surfaceid, int32_t framerate);
174
175     // wrapper function of ico_window_mgr_unmap_surface
176     void unmapSurface(uint32_t surfaceid);
177
178 private:
179     // ico_window_mgr(Multi Window Manager) callback functions
180     static void wlCreatedCB(void                  *data,
181                             struct ico_window_mgr *ico_window_mgr,
182                             uint32_t              surfaceid,
183                             const char            *winname,
184                             int32_t               pid,
185                             const char            *appid,
186                             int32_t               layertype);
187
188     static void wlNameCB(void *data,
189                          struct ico_window_mgr *ico_window_mgr,
190                          uint32_t surfaceid,
191                          const char *winname);
192
193     static void wlDestroyedCB(void *data,
194                               struct ico_window_mgr *ico_window_mgr,
195                               uint32_t surfaceid);
196
197     static void wlVisibleCB(void *data,
198                             struct ico_window_mgr *ico_window_mgr,
199                             uint32_t surfaceid,
200                             int32_t visible,
201                             int32_t raise,
202                             int32_t hint);
203
204     static void wlConfigureCB(void *data,
205                               struct ico_window_mgr *ico_window_mgr,
206                               uint32_t surfaceid,
207                               uint32_t node,
208                               int32_t layertype,
209                               uint32_t layer,
210                               int32_t x,
211                               int32_t y,
212                               int32_t width,
213                               int32_t height,
214                               int32_t hint);
215
216     static void wlActiveCB(void *data,
217                            struct ico_window_mgr *ico_window_mgr,
218                            uint32_t surfaceid,
219                            int32_t active);
220
221     static void wlLayerVisibleCB(void *data,
222                                  struct ico_window_mgr *ico_window_mgr,
223                                  uint32_t layer,
224                                  int32_t visible);
225
226     static void wlAppSurfacesCB(void *data,
227                                 struct ico_window_mgr *ico_window_mgr,
228                                 const char *appid,
229                                 int32_t    pid,
230                                 struct wl_array *surfaces);
231
232     static void wlMapSurfaceCB(void *data,
233                                struct ico_window_mgr *ico_window_mgr,
234                                int32_t event,
235                                uint32_t surfaceid,
236                                uint32_t type,
237                                uint32_t target,
238                                int32_t width,
239                                int32_t height,
240                                int32_t stride,
241                                uint32_t format);
242
243     //
244     static void wlOutputGeometryCB(void             *data,
245                                    struct wl_output *wl_output,
246                                    int32_t          x,
247                                    int32_t          y,
248                                    int32_t          physical_width,
249                                    int32_t          physical_height,
250                                    int32_t          subpixel,
251                                    const char       *make,
252                                    const char       *model,
253                                    int32_t          transform);
254
255     static void wlOutputModeCB(void             *data,
256                                struct wl_output *wl_output,
257                                uint32_t         flags,
258                                int32_t          width,
259                                int32_t          height,
260                                int32_t          refresh);
261
262 protected:
263     // ico_window_mgr listener
264     struct ico_window_mgr_listener m_listener;
265
266     // wayland output listener
267     struct wl_output_listener m_wlOutputListener;
268
269     // Wayland's Window Manager PlugIn instance
270     struct ico_window_mgr *m_winmgr;
271
272     // wayland output instance
273     struct wl_output *m_wloutput;
274
275 };
276 #endif  // __CICO_SC_WL_WINMGR_IF_H__
277 // vim:set expandtab ts=4 sw=4: