#pragma once #include #include "INativeDrawingSurface.h" class Grid; class Image; class DrawingSurface { public: DrawingSurface() = default; static std::unique_ptr Create(); INativeDrawingSurface* GetNativeSurface(); void SetNativeSurface(std::unique_ptr surface); void SetSize(unsigned width, unsigned height); unsigned GetWidth() const; unsigned GetHeight() const; void Paint(Grid* grid); Image* GetAsImage() const; private: unsigned mWidth = 0; unsigned mHeight = 0; std::unique_ptr mImageBuffer; std::unique_ptr mNativeDrawingSurface; };