Ghost Context Refactor
[blender-staging.git] / source / gameengine / GamePlayer / common / GPC_Canvas.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 /** \file GPC_Canvas.h
29  *  \ingroup player
30  */
31
32 #ifndef __GPC_CANVAS_H__
33 #define __GPC_CANVAS_H__
34
35 #include "RAS_ICanvas.h"
36 #include "RAS_Rect.h"
37
38 #ifdef WIN32
39 #  pragma warning (disable:4786) // suppress stl-MSVC debug info warning
40 #  include <windows.h>
41 #endif  /* WIN32 */
42
43 #include "glew-mx.h"
44
45 #include <map>
46
47
48 class GPC_Canvas : public RAS_ICanvas
49 {
50 protected:
51
52         /** Width of the context. */
53         int m_width;
54         /** Height of the context. */
55         int m_height;
56         /** Rect that defines the area used for rendering,
57          * relative to the context */
58         RAS_Rect m_displayarea;
59
60         int m_viewport[4];
61
62 public:
63
64         GPC_Canvas(int width, int height);
65
66         virtual ~GPC_Canvas();
67
68         void Resize(int width, int height);
69
70         virtual void ResizeWindow(int width, int height) {}
71
72         /**
73          * \section Methods inherited from abstract base class RAS_ICanvas.
74          */
75         
76                 int 
77         GetWidth(
78         ) const {
79                 return m_width;
80         }
81         
82                 int 
83         GetHeight(
84         ) const {
85                 return m_height;
86         }
87
88         const 
89                 RAS_Rect &
90         GetDisplayArea(
91         ) const {
92                 return m_displayarea;
93         };
94
95                 void
96         SetDisplayArea(
97                 RAS_Rect *rect
98         ) {
99                 m_displayarea= *rect;
100         };
101         
102                 RAS_Rect &
103         GetWindowArea(
104         ) {
105                 return m_displayarea;
106         }
107
108                 void 
109         BeginFrame(
110         ) {};
111
112         /**
113          * Draws overlay banners and progress bars.
114          */
115                 void 
116         EndFrame(
117         ) {};
118         
119         void SetViewPort(int x1, int y1, int x2, int y2);
120         void UpdateViewPort(int x1, int y1, int x2, int y2);
121         const int *GetViewPort();
122
123         void ClearColor(float r, float g, float b, float a);
124
125         /**
126          * \section Methods inherited from abstract base class RAS_ICanvas.
127          * Semantics are not yet honored.
128          */
129         
130         void SetMouseState(RAS_MouseState mousestate)
131         {
132                 // not yet
133         }
134
135         void SetMousePosition(int x, int y)
136         {
137                 // not yet
138         }
139
140         virtual void MakeScreenShot(const char* filename);
141
142         void ClearBuffer(int type);
143 };
144
145 #endif  /* __GPC_CANVAS_H__ */