6#ifndef MATERIALX_UNIT_H_
7#define MATERIALX_UNIT_H_
21class LinearUnitConverter;
22class UnitConverterRegistry;
52 virtual float convert(
float input,
const string& inputUnit,
const string& outputUnit)
const = 0;
116 float conversionRatio(
const string& inputUnit,
const string& outputUnit)
const;
122 float convert(
float input,
const string& inputUnit,
const string& outputUnit)
const override;
128 Vector2 convert(
const Vector2& input,
const string& inputUnit,
const string& outputUnit)
const override;
134 Vector3 convert(
const Vector3& input,
const string& inputUnit,
const string& outputUnit)
const override;
140 Vector4 convert(
const Vector4& input,
const string& inputUnit,
const string& outputUnit)
const override;
148 int getUnitAsInteger(
const string& unitName)
const override;
152 virtual string getUnitFromInteger(
int index)
const override;
160 std::unordered_map<string, float> _unitScale;
161 std::unordered_map<string, int> _unitEnumeration;
191 void clearUnitConverters();
195 int getUnitAsInteger(
const string& unitName)
const;
Definition element subclasses.
shared_ptr< UnitTypeDef > UnitTypeDefPtr
A shared pointer to a UnitTypeDef.
Definition: Definition.h:68
The top-level Document class.
shared_ptr< Document > DocumentPtr
A shared pointer to a Document.
Definition: Document.h:23
Import and export declarations for the Core library.
shared_ptr< const LinearUnitConverter > ConstLinearUnitConverterPtr
A shared pointer to a const LinearUnitConverter.
Definition: Unit.h:32
shared_ptr< UnitConverter > UnitConverterPtr
A shared pointer to a UnitConverter.
Definition: Unit.h:25
shared_ptr< const UnitConverterRegistry > ConstUnitConverterRegistryPtr
A shared pointer to a const UnitConverterRegistry.
Definition: Unit.h:37
shared_ptr< const UnitConverter > ConstUnitConverterPtr
A shared pointer to a const UnitConverter.
Definition: Unit.h:27
shared_ptr< UnitConverterRegistry > UnitConverterRegistryPtr
A shared pointer to a UnitConverterRegistry.
Definition: Unit.h:35
std::unordered_map< string, UnitConverterPtr > UnitConverterPtrMap
Map of unit converters.
Definition: Unit.h:166
shared_ptr< LinearUnitConverter > LinearUnitConverterPtr
A shared pointer to a LinearUnitConverter.
Definition: Unit.h:30
A converter class for linear units that require only a scalar multiplication.
Definition: Unit.h:87
const string & getUnitType() const
Return the unit type string.
Definition: Unit.h:95
const std::unordered_map< string, float > & getUnitScale() const
Return the mappings from unit names to the scale value defined by a linear converter.
Definition: Unit.h:108
An abstract base class for unit converters.
Definition: Unit.h:43
virtual string getUnitFromInteger(int) const
Given an integer index return the unit name in the map used by the converter Returns Empty string if ...
Definition: Unit.h:60
virtual Vector3 convert(const Vector3 &input, const string &inputUnit, const string &outputUnit) const =0
Convert a given value in a given unit to a desired unit.
virtual float convert(float input, const string &inputUnit, const string &outputUnit) const =0
Convert a given value in a given unit to a desired unit.
virtual int getUnitAsInteger(const string &) const
Given a unit name return a value that it can map to as an integer Returns -1 value if not found.
Definition: Unit.h:56
virtual Vector4 convert(const Vector4 &input, const string &inputUnit, const string &outputUnit) const =0
Convert a given value in a given unit to a desired unit.
virtual Vector2 convert(const Vector2 &input, const string &inputUnit, const string &outputUnit) const =0
Convert a given value in a given unit to a desired unit.
virtual void write(DocumentPtr doc) const =0
Create unit definitions in a document based on the converter.
A registry for unit converters.
Definition: Unit.h:171
A unit definition element within a Document.
Definition: Definition.h:427
A vector of two floating-point values.
Definition: Types.h:284
A vector of three floating-point values.
Definition: Types.h:303
A vector of four floating-point values.
Definition: Types.h:324