glom r1723 - in trunk: . glom/utility_widgets/canvas



Author: murrayc
Date: Thu Nov 13 17:53:38 2008
New Revision: 1723
URL: http://svn.gnome.org/viewvc/glom?rev=1723&view=rev

Log:
2008-11-13  Murray Cumming  <murrayc murrayc com>

* glom/utility_widgets/canvas/canvas_group_grid.[h|cc]:
Use the new Goocanvas::Grid instead of creating lots of lines ourselves.
We still need this class to add the rules and do the snapping though.

Modified:
   trunk/ChangeLog
   trunk/glom/utility_widgets/canvas/canvas_group_grid.cc
   trunk/glom/utility_widgets/canvas/canvas_group_grid.h

Modified: trunk/glom/utility_widgets/canvas/canvas_group_grid.cc
==============================================================================
--- trunk/glom/utility_widgets/canvas/canvas_group_grid.cc	(original)
+++ trunk/glom/utility_widgets/canvas/canvas_group_grid.cc	Thu Nov 13 17:53:38 2008
@@ -32,8 +32,6 @@
 : m_grid_gap(0.0),
   m_grid_sensitivity(5.0)
 {
-  m_grid_lines_group = Goocanvas::Group::create();
-  add_child(m_grid_lines_group);
   m_grid_rules_group = Goocanvas::Group::create();
   add_child(m_grid_rules_group);
 }
@@ -208,8 +206,8 @@
 void CanvasGroupGrid::create_lines()
 {
   //Remove any existing lines:
-  while(m_grid_lines_group && m_grid_lines_group->get_n_children())
-    m_grid_lines_group->remove_child(0);
+  if(m_grid_lines)
+    m_grid_lines->remove();
 
   while(m_grid_rules_group && m_grid_rules_group->get_n_children())
     m_grid_rules_group->remove_child(0);
@@ -222,27 +220,14 @@
  
   const double width = right - left;
   const double height = bottom - top;
-
-  const double count_vertical_grid_lines = width / m_grid_gap;
-  const double count_horizontal_grid_lines = height / m_grid_gap;
   
-  //Vertical grid lines:
-  for(double i = 0; i < count_vertical_grid_lines; ++i)
-  {
-    const double x = i * m_grid_gap;
-   
-    Glib::RefPtr<Goocanvas::Polyline> line = create_grid_or_rule_line(x, top, x, bottom);
-    m_grid_lines_group->add_child(line);
-  }
-
-  //Horizontal grid lines:
-  for(double i = 0; i < count_horizontal_grid_lines; ++i)
-  {
-    const double y = i * m_grid_gap;
-
-    Glib::RefPtr<Goocanvas::Polyline> line = create_grid_or_rule_line(left, y, right, y);
-    m_grid_lines_group->add_child(line);
-  }
+  //Vertical and horizontal grid lines:
+  m_grid_lines = Goocanvas::Grid::create(0, 0, width, height, m_grid_gap, m_grid_gap);
+  m_grid_lines->property_horz_grid_line_width() = 1.0f;
+  m_grid_lines->property_vert_grid_line_width() = 1.0f;
+  m_grid_lines->property_horz_grid_line_color() = "gray";
+  m_grid_lines->property_vert_grid_line_color() = "gray";
+  add_child(m_grid_lines);
 
   //Vertical rules:
   for(CanvasGroupGrid::type_vec_double::const_iterator iter = m_rules_x.begin(); iter != m_rules_x.end(); ++iter)

Modified: trunk/glom/utility_widgets/canvas/canvas_group_grid.h
==============================================================================
--- trunk/glom/utility_widgets/canvas/canvas_group_grid.h	(original)
+++ trunk/glom/utility_widgets/canvas/canvas_group_grid.h	Thu Nov 13 17:53:38 2008
@@ -21,6 +21,7 @@
 #ifndef GLOM_UTILITY_WIDGETS_CANVAS_GROUP_GRID_H
 #define GLOM_UTILITY_WIDGETS_CANVAS_GROUP_GRID_H
 
+#include <goocanvasmm/grid.h>
 #include <goocanvasmm/group.h>
 #include <goocanvasmm/polyline.h>
 #include <vector>
@@ -80,7 +81,8 @@
 
   bool is_close(double a, double b) const;
 
-  Glib::RefPtr<Goocanvas::Group> m_grid_lines_group, m_grid_rules_group;
+  Glib::RefPtr<Goocanvas::Grid> m_grid_lines;
+  Glib::RefPtr<Goocanvas::Group> m_grid_rules_group;
 };
 
 } //namespace Glom



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]