/ src / modules / MeasureTool / MeasureToolCore / PowerToys.MeasureToolCore.h
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  }