stuff-from-scratch/src/graphics/DrawingSurface.h
2022-11-11 16:32:55 +00:00

37 lines
723 B
C++

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