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