#pragma once #include #include "INativeDrawingContext.h" #include "INativeDrawingSurface.h" #include "CairoInterface.h" class TextElement; class DrawingSurface; using DrawingSurfacePtr = std::unique_ptr; class DrawingContext; using DrawingContextPtr = std::unique_ptr; class DrawingManager { public: DrawingManager(); static std::unique_ptr Create(); void InitalizeSurface(unsigned width, unsigned height); void InitializeContext(); void AddText(TextElement* text); void RenderToFile(const std::string& path); private: DrawingSurfacePtr mDrawingSurface {nullptr}; DrawingContextPtr mDrawingContext {nullptr}; CairoInterfacePtr mCairoInterface {nullptr}; }; using DrawingManagerPtr = std::unique_ptr;