summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Petroff <matthew@mpetroff.net>2013-07-18 20:13:16 +0000
committerMatthew Petroff <matthew@mpetroff.net>2013-07-18 20:13:16 +0000
commit286ea5f976f27f7fdfec5859b08bcb31e53e6728 (patch)
treeac026cf36dc40826e12e8eb92ac346f4bae98203
parentPorted "display/canvas-grid.*" and "display/canvas-axonomgrid.*". (diff)
downloadinkscape-286ea5f976f27f7fdfec5859b08bcb31e53e6728.tar.gz
inkscape-286ea5f976f27f7fdfec5859b08bcb31e53e6728.zip
Added more convienient unit conversion functions.
(bzr r12380.1.26)
-rw-r--r--src/util/units.cpp26
-rw-r--r--src/util/units.h6
2 files changed, 30 insertions, 2 deletions
diff --git a/src/util/units.cpp b/src/util/units.cpp
index 705fc850c..ed8fbfa34 100644
--- a/src/util/units.cpp
+++ b/src/util/units.cpp
@@ -462,9 +462,14 @@ bool Quantity::compatibleWith(const Unit *u) const {
}
/** Return the quantity's value in the specified unit. */
-double Quantity::value(Unit *u) const {
+double Quantity::value(const Unit *u) const {
return convert(quantity, unit, u);
}
+double Quantity::value(const Glib::ustring u) const {
+ static UnitTable unit_table;
+ Unit to_unit = unit_table.getUnit(u);
+ return value(&to_unit);
+}
/** Convert distances. */
double Quantity::convert(const double from_dist, const Unit *from, const Unit *to) {
@@ -476,6 +481,25 @@ double Quantity::convert(const double from_dist, const Unit *from, const Unit *t
// Compatible units
return from_dist * from->factor / to->factor;
}
+double Quantity::convert(const double from_dist, const Glib::ustring from, const Unit &to)
+{
+ static UnitTable unit_table;
+ Unit from_unit = unit_table.getUnit(from);
+ return convert(from_dist, &from_unit, &to);
+}
+double Quantity::convert(const double from_dist, const Unit &from, const Glib::ustring to)
+{
+ static UnitTable unit_table;
+ Unit to_unit = unit_table.getUnit(to);
+ return convert(from_dist, &from, &to_unit);
+}
+double Quantity::convert(const double from_dist, const Glib::ustring from, const Glib::ustring to)
+{
+ static UnitTable unit_table;
+ Unit from_unit = unit_table.getUnit(from);
+ Unit to_unit = unit_table.getUnit(to);
+ return convert(from_dist, &from_unit, &to_unit);
+}
} // namespace Util
} // namespace Inkscape
diff --git a/src/util/units.h b/src/util/units.h
index 5d7bfaeaa..f1a5f1e95 100644
--- a/src/util/units.h
+++ b/src/util/units.h
@@ -89,9 +89,13 @@ public:
Quantity(double q, const Unit *u); // constructor
bool compatibleWith(const Unit *u) const;
- double value(Unit *u) const;
+ double value(const Unit *u) const;
+ double value(const Glib::ustring u) const;
static double convert(const double from_dist, const Unit *from, const Unit *to);
+ static double convert(const double from_dist, const Glib::ustring from, const Unit &to);
+ static double convert(const double from_dist, const Unit &from, const Glib::ustring to);
+ static double convert(const double from_dist, const Glib::ustring from, const Glib::ustring to);
};
class UnitTable {