3#include "MRViewer/exports.h"
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
std::string valueToImGuiFormatString(T value, const UnitToStringParams< E > ¶ms=getDefaultUnitParams< E >())
NumberStyle style
— Precision:
Definition MRUnits.h:89
std::optional< E > sourceUnit
— Units:
Definition MRUnits.h:79
int guessPrecision(T value)
Same but for vectors.
Definition MRUnits.h:164
#define DETAIL_MR_UNIT_ENUMS(X)
A list of all unit enums, for internal use.
Definition MRUnitInfo.h:113
static constexpr int size
Definition 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 MRVectorTraits.h:32
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
std::string_view toString(DimensionsVisualizePropertyType value)
std::string valueToString(T value, const UnitToStringParams< E > ¶ms=getDefaultUnitParams< E >())
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....
bool stripTrailingZeroes
Remove trailing zeroes after the fractional point. If the point becomes the last symbol,...
Definition MRUnits.h:114
Vector3f normal(const MeshTopology &topology, const VertCoords &points, FaceId f)
computes triangular face normal from its vertices
Definition MRMeshMath.h:224
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.
Definition MRUnits.h:46
@ exponential
Like f, but the precision digits are spread across both decimal and integral parts.
Definition MRUnits.h:47
@ maybeExponential
Like e.
Definition MRUnits.h:48
@ _count
Definition MRFeatureHelpers.h:30
@ alwaysPositive
Print as is.
Definition MRUnits.h:64
@ alwaysNegative
Treat negative zero as positive zero.
Definition MRUnits.h:65
@ asIs
Definition MRUnits.h:63
@ degreesMinutes
Fractional degrees.
Definition MRUnits.h:55
@ degreesMinutesSeconds
Integral degrees, fractional arcminutes.
Definition MRUnits.h:56
@ degrees
Definition MRUnitInfo.h:37
Definition MRUnitInfo.h:171
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Controls how a value with a unit is converted to a string.
Definition MRUnits.h:71