Add GridModify tool, and visibility flag to grids

This commit is contained in:
Yousef Khadadeh 2025-09-10 15:03:06 +03:00
parent 2325d84c22
commit 76dcd4eac5
15 changed files with 271 additions and 16 deletions

View file

@ -6,6 +6,7 @@
#include "../DrawComponents/DrawComponent.hpp"
#include "EllipseDrawTool.hpp"
#include "EyeDropperTool.hpp"
#include "GridModifyTool.hpp"
#include "../InputManager.hpp"
#include "../SharedTypes.hpp"
#include "../Server/CommandList.hpp"
@ -231,6 +232,17 @@ void DrawingProgram::tool_options_gui() {
}
}
void DrawingProgram::modify_grid(const std::string& gridToModifyName) {
if(world.gridMan.grids.contains(gridToModifyName)) {
if(drawTool->get_type() != DrawingProgramToolType::GRIDMODIFY)
switch_to_tool(DrawingProgramToolType::GRIDMODIFY);
GridModifyTool* gridModToolPtr = static_cast<GridModifyTool*>(drawTool.get());
gridModToolPtr->set_grid_name(gridToModifyName);
}
else if(drawTool->get_type() == DrawingProgramToolType::GRIDMODIFY)
switch_to_tool(DrawingProgramToolType::EDIT);
}
void DrawingProgram::update() {
if(world.main.window.lastFrameTime > std::chrono::milliseconds(33)) { // Around 30FPS
if(!badFrametimeTimePoint)

View file

@ -55,6 +55,8 @@ class DrawingProgram {
void switch_to_tool_ptr(std::unique_ptr<DrawingProgramToolBase> newTool);
void clear_draw_cache();
void modify_grid(const std::string& gridToModifyName);
private:
std::optional<std::chrono::steady_clock::time_point> badFrametimeTimePoint;
std::optional<std::chrono::steady_clock::time_point> unorderedObjectsExistTimePoint;
@ -122,4 +124,5 @@ class DrawingProgram {
friend class DrawingProgramCache;
friend class DrawingProgramSelection;
friend class LassoSelectTool;
friend class GridEditTool;
};

View file

@ -10,6 +10,7 @@
#include "EyeDropperTool.hpp"
#include "ScreenshotTool.hpp"
#include "EditTool.hpp"
#include "GridModifyTool.hpp"
DrawingProgramToolBase::DrawingProgramToolBase(DrawingProgram& initDrawP):
drawP(initDrawP)
@ -37,6 +38,8 @@ std::unique_ptr<DrawingProgramToolBase> DrawingProgramToolBase::allocate_tool_ty
return std::make_unique<EyeDropperTool>(drawP);
case DrawingProgramToolType::SCREENSHOT:
return std::make_unique<ScreenshotTool>(drawP);
case DrawingProgramToolType::GRIDMODIFY:
return std::make_unique<GridModifyTool>(drawP);
case DrawingProgramToolType::EDIT:
return std::make_unique<EditTool>(drawP);
}

View file

@ -16,6 +16,7 @@ enum class DrawingProgramToolType : int {
TEXTBOX,
EYEDROPPER,
SCREENSHOT,
GRIDMODIFY,
EDIT
};

View file

@ -0,0 +1,38 @@
#include "GridModifyTool.hpp"
#include "DrawingProgram.hpp"
#include "../MainProgram.hpp"
#include "../DrawData.hpp"
GridModifyTool::GridModifyTool(DrawingProgram& initDrawP):
DrawingProgramToolBase(initDrawP)
{
}
void GridModifyTool::set_grid_name(const std::string& gridToModifyName) {
gridName = gridToModifyName;
}
DrawingProgramToolType GridModifyTool::get_type() {
return DrawingProgramToolType::GRIDMODIFY;
}
void GridModifyTool::gui_toolbox() {
Toolbar& t = drawP.world.main.toolbar;
t.gui.push_id("Grid modify tool");
t.gui.text_label_centered("Edit Grid");
t.gui.text_label_centered(gridName);
t.gui.pop_id();
}
void GridModifyTool::tool_update() {
}
bool GridModifyTool::prevent_undo_or_redo() {
return false;
}
void GridModifyTool::draw(SkCanvas* canvas, const DrawData& drawData) {
}
void GridModifyTool::switch_tool(DrawingProgramToolType newTool) {
}

View file

@ -0,0 +1,18 @@
#pragma once
#include "DrawingProgramToolBase.hpp"
class DrawingProgram;
class GridModifyTool : public DrawingProgramToolBase {
public:
GridModifyTool(DrawingProgram& initDrawP);
void set_grid_name(const std::string& gridToModifyName);
virtual DrawingProgramToolType get_type() override;
virtual void gui_toolbox() override;
virtual void tool_update() override;
virtual void draw(SkCanvas* canvas, const DrawData& drawData) override;
virtual bool prevent_undo_or_redo() override;
virtual void switch_tool(DrawingProgramToolType newTool) override;
private:
std::string gridName;
};