#pragma once #include #include class INativeDrawingContext; class AbstractGeometricItem; using AbstractGeometricItemPtr = std::unique_ptr; class TriMesh; 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: void updateMesh(); std::unique_ptr mMesh; std::vector > mItems; std::unique_ptr mNativeDrawingContext; }; using DrawingContextPtr = std::unique_ptr;