#pragma once #include #include class INativeDrawingContext; class AbstractGeometricItem; using AbstractGeometricItemPtr = std::unique_ptr; class DrawingContext { public: DrawingContext() = default; static std::unique_ptr Create(); void SetNativeContext(std::unique_ptr context); INativeDrawingContext* GetNativeContext(); unsigned GetNumItems() const; void AddDrawable(AbstractGeometricItemPtr item); AbstractGeometricItem* GetDrawable(unsigned idx) const; private: std::vector > mItems; std::unique_ptr mNativeDrawingContext; }; using DrawingContextPtr = std::unique_ptr;