#pragma once #include #include "grbl.h" namespace iosender { class MeasureViewModel { public: bool _isMetric = true; const double MM_PER_INCH = 25.4; bool IsMetric() const { return _isMetric; } void IsMetric(bool value) { if (value != _isMetric) { _isMetric = value; // trigger OnPropertyChanged() } } std::string Unit() const { return _isMetric ? "mm" : "in"; } std::string FeedrateUnit() const { return _isMetric ? "mm/min" : "in/min"; } double UnitFactor() const { return _isMetric ? 1.0 : 25.4; } std::string Format() const { return _isMetric ? GrblConstants::FORMAT_METRIC : GrblConstants::FORMAT_IMPERIAL; } std::string FormatSigned() const { return "-" + Format(); } int Precision() const { return _isMetric ? 3 : 4; } double ConvertMM2Current(double value) const { if (!_isMetric) value /= 25.4; return value; } }; }