summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 0788b1e)
raw | patch | inline | side by side (parent: 0788b1e)
author | pjrm <pjrm@users.sourceforge.net> | |
Sun, 20 May 2007 08:28:40 +0000 (08:28 +0000) | ||
committer | pjrm <pjrm@users.sourceforge.net> | |
Sun, 20 May 2007 08:28:40 +0000 (08:28 +0000) |
src/document.cpp | patch | blob | history | |
src/document.h | patch | blob | history | |
src/selection-chemistry.cpp | patch | blob | history |
diff --git a/src/document.cpp b/src/document.cpp
index f4ebfb7cb7cf95c823c4a59b6fac86d11da9a032..252c9b17379070e296bc2cc7b058400b42b841da 100644 (file)
--- a/src/document.cpp
+++ b/src/document.cpp
}
/**
- * 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)
diff --git a/src/document.h b/src/document.h
index 94b97631438ca070619b715abd2a9d34f3221822..16300d170e1fa2a749c4385bd79ab8fa9d208bd8 100644 (file)
--- a/src/document.h
+++ b/src/document.h
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)
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);
}
};