Restructure how tool data is stored

This commit is contained in:
Yousef Khadadeh 2025-08-02 20:10:33 +03:00
parent d07eaf4207
commit 90374da228
37 changed files with 790 additions and 801 deletions

View file

@ -0,0 +1,44 @@
#include "DrawingProgramToolBase.hpp"
#include "BrushTool.hpp"
#include "EraserTool.hpp"
#include "RectSelectTool.hpp"
#include "LassoSelectTool.hpp"
#include "RectDrawTool.hpp"
#include "EllipseDrawTool.hpp"
#include "TextBoxTool.hpp"
#include "InkDropperTool.hpp"
#include "ScreenshotTool.hpp"
#include "EditTool.hpp"
DrawingProgramToolBase::DrawingProgramToolBase(DrawingProgram& initDrawP):
drawP(initDrawP)
{}
DrawingProgramToolBase::~DrawingProgramToolBase() {}
std::unique_ptr<DrawingProgramToolBase> DrawingProgramToolBase::allocate_tool_type(DrawingProgram& drawP, DrawingProgramToolType t) {
switch(t) {
case DrawingProgramToolType::BRUSH:
return std::make_unique<BrushTool>(drawP);
case DrawingProgramToolType::ERASER:
return std::make_unique<EraserTool>(drawP);
case DrawingProgramToolType::LASSOSELECT:
return std::make_unique<LassoSelectTool>(drawP);
case DrawingProgramToolType::RECTSELECT:
return std::make_unique<RectSelectTool>(drawP);
case DrawingProgramToolType::RECTANGLE:
return std::make_unique<RectDrawTool>(drawP);
case DrawingProgramToolType::ELLIPSE:
return std::make_unique<EllipseDrawTool>(drawP);
case DrawingProgramToolType::TEXTBOX:
return std::make_unique<TextBoxTool>(drawP);
case DrawingProgramToolType::INKDROPPER:
return std::make_unique<InkDropperTool>(drawP);
case DrawingProgramToolType::SCREENSHOT:
return std::make_unique<ScreenshotTool>(drawP);
case DrawingProgramToolType::EDIT:
return std::make_unique<EditTool>(drawP);
}
return nullptr;
}