summaryrefslogtreecommitdiffstats
path: root/src/sp-namedview.cpp
diff options
context:
space:
mode:
authorMarkus Engel <markus.engel@tum.de>2013-08-30 21:35:42 +0000
committerMarkus Engel <markus.engel@tum.de>2013-08-30 21:35:42 +0000
commit8756c49b91fd4262b6770ac3b2f229209bdae96b (patch)
tree67ac89d7bc7c69e04e811324734dccafc07f33c9 /src/sp-namedview.cpp
parentMerged from trunk (r12465). (diff)
parentMerge emf/wmf work (diff)
downloadinkscape-8756c49b91fd4262b6770ac3b2f229209bdae96b.tar.gz
inkscape-8756c49b91fd4262b6770ac3b2f229209bdae96b.zip
Merged from trunk (r12488).
(bzr r11608.1.120)
Diffstat (limited to 'src/sp-namedview.cpp')
-rw-r--r--src/sp-namedview.cpp42
1 files changed, 22 insertions, 20 deletions
diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp
index 14cc7669d..4464a0be2 100644
--- a/src/sp-namedview.cpp
+++ b/src/sp-namedview.cpp
@@ -22,7 +22,7 @@
#include "display/canvas-grid.h"
#include "display/guideline.h"
-#include "helper/units.h"
+#include "util/units.h"
#include "svg/svg-color.h"
#include "xml/repr.h"
#include "attributes.h"
@@ -40,6 +40,7 @@
#include <gtkmm/window.h>
using Inkscape::DocumentUndo;
+using Inkscape::Util::unit_table;
#define DEFAULTGRIDCOLOR 0x3f3fff25
#define DEFAULTGRIDEMPCOLOR 0x3f3fff60
@@ -556,18 +557,19 @@ void SPNamedView::set(unsigned int key, const gchar* value) {
* in that they aren't in general absolute units as currently required by
* doc_units.
*/
- SPUnit const *new_unit = &sp_unit_get_by_id(SP_UNIT_PX);
+ static Inkscape::Util::Unit px = unit_table.getUnit("px");
+ Inkscape::Util::Unit const *new_unit = new Inkscape::Util::Unit(px);
if (value) {
- SPUnit const *const req_unit = sp_unit_get_by_abbreviation(value);
- if ( req_unit == NULL ) {
+ Inkscape::Util::Unit u = unit_table.getUnit(value);
+ Inkscape::Util::Unit const *const req_unit = new Inkscape::Util::Unit(u);
+ if ( !unit_table.hasUnit(value) ) {
g_warning("Unrecognized unit `%s'", value);
/* fixme: Document errors should be reported in the status bar or
* the like (e.g. as per
* http://www.w3.org/TR/SVG11/implnote.html#ErrorProcessing); g_log
* should be only for programmer errors. */
- } else if ( req_unit->base == SP_UNIT_ABSOLUTE ||
- req_unit->base == SP_UNIT_DEVICE ) {
+ } else if ( req_unit->isAbsolute() ) {
new_unit = req_unit;
} else {
g_warning("Document units must be absolute like `mm', `pt' or `px', but found `%s'",
@@ -580,18 +582,18 @@ void SPNamedView::set(unsigned int key, const gchar* value) {
break;
}
case SP_ATTR_UNITS: {
- SPUnit const *new_unit = NULL;
+ Inkscape::Util::Unit const *new_unit = NULL;
if (value) {
- SPUnit const *const req_unit = sp_unit_get_by_abbreviation(value);
- if ( req_unit == NULL ) {
+ Inkscape::Util::Unit u = unit_table.getUnit(value);
+ Inkscape::Util::Unit const *const req_unit = new Inkscape::Util::Unit(u);
+ if ( !unit_table.hasUnit(value) ) {
g_warning("Unrecognized unit `%s'", value);
/* fixme: Document errors should be reported in the status bar or
* the like (e.g. as per
* http://www.w3.org/TR/SVG11/implnote.html#ErrorProcessing); g_log
* should be only for programmer errors. */
- } else if ( req_unit->base == SP_UNIT_ABSOLUTE ||
- req_unit->base == SP_UNIT_DEVICE ) {
+ } else if ( req_unit->isAbsolute() ) {
new_unit = req_unit;
} else {
g_warning("Document units must be absolute like `mm', `pt' or `px', but found `%s'",
@@ -1105,35 +1107,35 @@ bool SPNamedView::getGuides()
* \return the margin size in px, else 0.0 if anything is invalid.
*/
double SPNamedView::getMarginLength(gchar const * const key,
- SPUnit const * const margin_units,
- SPUnit const * const return_units,
+ Inkscape::Util::Unit const * const margin_units,
+ Inkscape::Util::Unit const * const return_units,
double const width,
double const height,
bool const use_width)
{
double value;
+ Inkscape::Util::Unit percent = unit_table.getUnit("%");
if(!this->storeAsDouble(key,&value)) {
return 0.0;
}
- if (margin_units == &sp_unit_get_by_id (SP_UNIT_PERCENT)) {
+ if (*margin_units == percent) {
return (use_width)? width * value : height * value;
}
- if (!sp_convert_distance (&value, margin_units, return_units)) {
+ if (!margin_units->compatibleWith(*return_units)) {
return 0.0;
}
return value;
}
-
/**
- * Returns namedview's default metric.
+ * Returns namedview's default unit.
*/
-SPMetric SPNamedView::getDefaultMetric() const
+Inkscape::Util::Unit const SPNamedView::getDefaultUnit() const
{
if (doc_units) {
- return sp_unit_get_metric(doc_units);
+ return *doc_units;
} else {
- return SP_PT;
+ return *(new Inkscape::Util::Unit(unit_table.getUnit("pt")));
}
}