Added pan tool
This commit is contained in:
parent
a5c9595b13
commit
7ad86c27fe
8 changed files with 60 additions and 2 deletions
|
|
@ -66,6 +66,7 @@ set(sources "src/main.cpp"
|
|||
"src/DrawingProgram/ScreenshotTool.cpp"
|
||||
"src/DrawingProgram/EditTool.cpp"
|
||||
"src/DrawingProgram/ZoomCanvasTool.cpp"
|
||||
"src/DrawingProgram/PanCanvasTool.cpp"
|
||||
"src/DrawingProgram/ImageEditTool.cpp"
|
||||
"src/DrawingProgram/GridModifyTool.cpp"
|
||||
"src/DrawingProgram/DrawingProgramSelection.cpp"
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ void DrawCamera::update_main(World& w) {
|
|||
c.pos = startZoomMousePos + mVec * mX;
|
||||
}
|
||||
}
|
||||
else if(w.drawProg.controls.middleClickHeld)
|
||||
else if(w.drawProg.controls.middleClickHeld || (w.drawProg.controls.leftClickHeld && w.drawProg.drawTool->get_type() == DrawingProgramToolType::PAN))
|
||||
c.pos -= c.dir_from_space(w.main.input.mouse.move);
|
||||
if(w.main.input.mouse.scrollAmount.y() && !w.main.toolbar.io->hoverObstructed) {
|
||||
// Ignore the value of scrollAmount, since that leads to problems on macOS
|
||||
|
|
|
|||
|
|
@ -200,6 +200,7 @@ void DrawingProgram::toolbar_gui() {
|
|||
if(t.gui.svg_icon_button("Edit Toolbar Button", "data/icons/cursor.svg", drawTool->get_type() == DrawingProgramToolType::EDIT)) { switch_to_tool(DrawingProgramToolType::EDIT); }
|
||||
if(t.gui.svg_icon_button("Eyedropper Toolbar Button", "data/icons/eyedropper.svg", drawTool->get_type() == DrawingProgramToolType::EYEDROPPER)) { switch_to_tool(DrawingProgramToolType::EYEDROPPER); }
|
||||
if(t.gui.svg_icon_button("Zoom Canvas Toolbar Button", "data/icons/zoom.svg", drawTool->get_type() == DrawingProgramToolType::ZOOM)) { switch_to_tool(DrawingProgramToolType::ZOOM); }
|
||||
if(t.gui.svg_icon_button("Pan Canvas Toolbar Button", "data/icons/hand.svg", drawTool->get_type() == DrawingProgramToolType::PAN)) { switch_to_tool(DrawingProgramToolType::PAN); }
|
||||
CLAY({.layout = {.sizing = {.width = CLAY_SIZING_FIXED(40), .height = CLAY_SIZING_FIXED(40)}}}) {
|
||||
if(t.gui.color_button("Foreground Color", &controls.foregroundColor, &controls.foregroundColor == t.colorLeft)) {
|
||||
t.color_selector_left(&controls.foregroundColor == t.colorLeft ? nullptr : &controls.foregroundColor);
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "../DrawData.hpp"
|
||||
#include "DrawingProgramCache.hpp"
|
||||
#include "GridModifyTool.hpp"
|
||||
#include "PanCanvasTool.hpp"
|
||||
#include "ZoomCanvasTool.hpp"
|
||||
#include "cereal/archives/portable_binary.hpp"
|
||||
#include <include/core/SkCanvas.h>
|
||||
|
|
@ -133,5 +134,6 @@ class DrawingProgram {
|
|||
friend class GridEditTool;
|
||||
friend class GridModifyTool;
|
||||
friend class ZoomCanvasTool;
|
||||
friend class PanCanvasTool;
|
||||
friend class DrawCamera;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include "BrushTool.hpp"
|
||||
#include "EraserTool.hpp"
|
||||
#include "PanCanvasTool.hpp"
|
||||
#include "RectSelectTool.hpp"
|
||||
#include "LassoSelectTool.hpp"
|
||||
#include "RectDrawTool.hpp"
|
||||
|
|
@ -45,6 +46,8 @@ std::unique_ptr<DrawingProgramToolBase> DrawingProgramToolBase::allocate_tool_ty
|
|||
return std::make_unique<EditTool>(drawP);
|
||||
case DrawingProgramToolType::ZOOM:
|
||||
return std::make_unique<ZoomCanvasTool>(drawP);
|
||||
case DrawingProgramToolType::PAN:
|
||||
return std::make_unique<PanCanvasTool>(drawP);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,8 @@ enum class DrawingProgramToolType : int {
|
|||
SCREENSHOT,
|
||||
GRIDMODIFY,
|
||||
EDIT,
|
||||
ZOOM
|
||||
ZOOM,
|
||||
PAN
|
||||
};
|
||||
|
||||
class DrawingProgramToolBase {
|
||||
|
|
|
|||
35
src/DrawingProgram/PanCanvasTool.cpp
Normal file
35
src/DrawingProgram/PanCanvasTool.cpp
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#include "PanCanvasTool.hpp"
|
||||
#include "DrawingProgram.hpp"
|
||||
#include "../MainProgram.hpp"
|
||||
#include "../DrawData.hpp"
|
||||
#include "DrawingProgramToolBase.hpp"
|
||||
#include <Helpers/Logger.hpp>
|
||||
|
||||
PanCanvasTool::PanCanvasTool(DrawingProgram& initDrawP):
|
||||
DrawingProgramToolBase(initDrawP)
|
||||
{
|
||||
}
|
||||
|
||||
DrawingProgramToolType PanCanvasTool::get_type() {
|
||||
return DrawingProgramToolType::PAN;
|
||||
}
|
||||
|
||||
void PanCanvasTool::gui_toolbox() {
|
||||
Toolbar& t = drawP.world.main.toolbar;
|
||||
t.gui.push_id("Pan canvas tool");
|
||||
t.gui.text_label_centered("Pan tool");
|
||||
t.gui.pop_id();
|
||||
}
|
||||
|
||||
void PanCanvasTool::tool_update() {
|
||||
}
|
||||
|
||||
bool PanCanvasTool::prevent_undo_or_redo() {
|
||||
return false;
|
||||
}
|
||||
|
||||
void PanCanvasTool::draw(SkCanvas* canvas, const DrawData& drawData) {
|
||||
}
|
||||
|
||||
void PanCanvasTool::switch_tool(DrawingProgramToolType newTool) {
|
||||
}
|
||||
15
src/DrawingProgram/PanCanvasTool.hpp
Normal file
15
src/DrawingProgram/PanCanvasTool.hpp
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#pragma once
|
||||
#include "DrawingProgramToolBase.hpp"
|
||||
|
||||
class DrawingProgram;
|
||||
|
||||
class PanCanvasTool : public DrawingProgramToolBase {
|
||||
public:
|
||||
PanCanvasTool(DrawingProgram& initDrawP);
|
||||
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;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue