Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4973 right-hear 1
/*******************************************************************************
2
/
3
/	File:		GLView.h
4
/
5
/	Copyright 1993-98, Be Incorporated, All Rights Reserved.
6
/
7
*******************************************************************************/
8
 
9
#ifndef BGLVIEW_H
10
#define BGLVIEW_H
11
 
12
// added by Brian Paul:
13
#ifndef BGL_RGB
14
#define BGL_RGB			0
15
#define BGL_INDEX		1
16
#define BGL_SINGLE		0
17
#define BGL_DOUBLE		2
18
#define BGL_DIRECT		0
19
#define BGL_INDIRECT		4
20
#define BGL_ACCUM		8
21
#define BGL_ALPHA		16
22
#define BGL_DEPTH		32
23
#define BGL_OVERLAY		64
24
#define BGL_UNDERLAY		128
25
#define BGL_STENCIL		512
26
#endif
27
 
28
 
29
#include 
30
#include 
31
#include 
32
#include 
33
#include 
34
#include 
35
#include 
36
 
37
class BGLView : public BView {
38
public:
39
 
40
	BGLView(BRect rect, char *name,
41
			ulong resizingMode, ulong mode,
42
			ulong options);
43
	virtual ~BGLView();
44
 
45
	void		LockGL();
46
	void		UnlockGL();
47
	void		SwapBuffers();
48
 
49
        // Added for Mesa (can't be virtual!)
50
        void CopySubBufferMESA(GLint x, GLint y, GLuint width, GLuint height);
51
 
52
	BView *     EmbeddedView();
53
	status_t    CopyPixelsOut(BPoint source, BBitmap *dest);
54
	status_t    CopyPixelsIn(BBitmap *source, BPoint dest);
55
 
56
	virtual void        ErrorCallback(GLenum errorCode);
57
 
58
	virtual	void		Draw(BRect updateRect);
59
 
60
	virtual void		AttachedToWindow();
61
	virtual void        AllAttached();
62
	virtual void        DetachedFromWindow();
63
	virtual void        AllDetached();
64
 
65
	virtual void		FrameResized(float width, float height);
66
	virtual status_t    Perform(perform_code d, void *arg);
67
 
68
	/* The public methods below, for the moment,
69
	   are just pass-throughs to BView */
70
 
71
	virtual status_t    Archive(BMessage *data, bool deep = true) const;
72
 
73
	virtual void        MessageReceived(BMessage *msg);
74
	virtual void        SetResizingMode(uint32 mode);
75
 
76
	virtual void        Show();
77
	virtual void        Hide();
78
 
79
	virtual BHandler   *ResolveSpecifier(BMessage *msg, int32 index,
80
							BMessage *specifier, int32 form,
81
							const char *property);
82
	virtual status_t    GetSupportedSuites(BMessage *data);
83
 
84
	/* New public functions */
85
	void		DirectConnected( direct_buffer_info *info );
86
	void		EnableDirectMode( bool enabled );
87
 
88
private:
89
 
90
	virtual void        _ReservedGLView1();
91
	virtual void        _ReservedGLView2();
92
	virtual void        _ReservedGLView3();
93
	virtual void        _ReservedGLView4();
94
	virtual void        _ReservedGLView5();
95
	virtual void        _ReservedGLView6();
96
	virtual void        _ReservedGLView7();
97
	virtual void        _ReservedGLView8();
98
 
99
    BGLView(const BGLView &);
100
    BGLView     &operator=(const BGLView &);
101
 
102
	void        dither_front();
103
	bool        confirm_dither();
104
	void        draw(BRect r);
105
 
106
	void *		m_gc;
107
	uint32		m_options;
108
	uint32      m_ditherCount;
109
	BLocker		m_drawLock;
110
	BLocker     m_displayLock;
111
#if OLD_GLVIEW
112
	BView *		m_embeddedFront;
113
	BView *     m_embeddedBack;
114
#else
115
	void *		m_clip_info;
116
	void *     	_reserved1;
117
#endif
118
	BBitmap *   m_ditherMap;
119
	BRect       m_bounds;
120
	int16 *     m_errorBuffer[2];
121
	uint64      _reserved[8];
122
 
123
	/* Direct Window stuff */
124
private:
125
	void drawScanline( int x1, int x2, int y, void *data );
126
	static void scanlineHandler(struct rasStateRec *state, GLint x1, GLint x2);
127
	void		lock_draw();
128
	void		unlock_draw();
129
	bool		validateView();
130
};
131
 
132
 
133
 
134
class BGLScreen : public BWindowScreen {
135
public:
136
	BGLScreen(char *name,
137
			ulong screenMode, ulong options,
138
			status_t *error, bool debug=false);
139
	~BGLScreen();
140
 
141
	void		LockGL();
142
	void		UnlockGL();
143
	void		SwapBuffers();
144
	virtual void        ErrorCallback(GLenum errorCode);
145
 
146
	virtual void		ScreenConnected(bool connected);
147
	virtual void		FrameResized(float width, float height);
148
	virtual status_t    Perform(perform_code d, void *arg);
149
 
150
	/* The public methods below, for the moment,
151
	   are just pass-throughs to BWindowScreen */
152
 
153
	virtual status_t    Archive(BMessage *data, bool deep = true) const;
154
	virtual void        MessageReceived(BMessage *msg);
155
 
156
	virtual void        Show();
157
	virtual void        Hide();
158
 
159
	virtual BHandler   *ResolveSpecifier(BMessage *msg,
160
                        int32 index,
161
						BMessage *specifier,
162
						int32 form,
163
						const char *property);
164
	virtual status_t    GetSupportedSuites(BMessage *data);
165
 
166
private:
167
 
168
	virtual void        _ReservedGLScreen1();
169
	virtual void        _ReservedGLScreen2();
170
	virtual void        _ReservedGLScreen3();
171
	virtual void        _ReservedGLScreen4();
172
	virtual void        _ReservedGLScreen5();
173
	virtual void        _ReservedGLScreen6();
174
	virtual void        _ReservedGLScreen7();
175
	virtual void        _ReservedGLScreen8();
176
 
177
	BGLScreen(const BGLScreen &);
178
	BGLScreen   &operator=(const BGLScreen &);
179
 
180
	void *		m_gc;
181
	long		m_options;
182
	BLocker		m_drawLock;
183
 
184
	int32		m_colorSpace;
185
	uint32		m_screen_mode;
186
 
187
	uint64      _reserved[7];
188
};
189
 
190
 
191
#endif
192