stuff-from-scratch/src/rendering/graphics/PainterFactory.cpp
2023-01-23 12:02:08 +00:00

51 lines
1.1 KiB
C++

#include "PainterFactory.h"
#ifdef HAS_OPENGL
#include "OpenGlPainter.h"
#include "OpenGlMeshPainter.h"
#include "OpenGlTextPainter.h"
#include "OpenGlShaderProgram.h"
#include "OpenGlFontTexture.h"
#endif
#include "Grid.h"
#include "RasterPainter.h"
#include "DrawingContext.h"
#ifdef _WIN32
#include "DirectXPainter.h"
#include "DirectXMesh.h"
#include "DirectXMeshPainter.h"
#include "DirectXTextPainter.h"
#endif
std::unique_ptr<AbstractPainter> PainterFactory::Create(DrawingContext* context, DrawingMode drawMode)
{
#ifdef _WIN32
if (drawMode == DrawingMode::GRAPH)
{
return std::make_unique<DirectXPainter>(context);
}
else
{
return std::make_unique<RasterPainter>(context);
}
#else
#ifdef HAS_OPENGL
if (drawMode == DrawingMode::GRAPH)
{
return std::make_unique<OpenGlPainter>(context);
}
else
{
return std::make_unique<RasterPainter>(context);
}
#else
(void)drawMode;
return std::make_unique<RasterPainter>(context);
#endif
#endif
}