summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/beos/GLView.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/drivers/beos/GLView.h')
-rw-r--r--src/mesa/drivers/beos/GLView.h196
1 files changed, 196 insertions, 0 deletions
diff --git a/src/mesa/drivers/beos/GLView.h b/src/mesa/drivers/beos/GLView.h
new file mode 100644
index 0000000000..595000bb56
--- /dev/null
+++ b/src/mesa/drivers/beos/GLView.h
@@ -0,0 +1,196 @@
+/*******************************************************************************
+/
+/ File: GLView.h
+/
+/ Copyright 1993-98, Be Incorporated, All Rights Reserved.
+/
+*******************************************************************************/
+
+#ifndef BGLVIEW_H
+#define BGLVIEW_H
+
+// added by Brian Paul:
+#ifndef BGL_RGB
+#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
+#endif
+
+
+#include <GL/gl.h>
+#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();
+
+ // Added for Mesa (can't be virtual!)
+ void CopySubBufferMESA(GLint x, GLint y, GLuint width, GLuint height);
+
+ BView * EmbeddedView();
+ status_t CopyPixelsOut(BPoint source, BBitmap *dest);
+ status_t CopyPixelsIn(BBitmap *source, BPoint dest);
+
+ virtual void ErrorCallback(unsigned long errorCode); // GLenum errorCode);
+
+ 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 );
+
+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;
+#if OLD_GLVIEW
+ BView * m_embeddedFront;
+ BView * m_embeddedBack;
+#else
+ void * m_clip_info;
+ void * _reserved1;
+#endif
+ 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
+
+
+
+
+