/* * RenderArea.h * * Copyright (C) 2008 Matthias Schiffer * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #ifndef ZOOMEDIT_GUI_RENDERAREA_H_ #define ZOOMEDIT_GUI_RENDERAREA_H_ #include #include #include #include namespace ZoomEdit { namespace View { class View; } namespace Gui { class RenderArea : public Gtk::DrawingArea { public: RenderArea(BaseObjectType *cobject, const Glib::RefPtr&); View::View* getView() const {return view;} void setView(View::View *view0); private: static GdkGLConfig *glconfig; View::View *view; sigc::connection viewUpdate; bool inWindow; gdouble xHover, yHover; void onRealize(); bool onConfigureEvent(GdkEventConfigure *event); bool onExposeEvent(GdkEventExpose*); bool onScrollEvent(GdkEventScroll *event); bool onButtonPressEvent(GdkEventButton *event); bool onEnterNotifyEvent(GdkEventCrossing *event); bool onLeaveNotifyEvent(GdkEventCrossing*); bool onMotionNotifyEvent(GdkEventMotion *event); 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_*/