57 lines
1.2 KiB
C++
57 lines
1.2 KiB
C++
#ifndef DRAWER_H_
|
|
#define DRAWER_H_
|
|
|
|
#include <gtk/gtk.h>
|
|
#include <gtk/gtkgl.h>
|
|
|
|
|
|
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_*/
|