Remove <gtk/gtk.h> from gtkutil/xorrectangle.h
authorTimePath <andrew.hardaker1995@gmail.com>
Sat, 22 Jul 2017 07:15:15 +0000 (17:15 +1000)
committerTimePath <andrew.hardaker1995@gmail.com>
Mon, 31 Jul 2017 12:35:48 +0000 (22:35 +1000)
libs/gtkutil/CMakeLists.txt
libs/gtkutil/xorrectangle.cpp [new file with mode: 0644]
libs/gtkutil/xorrectangle.h

index 7781a1e..a0bb6d9 100644 (file)
@@ -21,7 +21,7 @@ add_library(gtkutil
         toolbar.cpp toolbar.h
         widget.cpp widget.h
         window.cpp window.h
-        xorrectangle.h
+        xorrectangle.cpp xorrectangle.h
         )
 
 target_include_directories(gtkutil PRIVATE uilib)
diff --git a/libs/gtkutil/xorrectangle.cpp b/libs/gtkutil/xorrectangle.cpp
new file mode 100644 (file)
index 0000000..364c24e
--- /dev/null
@@ -0,0 +1,50 @@
+#include "xorrectangle.h"
+
+#include <gtk/gtk.h>
+
+bool XORRectangle::initialised() const
+{
+    return cr != nullptr;
+}
+
+void XORRectangle::lazy_init()
+{
+    if (!initialised()) {
+        cr = gdk_cairo_create(gtk_widget_get_window(m_widget));
+    }
+}
+
+void XORRectangle::draw() const
+{
+    const int x = float_to_integer(m_rectangle.x);
+    const int y = float_to_integer(m_rectangle.y);
+    const int w = float_to_integer(m_rectangle.w);
+    const int h = float_to_integer(m_rectangle.h);
+    GtkAllocation allocation;
+    gtk_widget_get_allocation(m_widget, &allocation);
+    cairo_rectangle(cr, x, -(h) - (y - allocation.height), w, h);
+    cairo_set_source_rgb(cr, 1, 1, 1);
+    cairo_set_operator(cr, CAIRO_OPERATOR_DIFFERENCE);
+    cairo_stroke(cr);
+}
+
+XORRectangle::XORRectangle(ui::Widget widget) : m_widget(widget), cr(0)
+{
+}
+
+XORRectangle::~XORRectangle()
+{
+    if (initialised()) {
+        cairo_destroy(cr);
+    }
+}
+
+void XORRectangle::set(rectangle_t rectangle)
+{
+    if (gtk_widget_get_realized(m_widget)) {
+        lazy_init();
+        draw();
+        m_rectangle = rectangle;
+        draw();
+    }
+}
index 6c6abdf..8c3ca3c 100644 (file)
@@ -22,7 +22,7 @@
 #if !defined ( INCLUDED_XORRECTANGLE_H )
 #define INCLUDED_XORRECTANGLE_H
 
-#include <gtk/gtk.h>
+#include <cairo.h>
 #include <uilib/uilib.h>
 #include "math/vector.h"
 
@@ -64,46 +64,17 @@ class XORRectangle
 
 rectangle_t m_rectangle;
 
-GtkWidget* m_widget;
+ui::Widget m_widget;
 cairo_t *cr;
 
-bool initialised() const {
-       return cr != nullptr;
-}
-void lazy_init(){
-       if ( !initialised() ) {
-               cr = gdk_cairo_create(gtk_widget_get_window(m_widget));
-       }
-}
-void draw() const {
-       const int x = float_to_integer( m_rectangle.x );
-       const int y = float_to_integer( m_rectangle.y );
-       const int w = float_to_integer( m_rectangle.w );
-       const int h = float_to_integer( m_rectangle.h );
-       GtkAllocation allocation;
-       gtk_widget_get_allocation(m_widget, &allocation);
-       cairo_rectangle(cr, x, -(h) - (y - allocation.height), w, h);
-       cairo_set_source_rgb(cr, 1, 1, 1);
-       cairo_set_operator(cr, CAIRO_OPERATOR_DIFFERENCE);
-       cairo_stroke(cr);
-}
+bool initialised() const;
+void lazy_init();
+void draw() const;
 
 public:
-XORRectangle( ui::Widget widget ) : m_widget( widget ), cr( 0 ) {
-}
-~XORRectangle(){
-       if ( initialised() ) {
-               cairo_destroy(cr);
-       }
-}
-void set( rectangle_t rectangle ){
-       if ( gtk_widget_get_realized( m_widget ) ) {
-               lazy_init();
-               draw();
-               m_rectangle = rectangle;
-               draw();
-       }
-}
+XORRectangle( ui::Widget widget );
+~XORRectangle();
+void set( rectangle_t rectangle );
 };