Skip to content

Commit 6588d74

Browse files
committed
resize cropped image added and some improvements
1 parent 703c372 commit 6588d74

File tree

4 files changed

+37
-14
lines changed

4 files changed

+37
-14
lines changed

src/DrawingWidget.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -283,16 +283,15 @@ DrawingWidget::DrawingWidget(QWidget *parent): QWidget(parent) {
283283
penMode = DRAW;
284284
reset = true;
285285
setMouseTracking(true);
286-
crop = new QLabel("");
287286
cropWidget = new MovableWidget(mainWindow);
288287
cropWidget->stackUnder(this);
289288
QBoxLayout* cropLayout = new QVBoxLayout(cropWidget);
290-
cropLayout->addWidget(crop);
289+
cropLayout->addWidget(cropWidget->crop);
291290
cropLayout->setContentsMargins(0,0,0,0);
292291
cropLayout->setSpacing(0);
293292
cropWidget->setStyleSheet("border: 2px solid "+penColor.name()+";");
294293
cropWidget->hide();
295-
294+
296295
//QScreen *screen = QGuiApplication::primaryScreen();
297296
fpressure = get_int((char*)"pressure") / 100.0;
298297
}

src/DrawingWidget.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ class DrawingWidget : public QWidget {
8181
void drawLineToFunc(const QPointF startPoint, const QPointF endPoint, qreal pressure);
8282
void selectionDraw(QPointF startPoint, QPointF endPoint);
8383
bool event(QEvent * ev);
84-
QLabel* crop;
8584
QPainter painter;
8685
};
8786

src/Selection.cpp

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,43 @@
11
#include "DrawingWidget.h"
22
#include "Selection.h"
33

4-
MovableWidget::MovableWidget(QWidget *parent) : QWidget(parent) {}
4+
MovableWidget::MovableWidget(QWidget *parent) : QWidget(parent) {
5+
crop = new QLabel("");
6+
}
7+
8+
extern float scale;
9+
#define nearEdge 10*scale
510

611
void MovableWidget::mousePressEvent(QMouseEvent *event) {
7-
(void)event;
8-
lastMousePosition = event->pos();
9-
dragging = true;
12+
lastMousePosition = event->pos();
13+
int xx = width() - event->pos().x();
14+
int yy = height() - event->pos().y();
15+
if(width() - xx < 50 || xx < 50 || height() - yy < 50 || yy < 50) {
16+
mode = RESIZE;
17+
} else{
18+
mode = DRAG;
19+
}
1020
}
1121

1222
void MovableWidget::mouseMoveEvent(QMouseEvent *event) {
13-
QPoint newPos = mapToParent(event->pos() - lastMousePosition);
14-
move(newPos); // Move the widget to the new position
23+
QPoint newPos;
24+
if(mode == RESIZE) {
25+
QPoint center = QPoint(pos().x() + (width()/2), pos().y() + (height()/2));
26+
setFixedSize(
27+
abs((mapToParent(event->pos()).x() - center.x())*2),
28+
abs((mapToParent(event->pos()).y() - center.y())*2)
29+
);
30+
QPixmap pixmap = QPixmap::fromImage(image.scaled(width(), height()));
31+
crop->setPixmap(pixmap);
32+
newPos = QPoint(center.x() - (width()/2), center.y() - (height()/2));
33+
} else if (mode == DRAG) {
34+
newPos = mapToParent(event->pos() - lastMousePosition);
35+
}
36+
move(newPos);
1537
}
1638

1739
void MovableWidget::mouseReleaseEvent(QMouseEvent *event) {
1840
(void)event;
19-
dragging = false;
2041
}
2142

2243
static bool hasSelection = false;
@@ -40,7 +61,7 @@ void DrawingWidget::createSelection() {
4061
printf("%d %d\n", cropRect.width(), cropRect.height());
4162
cropWidget->setFixedSize(cropRect.width(), cropRect.height());
4263
QPixmap pixmap = QPixmap::fromImage(cropWidget->image);
43-
crop->setPixmap(pixmap);
64+
cropWidget->crop->setPixmap(pixmap);
4465
cropWidget->move(topLeft);
4566
cropWidget->raise();
4667
cropWidget->show();
@@ -54,7 +75,7 @@ void DrawingWidget::mergeSelection() {
5475
hasSelection = false;
5576
painter.begin(&image);
5677
painter.setPen(Qt::NoPen);
57-
painter.drawImage(QPoint(cropWidget->x(), cropWidget->y()), cropWidget->image);
78+
painter.drawImage(QPoint(cropWidget->x(), cropWidget->y()), cropWidget->image.scaled(cropWidget->width(), cropWidget->height()));
5879
cropWidget->setFixedSize(0,0);
5980
cropWidget->move(QPoint(-1,-1));
6081
update();

src/Selection.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,14 @@
44
#include <QWidget>
55
#include <QMouseEvent>
66

7+
#define DRAG 0
8+
#define RESIZE 1
9+
710
class MovableWidget : public QWidget {
811

912
public:
1013
QImage image;
14+
QLabel* crop;
1115
explicit MovableWidget(QWidget *parent = nullptr);
1216

1317
protected:
@@ -17,7 +21,7 @@ class MovableWidget : public QWidget {
1721

1822
private:
1923
QPoint lastMousePosition;
20-
bool dragging = false;
24+
int mode = 0;
2125
};
2226

2327
#endif

0 commit comments

Comments
 (0)