Scroll implemented

This commit is contained in:
Sonaion
2019-12-16 19:23:56 +01:00
parent 1c29d564c7
commit 67a72fe487
14 changed files with 75 additions and 13 deletions

View File

@@ -19,7 +19,7 @@
PaintingArea::PaintingArea(int maxWidth, int maxHeight, QWidget *parent)
:QWidget(parent){
//test yout tool here and reset after accomplished test
this->Tool = nullptr;
this->Tool = new IntelliToolRechteck(this, &colorPicker);
this->setUp(maxWidth, maxHeight);
//tetsing
this->addLayer(200,200,0,0,ImageType::Shaped_Image);
@@ -234,6 +234,14 @@ void PaintingArea::mouseReleaseEvent(QMouseEvent *event){
update();
}
void PaintingArea::wheelEvent(QWheelEvent *event){
QPoint numDegrees = event->angleDelta() / 8;
if(!numDegrees.isNull()){
QPoint numSteps = numDegrees / 15;
Tool->onWheelScrolled(numSteps.y()*-1);
}
}
// QPainter provides functions to draw on the widget
// The QPaintEvent is sent to widgets that need to
// update themselves

View File

@@ -70,6 +70,7 @@ protected:
void mouseMoveEvent(QMouseEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
void wheelEvent(QWheelEvent *event) override;
// Updates the painting area where we are painting
void paintEvent(QPaintEvent *event) override;

View File

@@ -43,6 +43,10 @@ void IntelliTool::onMouseMoved(int x, int y){
Canvas->image->calculateVisiblity();
}
void IntelliTool::onWheelScrolled(int value){
//if needed for future general tasks implement in here
}
void IntelliTool::createToolLayer(){
Area->createTempLayerAfter(Area->activeLayer);
this->Active=&Area->layerBundle[Area->activeLayer];

View File

@@ -29,6 +29,8 @@ public:
virtual void onMouseLeftPressed(int x, int y);
virtual void onMouseLeftReleased(int x, int y);
virtual void onWheelScrolled(int value);
virtual void onMouseMoved(int x, int y);
};
#endif

View File

@@ -27,8 +27,8 @@ void IntelliToolCircle::drawCyrcle(int radius){
this->Canvas->image->drawLine(QPoint(xMin,i), QPoint(xMax,i),inner,1);
}
//TODO implement circle drawing algorithm
radius = radius +(this->edgeWidth/2.)-0.5;
//TODO implement circle drawing algorithm bresenham
radius = radius +(this->edgeWidth/2.)-1.;
yMin = (Middle.y()-radius);
yMax = (Middle.y()+radius);
for(int i=yMin; i<=yMax; i++){
@@ -68,6 +68,14 @@ void IntelliToolCircle::onMouseLeftReleased(int x, int y){
IntelliTool::onMouseLeftReleased(x,y);
}
void IntelliToolCircle::onWheelScrolled(int value){
IntelliTool::onWheelScrolled(value);
this->edgeWidth+=value;
if(this->edgeWidth<=0){
this->edgeWidth=1;
}
}
void IntelliToolCircle::onMouseMoved(int x, int y){
IntelliTool::onMouseMoved(x,y);
if(this->drawing){

View File

@@ -15,12 +15,14 @@ public:
IntelliToolCircle(PaintingArea* Area, IntelliColorPicker* colorPicker);
virtual ~IntelliToolCircle() override;
virtual void onMouseRightPressed(int x, int y);
virtual void onMouseRightReleased(int x, int y);
virtual void onMouseLeftPressed(int x, int y);
virtual void onMouseLeftReleased(int x, int y);
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);
virtual void onWheelScrolled(int value) override;
virtual void onMouseMoved(int x, int y) override;
};
#endif // INTELLITOOLCIRCLE_H

View File

@@ -34,6 +34,14 @@ void IntelliToolLine::onMouseLeftReleased(int x, int y){
IntelliTool::onMouseLeftReleased(x,y);
}
void IntelliToolLine::onWheelScrolled(int value){
IntelliTool::onWheelScrolled(value);
this->lineWidth+=value;
if(this->lineWidth<=0){
this->lineWidth=1;
}
}
void IntelliToolLine::onMouseMoved(int x, int y){
IntelliTool::onMouseMoved(x,y);
if(this->drawing){

View File

@@ -24,6 +24,8 @@ public:
virtual void onMouseLeftPressed(int x, int y) override;
virtual void onMouseLeftReleased(int x, int y) override;
virtual void onWheelScrolled(int value) override;
virtual void onMouseMoved(int x, int y) override;
};

View File

@@ -40,3 +40,11 @@ void IntelliToolPen::onMouseMoved(int x, int y){
}
IntelliTool::onMouseMoved(x,y);
}
void IntelliToolPen::onWheelScrolled(int value){
IntelliTool::onWheelScrolled(value);
this->penWidth+=value;
if(this->penWidth<=0){
this->penWidth=1;
}
}

View File

@@ -17,6 +17,8 @@ public:
virtual void onMouseLeftPressed(int x, int y) override;
virtual void onMouseLeftReleased(int x, int y) override;
virtual void onWheelScrolled(int value) override;
virtual void onMouseMoved(int x, int y) override;
};

View File

@@ -28,3 +28,7 @@ void IntelliToolPlainTool::onMouseRightReleased(int x, int y){
void IntelliToolPlainTool::onMouseMoved(int x, int y){
IntelliTool::onMouseMoved(x,y);
}
void IntelliToolPlainTool::onWheelScrolled(int value){
IntelliTool::onWheelScrolled(value);
}

View File

@@ -8,11 +8,14 @@ class IntelliToolPlainTool : public IntelliTool{
public:
IntelliToolPlainTool(PaintingArea *Area, IntelliColorPicker* colorPicker);
void onMouseLeftPressed(int x, int y) override;
void onMouseLeftReleased(int x, int y) override;
void onMouseRightPressed(int x, int y) override;
void onMouseRightReleased(int x, int y) override;
void onMouseMoved(int x, int y) override;
virtual void onMouseLeftPressed(int x, int y) override;
virtual void onMouseLeftReleased(int x, int y) override;
virtual void onMouseRightPressed(int x, int y) override;
virtual void onMouseRightReleased(int x, int y) override;
virtual void onWheelScrolled(int value) override;
virtual void onMouseMoved(int x, int y) override;
};

View File

@@ -58,3 +58,11 @@ void IntelliToolRechteck::onMouseMoved(int x, int y){
}
IntelliTool::onMouseMoved(x,y);
}
void IntelliToolRechteck::onWheelScrolled(int value){
IntelliTool::onWheelScrolled(value);
this->edgeWidth+=value;
if(this->edgeWidth<=0){
this->edgeWidth=1;
}
}

View File

@@ -21,6 +21,8 @@ public:
virtual void onMouseLeftPressed(int x, int y) override;
virtual void onMouseLeftReleased(int x, int y) override;
virtual void onWheelScrolled(int value) override;
virtual void onMouseMoved(int x, int y) override;
};