resolved conflict state with HEAD r14096
[blender.git] / source / gameengine / BlenderRoutines / KX_BlenderCanvas.h
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24  * All rights reserved.
25  *
26  * The Original Code is: all of this file.
27  *
28  * Contributor(s): none yet.
29  *
30  * ***** END GPL/BL DUAL LICENSE BLOCK *****
31  */
32 #ifndef __KX_BLENDERCANVAS
33 #define __KX_BLENDERCANVAS
34
35 #ifdef WIN32
36 #include <windows.h>
37 #endif 
38 #ifdef __APPLE__
39 #include <OpenGL/gl.h>
40 #else
41 #include <GL/gl.h>
42 #endif
43
44 #include "RAS_ICanvas.h"
45 #include "RAS_Rect.h"
46
47 #include "KX_BlenderGL.h"
48
49 struct ScrArea;
50
51 /**
52  * 2D Blender device context abstraction. 
53  * The connection from 3d rendercontext to 2d Blender surface embedding.
54  */
55
56 class KX_BlenderCanvas : public RAS_ICanvas
57 {
58 private:
59         /** Rect that defines the area used for rendering,
60             relative to the context */
61         RAS_Rect m_displayarea;
62
63 public:
64         /* Construct a new canvas.
65          * 
66          * @param area The Blender ScrArea to run the game within.
67          */
68         KX_BlenderCanvas(struct ScrArea* area);
69         ~KX_BlenderCanvas();
70
71                 void 
72         Init(
73         );
74         
75                 void 
76         SwapBuffers(
77         );
78                 void 
79         Resize(
80                 int width,
81                 int height
82         );
83
84                 void
85         BeginFrame(
86         );
87
88                 void 
89         EndFrame(
90         );
91
92                 void 
93         ClearColor(
94                 float r,
95                 float g,
96                 float b,
97                 float a
98         );
99
100                 void 
101         ClearBuffer(
102                 int type
103         );
104
105                 int 
106         GetWidth(
107         ) const ;
108
109                 int 
110         GetHeight(
111         ) const ;
112
113         const
114                 RAS_Rect &
115         GetDisplayArea(
116         ) const {
117                 return m_displayarea;
118         };
119
120                 RAS_Rect &
121         GetDisplayArea(
122         ) {
123                 return m_displayarea;
124         };
125
126                 void
127         SetViewPort(
128                 int x1, int y1,
129                 int x2, int y2
130         );
131
132                 void 
133         SetMouseState(
134                 RAS_MouseState mousestate
135         );
136
137                 void 
138         SetMousePosition(
139                 int x,
140                 int y
141         );
142
143                 void 
144         MakeScreenShot(
145                 const char* filename
146         );
147         
148         /**
149          * Nothing needs be done for BlenderCanvas
150          * Begin/End Draw, as the game engine GL context
151          * is always current/active.
152          */
153
154                 bool 
155         BeginDraw(
156         ) {
157                         return true;
158         };
159
160                 void 
161         EndDraw(
162         ) {
163         };
164
165 private:
166         /** Blender area the game engine is running within */
167         struct ScrArea* m_area;
168 };
169
170 #endif // __KX_BLENDERCANVAS
171