D2DState.h
1 #pragma once 2 3 #include <optional> 4 #include <vector> 5 6 #include <windef.h> 7 8 #include "DxgiAPI.h" 9 #include "PerGlyphOpacityTextRender.h" 10 11 enum Brush : size_t 12 { 13 line, 14 foreground, 15 background, 16 border 17 }; 18 19 struct D2DState 20 { 21 const DxgiAPI* dxgiAPI = nullptr; 22 23 DxgiWindowState dxgiWindowState; 24 winrt::com_ptr<ID2D1BitmapRenderTarget> bitmapRt; 25 winrt::com_ptr<IDWriteTextFormat> textFormat; 26 winrt::com_ptr<PerGlyphOpacityTextRender> textRenderer; 27 std::vector<winrt::com_ptr<ID2D1SolidColorBrush>> solidBrushes; 28 winrt::com_ptr<ID2D1Effect> shadowEffect; 29 winrt::com_ptr<ID2D1Effect> affineTransformEffect; 30 31 float dpiScale = 1.f; 32 33 D2DState(const DxgiAPI*, 34 HWND window, 35 std::vector<D2D1::ColorF> solidBrushesColors); 36 void DrawTextBox(const wchar_t* text, 37 const size_t textLen, 38 const size_t halfOpaqueSymbolPos[2], 39 const D2D_POINT_2F center, 40 const bool screenQuadrantAware, 41 const HWND window) const; 42 void ToggleAliasedLinesMode(const bool enabled) const; 43 };