Skip to content

Commit e9817d8

Browse files
authored
Implement reverse arrow (#2144) (#3477)
1 parent a570fde commit e9817d8

File tree

5 files changed

+31
-3
lines changed

5 files changed

+31
-3
lines changed

src/config/generalconf.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ GeneralConf::GeneralConf(QWidget* parent)
6767
initShowMagnifier();
6868
initSquareMagnifier();
6969
initJpegQuality();
70+
initReverseArrow();
7071
// this has to be at the end
7172
initConfigButtons();
7273
updateComponents();
@@ -96,6 +97,7 @@ void GeneralConf::_updateComponents(bool allowEmptySavePath)
9697
m_showMagnifier->setChecked(config.showMagnifier());
9798
m_squareMagnifier->setChecked(config.squareMagnifier());
9899
m_saveLastRegion->setChecked(config.saveLastRegion());
100+
m_reverseArrow->setChecked(config.reverseArrow());
99101

100102
#if !defined(Q_OS_WIN)
101103
m_autoCloseIdleDaemon->setChecked(config.autoCloseIdleDaemon());
@@ -829,6 +831,16 @@ void GeneralConf::initJpegQuality()
829831
&GeneralConf::setJpegQuality);
830832
}
831833

834+
void GeneralConf::initReverseArrow()
835+
{
836+
m_reverseArrow = new QCheckBox(tr("Reverse arrow"), this);
837+
m_reverseArrow->setToolTip(tr("Draw the arrow head first"));
838+
m_scrollAreaLayout->addWidget(m_reverseArrow);
839+
840+
connect(
841+
m_reverseArrow, &QCheckBox::clicked, this, &GeneralConf::setReverseArrow);
842+
}
843+
832844
void GeneralConf::setSelGeoHideTime(int v)
833845
{
834846
ConfigHandler().setValue("showSelectionGeometryHideTime", v);
@@ -859,3 +871,8 @@ void GeneralConf::useJpgForClipboardChanged(bool checked)
859871
{
860872
ConfigHandler().setUseJpgForClipboard(checked);
861873
}
874+
875+
void GeneralConf::setReverseArrow(bool checked)
876+
{
877+
ConfigHandler().setReverseArrow(checked);
878+
}

src/config/generalconf.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ private slots:
5959
void setGeometryLocation(int index);
6060
void setSelGeoHideTime(int v);
6161
void setJpegQuality(int v);
62+
void setReverseArrow(bool checked);
6263

6364
private:
6465
const QString chooseFolder(const QString& currentPath = "");
@@ -95,6 +96,7 @@ private slots:
9596
void initSaveLastRegion();
9697
void initShowSelectionGeometry();
9798
void initJpegQuality();
99+
void initReverseArrow();
98100

99101
void _updateComponents(bool allowEmptySavePath);
100102

@@ -141,4 +143,5 @@ private slots:
141143
QComboBox* m_selectGeometryLocation;
142144
QSpinBox* m_xywhTimeout;
143145
QSpinBox* m_jpegQuality;
146+
QCheckBox* m_reverseArrow;
144147
};

src/tools/arrow/arrowtool.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// SPDX-FileCopyrightText: 2017-2019 Alejandro Sirgo Rica & Contributors
33

44
#include "arrowtool.h"
5+
#include "confighandler.h"
56
#include <cmath>
67

78
namespace {
@@ -148,10 +149,15 @@ void ArrowTool::copyParams(const ArrowTool* from, ArrowTool* to)
148149

149150
void ArrowTool::process(QPainter& painter, const QPixmap& pixmap)
150151
{
152+
bool isArrowReversed = ConfigHandler().reverseArrow();
153+
154+
const QPoint& head = isArrowReversed ? points().second : points().first;
155+
const QPoint& tail = isArrowReversed ? points().first : points().second;
156+
151157
Q_UNUSED(pixmap)
152158
painter.setPen(QPen(color(), size()));
153-
painter.drawLine(getShorterLine(points().first, points().second, size()));
154-
m_arrowPath = getArrowHead(points().first, points().second, size());
159+
painter.drawLine(getShorterLine(head, tail, size()));
160+
m_arrowPath = getArrowHead(head, tail, size());
155161
painter.fillPath(m_arrowPath, QBrush(color()));
156162
}
157163

src/utils/confighandler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ static QMap<class QString, QSharedPointer<ValueHandler>>
129129
OPTION("uploadClientSecret" ,String ( "313baf0c7b4d3ff" )),
130130
OPTION("showSelectionGeometry" , BoundedInt (0,5,4)),
131131
OPTION("showSelectionGeometryHideTime", LowerBoundedInt (0, 3000)),
132-
OPTION("jpegQuality", BoundedInt (0,100,75))
132+
OPTION("jpegQuality", BoundedInt (0,100,75)),
133+
OPTION("reverseArrow" ,Bool ( false )),
133134
};
134135

135136
static QMap<QString, QSharedPointer<KeySequence>> recognizedShortcuts = {

src/utils/confighandler.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ class ConfigHandler : public QObject
131131
CONFIG_GETTER_SETTER(saveLastRegion, setSaveLastRegion, bool)
132132
CONFIG_GETTER_SETTER(showSelectionGeometry, setShowSelectionGeometry, int)
133133
CONFIG_GETTER_SETTER(jpegQuality, setJpegQuality, int)
134+
CONFIG_GETTER_SETTER(reverseArrow, setReverseArrow, bool)
134135
CONFIG_GETTER_SETTER(showSelectionGeometryHideTime,
135136
showSelectionGeometryHideTime,
136137
int)

0 commit comments

Comments
 (0)