PowerToys.MeasureToolCore.h
1 #pragma once 2 3 #include "Core.g.h" 4 #include "ToolState.h" 5 #include "OverlayUI.h" 6 #include "Settings.h" 7 8 #include <common/Telemetry/EtwTrace/EtwTrace.h> 9 #include <common/utils/serialized.h> 10 #include "ScreenCapturing.h" 11 12 struct PowerToysMisc 13 { 14 PowerToysMisc() 15 { 16 Trace::RegisterProvider(); 17 LoggerHelpers::init_logger(L"Measure Tool", L"Core", "Measure Tool"); 18 InitUnhandledExceptionHandler(); 19 } 20 21 ~PowerToysMisc() 22 { 23 Trace::UnregisterProvider(); 24 } 25 }; 26 27 namespace winrt::PowerToys::MeasureToolCore::implementation 28 { 29 struct Core : PowerToysMisc, CoreT<Core> 30 { 31 Core(); 32 ~Core(); 33 void Close(); 34 35 void InitResources(); 36 void StartBoundsTool(); 37 void StartMeasureTool(const bool horizontal, const bool vertical); 38 void SetToolCompletionEvent(ToolSessionCompleted sessionCompletedTrigger); 39 void SetToolbarBoundingBox(const uint32_t fromX, const uint32_t fromY, const uint32_t toX, const uint32_t toY); 40 void ResetState(); 41 float GetDPIScaleForWindow(uint64_t windowHandle); 42 void MouseCaptureThread(); 43 44 DxgiAPI dxgiAPI; 45 46 wil::shared_event _stopMouseCaptureThreadSignal; 47 std::thread _mouseCaptureThread; 48 std::vector<std::thread> _screenCaptureThreads; 49 50 std::vector<std::unique_ptr<OverlayUIState>> _overlayUIStates; 51 Serialized<MeasureToolState> _measureToolState; 52 BoundsToolState _boundsToolState; 53 CommonState _commonState; 54 Settings _settings; 55 Shared::Trace::ETWTrace trace{}; 56 }; 57 } 58 59 namespace winrt::PowerToys::MeasureToolCore::factory_implementation 60 { 61 struct Core : CoreT<Core, implementation::Core> 62 { 63 }; 64 }