fixed spacing in the headers to get rid of some warnings and some other
[blender.git] / source / gameengine / Rasterizer / RAS_ICanvas.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 __RAS_ICANVAS
33 #define __RAS_ICANVAS
34
35 /**
36  * 2D rendering device context. The connection from 3d rendercontext to 2d surface.
37  */
38
39 class RAS_Rect;
40
41
42 class RAS_ICanvas
43 {
44 public:
45         enum BufferType {
46                 COLOR_BUFFER=1,
47                 DEPTH_BUFFER=2
48         };
49
50         enum RAS_MouseState
51         {
52                 MOUSE_INVISIBLE=1,
53                 MOUSE_WAIT,
54                 MOUSE_NORMAL
55         };
56
57         virtual 
58         ~RAS_ICanvas(
59         ) {
60         };
61
62         virtual 
63                 void 
64         Init(
65         ) = 0;
66
67         virtual 
68                 void 
69         BeginFrame(
70         )=0;
71
72         virtual 
73                 void 
74         EndFrame(
75         )=0;
76
77         /**
78          * Initializes the canvas for drawing.  Drawing to the canvas is
79          * only allowed between BeginDraw() and EndDraw().
80          *
81          * @retval false Acquiring the canvas failed.
82          * @retval true Acquiring the canvas succeeded.
83          *
84          */
85
86         virtual 
87                 bool 
88         BeginDraw(
89         )=0;
90
91         /**
92          * Unitializes the canvas for drawing.
93          */
94
95         virtual 
96                 void 
97         EndDraw(
98         )=0;
99
100
101         /// probably needs some arguments for PS2 in future
102         virtual 
103                 void 
104         SwapBuffers(
105         )=0;
106  
107         virtual 
108                 void 
109         ClearBuffer(
110                 int type
111         )=0;
112
113         virtual 
114                 void 
115         ClearColor(
116                 float r,
117                 float g,
118                 float b,
119                 float a
120         )=0;
121
122         virtual 
123                 int      
124         GetWidth(
125         ) const = 0;
126
127         virtual 
128                 int      
129         GetHeight(
130         ) const = 0;
131
132         virtual 
133                 const RAS_Rect &
134         GetDisplayArea(
135         ) const = 0;
136
137         virtual 
138                 RAS_Rect &
139         GetDisplayArea(
140         ) = 0;
141
142         /**
143          * Set the visible vieport 
144          */
145
146         virtual
147                 void
148         SetViewPort(
149                 int x1, int y1,
150                 int x2, int y2
151         ) = 0; 
152
153         virtual 
154                 void 
155         SetMouseState(
156                 RAS_MouseState mousestate
157         )=0;
158
159         virtual 
160                 void 
161         SetMousePosition(
162                 int x,
163                 int y
164         )=0;
165
166         virtual 
167                 void 
168         MakeScreenShot(
169                 const char* filename
170         )=0;
171 };
172
173 #endif //__RAS_ICANVAS
174