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
611void 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
1222void 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
1739void MovableWidget::mouseReleaseEvent (QMouseEvent *event) {
1840 (void )event;
19- dragging = false ;
2041}
2142
2243static 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 ();
0 commit comments