| /******************************************************************************* |
| / |
| / File: GLView.h |
| / |
| / Copyright 1993-98, Be Incorporated, All Rights Reserved. |
| / |
| *******************************************************************************/ |
| |
| #ifndef BGLVIEW_H |
| #define BGLVIEW_H |
| |
| #include <GL/gl.h> |
| |
| #define BGL_RGB 0 |
| #define BGL_INDEX 1 |
| #define BGL_SINGLE 0 |
| #define BGL_DOUBLE 2 |
| #define BGL_DIRECT 0 |
| #define BGL_INDIRECT 4 |
| #define BGL_ACCUM 8 |
| #define BGL_ALPHA 16 |
| #define BGL_DEPTH 32 |
| #define BGL_OVERLAY 64 |
| #define BGL_UNDERLAY 128 |
| #define BGL_STENCIL 512 |
| |
| #ifdef __cplusplus |
| |
| |
| #include <AppKit.h> |
| #include <interface/Window.h> |
| #include <interface/View.h> |
| #include <interface/Bitmap.h> |
| #include <game/WindowScreen.h> |
| #include <game/DirectWindow.h> |
| |
| class BGLView : public BView { |
| public: |
| |
| BGLView(BRect rect, char *name, |
| ulong resizingMode, ulong mode, |
| ulong options); |
| virtual ~BGLView(); |
| |
| void LockGL(); |
| void UnlockGL(); |
| void SwapBuffers(); |
| void SwapBuffers( bool vSync ); |
| BView * EmbeddedView(); |
| status_t CopyPixelsOut(BPoint source, BBitmap *dest); |
| status_t CopyPixelsIn(BBitmap *source, BPoint dest); |
| virtual void ErrorCallback(unsigned long errorCode); // Mesa's GLenum is uint where Be's ones was ulong! |
| |
| virtual void Draw(BRect updateRect); |
| |
| virtual void AttachedToWindow(); |
| virtual void AllAttached(); |
| virtual void DetachedFromWindow(); |
| virtual void AllDetached(); |
| |
| virtual void FrameResized(float width, float height); |
| virtual status_t Perform(perform_code d, void *arg); |
| |
| /* The public methods below, for the moment, |
| are just pass-throughs to BView */ |
| |
| virtual status_t Archive(BMessage *data, bool deep = true) const; |
| |
| virtual void MessageReceived(BMessage *msg); |
| virtual void SetResizingMode(uint32 mode); |
| |
| virtual void Show(); |
| virtual void Hide(); |
| |
| virtual BHandler *ResolveSpecifier(BMessage *msg, int32 index, |
| BMessage *specifier, int32 form, |
| const char *property); |
| virtual status_t GetSupportedSuites(BMessage *data); |
| |
| /* New public functions */ |
| void DirectConnected( direct_buffer_info *info ); |
| void EnableDirectMode( bool enabled ); |
| |
| void * getGC() { return m_gc; } |
| |
| private: |
| |
| virtual void _ReservedGLView1(); |
| virtual void _ReservedGLView2(); |
| virtual void _ReservedGLView3(); |
| virtual void _ReservedGLView4(); |
| virtual void _ReservedGLView5(); |
| virtual void _ReservedGLView6(); |
| virtual void _ReservedGLView7(); |
| virtual void _ReservedGLView8(); |
| |
| BGLView(const BGLView &); |
| BGLView &operator=(const BGLView &); |
| |
| void dither_front(); |
| bool confirm_dither(); |
| void draw(BRect r); |
| |
| void * m_gc; |
| uint32 m_options; |
| uint32 m_ditherCount; |
| BLocker m_drawLock; |
| BLocker m_displayLock; |
| void * m_clip_info; |
| void * _Unused1; |
| |
| BBitmap * m_ditherMap; |
| BRect m_bounds; |
| int16 * m_errorBuffer[2]; |
| uint64 _reserved[8]; |
| |
| /* Direct Window stuff */ |
| private: |
| void drawScanline( int x1, int x2, int y, void *data ); |
| static void scanlineHandler(struct rasStateRec *state, GLint x1, GLint x2); |
| |
| void lock_draw(); |
| void unlock_draw(); |
| bool validateView(); |
| }; |
| |
| |
| |
| class BGLScreen : public BWindowScreen { |
| public: |
| BGLScreen(char *name, |
| ulong screenMode, ulong options, |
| status_t *error, bool debug=false); |
| ~BGLScreen(); |
| |
| void LockGL(); |
| void UnlockGL(); |
| void SwapBuffers(); |
| virtual void ErrorCallback(GLenum errorCode); |
| |
| virtual void ScreenConnected(bool connected); |
| virtual void FrameResized(float width, float height); |
| virtual status_t Perform(perform_code d, void *arg); |
| |
| /* The public methods below, for the moment, |
| are just pass-throughs to BWindowScreen */ |
| |
| virtual status_t Archive(BMessage *data, bool deep = true) const; |
| virtual void MessageReceived(BMessage *msg); |
| |
| virtual void Show(); |
| virtual void Hide(); |
| |
| virtual BHandler *ResolveSpecifier(BMessage *msg, |
| int32 index, |
| BMessage *specifier, |
| int32 form, |
| const char *property); |
| virtual status_t GetSupportedSuites(BMessage *data); |
| |
| private: |
| |
| virtual void _ReservedGLScreen1(); |
| virtual void _ReservedGLScreen2(); |
| virtual void _ReservedGLScreen3(); |
| virtual void _ReservedGLScreen4(); |
| virtual void _ReservedGLScreen5(); |
| virtual void _ReservedGLScreen6(); |
| virtual void _ReservedGLScreen7(); |
| virtual void _ReservedGLScreen8(); |
| |
| BGLScreen(const BGLScreen &); |
| BGLScreen &operator=(const BGLScreen &); |
| |
| void * m_gc; |
| long m_options; |
| BLocker m_drawLock; |
| |
| int32 m_colorSpace; |
| uint32 m_screen_mode; |
| |
| uint64 _reserved[7]; |
| }; |
| |
| #endif // __cplusplus |
| |
| #endif // BGLVIEW_H |
| |
| |
| |
| |
| |