#pragma once #include "../Factory.h" #include "CairoResource.h" #include #include namespace cru::platform::graphics::cairo { class CairoImageFactory; class CRU_PLATFORM_GRAPHICS_CAIRO_API CairoGraphicsFactory : public CairoResource, public virtual IGraphicsFactory { public: CairoGraphicsFactory(); ~CairoGraphicsFactory() override; public: cairo_surface_t* GetDefaultCairoSurface() { return default_cairo_surface_; } cairo_t* GetDefaultCairo() { return default_cairo_; } PangoContext* GetDefaultPangoContext() { return default_pango_context_; } public: std::unique_ptr CreateSolidColorBrush() override; std::unique_ptr CreateGeometryBuilder() override; std::unique_ptr CreateFont(String font_family, float font_size) override; std::unique_ptr CreateTextLayout(std::shared_ptr font, String text) override; IImageFactory* GetImageFactory() override; private: cairo_surface_t* default_cairo_surface_; cairo_t* default_cairo_; PangoContext* default_pango_context_; std::unique_ptr image_factory_; }; } // namespace cru::platform::graphics::cairo