Skip to content

Commit 36febe9

Browse files
authored
Merge pull request #24 from andywang0607/ux-improvement
Ux improvement
2 parents 4b06832 + 439fd81 commit 36febe9

File tree

3 files changed

+69
-5
lines changed

3 files changed

+69
-5
lines changed

AutoAnnotationTool/labelcollector.cpp

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ LabelCollector::LabelCollector(QQuickItem *parent) : QQuickPaintedItem(parent)
1313
, m_highlightPen(QPen(Qt::red, 5, Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin))
1414
, m_pointPen(QPen(QColor(220,118,51), 7, Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin))
1515
, m_polyPen(QPen(Qt::yellow , 3, Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin))
16+
, m_extensivePen(QPen(QColor("#556b2f"), 1, Qt::DashLine, Qt::SquareCap, Qt::MiterJoin)) // darkolivegreen
1617
, m_cvModule(std::make_unique<CvModule>())
1718
{
1819
setAcceptedMouseButtons(Qt::AllButtons);
@@ -42,13 +43,42 @@ void LabelCollector::paint(QPainter *painter)
4243
}
4344
if (m_selectLabelIdx.empty()) {
4445
if (m_mouseMoved) {
46+
// Draw a horizontal and vertical dash line to show cursor point
47+
painter->setPen(m_extensivePen);
48+
painter->drawLine(m_lastPoint.x(), 0, m_lastPoint.x(), m_scaledImg.height());
49+
painter->drawLine(0, m_lastPoint.y(), m_scaledImg.width(), m_lastPoint.y());
4550
painter->setPen(m_normalPen);
4651
painter->setRenderHint(QPainter::Antialiasing);
4752
painter->drawRect(QRectF(m_firstPoint,m_lastPoint));
4853
}
4954
}
5055
if (m_dataVec.empty())
5156
return;
57+
// Draw a horizontal and vertical dash line to show cursor point while adjust rectangle
58+
if(!m_polySelectResult.isSelect && m_rectCornerSelectResult.isSelect) {
59+
painter->setPen(m_extensivePen);
60+
painter->drawLine(m_lastPoint.x(), 0, m_lastPoint.x(), m_scaledImg.height());
61+
painter->drawLine(0, m_lastPoint.y(), m_scaledImg.width(), m_lastPoint.y());
62+
} else if (!m_polySelectResult.isSelect && !m_rectCornerSelectResult.isSelect && m_rectEdgeSelectResult.isSelect) {
63+
painter->setPen(m_extensivePen);
64+
switch (m_rectEdgeSelectResult.line) {
65+
case 0:
66+
painter->drawLine(m_lastPoint.x(), 0, m_lastPoint.x(), m_scaledImg.height());
67+
break;
68+
case 1:
69+
painter->drawLine(0, m_lastPoint.y(), m_scaledImg.width(), m_lastPoint.y());
70+
break;
71+
case 2:
72+
painter->drawLine(m_lastPoint.x(), 0, m_lastPoint.x(), m_scaledImg.height());
73+
break;
74+
case 3:
75+
painter->drawLine(0, m_lastPoint.y(), m_scaledImg.width(), m_lastPoint.y());
76+
break;
77+
default:
78+
break;
79+
}
80+
}
81+
5282
QVector<LabelData*>::iterator iter;
5383
for (iter=m_dataVec.begin();iter!=m_dataVec.end();iter++) {
5484
// Draw bounding box
@@ -183,14 +213,13 @@ void LabelCollector::mouseReleaseEvent(QMouseEvent *event)
183213
m_mousePressed = false;
184214
m_mouseMoved = false;
185215
GeometryModule::preventInvalidRect(m_dataVec, m_rectCornerSelectResult, m_rectEdgeSelectResult);
186-
if (m_polySelectResult.isSelect) {
187-
PolygonSelectResult defaultResult;
188-
m_polySelectResult = defaultResult;
216+
if (m_polySelectResult.isSelect || m_rectEdgeSelectResult.isSelect || m_rectCornerSelectResult.isSelect) {
217+
m_polySelectResult.isSelect = false;
218+
m_rectEdgeSelectResult.isSelect = false;
219+
m_rectCornerSelectResult.isSelect = false;
189220
update();
190221
return;
191222
}
192-
if (m_polySelectResult.isSelect || m_rectEdgeSelectResult.isSelect || m_rectCornerSelectResult.isSelect)
193-
return;
194223
if (!m_selectLabelIdx.empty())
195224
return;
196225
if (m_firstPoint != m_lastPoint){

AutoAnnotationTool/labelcollector.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ public slots:
111111
QPen m_highlightPen;
112112
QPen m_pointPen;
113113
QPen m_polyPen;
114+
QPen m_extensivePen;
114115
QVector<QPen> m_penVec;
115116

116117
QVector<LabelData*> m_dataVec;

AutoAnnotationTool/main.qml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ ApplicationWindow {
3030
visible: view.currentIndex!=0
3131
onClicked: {
3232
view.setCurrentIndex(0)
33+
focus = false
3334
}
3435
}
3536
ToolButton{
@@ -38,34 +39,39 @@ ApplicationWindow {
3839
"qrc:/icon/round_menu_black_18dp.png"
3940
onClicked: {
4041
(drawer.position==1) ? drawer.close() : drawer.open()
42+
focus = false
4143
}
4244
}
4345
ToolButton{
4446
visible: view.currentIndex==0
4547
icon.source: "qrc:/icon/round_folder_open_black_18dp.png"
4648
onClicked: {
4749
folderDialog.open()
50+
focus = false
4851
}
4952
}
5053
ToolButton{
5154
visible: view.currentIndex==0
5255
icon.source: "qrc:/icon/round_photo_black_18dp.png"
5356
onClicked: {
5457
fileDialog.open()
58+
focus = false
5559
}
5660
}
5761
ToolButton{
5862
visible: !(labelCollector.imgSrc == "") && view.currentIndex==0
5963
icon.source: "qrc:/icon/round_save_black_18dp.png"
6064
onClicked: {
6165
dataSaver.saveAnnotation(0)
66+
focus = false
6267
}
6368
}
6469
Item { Layout.fillWidth: true }
6570
ToolButton{
6671
icon.source: "qrc:/icon/round_list_black_18dp.png"
6772
onClicked: {
6873
(listViewDrawer.position==1) ? listViewDrawer.close() : listViewDrawer.open()
74+
focus = false
6975
}
7076
}
7177
}
@@ -310,4 +316,32 @@ ApplicationWindow {
310316
id: dataSaver
311317
labelCollector: labelCollector
312318
}
319+
320+
// Short cut
321+
Item{
322+
Action {
323+
shortcut: "Space"
324+
onTriggered: {
325+
listViewDrawer.open()
326+
}
327+
}
328+
Action {
329+
shortcut: "D"
330+
onTriggered: {
331+
labelCollector.fileIdx++
332+
}
333+
}
334+
Action {
335+
shortcut: "A"
336+
onTriggered: {
337+
labelCollector.fileIdx--
338+
}
339+
}
340+
Action {
341+
shortcut: "S"
342+
onTriggered: {
343+
dataSaver.saveAnnotation(0)
344+
}
345+
}
346+
}
313347
}

0 commit comments

Comments
 (0)