Subversion Repositories shark

Rev

Rev 55 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
55 pj 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 <GL/gl.h>
30
#include <AppKit.h>
31
#include <interface/Window.h>
32
#include <interface/View.h>
33
#include <interface/Bitmap.h>
34
#include <game/WindowScreen.h>
35
#include <game/DirectWindow.h>
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(unsigned long errorCode); // 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
 
193
 
194
 
195
 
196