Blame src/units.hpp

Packit bfcc33
#ifndef SASS_UNITS_H
Packit bfcc33
#define SASS_UNITS_H
Packit bfcc33
Packit bfcc33
#include <cmath>
Packit bfcc33
#include <string>
Packit bfcc33
#include <sstream>
Packit bfcc33
Packit bfcc33
namespace Sass {
Packit bfcc33
Packit bfcc33
  const double PI = std::acos(-1);
Packit bfcc33
Packit bfcc33
  enum UnitClass {
Packit bfcc33
    LENGTH = 0x000,
Packit bfcc33
    ANGLE = 0x100,
Packit bfcc33
    TIME = 0x200,
Packit bfcc33
    FREQUENCY = 0x300,
Packit bfcc33
    RESOLUTION = 0x400,
Packit bfcc33
    INCOMMENSURABLE = 0x500
Packit bfcc33
  };
Packit bfcc33
Packit bfcc33
  enum UnitType {
Packit bfcc33
Packit bfcc33
    // size units
Packit bfcc33
    IN = UnitClass::LENGTH,
Packit bfcc33
    CM,
Packit bfcc33
    PC,
Packit bfcc33
    MM,
Packit bfcc33
    PT,
Packit bfcc33
    PX,
Packit bfcc33
Packit bfcc33
    // angle units
Packit bfcc33
    DEG = ANGLE,
Packit bfcc33
    GRAD,
Packit bfcc33
    RAD,
Packit bfcc33
    TURN,
Packit bfcc33
Packit bfcc33
    // time units
Packit bfcc33
    SEC = TIME,
Packit bfcc33
    MSEC,
Packit bfcc33
Packit bfcc33
    // frequency units
Packit bfcc33
    HERTZ = FREQUENCY,
Packit bfcc33
    KHERTZ,
Packit bfcc33
Packit bfcc33
    // resolutions units
Packit bfcc33
    DPI = RESOLUTION,
Packit bfcc33
    DPCM,
Packit bfcc33
    DPPX,
Packit bfcc33
Packit bfcc33
    // for unknown units
Packit bfcc33
    UNKNOWN = INCOMMENSURABLE
Packit bfcc33
Packit bfcc33
  };
Packit bfcc33
Packit bfcc33
  extern const double size_conversion_factors[6][6];
Packit bfcc33
  extern const double angle_conversion_factors[4][4];
Packit bfcc33
  extern const double time_conversion_factors[2][2];
Packit bfcc33
  extern const double frequency_conversion_factors[2][2];
Packit bfcc33
  extern const double resolution_conversion_factors[3][3];
Packit bfcc33
Packit bfcc33
  enum Sass::UnitType string_to_unit(const std::string&);
Packit bfcc33
  const char* unit_to_string(Sass::UnitType unit);
Packit bfcc33
  enum Sass::UnitClass get_unit_type(Sass::UnitType unit);
Packit bfcc33
  std::string get_unit_class(Sass::UnitType unit);
Packit bfcc33
  std::string unit_to_class(const std::string&);
Packit bfcc33
  // throws incompatibleUnits exceptions
Packit bfcc33
  double conversion_factor(const std::string&, const std::string&, bool = true);
Packit bfcc33
Packit bfcc33
}
Packit bfcc33
Packit bfcc33
#endif