Bug fix: TIVI-1996.
[profile/ivi/ico-uxf-homescreen.git] / lib / system-controller / CicoSCWindowController.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   CicoSCWindowController.h
13  *
14  *  @brief  This file is definition of CicoSCWindowController class
15  */
16 //==========================================================================
17 #ifndef __CICO_SC_WINDOW_CONTROLLER_H__
18 #define __CICO_SC_WINDOW_CONTROLLER_H__
19
20 #include <vector>
21 #include <map>
22
23 using namespace std;
24
25 #include "CicoSCWlWinMgrIF.h"
26
27 //==========================================================================
28 //  Forward declaration
29 //==========================================================================
30 class CicoSCCommand;
31 class CicoSCDisplay;
32 class CicoSCLayer;
33 class CicoSCDisplayZone;
34 class CicoSCWindow;
35 class CicoSCResourceManager;
36
37 //--------------------------------------------------------------------------
38 /**
39  *  @brief  This class is controller of window
40  */
41 //--------------------------------------------------------------------------
42 class CicoSCWindowController : public CicoSCWlWinMgrIF
43 {
44 public:
45     // default constructor
46     CicoSCWindowController();
47
48     // copy constructor
49     virtual ~CicoSCWindowController();
50
51     int initDB(void);
52
53     void handleCommand(const CicoSCCommand * cmd);
54
55     //
56     void setResourceManager(CicoSCResourceManager *resMgr);
57
58     int show(int         surfaceid,
59              const char  *animation,
60              int         animationTime);
61
62     int hide(int         surfaceid,
63              const char  *animation,
64              int         animationTime);
65
66     int resize(int        surfaceid,
67                int        w,
68                int        h,
69                const char *animation,
70                int        animationTime);
71
72     int move(int        surfaceid,
73              int        nodeid,
74              int        x,
75              int        y,
76              const char *animation,
77              int        animationTime);
78
79     int setGeometry(int        surfaceid,
80                     int        nodeid,
81                     int        x,
82                     int        y,
83                     int        w,
84                     int        h,
85                     const char *resizeAnimation,
86                     int        resizeAnimationTime,
87                     const char *moveAnimation,
88                     int        moveAnimationTime);
89
90     int setGeometry(int        surfaceid,
91                     const char *zone,
92                     const char *resizeAnimation,
93                     int        resizeAnimationTime,
94                     const char *moveAnimation,
95                     int        moveAnimationTime);
96
97     int raise(int surfaceid,
98              const char  *animation,
99              int         animationTime);
100
101     int lower(int surfaceid, const char *animation, int animationTime);
102
103     int setWindowLayer(int surfaceid, int layerid);
104
105     int showLayer(int displayid, int layerid);
106
107     int hideLayer(int displayid, int layerid);
108
109     int active(int surfaceid, int target);
110
111     int mapSurface(int surfaceid, int framerate);
112
113     int unmapSurface(int surfaceid);
114
115     int getDisplayedWindow(int zoneid);
116
117     int setAttributes(int surfaceid);
118
119     //
120     virtual void createdCB(void *data,
121                            struct ico_window_mgr *ico_window_mgr,
122                            uint32_t surfaceid,
123                            const char *winname,
124                            int32_t pid,
125                            const char *appid,
126                            int32_t layertype);
127
128     virtual void nameCB(void *data,
129                         struct ico_window_mgr *ico_window_mgr,
130                         uint32_t surfaceid,
131                         const char *winname);
132
133     virtual void destroyedCB(void *data,
134                              struct ico_window_mgr *ico_window_mgr,
135                              uint32_t surfaceid);
136
137     virtual void visibleCB(void *data,
138                            struct ico_window_mgr *ico_window_mgr,
139                            uint32_t surfaceid,
140                            int32_t visible,
141                            int32_t raise,
142                            int32_t hint);
143
144     virtual void configureCB(void *data,
145                              struct ico_window_mgr *ico_window_mgr,
146                              uint32_t surfaceid,
147                              uint32_t node,
148                              int32_t layertype,
149                              uint32_t layer,
150                              int32_t x,
151                              int32_t y,
152                              int32_t width,
153                              int32_t height,
154                              int32_t hint);
155
156     virtual void activeCB(void *data,
157                           struct ico_window_mgr *ico_window_mgr,
158                           uint32_t surfaceid,
159                           int32_t active);
160
161     virtual void layerVisibleCB(void *data,
162                                 struct ico_window_mgr *ico_window_mgr,
163                                 uint32_t layer,
164                                 int32_t visible);
165
166     virtual void appSurfacesCB(void *data,
167                                struct ico_window_mgr *ico_window_mgr,
168                                const char *appid,
169                                struct wl_array *surfaces);
170
171     virtual void mapSurfaceCB(void *data,
172                               struct ico_window_mgr *ico_window_mgr,
173                               int32_t event,
174                               uint32_t surfaceid,
175                               uint32_t type,
176                               uint32_t target,
177                               int32_t width,
178                               int32_t height,
179                               int32_t stride,
180                               uint32_t format);
181
182     virtual void outputGeometryCB(void *data,
183                                   struct wl_output *wl_output,
184                                   int32_t x,
185                                   int32_t y,
186                                   int32_t physical_width,
187                                   int32_t physical_height,
188                                   int32_t subpixel,
189                                   const char *make,
190                                   const char *model,
191                                   int32_t transform);
192
193     virtual void outputModeCB(void *data,
194                               struct wl_output *wl_output,
195                               uint32_t flags,
196                               int32_t width,
197                               int32_t height,
198                               int32_t refresh);
199
200 private:
201     // assignment operator
202     CicoSCWindowController& operator=(const CicoSCWindowController &object);
203
204     // copy constructor
205     CicoSCWindowController(const CicoSCWindowController &object);
206
207     // find window object by surface id
208     CicoSCWindow* findWindow(int surfaceid);
209
210     // find layer object by display id and layer id
211     CicoSCLayer* findLayer(int displayid, int layerid);
212
213     // fine display zone by id
214     const CicoSCDisplayZone * findDisplayZone(int zoneid);
215
216     int notifyResourceManager(int        surfaceid,
217                               const char *zone,
218                               const char *animation,
219                               int        animationTime);
220
221 private:
222     // resource manager instance
223     CicoSCResourceManager *m_resMgr;
224
225     // window object list
226     map<unsigned int, CicoSCWindow*> m_windowList;
227
228     // display object list
229     vector<CicoSCDisplay*> m_displayList;
230
231     // total of physical display 
232     unsigned int m_physicalDisplayTotal;
233
234 };
235 #endif  // __CICO_SC_WINDOW_CONTROLLER_H__
236 // vim:set expandtab ts=4 sw=4: