diff --git a/ResizeHelper.cpp b/ResizeHelper.cpp index 2bc8057..6262940 100644 --- a/ResizeHelper.cpp +++ b/ResizeHelper.cpp @@ -13,8 +13,6 @@ QFlags edgesAt(const QPointF & p, const QRectF & r, qreal w) { ResizeHelper::ResizeHelper(QObject *parent) { setAcceptedMouseButtons(Qt::LeftButton); - m_pen.setColor(QColor(255, 0, 0, 128)); - m_pen.setStyle(Qt::SolidLine); } QRectF ResizeHelper::boundingRect() const { @@ -28,6 +26,7 @@ void ResizeHelper::selectionChanged() { if (sel.isEmpty() || sel.size() > 1) { setVisible(false); return; } auto item = sel.at(0); if (! traits.isGraphicsItemResizeable(item)) { setVisible(false); return; } + m_pen = traits.penFor(item); setParentItem(item); newGeometry(); setVisible(true); @@ -67,7 +66,7 @@ void ResizeHelper::mouseMoveEvent(QGraphicsSceneMouseEvent * ev) { } /*Make sure that rectangle is within predefined boundaries (if given)*/ - if ((!boundaries.isEmpty() & (boundaries.contains(rect))) | boundaries.isEmpty()){ + if ((rect.width()>0 & rect.height()>0) & ((!boundsRect.isEmpty() & (boundsRect.contains(rect))) | boundsRect.isEmpty())){ traits.setRectOn(parentItem(), rect); newGeometry(); emit(itemChanged(parentItem())); @@ -80,6 +79,4 @@ void ResizeHelper::newGeometry() { auto parentRect = traits.rectFor(parentItem()); m_rect.setTopLeft(mapFromParent(parentRect.topLeft())); m_rect.setBottomRight(mapFromParent(parentRect.bottomRight())); - m_pen.setWidthF(std::min(m_rect.width(), m_rect.height()) * 0.1); - m_pen.setJoinStyle(Qt::MiterJoin); } diff --git a/ResizeHelper.h b/ResizeHelper.h index 256e065..d16695c 100644 --- a/ResizeHelper.h +++ b/ResizeHelper.h @@ -17,7 +17,7 @@ class ResizeHelper : public QGraphicsObject public: ResizeTraits traits; QRectF m_rect; - QRectF boundaries; + QRectF boundsRect; QPen m_pen; QPointF clickPos; QFlags m_edges; diff --git a/ResizeTraits.cpp b/ResizeTraits.cpp index 44124ae..91c97e6 100644 --- a/ResizeTraits.cpp +++ b/ResizeTraits.cpp @@ -37,3 +37,20 @@ void ResizeTraits::setRectOn(QGraphicsItem * item, const QRectF & rect) { return resizeableItem2->setRect(rect); } } + +QPen ResizeTraits::penFor(QGraphicsItem *item) +{ + auto resizeableItem = dynamic_cast(item); + if (resizeableItem){ + /*Use the same Pen as the parent for the bounding rectangle*/ + QPen pen = resizeableItem->pen(); + QColor color = pen.color(); + color.setAlpha(100); + pen.setColor(color); + pen.setWidth(pen.width()*10); + pen.setJoinStyle(Qt::MiterJoin); + return pen; + }else{ + return QPen(QColor(255, 0, 0, 128), Qt::SolidLine); + } +} diff --git a/ResizeTraits.h b/ResizeTraits.h index 6e7e56d..4ff96fe 100644 --- a/ResizeTraits.h +++ b/ResizeTraits.h @@ -2,13 +2,16 @@ #define ResizeTraits_H #include #include +#include +#include class ResizeTraits { public: static bool isGraphicsItemResizeable(QGraphicsItem * item); - static QRectF rectFor(QGraphicsItem * item); - static void setRectOn(QGraphicsItem * item, const QRectF & rect); + static QRectF rectFor(QGraphicsItem* item); + static void setRectOn(QGraphicsItem* item, const QRectF & rect); + static QPen penFor(QGraphicsItem* item); }; diff --git a/TrackerPlugin_EyeTracker.cpp b/TrackerPlugin_EyeTracker.cpp index 7f21680..98e2910 100644 --- a/TrackerPlugin_EyeTracker.cpp +++ b/TrackerPlugin_EyeTracker.cpp @@ -57,16 +57,6 @@ TrackerPlugin_EyeTracker::TrackerPlugin_EyeTracker(QObject *parent) uiPlots.at(3)->setAxisTitle(0, "CR y [px]"); uiPlots.at(4)->setAxisTitle(0, "Pupil Ø [px]"); -// pLineH.setLine(0,0,100,100); -// pLineV.setLine(0,0,0,0); -// cLineH.setLine(0,0,0,0); -// cLineV.setLine(0,0,0,0); - -// cameraScene->addLine(pLineH); -// cameraScene->addLine(pLineV); -// cameraScene->addLine(cLineH); -// cameraScene->addLine(cLineV); - /*Prepare rects*/ for(int i=0;i<2;i++){ rectItems.push_back(new QGraphicsRectItem()); @@ -75,7 +65,6 @@ TrackerPlugin_EyeTracker::TrackerPlugin_EyeTracker(QObject *parent) rectItems.at(i)->setFlag(QGraphicsItem::ItemIsSelectable, true); } - /*Prepare curves*/ for(int i=0;icameraScene = cameraScene; /*Make objects resizeable and moveable*/ - resizeHelper->boundaries = QRectF(0,0,cameraResolution.width(),cameraResolution.height()); + resizeHelper->boundsRect = QRectF(0,0,cameraResolution.width(),cameraResolution.height()); cameraScene->addItem(resizeHelper); connect(cameraScene, SIGNAL(selectionChanged()), resizeHelper, SLOT(selectionChanged())); @@ -209,7 +198,6 @@ void TrackerPlugin_EyeTracker::onCheckBoxClicked(int index) break; } - uiPlots.at(index)->setVisible(isVisible); } diff --git a/TrackerPlugin_EyeTracker.h b/TrackerPlugin_EyeTracker.h index a20bda5..5d0bb46 100644 --- a/TrackerPlugin_EyeTracker.h +++ b/TrackerPlugin_EyeTracker.h @@ -22,7 +22,6 @@ #include #include "ResizeHelper.h" - namespace Ui { class TrackerPlugin_EyeTracker; } @@ -71,7 +70,7 @@ class TrackerPlugin_EyeTracker : public QWidget, public TrackerInterface QSignalMapper* signalMapperSliders; QSignalMapper* signalMapperLineEdit; - ResizeHelper* resizeHelper; + ResizeHelper* resizeHelper; //Manages resizing of items in scene private slots: void onTrackingResult(std::vector); diff --git a/TrackerWorker.h b/TrackerWorker.h index dec94d1..0f10ca4 100644 --- a/TrackerWorker.h +++ b/TrackerWorker.h @@ -36,12 +36,10 @@ public slots: void onShowBinary(bool showBinary); void onBrightPupil(bool isInverted); - signals: void trackingPreview(Mat); void trackingRois(QVector); void trackingResult(std::vector data); - }; #endif // TRACKERWORKER_H