Initial revision
[blender.git] / source / gameengine / GamePlayer / common / windows / GPW_Canvas.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
33 #ifndef _GPW_CANVAS_H_
34 #define _GPW_CANVAS_H_
35
36 #ifdef WIN32
37 #pragma warning (disable:4786) // suppress stl-MSVC debug info warning
38 #endif
39
40 #include <iostream>
41 #include <windows.h>
42 #include <gl/gl.h>
43
44 #include "GPC_Canvas.h"
45
46
47 class GPW_Canvas : public GPC_Canvas
48 {
49 protected:
50         /** The window handle. */
51         HWND m_hWnd;
52         /** Rendering context. */
53         HGLRC   m_hRC;
54         /** Device Context. */
55     HDC         m_hDC;
56
57 public:
58         /**
59          * Constructor.
60          */
61         GPW_Canvas(HWND hWnd, HDC hDC, int width, int height);
62
63         /**
64          * Destructor.
65          */
66         virtual ~GPW_Canvas(void);
67
68         virtual void Init(void);
69
70         /**
71          * Moves the cursor to a new location.
72          * @param x The x-coordinate of the new location.
73          * @param x The y-coordinate of the new location.
74          */
75         virtual void SetMousePosition(int x, int y);
76
77         /**
78          * Sets the cursor shape and/or visibility.
79          * @param mousestate The new state ofthe cursor.
80          */
81         virtual void SetMouseState(RAS_MouseState mousestate);
82
83         bool BeginDraw(void);
84         void EndDraw(void);
85
86         virtual void SwapBuffers(void);
87
88         virtual HDC GetHDC(void)
89         {
90                 return m_hDC;
91         }
92
93         virtual void SetHDC(HDC hDC)
94         {
95                 if (hDC != m_hDC) {
96                         m_hDC = hDC;
97                 }
98         }
99
100         virtual HGLRC GetHGLRC(void)
101         {
102                 return m_hRC;
103         }
104
105 protected:
106         /**
107          * Hides the mouse cursor.
108          */
109         void HideCursor(void);
110
111         /**
112          * Shows the mouse cursor.
113          */
114         void ShowCursor(void);
115 };
116
117
118
119 #endif // _GPW_CANVAS_H_