#pragma once #include "Resource.hpp" #include "Brush.hpp" #include "Font.hpp" #include "Geometry.hpp" #include "TextLayout.hpp" #include #include namespace cru::platform::graphics { // Entry point of the graph module. struct IGraphFactory : virtual INativeResource { virtual std::unique_ptr CreateSolidColorBrush() = 0; virtual std::unique_ptr CreateGeometryBuilder() = 0; virtual std::unique_ptr CreateFont(std::u16string font_family, float font_size) = 0; virtual std::unique_ptr CreateTextLayout( std::shared_ptr font, std::u16string text) = 0; std::unique_ptr CreateSolidColorBrush(const Color& color) { std::unique_ptr brush = CreateSolidColorBrush(); brush->SetColor(color); return brush; } }; } // namespace cru::platform::graphics