Add cursor slowdown

WOW https://i.arsenarsen.com/khk0kdd2bh.png
This commit is contained in:
ArsenArsen 2017-07-08 21:40:09 +02:00
parent 97db7ddc0c
commit 15ca46f3d0
21 changed files with 100 additions and 69 deletions

View File

@ -21,7 +21,7 @@
#include <settings.hpp> #include <settings.hpp>
CropScene::CropScene(QObject *parent, QPixmap pixmap) CropScene::CropScene(QObject *parent, QPixmap pixmap)
: QGraphicsScene(parent), drawingSelectionMaker([] { return nullptr; }), prevButtons(Qt::NoButton), : QGraphicsScene(parent), cursorPos(0, 0), drawingSelectionMaker([] { return nullptr; }), prevButtons(Qt::NoButton),
_brush(Qt::SolidPattern), _font(settings::settings().value("font", QFont()).value<QFont>()) { _brush(Qt::SolidPattern), _font(settings::settings().value("font", QFont()).value<QFont>()) {
_pixmap = pixmap; _pixmap = pixmap;
pen().setColor(settings::settings().value("penColor", pen().color()).value<QColor>()); pen().setColor(settings::settings().value("penColor", pen().color()).value<QColor>());
@ -64,13 +64,23 @@ CropScene::CropScene(QObject *parent, QPixmap pixmap)
show(); show();
}); });
menu.addAction(settings); menu.addAction(settings);
QPolygonF cursorPoly;
cursorPoly << QPoint(-10, 0) //
<< QPoint(10, 0) //
<< QPoint(0, 0) //
<< QPoint(0, 10) //
<< QPoint(0, -10) //
<< QPoint(0, 0);
magnifier = addPixmap(pixmap.copy(0, 0, 11, 11).scaled(110, 110)); cursorItem = addPolygon(cursorPoly, QPen(Qt::white));
cursorItem->setZValue(3);
magnifier = addPixmap(QPixmap(110, 110));
magnifierBox = addRect(magnifier->boundingRect(), QPen(Qt::cyan)); magnifierBox = addRect(magnifier->boundingRect(), QPen(Qt::cyan));
magnifier->setZValue(1); magnifier->setZValue(3);
magnifierBox->setZValue(1.1); magnifierBox->setZValue(1.1);
magnifierBox->setParentItem(magnifier); magnifierBox->setParentItem(magnifier);
magnifierHint = addText("ptr: (0, 0)\nsel: (0, 0, 0, 0)"); magnifierHint = addText("ptr: (0, 0)\nsel: (-1, -1, 0, 0)");
magnifierHint->setParentItem(magnifier); magnifierHint->setParentItem(magnifier);
magnifierHint->setY(magnifier->boundingRect().height()); magnifierHint->setY(magnifier->boundingRect().height());
QColor c(Qt::cyan); QColor c(Qt::cyan);
@ -80,20 +90,25 @@ CropScene::CropScene(QObject *parent, QPixmap pixmap)
magnifierHintBox->setZValue(1); magnifierHintBox->setZValue(1);
magnifierHint->setZValue(1.1); magnifierHint->setZValue(1.1);
initMagnifierGrid(); initMagnifierGrid();
updateMag(QPointF(0, 0)); updateMag();
connect(menu.addAction("Set Font"), &QAction::triggered, this, &CropScene::fontAsk); connect(menu.addAction("Set Font"), &QAction::triggered, this, &CropScene::fontAsk);
QPolygonF poly;
QRect prect = pixmap.rect();
poly.append(prect.topLeft());
poly.append(prect.topRight());
poly.append(prect.bottomRight());
poly.append(prect.bottomLeft());
polyItem = new QGraphicsPolygonItem(poly);
polyItem->setBrush(QBrush(QColor(0, 0, 0, 191)));
polyItem->setPen(QPen(Qt::NoPen));
addItem(polyItem);
QTimer::singleShot(0, [&] { QTimer::singleShot(0, [&] {
QPolygonF poly; auto pf = views()[0]->mapFromGlobal(QCursor::pos());
poly.append(sceneRect().topLeft()); cursorPos = QPoint(pf.x(), pf.y());
poly.append(sceneRect().topRight()); cursorItem->setPos(cursorPos);
poly.append(sceneRect().bottomRight()); updateMag();
poly.append(sceneRect().bottomLeft());
polyItem = new QGraphicsPolygonItem(poly);
polyItem->setBrush(QBrush(QColor(0, 0, 0, 191)));
polyItem->setPen(QPen(Qt::NoPen));
addItem(polyItem);
}); });
} }
@ -147,14 +162,20 @@ void CropScene::fontAsk() {
} }
void CropScene::mouseMoveEvent(QGraphicsSceneMouseEvent *e) { void CropScene::mouseMoveEvent(QGraphicsSceneMouseEvent *e) {
updateMag(e->scenePos()); QPointF delta = e->scenePos() - cursorPos;
if (e->modifiers() & Qt::ShiftModifier) {
cursorPos += delta / 2;
QCursor::setPos(views()[0]->mapToGlobal(cursorPos.toPoint()));
} else
cursorPos = e->scenePos();
cursorItem->setPos(cursorPos);
updateMag();
auto buttons = e->buttons(); auto buttons = e->buttons();
if (e->modifiers() & Qt::ControlModifier && buttons == Qt::LeftButton) { if (e->modifiers() & Qt::ControlModifier && buttons == Qt::LeftButton) {
QTransform stupidThing = views()[0]->transform(); QTransform stupidThing = views()[0]->transform();
auto item = itemAt(e->scenePos(), stupidThing); auto item = itemAt(cursorPos, stupidThing);
if (item && item != polyItem && item != rect && item->zValue() != -1) { if (item && item != polyItem && item != rect && item->zValue() != -1) {
QPointF delta = e->scenePos() - e->lastScenePos();
item->moveBy(delta.x(), delta.y()); item->moveBy(delta.x(), delta.y());
} }
return; return;
@ -163,14 +184,14 @@ void CropScene::mouseMoveEvent(QGraphicsSceneMouseEvent *e) {
if (drawingSelection) { if (drawingSelection) {
drawingSelection->mouseDragEvent(e, this); drawingSelection->mouseDragEvent(e, this);
} else { } else {
QPointF p = e->scenePos(); QPointF p = cursorPos;
if (rect == nullptr) { if (rect == nullptr) {
rect = new QGraphicsRectItem(p.x(), p.y(), 1, 1); rect = new QGraphicsRectItem(p.x(), p.y(), 1, 1);
initPos = p; initPos = p;
QPen pen(Qt::NoBrush, 1); QPen pen(Qt::NoBrush, 1);
pen.setColor(Qt::cyan); pen.setColor(Qt::cyan);
rect->setPen(pen); rect->setPen(pen);
rect->setZValue(-0.1); rect->setZValue(1);
addItem(rect); addItem(rect);
} else { } else {
if (prevButtons == Qt::NoButton) { if (prevButtons == Qt::NoButton) {
@ -218,7 +239,7 @@ void CropScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) {
void CropScene::mousePressEvent(QGraphicsSceneMouseEvent *e) { void CropScene::mousePressEvent(QGraphicsSceneMouseEvent *e) {
if (e->modifiers() & Qt::AltModifier) { if (e->modifiers() & Qt::AltModifier) {
QTransform stupidThing = views()[0]->transform(); QTransform stupidThing = views()[0]->transform();
auto item = itemAt(e->scenePos(), stupidThing); auto item = itemAt(cursorPos, stupidThing);
if (item && item != polyItem && item != rect && item->zValue() != -1) { if (item && item != polyItem && item != rect && item->zValue() != -1) {
removeItem(item); removeItem(item);
} }
@ -240,7 +261,7 @@ void CropScene::wheelEvent(QGraphicsSceneWheelEvent *event) {
gridRectsY.clear(); gridRectsY.clear();
initMagnifierGrid(); initMagnifierGrid();
updateMag(event->scenePos()); updateMag();
} }
void CropScene::addDrawingAction(QMenu &menu, QString name, std::function<DrawItem *()> item) { void CropScene::addDrawingAction(QMenu &menu, QString name, std::function<DrawItem *()> item) {
@ -250,30 +271,32 @@ void CropScene::addDrawingAction(QMenu &menu, QString name, std::function<DrawIt
menu.addAction(action); menu.addAction(action);
} }
QPoint contextOffset(5, 5);
void CropScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *e) { void CropScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *e) {
display->setText(drawingName); display->setText(drawingName);
menu.exec(e->screenPos()); menu.exec((cursorPos + contextOffset).toPoint());
e->accept(); e->accept();
} }
void CropScene::keyReleaseEvent(QKeyEvent *event) { void CropScene::keyReleaseEvent(QKeyEvent *event) {
if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter || event->key() == Qt::Key_Escape) if (((event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) && !drawingSelection) || event->key() == Qt::Key_Escape)
done(event->key() != Qt::Key_Escape); done(event->key() != Qt::Key_Escape);
} }
void CropScene::updateMag(QPointF scenePos) { void CropScene::updateMag() {
QString rectStr("(0, 0, 0, 0)"); QString rectStr("(-1, -1, 0, 0)");
if (rect) { if (rect) {
rectStr = "(%0, %1, %2, %3)"; rectStr = "(%0, %1, %2, %3)";
rectStr = rectStr.arg(rect->rect().x()).arg(rect->rect().y()).arg(rect->rect().width()).arg(rect->rect().height()); rectStr = rectStr.arg(rect->rect().x()).arg(rect->rect().y()).arg(rect->rect().width()).arg(rect->rect().height());
} }
magnifierHint->setPlainText(QString("ptr: (%0, %1)\nsel: %2").arg(scenePos.x()).arg(scenePos.y()).arg(rectStr)); magnifierHint->setPlainText(QString("ptr: (%0, %1)\nsel: %2").arg(qRound(cursorPos.x())).arg(qRound(cursorPos.y())).arg(rectStr));
magnifierHintBox->setRect(magnifierHint->boundingRect()); magnifierHintBox->setRect(magnifierHint->boundingRect());
int pixCnt = settings::settings().value("magnifierPixelCount", 11).toInt(); int pixCnt = settings::settings().value("magnifierPixelCount", 11).toInt();
if (pixCnt % 2 == 0) pixCnt++; if (pixCnt % 2 == 0) pixCnt++;
QPointF magnifierTopLeft = scenePos - QPointF(pixCnt / 2., pixCnt / 2.); QPointF magnifierTopLeft = cursorPos - QPointF(pixCnt / 2., pixCnt / 2.);
QPointF magnifierPos = scenePos + QPointF(5, 5); QPointF magnifierPos = cursorPos + QPointF(5, 5);
magnifier->setPos(magnifierPos); magnifier->setPos(magnifierPos);
magnifier->setPixmap(_pixmap.copy(magnifierTopLeft.x(), magnifierTopLeft.y(), pixCnt, pixCnt).scaled(110, 110)); magnifier->setPixmap(_pixmap.copy(magnifierTopLeft.x(), magnifierTopLeft.y(), pixCnt, pixCnt).scaled(110, 110));
@ -316,6 +339,7 @@ void CropScene::done(bool notEsc) {
if (notEsc && rect) { if (notEsc && rect) {
rect->setPen(QPen(Qt::NoPen)); rect->setPen(QPen(Qt::NoPen));
magnifier->setVisible(false); magnifier->setVisible(false);
cursorItem->setVisible(false);
magnifierBox->setVisible(false); magnifierBox->setVisible(false);
magnifierHint->setVisible(false); magnifierHint->setVisible(false);
magnifierHintBox->setVisible(false); magnifierHintBox->setVisible(false);

View File

@ -34,6 +34,9 @@ public:
void hide(); void hide();
void show(); void show();
void setVisible(bool visible); void setVisible(bool visible);
QPointF cursorPosition() {
return cursorPos;
}
public slots: public slots:
void fontAsk(); void fontAsk();
@ -47,15 +50,15 @@ protected:
void mousePressEvent(QGraphicsSceneMouseEvent *e) override; void mousePressEvent(QGraphicsSceneMouseEvent *e) override;
void wheelEvent(QGraphicsSceneWheelEvent *event) override; // WHEEEEEEL void wheelEvent(QGraphicsSceneWheelEvent *event) override; // WHEEEEEEL
void contextMenuEvent(QGraphicsSceneContextMenuEvent *e) override; void contextMenuEvent(QGraphicsSceneContextMenuEvent *e) override;
void keyReleaseEvent(QKeyEvent *e) override; void keyReleaseEvent(QKeyEvent *e) override;
private: private:
void updateMag(QPointF scenePos); void updateMag();
void initMagnifierGrid(); void initMagnifierGrid();
void addDrawingAction(QMenu &menu, QString name, std::function<DrawItem *()> item); void addDrawingAction(QMenu &menu, QString name, std::function<DrawItem *()> item);
void done(bool notEsc); void done(bool notEsc);
bool fullscreen; bool fullscreen;
QPointF cursorPos;
std::function<DrawItem *()> drawingSelectionMaker; std::function<DrawItem *()> drawingSelectionMaker;
QFlags<Qt::MouseButton> prevButtons; QFlags<Qt::MouseButton> prevButtons;
QPixmap _pixmap; QPixmap _pixmap;
@ -75,6 +78,7 @@ private:
QAction *display; QAction *display;
QList<QGraphicsRectItem *> gridRectsX; QList<QGraphicsRectItem *> gridRectsX;
QList<QGraphicsRectItem *> gridRectsY; QList<QGraphicsRectItem *> gridRectsY;
QGraphicsPolygonItem *cursorItem = nullptr;
}; };
#endif // CROPSCENE_HPP #endif // CROPSCENE_HPP

View File

@ -9,4 +9,5 @@ CropView::CropView(QGraphicsScene *scene) : QGraphicsView(scene) {
setCursor(QCursor(Qt::CrossCursor)); setCursor(QCursor(Qt::CrossCursor));
setMouseTracking(true); setMouseTracking(true);
setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
setCursor(Qt::BlankCursor);
} }

View File

@ -2,9 +2,9 @@
#include <QtMath> #include <QtMath>
#include <settings.hpp> #include <settings.hpp>
void ArrowItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { void ArrowItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) {
if (init.isNull()) { if (init.isNull()) {
init = e->scenePos(); init = scene->cursorPosition();
line = scene->addLine(QLineF(init, init), scene->pen()); line = scene->addLine(QLineF(init, init), scene->pen());
QPainterPath poly; QPainterPath poly;
qreal w = settings::settings().value("arrow/width", 20).toDouble() / 2; qreal w = settings::settings().value("arrow/width", 20).toDouble() / 2;
@ -14,8 +14,9 @@ void ArrowItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) {
poly.lineTo(QPoint(w, h)); poly.lineTo(QPoint(w, h));
head = scene->addPath(poly, scene->pen(), scene->brush()); head = scene->addPath(poly, scene->pen(), scene->brush());
} else { } else {
line->setLine(QLineF(init, e->scenePos())); line->setLine(QLineF(init, scene->cursorPosition()));
head->setRotation(270 + qRadiansToDegrees(qAtan2((init.y() - e->scenePos().y()), (init.x() - e->scenePos().x())))); head->setRotation(
270 + qRadiansToDegrees(qAtan2((init.y() - scene->cursorPosition().y()), (init.x() - scene->cursorPosition().x()))));
} }
head->setPos(e->scenePos()); head->setPos(scene->cursorPosition());
} }

View File

@ -11,7 +11,7 @@ public:
QString name() override { QString name() override {
return "Arrow"; return "Arrow";
} }
void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) override; void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override;
void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override { void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override {
} }

View File

@ -13,16 +13,16 @@ bool BlurItem::init(CropScene *) {
return true; return true;
} }
void BlurItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { void BlurItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) {
if (pos.isNull()) { if (pos.isNull()) {
pos = e->scenePos(); pos = scene->cursorPosition();
rect = scene->addRect(QRect(e->scenePos().toPoint(), QSize(1, 1)), QPen(Qt::cyan), Qt::NoBrush); rect = scene->addRect(QRect(scene->cursorPosition().toPoint(), QSize(1, 1)), QPen(Qt::cyan), Qt::NoBrush);
pixmap = scene->addPixmap(scene->pixmap().copy(rect->rect().toRect())); pixmap = scene->addPixmap(scene->pixmap().copy(rect->rect().toRect()));
pixmap->setPos(e->scenePos()); pixmap->setPos(scene->cursorPosition());
pixmap->setZValue(rect->zValue() - 0.1); pixmap->setZValue(rect->zValue() - 0.1);
pixmap->setGraphicsEffect(effect); pixmap->setGraphicsEffect(effect);
} else { } else {
QPointF p = e->scenePos(); QPointF p = scene->cursorPosition();
rect->setRect(QRect(qMin(pos.x(), p.x()), qMin(pos.y(), p.y()), qAbs(pos.x() - p.x()), qAbs(pos.y() - p.y()))); rect->setRect(QRect(qMin(pos.x(), p.x()), qMin(pos.y(), p.y()), qAbs(pos.x() - p.x()), qAbs(pos.y() - p.y())));
pixmap->setPixmap(scene->pixmap().copy(rect->rect().toRect())); pixmap->setPixmap(scene->pixmap().copy(rect->rect().toRect()));
pixmap->setPos(rect->rect().topLeft()); pixmap->setPos(rect->rect().topLeft());

View File

@ -14,7 +14,7 @@ public:
} }
bool init(CropScene *) override; bool init(CropScene *) override;
void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) override; void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override;
void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override; void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override;
private: private:

View File

@ -7,7 +7,7 @@ DotItem::~DotItem() {
} }
void DotItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { void DotItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) {
scene->addEllipse(e->pos().x() - 1.5, e->pos().y() - 1.5, 3, 3, scene->pen(), scene->brush())->setPos(e->scenePos()); scene->addEllipse(e->pos().x() - 1.5, e->pos().y() - 1.5, 3, 3, scene->pen(), scene->brush())->setPos(scene->cursorPosition());
} }
void DotItem::mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) { void DotItem::mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) {

View File

@ -1,11 +1,11 @@
#include "ellipseitem.hpp" #include "ellipseitem.hpp"
void EllipseItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { void EllipseItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) {
if (!ellie) { if (!ellie) {
ellie = scene->addEllipse(e->scenePos().x(), e->scenePos().y(), 0, 0, scene->pen(), scene->brush()); ellie = scene->addEllipse(scene->cursorPosition().x(), scene->cursorPosition().y(), 0, 0, scene->pen(), scene->brush());
initPos = e->scenePos(); initPos = scene->cursorPosition();
} else { } else {
auto p = e->scenePos(); auto p = scene->cursorPosition();
ellie->setRect(QRectF(qMin(initPos.x(), p.x()), qMin(initPos.y(), p.y()), qAbs(initPos.x() - p.x()), ellie->setRect(QRectF(qMin(initPos.x(), p.x()), qMin(initPos.y(), p.y()), qAbs(initPos.x() - p.x()),
qAbs(initPos.y() - p.y()))); qAbs(initPos.y() - p.y())));
} }

View File

@ -12,7 +12,7 @@ public:
} }
~EllipseItem() { ~EllipseItem() {
} }
void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) override; void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override;
void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override { void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override {
} }

View File

@ -6,9 +6,9 @@ EraserItem::EraserItem() {
EraserItem::~EraserItem() { EraserItem::~EraserItem() {
} }
void EraserItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { void EraserItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) {
for (auto i : scene->items()) { for (auto i : scene->items()) {
if (i->contains(e->scenePos()) && i->zValue() != -1 && i != scene->polyItm() && i != scene->selRect()) { if (i->contains(scene->cursorPosition()) && i->zValue() != -1 && i != scene->polyItm() && i != scene->selRect()) {
scene->removeItem(i); scene->removeItem(i);
break; break;
} }

View File

@ -10,7 +10,7 @@ public:
QString name() override { QString name() override {
return "Eraser"; return "Eraser";
} }
void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) override; void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override;
void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override { void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override {
} }
}; };

View File

@ -3,12 +3,12 @@
LineItem::LineItem() { LineItem::LineItem() {
} }
void LineItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { void LineItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) {
if (init.isNull()) { if (init.isNull()) {
init = e->scenePos(); init = scene->cursorPosition();
line = scene->addLine(QLineF(init, init), scene->pen()); line = scene->addLine(QLineF(init, init), scene->pen());
} else { } else {
line->setLine(QLineF(init, e->scenePos())); line->setLine(QLineF(init, scene->cursorPosition()));
} }
} }

View File

@ -9,7 +9,7 @@ public:
QString name() override { QString name() override {
return "Straight line"; return "Straight line";
} }
void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) override; void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override;
void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override; void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override;
private: private:

View File

@ -9,13 +9,13 @@ PathItem::~PathItem() {
delete path; delete path;
} }
void PathItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { void PathItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) {
if (path == nullptr) { if (path == nullptr) {
path = new QPainterPath(e->scenePos()); path = new QPainterPath(scene->cursorPosition());
pathItem = scene->addPath(*path, scene->pen(), pathItem = scene->addPath(*path, scene->pen(),
settings::settings().value("brushPath", false).toBool() ? scene->brush() : QBrush()); settings::settings().value("brushPath", false).toBool() ? scene->brush() : QBrush());
} else { } else {
path->quadTo(path->currentPosition(), e->scenePos()); path->quadTo(path->currentPosition(), scene->cursorPosition());
pathItem->setPath(*path); pathItem->setPath(*path);
} }
} }

View File

@ -11,7 +11,7 @@ public:
QString name() { QString name() {
return "Path"; return "Path";
} }
void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene); void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene);
void mouseDragEndEvent(QGraphicsSceneMouseEvent *e, CropScene *scene); void mouseDragEndEvent(QGraphicsSceneMouseEvent *e, CropScene *scene);
private: private:

View File

@ -6,14 +6,14 @@ RectItem::RectItem() {
RectItem::~RectItem() { RectItem::~RectItem() {
} }
void RectItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { void RectItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) {
if (!rect) { if (!rect) {
rect = scene->addRect(e->scenePos().x(), e->scenePos().y(), 0, 0); rect = scene->addRect(scene->cursorPosition().x(), scene->cursorPosition().y(), 0, 0);
rect->setBrush(scene->brush()); rect->setBrush(scene->brush());
rect->setPen(scene->pen()); rect->setPen(scene->pen());
initPos = e->scenePos(); initPos = scene->cursorPosition();
} else { } else {
auto p = e->scenePos(); auto p = scene->cursorPosition();
rect->setRect( rect->setRect(
QRect(qMin(initPos.x(), p.x()), qMin(initPos.y(), p.y()), qAbs(initPos.x() - p.x()), qAbs(initPos.y() - p.y()))); QRect(qMin(initPos.x(), p.x()), qMin(initPos.y(), p.y()), qAbs(initPos.x() - p.x()), qAbs(initPos.y() - p.y())));
} }

View File

@ -10,7 +10,7 @@ public:
QString name() override { QString name() override {
return "Rectangle"; return "Rectangle";
} }
void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) override; void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override;
void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override; void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override;
private: private:

View File

@ -10,15 +10,15 @@ bool TextItem::init(CropScene *s) {
return ok; return ok;
} }
void TextItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) { void TextItem::mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) {
if (!textItem) { if (!textItem) {
textItem = scene->addSimpleText(text, scene->font()); textItem = scene->addSimpleText(text, scene->font());
textItem->setPos(e->scenePos()); textItem->setPos(scene->cursorPosition());
textItem->setPen(scene->pen().color()); textItem->setPen(scene->pen().color());
textItem->setBrush(scene->pen().color()); textItem->setBrush(scene->pen().color());
} else { } else {
auto ee auto ee = 180 + qRadiansToDegrees(qAtan2((textItem->pos().y() - scene->cursorPosition().y()),
= 180 + qRadiansToDegrees(qAtan2((textItem->pos().y() - e->scenePos().y()), (textItem->pos().x() - e->scenePos().x()))); (textItem->pos().x() - scene->cursorPosition().x())));
textItem->setRotation(ee); textItem->setRotation(ee);
} }
} }

View File

@ -8,7 +8,7 @@ class TextItem : public DrawItem {
public: public:
QString name() override; QString name() override;
bool init(CropScene *s) override; bool init(CropScene *s) override;
void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) override; void mouseDragEvent(QGraphicsSceneMouseEvent *, CropScene *scene) override;
void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override; void mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) override;
private: private:

View File

@ -32,6 +32,7 @@ bool stillAlive = true;
} }
void handler(QtMsgType type, const QMessageLogContext &, const QString &msg) { void handler(QtMsgType type, const QMessageLogContext &, const QString &msg) {
if (!verbose && msg.startsWith("QPixmap::fromWinHBITMAP")) return;
std::string stdMsg = msg.toStdString(); std::string stdMsg = msg.toStdString();
switch (type) { switch (type) {
case QtDebugMsg: case QtDebugMsg: