#pragma once class DrawingContext; class AbstractPainter { public: AbstractPainter(DrawingContext* context) : mDrawingContext(context) { } virtual ~AbstractPainter() = default; virtual void paint() = 0; virtual bool supportsGeometryPrimitives() const { return false; }; protected: DrawingContext* mDrawingContext{ nullptr }; };