diff options
| author | Martin Owens <doctormo@gmail.com> | 2014-02-25 17:29:16 +0000 |
|---|---|---|
| committer | Martin Owens <doctormo@gmail.com> | 2014-02-25 17:29:16 +0000 |
| commit | e84ae2ae2b7035f2dd7ae0bfb026f80ff8bc8f87 (patch) | |
| tree | 7bfc20c5f22bb0120ebde7c81bc4410aca0dace4 /src/util | |
| parent | Not finished by improved data uri support (diff) | |
| parent | Fix infinite loop (?) by disabling saving the order of filters when they are ... (diff) | |
| download | inkscape-e84ae2ae2b7035f2dd7ae0bfb026f80ff8bc8f87.tar.gz inkscape-e84ae2ae2b7035f2dd7ae0bfb026f80ff8bc8f87.zip | |
Merge from trunk
(bzr r13047.1.3)
Diffstat (limited to 'src/util')
| -rw-r--r-- | src/util/units.cpp | 13 | ||||
| -rw-r--r-- | src/util/units.h | 8 |
2 files changed, 17 insertions, 4 deletions
diff --git a/src/util/units.cpp b/src/util/units.cpp index 40cce028d..d2053f60b 100644 --- a/src/util/units.cpp +++ b/src/util/units.cpp @@ -505,16 +505,23 @@ double Quantity::convert(double from_dist, char const *from, char const *to) return convert(from_dist, unit_table.getUnit(from), unit_table.getUnit(to)); } -bool Quantity::operator<(Quantity const &other) const +bool Quantity::operator<(Quantity const &rhs) const { - if (unit->type != other.unit->type) { + if (unit->type != rhs.unit->type) { g_warning("Incompatible units"); return false; } - return quantity < other.value(unit); + return quantity < rhs.value(unit); } bool Quantity::operator==(Quantity const &other) const { + /** \fixme This is overly strict. I think we should change this to: + if (unit->type != other.unit->type) { + g_warning("Incompatible units"); + return false; + } + return are_near(quantity, other.value(unit)); + */ return (*unit == *other.unit) && (quantity == other.quantity); } diff --git a/src/util/units.h b/src/util/units.h index 597371369..efe1dbec7 100644 --- a/src/util/units.h +++ b/src/util/units.h @@ -16,6 +16,7 @@ #include <map> #include <boost/operators.hpp> #include <glibmm/ustring.h> +#include <2geom/coord.h> #include "svg/svg-length.h" #include "unordered-containers.h" @@ -112,10 +113,15 @@ public: static double convert(double from_dist, char const *from, char const *to); /** Comparison operators. */ - bool operator<(Quantity const &other) const; + bool operator<(Quantity const &rhs) const; bool operator==(Quantity const &other) const; }; +inline bool are_near(Quantity const &a, Quantity const &b, double eps=Geom::EPSILON) +{ + return Geom::are_near(a.quantity, b.value(a.unit), eps); +} + class UnitTable { public: /** |
