00001
00002
00003 #ifndef _GDKMM_GL_CONTEXT_H
00004 #define _GDKMM_GL_CONTEXT_H
00005
00006 #include <glibmm.h>
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <gdkmm/gl/defs.h>
00028 #include <gdkmm/gl/tokens.h>
00029 #include <gdkmm/gl/config.h>
00030 #include <gdkmm/gl/drawable.h>
00031
00032 #include <GL/gl.h>
00033
00034
00035 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00036 typedef struct _GdkGLContext GdkGLContext;
00037 typedef struct _GdkGLContextClass GdkGLContextClass;
00038 #endif
00039
00040
00041 namespace Gdk
00042 {
00043
00044 namespace GL
00045 { class Context_Class; }
00046
00047 }
00048 namespace Gdk
00049 {
00050 namespace GL
00051 {
00052
00053 class Drawable;
00054
00055
00056
00057
00058
00059
00060
00061 class Context : public Glib::Object
00062 {
00063
00064 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00065
00066 public:
00067 typedef Context CppObjectType;
00068 typedef Context_Class CppClassType;
00069 typedef GdkGLContext BaseObjectType;
00070 typedef GdkGLContextClass BaseClassType;
00071
00072 private:
00073 friend class Context_Class;
00074 static CppClassType context_class_;
00075
00076
00077 Context(const Context&);
00078 Context& operator=(const Context&);
00079
00080 protected:
00081 explicit Context(const Glib::ConstructParams& construct_params);
00082 explicit Context(GdkGLContext* castitem);
00083
00084 #endif
00085
00086 public:
00087 virtual ~Context();
00088
00089 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00090 static GType get_type() G_GNUC_CONST;
00091 static GType get_base_type() G_GNUC_CONST;
00092 #endif
00093
00094 GdkGLContext* gobj() { return reinterpret_cast<GdkGLContext*>(gobject_); }
00095 const GdkGLContext* gobj() const { return reinterpret_cast<GdkGLContext*>(gobject_); }
00096
00097 GdkGLContext* gobj_copy();
00098
00099 private:
00100
00101
00102 protected:
00103
00104 Context(const Glib::RefPtr<const Drawable>& gldrawable,
00105 const Glib::RefPtr<const Context>& share_list,
00106 bool direct = true,
00107 int render_type = RGBA_TYPE);
00108
00109 explicit Context(const Glib::RefPtr<const Drawable>& gldrawable,
00110 bool direct = true,
00111 int render_type = RGBA_TYPE);
00112
00113 public:
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125 static Glib::RefPtr<Context> create(const Glib::RefPtr<const Drawable>& gldrawable,
00126 const Glib::RefPtr<const Context>& share_list,
00127 bool direct = true,
00128 int render_type = RGBA_TYPE);
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139 static Glib::RefPtr<Context> create(const Glib::RefPtr<const Drawable>& gldrawable,
00140 bool direct = true,
00141 int render_type = RGBA_TYPE);
00142
00143 public:
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155 bool copy(const Glib::RefPtr<const Context>& src,
00156 unsigned long mask = GL_ALL_ATTRIB_BITS);
00157
00158
00159
00160
00161
00162 Glib::RefPtr<Drawable> get_gl_drawable();
00163
00164
00165
00166
00167 Glib::RefPtr<const Drawable> get_gl_drawable() const;
00168
00169
00170
00171
00172
00173 Glib::RefPtr<Config> get_gl_config();
00174
00175
00176
00177
00178 Glib::RefPtr<const Config> get_gl_config() const;
00179
00180
00181
00182
00183
00184
00185 Glib::RefPtr<Context> get_share_list();
00186
00187
00188
00189
00190
00191 Glib::RefPtr<const Context> get_share_list() const;
00192
00193
00194
00195
00196
00197 bool is_direct() const;
00198
00199
00200
00201
00202
00203 int get_render_type() const;
00204
00205
00206
00207
00208
00209
00210 static Glib::RefPtr<Context> get_current();
00211
00212
00213 public:
00214
00215 public:
00216
00217
00218 protected:
00219
00220
00221
00222
00223
00224 };
00225
00226 }
00227 }
00228
00229
00230 namespace Glib
00231 {
00232
00233 Glib::RefPtr<Gdk::GL::Context> wrap(GdkGLContext* object, bool take_copy = false);
00234 }
00235
00236
00237 #endif
00238