2 * Copyright 2008-2013, Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
5 * This header defines BGLView, the base class making up
20 #define BGL_INDIRECT 4
24 #define BGL_OVERLAY 64
25 #define BGL_UNDERLAY 128
26 #define BGL_STENCIL 512
32 #include <DirectWindow.h>
35 #include <WindowScreen.h>
38 struct glview_direct_info
;
40 class GLRendererRoster
;
42 class BGLView
: public BView
{
44 BGLView(BRect rect
, const char* name
,
45 ulong resizingMode
, ulong mode
,
52 void SwapBuffers(bool vSync
);
54 BView
* EmbeddedView(); // deprecated, returns NULL
55 void* GetGLProcAddress(const char* procName
);
57 status_t
CopyPixelsOut(BPoint source
, BBitmap
*dest
);
58 status_t
CopyPixelsIn(BBitmap
*source
, BPoint dest
);
60 // Mesa's GLenum is uint where Be's ones was ulong!
61 virtual void ErrorCallback(unsigned long errorCode
);
63 virtual void Draw(BRect updateRect
);
64 virtual void AttachedToWindow();
65 virtual void AllAttached();
66 virtual void DetachedFromWindow();
67 virtual void AllDetached();
69 virtual void FrameResized(float newWidth
, float newHeight
);
70 virtual status_t
Perform(perform_code d
, void *arg
);
72 virtual status_t
Archive(BMessage
*data
, bool deep
= true) const;
74 virtual void MessageReceived(BMessage
*message
);
75 virtual void SetResizingMode(uint32 mode
);
80 virtual BHandler
* ResolveSpecifier(BMessage
*msg
, int32 index
,
81 BMessage
*specifier
, int32 form
,
82 const char *property
);
83 virtual status_t
GetSupportedSuites(BMessage
*data
);
85 void DirectConnected(direct_buffer_info
*info
);
86 void EnableDirectMode(bool enabled
);
88 void* getGC() { return fGc
; } // ???
90 virtual void GetPreferredSize(float* width
, float* height
);
94 virtual void _ReservedGLView1();
95 virtual void _ReservedGLView2();
96 virtual void _ReservedGLView3();
97 virtual void _ReservedGLView4();
98 virtual void _ReservedGLView5();
99 virtual void _ReservedGLView6();
100 virtual void _ReservedGLView7();
101 virtual void _ReservedGLView8();
103 BGLView(const BGLView
&);
104 BGLView
&operator=(const BGLView
&);
107 bool _ConfirmDither();
108 void _Draw(BRect rect
);
109 void _CallDirectConnected();
115 BLocker fDisplayLock
;
116 glview_direct_info
* fClipInfo
;
118 BGLRenderer
* fRenderer
;
119 GLRendererRoster
* fRoster
;
123 int16
* fErrorBuffer
[2];
129 // BeOS compatibility
131 BGLView(BRect rect
, char* name
,
132 ulong resizingMode
, ulong mode
,
137 class BGLScreen
: public BWindowScreen
{
139 BGLScreen(char* name
,
140 ulong screenMode
, ulong options
,
141 status_t
*error
, bool debug
=false);
147 // Mesa's GLenum is uint where Be's ones was ulong!
148 virtual void ErrorCallback(unsigned long errorCode
);
150 virtual void ScreenConnected(bool connected
);
151 virtual void FrameResized(float width
, float height
);
152 virtual status_t
Perform(perform_code code
, void *arg
);
154 virtual status_t
Archive(BMessage
*data
, bool deep
= true) const;
155 virtual void MessageReceived(BMessage
*message
);
160 virtual BHandler
* ResolveSpecifier(BMessage
*message
,
164 const char *property
);
165 virtual status_t
GetSupportedSuites(BMessage
*data
);
169 virtual void _ReservedGLScreen1();
170 virtual void _ReservedGLScreen2();
171 virtual void _ReservedGLScreen3();
172 virtual void _ReservedGLScreen4();
173 virtual void _ReservedGLScreen5();
174 virtual void _ReservedGLScreen6();
175 virtual void _ReservedGLScreen7();
176 virtual void _ReservedGLScreen8();
178 BGLScreen(const BGLScreen
&);
179 BGLScreen
&operator=(const BGLScreen
&);
191 #endif // __cplusplus