Additional functions of policy and resource management.
[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 raise(int surfaceid,
91              const char  *animation,
92              int         animationTime);
93
94     int lower(int surfaceid, const char *animation, int animationTime);
95
96     int setWindowLayer(int surfaceid, int layerid);
97
98     int showLayer(int displayid, int layerid);
99
100     int hideLayer(int displayid, int layerid);
101
102     int active(int surfaceid, int target);
103
104     int mapSurface(int surfaceid, int framerate);
105
106     int unmapSurface(int surfaceid);
107
108     //
109     virtual void createdCB(void *data,
110                            struct ico_window_mgr *ico_window_mgr,
111                            uint32_t surfaceid,
112                            const char *winname,
113                            int32_t pid,
114                            const char *appid);
115
116     virtual void nameCB(void *data,
117                         struct ico_window_mgr *ico_window_mgr,
118                         uint32_t surfaceid,
119                         const char *winname);
120
121     virtual void destroyedCB(void *data,
122                              struct ico_window_mgr *ico_window_mgr,
123                              uint32_t surfaceid);
124
125     virtual void visibleCB(void *data,
126                            struct ico_window_mgr *ico_window_mgr,
127                            uint32_t surfaceid,
128                            int32_t visible,
129                            int32_t raise,
130                            int32_t hint);
131
132     virtual void configureCB(void *data,
133                              struct ico_window_mgr *ico_window_mgr,
134                              uint32_t surfaceid,
135                              uint32_t node,
136                              uint32_t layer,
137                              int32_t x,
138                              int32_t y,
139                              int32_t width,
140                              int32_t height,
141                              int32_t hint);
142
143     virtual void activeCB(void *data,
144                           struct ico_window_mgr *ico_window_mgr,
145                           uint32_t surfaceid,
146                           int32_t active);
147
148     virtual void layerVisibleCB(void *data,
149                                 struct ico_window_mgr *ico_window_mgr,
150                                 uint32_t layer,
151                                 int32_t visible);
152
153     virtual void appSurfacesCB(void *data,
154                                struct ico_window_mgr *ico_window_mgr,
155                                const char *appid,
156                                struct wl_array *surfaces);
157
158     virtual void mapSurfaceCB(void *data,
159                               struct ico_window_mgr *ico_window_mgr,
160                               int32_t event,
161                               uint32_t surfaceid,
162                               int32_t width,
163                               int32_t height,
164                               int32_t stride,
165                               int32_t format);
166
167     virtual void outputGeometryCB(void *data,
168                                   struct wl_output *wl_output,
169                                   int32_t x,
170                                   int32_t y,
171                                   int32_t physical_width,
172                                   int32_t physical_height,
173                                   int32_t subpixel,
174                                   const char *make,
175                                   const char *model,
176                                   int32_t transform);
177
178     virtual void outputModeCB(void *data,
179                               struct wl_output *wl_output,
180                               uint32_t flags,
181                               int32_t width,
182                               int32_t height,
183                               int32_t refresh);
184
185 private:
186     // assignment operator
187     CicoSCWindowController& operator=(const CicoSCWindowController &object);
188
189     // copy constructor
190     CicoSCWindowController(const CicoSCWindowController &object);
191
192     // find window object by surface id
193     CicoSCWindow* findWindow(int surfaceid);
194
195     // find layer object by display id and layer id
196     CicoSCLayer* findLayer(int displayid, int layerid);
197
198     // fine display zone by id
199     const CicoSCDisplayZone * findDisplayZone(int zoneid);
200
201     int notifyResourceManager(int        surfaceid,
202                               const char *animation,
203                               int        animationTime);
204
205 private:
206     CicoSCResourceManager *m_resMgr;
207
208     // window object list
209     map<unsigned int, CicoSCWindow*> m_windowList;
210
211     // display object list
212     vector<CicoSCDisplay*>   m_displayList;
213
214 };
215 #endif  // __CICO_SC_WINDOW_CONTROLLER_H__
216 // vim:set expandtab ts=4 sw=4: