summaryrefslogtreecommitdiffstats
path: root/src/util/units.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/units.cpp')
-rw-r--r--src/util/units.cpp26
1 files changed, 25 insertions, 1 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