22#include <kiwano/render/DirectX/helper.h>
23#include <kiwano/render/DirectX/FontLoader.h>
32MIDL_INTERFACE(
"5706684a-bf6d-4b03-b627-094758a33032")
33KGE_API ID2DDeviceResources : public IUnknown
36 virtual HRESULT Initialize(_In_ ComPtr<IDXGIDevice> dxgi_device, _In_ ComPtr<IDXGISwapChain> dxgi_swap_chain,
39 virtual HRESULT CreateDeviceContext(_Out_ ComPtr<ID2D1DeviceContext> & device_ctx) = 0;
41 virtual HRESULT CreateBitmapSourceFromMemory(_Out_ ComPtr<IWICBitmapSource> & source, _In_ UINT width,
42 _In_ UINT height, _In_ UINT cbStride, _In_ UINT cbBufferSize,
43 _In_ BYTE * buffer, _In_ REFWICPixelFormatGUID cPixelFormat) = 0;
45 virtual HRESULT CreateBitmapConverter(_Out_ ComPtr<IWICFormatConverter> & converter,
46 _In_opt_ ComPtr<IWICBitmapSource> source, _In_ REFWICPixelFormatGUID format,
47 WICBitmapDitherType dither, _In_opt_ ComPtr<IWICPalette> palette,
48 double alpha_threshold_percent, WICBitmapPaletteType palette_translate) = 0;
50 virtual HRESULT CreateBitmapFromConverter(_Out_ ComPtr<ID2D1Bitmap> & bitmap,
51 _In_opt_
const D2D1_BITMAP_PROPERTIES* properties,
52 _In_ ComPtr<IWICFormatConverter> converter) = 0;
54 virtual HRESULT CreateBitmapDecoderFromFile(_Out_ ComPtr<IWICBitmapDecoder> & decoder, _In_ LPCWSTR file_path) = 0;
56 virtual HRESULT CreateBitmapDecoderFromResource(_Out_ ComPtr<IWICBitmapDecoder> & decoder, _In_
void* data,
59 virtual HRESULT CreateTextFormat(_Out_ ComPtr<IDWriteTextFormat> & text_format, _In_ LPCWSTR family,
60 _In_ ComPtr<IDWriteFontCollection> collection, DWRITE_FONT_WEIGHT weight,
61 DWRITE_FONT_STYLE style, DWRITE_FONT_STRETCH stretch, FLOAT font_size) = 0;
63 virtual HRESULT CreateTextLayout(_Out_ ComPtr<IDWriteTextLayout> & text_layout, _In_ LPCWSTR text, UINT32 length,
64 _In_ ComPtr<IDWriteTextFormat> text_format) = 0;
66 virtual HRESULT CreateFontCollectionFromFiles(_Out_ ComPtr<IDWriteFontCollection> & font_collection,
67 const Vector<String>& file_paths) = 0;
69 virtual HRESULT CreateFontCollectionFromBinaryData(_Out_ ComPtr<IDWriteFontCollection> & font_collection,
70 const Vector<BinaryData>& data) = 0;
72 virtual HRESULT GetFontFamilyNames(_Out_ Vector<String> & family_names,
73 _In_ ComPtr<IDWriteFontCollection> font_collection) = 0;
75 virtual FLOAT GetDpi()
const = 0;
77 virtual HRESULT SetDpi(FLOAT dpi) = 0;
79 virtual HRESULT SetLogicalSize(
float width,
float height) = 0;
81 virtual HRESULT HandleDeviceLost(_In_ ComPtr<IDXGIDevice> dxgi_device,
82 _In_ ComPtr<IDXGISwapChain> dxgi_swap_chain) = 0;
84 virtual void DiscardResources() = 0;
86 virtual void ResetTextRenderingParams(_In_ HMONITOR monitor) = 0;
88 inline ID2D1Factory1* GetFactory()
91 return factory_.Get();
94 inline IWICImagingFactory* GetWICImagingFactory()
96 KGE_ASSERT(imaging_factory_);
97 return imaging_factory_.Get();
100 inline IDWriteFactory* GetDWriteFactory()
102 KGE_ASSERT(dwrite_factory_);
103 return dwrite_factory_.Get();
106 inline ID2D1Device* GetDevice()
109 return device_.Get();
112 inline ID2D1DeviceContext* GetDeviceContext()
114 KGE_ASSERT(device_context_);
115 return device_context_.Get();
119 ComPtr<ID2D1Factory1> factory_;
120 ComPtr<ID2D1Device> device_;
121 ComPtr<ID2D1DeviceContext> device_context_;
123 ComPtr<IWICImagingFactory> imaging_factory_;
124 ComPtr<IDWriteFactory> dwrite_factory_;
127extern ComPtr<ID2DDeviceResources> GetD2DDeviceResources();