#ifndef ZOOMEDIT_GUI_RENDERAREA_H_ #define ZOOMEDIT_GUI_RENDERAREA_H_ #include #include #include namespace ZoomEdit { namespace Gui { class RenderArea : public Gtk::DrawingArea { public: RenderArea(BaseObjectType *cobject, const Glib::RefPtr &xml); private: static GdkGLConfig *glconfig; float x, y; int zoomLevel; float scale; void onRealize(); bool onConfigureEvent(GdkEventConfigure *event); bool onExposeEvent(GdkEventExpose *event); bool onScrollEvent(GdkEventScroll *event); void zoom(int zoom, float x = 0.5f, float y = 0.5f); void updateViewport(); void drawGrid(); bool gdkGLBegin() { GtkWidget *widget = GTK_WIDGET(gobj()); return gdk_gl_drawable_gl_begin(gtk_widget_get_gl_drawable(widget), gtk_widget_get_gl_context(widget)); } void gdkSwapBuffers() { gdk_gl_drawable_swap_buffers(gtk_widget_get_gl_drawable(GTK_WIDGET(gobj()))); } void gdkGLEnd() { gdk_gl_drawable_gl_end(gtk_widget_get_gl_drawable(GTK_WIDGET(gobj()))); } }; } } #endif /*ZOOMEDIT_GUI_RENDERAREA_H_*/