diff options
| author | crupest <crupest@outlook.com> | 2019-12-12 19:53:17 +0800 |
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2019-12-12 19:53:17 +0800 |
| commit | e69911a8b161b81ce3f7b209175766da2b7b3d4b (patch) | |
| tree | 76b1f4b6f9f5ad6111578771be783ee456aeb912 /include/cru/win/graph/direct/factory.hpp | |
| parent | 154b5b838edfdcef93cd0a33c013ad7f5f9d7337 (diff) | |
| download | cru-e69911a8b161b81ce3f7b209175766da2b7b3d4b.tar.gz cru-e69911a8b161b81ce3f7b209175766da2b7b3d4b.tar.bz2 cru-e69911a8b161b81ce3f7b209175766da2b7b3d4b.zip | |
...
Diffstat (limited to 'include/cru/win/graph/direct/factory.hpp')
| -rw-r--r-- | include/cru/win/graph/direct/factory.hpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/include/cru/win/graph/direct/factory.hpp b/include/cru/win/graph/direct/factory.hpp new file mode 100644 index 00000000..ae4eeb3a --- /dev/null +++ b/include/cru/win/graph/direct/factory.hpp @@ -0,0 +1,48 @@ +#pragma once +#include "resource.hpp" + +#include "cru/platform/graph/factory.hpp" + +namespace cru::platform::graph::win::direct { +class DirectGraphFactory : public DirectResource, public virtual IGraphFactory { + private: + DirectGraphFactory(); + + public: + CRU_DELETE_COPY(DirectGraphFactory) + CRU_DELETE_MOVE(DirectGraphFactory) + + ~DirectGraphFactory() override = default; + + public: + ID2D1Factory1* GetD2D1Factory() const { return d2d1_factory_.Get(); } + ID2D1DeviceContext* GetD2D1DeviceContext() const { + return d2d1_device_context_.Get(); + } + ID3D11Device* GetD3D11Device() const { return d3d11_device_.Get(); } + IDXGIFactory2* GetDxgiFactory() const { return dxgi_factory_.Get(); } + IDWriteFactory* GetDWriteFactory() const { return dwrite_factory_.Get(); } + IDWriteFontCollection* GetSystemFontCollection() const { + return dwrite_system_font_collection_.Get(); + } + + public: + std::unique_ptr<ISolidColorBrush> CreateSolidColorBrush() override; + + std::unique_ptr<IGeometryBuilder> CreateGeometryBuilder() override; + + std::unique_ptr<IFont> CreateFont(const std::string_view& font_family, + float font_size) override; + + std::unique_ptr<ITextLayout> CreateTextLayout(std::shared_ptr<IFont> font, + std::string text) override; + + private: + Microsoft::WRL::ComPtr<ID3D11Device> d3d11_device_; + Microsoft::WRL::ComPtr<ID2D1Factory1> d2d1_factory_; + Microsoft::WRL::ComPtr<ID2D1DeviceContext> d2d1_device_context_; + Microsoft::WRL::ComPtr<IDXGIFactory2> dxgi_factory_; + Microsoft::WRL::ComPtr<IDWriteFactory> dwrite_factory_; + Microsoft::WRL::ComPtr<IDWriteFontCollection> dwrite_system_font_collection_; +}; +} // namespace cru::platform::graph::win::direct |
