Code

noop: Change fitToRect to take NR::Rect instead of old NRRect. Update callers.
authorpjrm <pjrm@users.sourceforge.net>
Sun, 20 May 2007 08:28:40 +0000 (08:28 +0000)
committerpjrm <pjrm@users.sourceforge.net>
Sun, 20 May 2007 08:28:40 +0000 (08:28 +0000)
src/document.cpp
src/document.h
src/selection-chemistry.cpp

index f4ebfb7cb7cf95c823c4a59b6fac86d11da9a032..252c9b17379070e296bc2cc7b058400b42b841da 100644 (file)
@@ -485,23 +485,26 @@ gdouble sp_document_height(SPDocument *document)
 }
 
 /**
- * Given an NRRect that may, for example, correspond to the bbox of an object
+ * Given an NR::Rect that may, for example, correspond to the bbox of an object,
  * this function fits the canvas to that rect by resizing the canvas
  * and translating the document root into position.
  */
-void SPDocument::fitToRect(NRRect const & rect)
+void SPDocument::fitToRect(NR::Rect const &rect)
 {
-    g_return_if_fail(!nr_rect_d_test_empty(&rect));
-    
-    gdouble w = rect.x1 - rect.x0;
-    gdouble h = rect.y1 - rect.y0;
-    gdouble old_height = sp_document_height(this);
-    SPUnit unit = sp_unit_get_by_id(SP_UNIT_PX);
-    sp_document_set_width(this, w, &unit);
-    sp_document_set_height(this, h, &unit);
-
-    NR::translate tr = NR::translate::translate(-rect.x0,-(rect.y0 + (h - old_height)));
-    static_cast<SPGroup *>(root)->translateChildItems(tr);
+    g_return_if_fail(!rect.isEmpty());
+
+    using NR::X; using NR::Y;
+    double const w = rect.extent(X);
+    double const h = rect.extent(Y);
+
+    double const old_height = sp_document_height(this);
+    SPUnit const &px(sp_unit_get_by_id(SP_UNIT_PX));
+    sp_document_set_width(this, w, &px);
+    sp_document_set_height(this, h, &px);
+
+    NR::translate const tr(NR::Point(0, (old_height - h))
+                           - rect.min());
+    SP_GROUP(root)->translateChildItems(tr);
 }
 
 void sp_document_set_uri(SPDocument *document, gchar const *uri)
index 94b97631438ca070619b715abd2a9d34f3221822..16300d170e1fa2a749c4385bd79ab8fa9d208bd8 100644 (file)
@@ -136,7 +136,7 @@ public:
         sigc::connection _selection_changed_connection;
         sigc::connection _desktop_activated_connection;
 
-       void fitToRect(NRRect const & rect);
+       void fitToRect(NR::Rect const &rect);
 };
 
 SPDocument *sp_document_new (const gchar *uri, unsigned int keepalive, bool make_new = false);
index 2b13021a227801bfea94dbf1d4780ac1c63ff50b..bd1f54b6bddcff2010450f4ed2a5d928708b307e 100644 (file)
@@ -2843,23 +2843,21 @@ void fit_canvas_to_selection(SPDesktop *desktop) {
     g_return_if_fail(doc != NULL);
     g_return_if_fail(desktop->selection != NULL);
     g_return_if_fail(!desktop->selection->isEmpty());
-    NRRect bbox(0, 0, 0, 0);
 
-    desktop->selection->bounds(&bbox);
-    if (!nr_rect_d_test_empty(&bbox)) {
-        doc->fitToRect(bbox);
+    NR::Maybe<NR::Rect> const bbox(desktop->selection->bounds());
+    if (bbox && !bbox->isEmpty()) {
+        doc->fitToRect(*bbox);
     }
 };
 
 void fit_canvas_to_drawing(SPDocument *doc) {
     g_return_if_fail(doc != NULL);
-    NRRect bbox(0, 0, 0, 0);
 
-    sp_document_ensure_up_to_date (doc);
-    sp_item_invoke_bbox(SP_ITEM(doc->root), &bbox, sp_item_i2r_affine(SP_ITEM(doc->root)), TRUE);
-
-    if (!nr_rect_d_test_empty(&bbox)) {
-        doc->fitToRect(bbox);
+    sp_document_ensure_up_to_date(doc);
+    SPItem const *const root = SP_ITEM(doc->root);
+    NR::Maybe<NR::Rect> const bbox(root->getBounds(sp_item_i2r_affine(root)));
+    if (bbox && !bbox->isEmpty()) {
+        doc->fitToRect(*bbox);
     }
 };