From 1c29d564c796f9c4e1bb1d6ca2cf77d41a7e2a96 Mon Sep 17 00:00:00 2001 From: Sonaion Date: Fri, 13 Dec 2019 13:47:32 +0100 Subject: [PATCH] rectangle tool --- src/IntelliPhoto.pro | 2 ++ src/Layer/PaintingArea.cpp | 1 + src/Tool/IntelliToolRechteck.cpp | 60 ++++++++++++++++++++++++++++++++ src/Tool/IntelliToolRechteck.h | 27 ++++++++++++++ 4 files changed, 90 insertions(+) create mode 100644 src/Tool/IntelliToolRechteck.cpp create mode 100644 src/Tool/IntelliToolRechteck.h diff --git a/src/IntelliPhoto.pro b/src/IntelliPhoto.pro index de708ac..47bf20e 100644 --- a/src/IntelliPhoto.pro +++ b/src/IntelliPhoto.pro @@ -28,6 +28,7 @@ SOURCES += \ Tool/IntelliToolLine.cpp \ Tool/IntelliToolPen.cpp \ Tool/IntelliToolPlain.cpp \ + Tool/IntelliToolRechteck.cpp \ main.cpp HEADERS += \ @@ -43,6 +44,7 @@ HEADERS += \ Tool/IntelliToolLine.h \ Tool/IntelliToolPen.h \ Tool/IntelliToolPlain.h \ + Tool/IntelliToolRechteck.h \ Tool/intellitoolcircle.h FORMS += \ diff --git a/src/Layer/PaintingArea.cpp b/src/Layer/PaintingArea.cpp index a5eb6a3..4ec5ea3 100644 --- a/src/Layer/PaintingArea.cpp +++ b/src/Layer/PaintingArea.cpp @@ -14,6 +14,7 @@ #include "Tool/IntelliToolPlain.h" #include "Tool/IntelliToolLine.h" #include "Tool/IntelliToolCircle.h" +#include "Tool/IntelliToolRechteck.h" PaintingArea::PaintingArea(int maxWidth, int maxHeight, QWidget *parent) :QWidget(parent){ diff --git a/src/Tool/IntelliToolRechteck.cpp b/src/Tool/IntelliToolRechteck.cpp new file mode 100644 index 0000000..ded8346 --- /dev/null +++ b/src/Tool/IntelliToolRechteck.cpp @@ -0,0 +1,60 @@ +#include"IntelliToolRechteck.h" +#include "Layer/PaintingArea.h" +#include "QInputDialog" + +IntelliToolRechteck::IntelliToolRechteck(PaintingArea* Area, IntelliColorPicker* colorPicker) + :IntelliTool(Area, colorPicker){ + this->alphaInner = QInputDialog::getInt(nullptr,"Inner Alpha Value", "Value:", 0,0,255,1); + this->edgeWidth = QInputDialog::getInt(nullptr,"Outer edge width", "Value:", 0,1,255,1); +} + +IntelliToolRechteck::~IntelliToolRechteck(){ + +} + +void IntelliToolRechteck::drawRechteck(QPoint otherCornor){ + int xMin = std::min(originCornor.x(), otherCornor.x()); + int xMax = std::max(originCornor.x(), otherCornor.x()); + + int yMin = std::min(originCornor.y(), otherCornor.y()); + int yMax = std::max(originCornor.y(), otherCornor.y()); + + QColor clr = colorPicker->getSecondColor(); + clr.setAlpha(alphaInner); + for(int y=yMin; y<=yMax; y++){ + this->Canvas->image->drawLine(QPoint(xMin,y), QPoint(xMax, y), clr, 1); + } + this->Canvas->image->drawLine(QPoint(xMin, yMin),QPoint(xMin, yMax), this->colorPicker->getFirstColor(), edgeWidth); + this->Canvas->image->drawLine(QPoint(xMin, yMin),QPoint(xMax, yMin), this->colorPicker->getFirstColor(), edgeWidth); + this->Canvas->image->drawLine(QPoint(xMax, yMax),QPoint(xMin, yMax), this->colorPicker->getFirstColor(), edgeWidth); + this->Canvas->image->drawLine(QPoint(xMax, yMax),QPoint(xMax, yMin), this->colorPicker->getFirstColor(), edgeWidth); +} + +void IntelliToolRechteck::onMouseRightPressed(int x, int y){ + IntelliTool::onMouseRightPressed(x,y); +} + +void IntelliToolRechteck::onMouseRightReleased(int x, int y){ + IntelliTool::onMouseRightReleased(x,y); +} + +void IntelliToolRechteck::onMouseLeftPressed(int x, int y){ + IntelliTool::onMouseLeftPressed(x,y); + this->originCornor=QPoint(x,y); + drawRechteck(originCornor); + Canvas->image->calculateVisiblity(); +} + +void IntelliToolRechteck::onMouseLeftReleased(int x, int y){ + IntelliTool::onMouseLeftReleased(x,y); +} + +void IntelliToolRechteck::onMouseMoved(int x, int y){ + IntelliTool::onMouseMoved(x,y); + if(this->drawing){ + this->Canvas->image->drawPlain(Qt::transparent); + QPoint next(x,y); + drawRechteck(next); + } + IntelliTool::onMouseMoved(x,y); +} diff --git a/src/Tool/IntelliToolRechteck.h b/src/Tool/IntelliToolRechteck.h new file mode 100644 index 0000000..76886bc --- /dev/null +++ b/src/Tool/IntelliToolRechteck.h @@ -0,0 +1,27 @@ +#ifndef INTELLIRECHTECKTOOL_H +#define INTELLIRECHTECKTOOL_H + +#include "IntelliTool.h" + +#include "QColor" +#include "QPoint" + +class IntelliToolRechteck : public IntelliTool{ + void drawRechteck(QPoint otherCornor); + + QPoint originCornor; + int alphaInner; + int edgeWidth; +public: + IntelliToolRechteck(PaintingArea* Area, IntelliColorPicker* colorPicker); + virtual ~IntelliToolRechteck() override; + + virtual void onMouseRightPressed(int x, int y) override; + virtual void onMouseRightReleased(int x, int y) override; + virtual void onMouseLeftPressed(int x, int y) override; + virtual void onMouseLeftReleased(int x, int y) override; + + virtual void onMouseMoved(int x, int y) override; +}; + +#endif // INTELLIRECHTECKTOOL_H