Range.hpp 1020 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include "base.h"
  3. namespace msdfgen {
  4. /**
  5. * Represents the range between two real values.
  6. * For example, the range of representable signed distances.
  7. */
  8. struct Range {
  9. double lower, upper;
  10. inline Range(double symmetricalWidth = 0) : lower(-.5*symmetricalWidth), upper(.5*symmetricalWidth) { }
  11. inline Range(double lowerBound, double upperBound) : lower(lowerBound), upper(upperBound) { }
  12. inline Range &operator*=(double factor) {
  13. lower *= factor;
  14. upper *= factor;
  15. return *this;
  16. }
  17. inline Range &operator/=(double divisor) {
  18. lower /= divisor;
  19. upper /= divisor;
  20. return *this;
  21. }
  22. inline Range operator*(double factor) const {
  23. return Range(lower*factor, upper*factor);
  24. }
  25. inline Range operator/(double divisor) const {
  26. return Range(lower/divisor, upper/divisor);
  27. }
  28. };
  29. inline Range operator*(double factor, const Range &range) {
  30. return Range(factor*range.lower, factor*range.upper);
  31. }
  32. }