DistanceMapping.h 807 B

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. #include "Range.hpp"
  3. namespace msdfgen {
  4. /// Linear transformation of signed distance values.
  5. class DistanceMapping {
  6. public:
  7. /// Explicitly designates value as distance delta rather than an absolute distance.
  8. class Delta {
  9. public:
  10. double value;
  11. inline explicit Delta(double distanceDelta) : value(distanceDelta) { }
  12. inline operator double() const { return value; }
  13. };
  14. static DistanceMapping inverse(Range range);
  15. DistanceMapping();
  16. DistanceMapping(Range range);
  17. double operator()(double d) const;
  18. double operator()(Delta d) const;
  19. DistanceMapping inverse() const;
  20. private:
  21. double scale;
  22. double translate;
  23. inline DistanceMapping(double scale, double translate) : scale(scale), translate(translate) { }
  24. };
  25. }