Measurement.h
1 #pragma once 2 #include "pch.h" 3 4 #include <dcommon.h> 5 #include <windef.h> 6 #include <iosfwd> 7 8 struct Measurement 9 { 10 enum Unit 11 { 12 Pixel = 1, 13 Inch = 2, 14 Centimetre = 4, 15 Millimetre = 8, 16 }; 17 18 D2D1_RECT_F rect = {}; // corners are inclusive 19 20 float px2mmRatio = 0; 21 static winrt::hstring abbreviations[4]; // Abbreviations of units. 22 23 Measurement(const Measurement&) = default; 24 Measurement& operator=(const Measurement&) = default; 25 26 explicit Measurement(D2D1_RECT_F d2dRect, float px2mmRatio); 27 explicit Measurement(RECT winRect, float px2mmRatio); 28 29 float Width(const Unit units) const; 30 float Height(const Unit units) const; 31 32 struct PrintResult 33 { 34 size_t crossSymbolPos[2] = {}; 35 size_t strLen = {}; 36 }; 37 38 static void InitResources(); 39 static Unit GetUnitFromIndex(int index); 40 static const wchar_t* GetUnitAbbreviation(const Unit units); 41 42 PrintResult Print(wchar_t* buf, 43 const size_t bufSize, 44 const bool printWidth, 45 const bool printHeight, 46 const int units) const; 47 48 void PrintToStream(std::wostream& stream, 49 const bool prependNewLine, 50 const bool printWidth, 51 const bool printHeight, 52 const Unit units) const; 53 };