3#include "MRViewer/exports.h"
18namespace detail::Units
31#define MR_X(E) extern template MRVIEWER_API const UnitToStringParams<E>& getDefaultUnitParams();
39#define MR_X(E) extern template MRVIEWER_API void setDefaultUnitParams( const UnitToStringParams<E>& newParams );
126 #define MR_X(E) , UnitToStringParams<E>
133template <UnitEnum E, detail::Units::Scalar T>
136#define MR_Y(T, E) extern template MRVIEWER_API std::string valueToString<E, T>( T value, const UnitToStringParams<E>& params );
137#define MR_X(E) DETAIL_MR_UNIT_VALUE_TYPES(MR_Y, E)
143template <detail::Units::Scalar T>
146#define MR_X(T, unused) extern template MRVIEWER_API std::string valueToString( T value, const VarUnitToStringParams& params );
152template <detail::Units::Scalar T>
158template <detail::Units::Scalar T>
167 for (
int i = 0; i < VectorTraits<T>::size; i++ )
176 for (
int i = 0; i < VectorTraits<T>::size; i++ )
181#define MR_X(T, unused) \
182 extern template MRVIEWER_API int guessPrecision( T value ); \
183 extern template MRVIEWER_API int guessPrecision( T min, T max );
190template <UnitEnum E, detail::Units::Scalar T>
193#define MR_Y(T, E) extern template MRVIEWER_API std::string valueToImGuiFormatString( T value, const UnitToStringParams<E>& params );
194#define MR_X(E) DETAIL_MR_UNIT_VALUE_TYPES(MR_Y, E)
200template <detail::Units::Scalar T>
203#define MR_X(T, unused) extern template MRVIEWER_API std::string valueToImGuiFormatString( T value, const VarUnitToStringParams& params );
#define MR_TRIM_LEADING_COMMA(...)
MR_TRIM_LEADING_COMMA(,a,b,c) returns a,b,c.
Definition MRMacros.h:103
Definition MRUnitInfo.h:173
bool leadingZero
If false, remove zero before the fractional point (.5 instead of 0.5).
Definition MRUnits.h:111
NumberStyle
Definition MRUnits.h:44
#define MR_X(E)
ignore for bindings to prevent GCC14 error: undefined symbol: ZN2MR11getUnitInfoITkNS_8UnitEnumENS_8T...
Definition MRUnitInfo.h:153
int precision
How many digits of precision.
Definition MRUnits.h:92
std::conditional_t< std::is_same_v< E, AngleUnit >, DegreesMode, detail::Units::Empty > degreesMode
When printing degrees, this lets you display arcminutes and possibly arcseconds. Ignored for everythi...
Definition MRUnits.h:117
#define DETAIL_MR_UNIT_VALUE_TYPES(X,...)
Definition MRUnitInfo.h:117
MRVIEWER_API int guessPrecision(T value)
Same but for vectors.
Definition MRUnits.h:164
NumberStyle style
— Precision:
Definition MRUnits.h:89
std::optional< E > sourceUnit
— Units:
Definition MRUnits.h:79
MRVIEWER_API std::string valueToString(T value, const UnitToStringParams< E > ¶ms=getDefaultUnitParams< E >())
#define DETAIL_MR_UNIT_ENUMS(X)
A list of all unit enums, for internal use.
Definition MRUnitInfo.h:113
static constexpr int size
Definition MRMesh/MRVectorTraits.h:22
ZeroMode zeroMode
How to deal with zeroes.
Definition MRUnits.h:100
std::string_view decorationFormatString
Definition MRUnits.h:74
const UnitToStringParams< E > & getDefaultUnitParams()
void setDefaultUnitParams(const UnitToStringParams< E > &newParams)
Modifies the default parameters for converting a specific unit type to a string.
static constexpr auto && getElem(int i, U &&value)
Definition MRMesh/MRVectorTraits.h:32
MRVIEWER_API std::string valueToImGuiFormatString(T value, const UnitToStringParams< E > ¶ms=getDefaultUnitParams< E >())
char thousandsSeparator
If non-zero, this character is inserted between every three digits to the left of the decimal point.
Definition MRUnits.h:106
bool unitSuffix
Whether to show the unit suffix.
Definition MRUnits.h:84
ZeroMode
Definition MRUnits.h:62
DegreesMode
This controls how the degrees are printed.
Definition MRUnits.h:53
char thousandsSeparatorFrac
If non-zero, this character is inserted between every three digits to the right of the decimal point.
Definition MRUnits.h:108
std::optional< E > targetUnit
The measurement unit of the resulting string. If null, no conversion is performed,...
Definition MRUnits.h:81
friend bool operator==(const UnitToStringParams &, const UnitToStringParams &)=default
If you add new fields there, update the initializer for defaultUnitToStringParams in MRUnits....
MRMESH_API std::string_view toString(DimensionsVisualizePropertyType value)
bool stripTrailingZeroes
Remove trailing zeroes after the fractional point. If the point becomes the last symbol,...
Definition MRUnits.h:114
bool plusSign
— Other:
Definition MRUnits.h:97
bool unicodeMinusSign
Use a pretty Unicode minus sign instead of the ASCII -.
Definition MRUnits.h:103
std::variant< > VarUnitToStringParams
The std::variant of UnitToStringParams<E> for all known Es (unit kinds).
Definition MRUnits.h:125
@ distributePrecision
Like f.
@ exponential
Like f, but the precision digits are spread across both decimal and integral parts.
@ maybeExponential
Like e.
@ alwaysPositive
Print as is.
@ alwaysNegative
Treat negative zero as positive zero.
@ degreesMinutes
Fractional degrees.
@ degreesMinutesSeconds
Integral degrees, fractional arcminutes.
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Controls how a value with a unit is converted to a string.
Definition MRUnits.h:71
Common traits for (mathematical) vectors.
Definition MRMesh/MRVectorTraits.h:18