Settings.cpp
1 #include "pch.h" 2 3 #include <common/SettingsAPI/settings_helpers.h> 4 #include <common/utils/color.h> 5 6 #include "Settings.h" 7 8 namespace 9 { 10 const wchar_t JSON_KEY_PROPERTIES[] = L"properties"; 11 const wchar_t JSON_KEY_VALUE[] = L"value"; 12 13 const wchar_t JSON_KEY_CONTINUOUS_CAPTURE[] = L"ContinuousCapture"; 14 const wchar_t JSON_KEY_DRAW_FEET_ON_CROSS[] = L"DrawFeetOnCross"; 15 const wchar_t JSON_KEY_PIXEL_TOLERANCE[] = L"PixelTolerance"; 16 const wchar_t JSON_KEY_PER_COLOR_CHANNEL_EDGE_DETECTION[] = L"PerColorChannelEdgeDetection"; 17 const wchar_t JSON_KEY_MEASURE_CROSS_COLOR[] = L"MeasureCrossColor"; 18 const wchar_t JSON_KEY_UNITS_OF_MEASURE[] = L"UnitsOfMeasure"; 19 } 20 21 Settings Settings::LoadFromFile() 22 { 23 Settings result; 24 25 try 26 { 27 auto props = PTSettingsHelper::load_module_settings(L"Measure Tool").GetNamedObject(JSON_KEY_PROPERTIES); 28 29 try 30 { 31 result.continuousCapture = props.GetNamedObject(JSON_KEY_CONTINUOUS_CAPTURE).GetNamedBoolean(JSON_KEY_VALUE); 32 } 33 catch (...) 34 { 35 } 36 37 try 38 { 39 result.drawFeetOnCross = props.GetNamedObject(JSON_KEY_DRAW_FEET_ON_CROSS).GetNamedBoolean(JSON_KEY_VALUE); 40 } 41 catch (...) 42 { 43 } 44 45 try 46 { 47 result.pixelTolerance = static_cast<uint8_t>(props.GetNamedObject(JSON_KEY_PIXEL_TOLERANCE).GetNamedNumber(JSON_KEY_VALUE)); 48 } 49 catch (...) 50 { 51 } 52 53 try 54 { 55 const auto colorString = props.GetNamedObject(JSON_KEY_MEASURE_CROSS_COLOR).GetNamedString(JSON_KEY_VALUE); 56 checkValidRGB(colorString, &result.lineColor[0], &result.lineColor[1], &result.lineColor[2]); 57 } 58 catch (...) 59 { 60 } 61 62 try 63 { 64 result.perColorChannelEdgeDetection = props.GetNamedObject(JSON_KEY_PER_COLOR_CHANNEL_EDGE_DETECTION).GetNamedBoolean(JSON_KEY_VALUE); 65 } 66 catch (...) 67 { 68 } 69 70 try 71 { 72 auto index = static_cast<int>(props.GetNamedObject(JSON_KEY_UNITS_OF_MEASURE).GetNamedNumber(JSON_KEY_VALUE)); 73 result.units = Measurement::GetUnitFromIndex(index); 74 } 75 catch (...) 76 { 77 } 78 } 79 catch (...) 80 { 81 } 82 83 return result; 84 }