From b660b965bcb679e53cc89e7b8903190d2d162ff6 Mon Sep 17 00:00:00 2001 From: neoraider Date: Thu, 4 Oct 2007 23:38:05 +0000 Subject: zoomedit: Gro?e Teile der GUI in Klassen gekapselt. --- Drawer.h | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Drawer.h (limited to 'Drawer.h') diff --git a/Drawer.h b/Drawer.h new file mode 100644 index 0000000..4cc0e2b --- /dev/null +++ b/Drawer.h @@ -0,0 +1,57 @@ +#ifndef DRAWER_H_ +#define DRAWER_H_ + +#include +#include + + +class Window; + + +class Drawer { + private: + GtkWidget *drawer; + GtkWidget *drawingArea; + GtkAdjustment *hAdjustment, *vAdjustment; + int zoomExp; + + Window *window; + + // prevent shallow copy + Drawer(const Drawer &w); + const Drawer& operator=(const Drawer &w); + + void updateViewport(); + void updateScrolling(); + void updateScrollbars(float x = 0.5f, float y = 0.5f); + + void updateHoveredPoint(float x, float y); + + gint getWidth() const { + return drawingArea->allocation.width; + } + + gint getHeight() const { + return drawingArea->allocation.height; + } + + static void realize(GtkWidget *widget, Drawer *drawer); + static gboolean eventHandler(GtkWidget *widget, GdkEvent *event, Drawer *drawer); + static void valueChanged(GtkAdjustment *adjustment, Drawer *drawer); + + public: + Drawer(Window *window, GdkGLConfig *glconfig); + virtual ~Drawer(); + + void zoom(int zoom, float x = 0.5f, float y = 0.5f); + + GtkWidget *getWidget() { + return drawer; + } + + void update() { + gtk_widget_queue_draw(drawingArea); + } +}; + +#endif /*DRAWER_H_*/ -- cgit v1.2.3