diff --git a/include/personStorage.h b/include/personStorage.h index a839a64f05490b00a47d375945881d6b88cfe4ed..e5a9c097e4f0adce142d14bcd87868f461d231de 100644 --- a/include/personStorage.h +++ b/include/personStorage.h @@ -39,7 +39,7 @@ class PersonStorage : public QObject Q_OBJECT public: - enum class Direction + enum class TrajectorySegment { Previous, Following, @@ -50,9 +50,9 @@ public: void splitPerson(size_t pers, int frame); bool splitPersonAt(const Vec2F &p, int frame, const QSet<size_t> &onlyVisible); - bool delPointOf(int pers, int direction, int frame); - bool delPoint(const Vec2F &p, int direction, int frame, const QSet<size_t> &onlyVisible); - void delPointAll(Direction direction, int frame); + bool delPointOf(int pers, TrajectorySegment direction, int frame); + bool delPoint(const Vec2F &p, TrajectorySegment direction, int frame, const QSet<size_t> &onlyVisible); + void delPointAll(TrajectorySegment direction, int frame); void delPointROI(); void delPointInsideROI(); bool editTrackPersonComment(const Vec2F &p, int frame, const QSet<size_t> &onlyVisible); diff --git a/include/petrack.h b/include/petrack.h index 4288188fb6bd1dbd3793c0c3d77e3fd1f3503007..fd292f6d166d131be3dd814e0186d2f8007a484d 100644 --- a/include/petrack.h +++ b/include/petrack.h @@ -150,8 +150,8 @@ public slots: void editTrackPersonComment(QPointF pos); void setTrackPersonHeight(QPointF pos); void resetTrackPersonHeight(QPointF pos); - void deleteTrackPoint(QPointF pos, int direction); - void deleteTrackPointAll(PersonStorage::Direction direction); + void deleteTrackPoint(QPointF pos, PersonStorage::TrajectorySegment direction); + void deleteTrackPointAll(PersonStorage::TrajectorySegment direction); void deleteTrackPointROI(); void deleteTrackPointInsideROI(); void moveTrackPoint(QPointF pos); diff --git a/include/view.h b/include/view.h index 0e2f077c29c2627ef61f02cb091324037293da37..8a906ead7e8c1bc061041cf20c72a0325c50c548 100644 --- a/include/view.h +++ b/include/view.h @@ -19,7 +19,7 @@ #ifndef VIEW_H #define VIEW_H -#include "personStorage.h" // for Direction +#include "personStorage.h" #include <QFrame> #include <QGraphicsView> @@ -57,8 +57,8 @@ signals: void mouseShiftControlDoubleClick(QPointF pos); void mouseShiftDoubleClick(QPointF pos); void mouseControlDoubleClick(QPointF pos); - void mouseRightDoubleClick(QPointF pos, int direction); - void mouseMiddleDoubleClick(PersonStorage::Direction direction); + void mouseRightDoubleClick(QPointF pos, PersonStorage::TrajectorySegment direction); + void mouseMiddleDoubleClick(PersonStorage::TrajectorySegment direction); void mouseShiftWheel(int delta); void mouseCtrlWheel(int delta); void mouseAltPressed(QPointF pos); diff --git a/src/autosave.cpp b/src/autosave.cpp index a0ebb640afa3c466be71cbcfada1d323df9a8607..b3bd44b40427e8edaa3b42c948c050f58e6cd507 100644 --- a/src/autosave.cpp +++ b/src/autosave.cpp @@ -114,7 +114,7 @@ void Autosave::loadAutosave() { const QString trcAutosaveName = autosaveFiles[trcIndex]; const auto trcFile = mPetrack.getTrackFileName(); - mPetrack.deleteTrackPointAll(PersonStorage::Direction::Whole); + mPetrack.deleteTrackPointAll(PersonStorage::TrajectorySegment::Whole); mPetrack.importTracker(trcAutosaveName); mPetrack.setTrackFileName(trcFile); } diff --git a/src/personStorage.cpp b/src/personStorage.cpp index b1488ac8394ce907b1469302602cd0e52a0f86e7..e8581b15864ceedcbe7873f192e49fb1df775c31 100644 --- a/src/personStorage.cpp +++ b/src/personStorage.cpp @@ -87,23 +87,23 @@ bool PersonStorage::splitPersonAt(const Vec2F &point, int frame, const QSet<size /** * @brief Deletes points of pers * @param pers TrackPerson whose points should be deleted - * @param direction notes if previous (-1), following(1) or whole(0) trajectory should be deleted - * @param frame + * @param direction the direction in which the trajectory should be deleted + * @param frame the frame (exclusive) from which the deletion will happen * @return true, if deletion occured */ -bool PersonStorage::delPointOf(int pers, int direction, int frame) +bool PersonStorage::delPointOf(int pers, TrajectorySegment direction, int frame) { onManualAction(); - if(direction == -1) + if(direction == TrajectorySegment::Previous) { deletePersonFrameRange(pers, mPersons[pers].firstFrame(), frame - 1); } - else if(direction == 0) + else if(direction == TrajectorySegment::Whole) { deletePerson(pers); } - else if(direction == 1) + else if(direction == TrajectorySegment::Following) { deletePersonFrameRange(pers, frame + 1, mPersons[pers].lastFrame()); } @@ -114,12 +114,16 @@ bool PersonStorage::delPointOf(int pers, int direction, int frame) /** * @brief Deletes points of a SINGLE person in onlyVisible * @param point point which need to be on the person (helpful if onlyVisible is not properly set) - * @param direction notes if previous (-1), following(1) or whole(0) trajectory should be deleted - * @param frame + * @param direction the direction in which the trajectory should be deleted + * @param frame the frame (exclusive) from which the deletion will happen * @param onlyVisible set of people whose points could be deleted; empty means everyone * @return true if deletion occured */ -bool PersonStorage::delPoint(const Vec2F &point, int direction, int frame, const QSet<size_t> &onlyVisible) +bool PersonStorage::delPoint( + const Vec2F &point, + TrajectorySegment direction, + int frame, + const QSet<size_t> &onlyVisible) { onManualAction(); @@ -142,7 +146,7 @@ bool PersonStorage::delPoint(const Vec2F &point, int direction, int frame, const * @param direction notes if previous, following or whole trajectory should be deleted * @param frame */ -void PersonStorage::delPointAll(Direction direction, int frame) +void PersonStorage::delPointAll(TrajectorySegment direction, int frame) { onManualAction(); @@ -152,21 +156,21 @@ void PersonStorage::delPointAll(Direction direction, int frame) { switch(direction) { - case Direction::Previous: + case TrajectorySegment::Previous: deletePersonFrameRange(i, mPersons[i].firstFrame(), frame - 1); break; - case Direction::Whole: + case TrajectorySegment::Whole: deletePerson(i--); // after deleting the person decrease i by one break; - case Direction::Following: + case TrajectorySegment::Following: deletePersonFrameRange(i, frame + 1, mPersons[i].lastFrame()); break; } } else if( - ((direction == Direction::Previous) && (frame > mPersons.at(i).lastFrame())) || - (direction == Direction::Whole) || - ((direction == Direction::Following) && (frame < mPersons.at(i).firstFrame()))) + ((direction == TrajectorySegment::Previous) && (frame > mPersons.at(i).lastFrame())) || + (direction == TrajectorySegment::Whole) || + ((direction == TrajectorySegment::Following) && (frame < mPersons.at(i).firstFrame()))) { deletePerson(i--); // after deleting the person decrease i by one } diff --git a/src/petrack.cpp b/src/petrack.cpp index bf7a3ed481b4dbe591ff616f041c28210861e3d5..6eded80d8ecfd7c83cd7d97870204ebe69e34cd1 100644 --- a/src/petrack.cpp +++ b/src/petrack.cpp @@ -2030,14 +2030,14 @@ void Petrack::createActions() mDelPastAct, &QAction::triggered, this, - [this]() { this->deleteTrackPointAll(PersonStorage::Direction::Previous); }); + [this]() { this->deleteTrackPointAll(PersonStorage::TrajectorySegment::Previous); }); mDelFutureAct = new QAction(tr("&Future part of all trj."), this); connect( mDelFutureAct, &QAction::triggered, this, - [this]() { this->deleteTrackPointAll(PersonStorage::Direction::Following); }); + [this]() { this->deleteTrackPointAll(PersonStorage::TrajectorySegment::Following); }); mDelAllRoiAct = new QAction(tr("&Trj. moving through ROI"), this); connect(mDelAllRoiAct, &QAction::triggered, this, &Petrack::deleteTrackPointROI); @@ -3973,9 +3973,11 @@ int Petrack::addOrMoveManualTrackPoint(const QPointF &pos) return pers; } -// direction zeigt an, ob bis zum aktuellen (-1), ab dem aktuellen (1) oder ganzer trackpath (0) -// loeschen von Trackpoints einer Trajektorie -void Petrack::deleteTrackPoint(QPointF pos, int direction) // const QPoint &pos +/** + * Deletes trajectory based on current frame and selected trajectories. + * @see PersonStorage::delPoint + */ +void Petrack::deleteTrackPoint(QPointF pos, PersonStorage::TrajectorySegment direction) // const QPoint &pos { mPersonStorage.delPoint((Vec2F) pos, direction, mAnimation->getCurrentFrameNum(), getPedestrianUserSelection()); updateControlWidget(); @@ -4000,7 +4002,7 @@ void Petrack::resetTrackPersonHeight(QPointF pos) * @brief Delete the following, previous or whole trajectory of **all** trajectories * @param direction previous, following or whole */ -void Petrack::deleteTrackPointAll(PersonStorage::Direction direction) // const QPoint &pos +void Petrack::deleteTrackPointAll(PersonStorage::TrajectorySegment direction) // const QPoint &pos { mPersonStorage.delPointAll(direction, mAnimation->getCurrentFrameNum()); updateControlWidget(); diff --git a/src/tracker.cpp b/src/tracker.cpp index fdc106e3f920ca2e613dabc88d7e636954281522..23425fa852b49af7ddea90dbdad2d172d69d22ac 100644 --- a/src/tracker.cpp +++ b/src/tracker.cpp @@ -23,6 +23,7 @@ #include "logger.h" #include "multiColorMarkerWidget.h" #include "pMessageBox.h" +#include "personStorage.h" #include "petrack.h" #include "roiItem.h" #include "stereoWidget.h" @@ -1084,7 +1085,7 @@ int Tracker::track( // gemacht for(int i = 0; i < trjToDel.size(); ++i) // ueber TrackPerson { - mPersonStorage.delPointOf(trjToDel[i], 0, -1); + mPersonStorage.delPointOf(trjToDel[i], PersonStorage::TrajectorySegment::Whole, -1); } // numOfPeopleToTrack kann trotz nicht retrack > 0 sein auch bei alten pfaden diff --git a/src/trackerItem.cpp b/src/trackerItem.cpp index 5e9eda3927b621fa0a6c17923e4fe8c3386f785f..12dccc2959f9653047f5d72b35c5ea98c0446188 100644 --- a/src/trackerItem.cpp +++ b/src/trackerItem.cpp @@ -170,15 +170,15 @@ void TrackerItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) } else if(selectedAction == delTrj) { - mMainWindow->deleteTrackPoint(event->scenePos(), 0); + mMainWindow->deleteTrackPoint(event->scenePos(), PersonStorage::TrajectorySegment::Whole); } else if(selectedAction == delFutureTrj) { - mMainWindow->deleteTrackPoint(event->scenePos(), -1); + mMainWindow->deleteTrackPoint(event->scenePos(), PersonStorage::TrajectorySegment::Previous); } else if(selectedAction == delPastTrj) { - mMainWindow->deleteTrackPoint(event->scenePos(), 1); + mMainWindow->deleteTrackPoint(event->scenePos(), PersonStorage::TrajectorySegment::Following); } else if(selectedAction == addComment) { diff --git a/src/view.cpp b/src/view.cpp index e15b162971ed6f46dccd1dbb4c903d12ccfb4fde..4c6174f95dc2746bba2c09c2f7880d0c34d4696c 100644 --- a/src/view.cpp +++ b/src/view.cpp @@ -19,6 +19,7 @@ #include "view.h" #include "control.h" +#include "personStorage.h" #include "petrack.h" #include "vector.h" @@ -112,30 +113,30 @@ void GraphicsView::mouseDoubleClickEvent(QMouseEvent *event) { if(event->modifiers() == Qt::ShiftModifier) // nur shift zugelassen ... { - emit mouseRightDoubleClick(mapToScene(event->pos()), -1); + emit mouseRightDoubleClick(mapToScene(event->pos()), PersonStorage::TrajectorySegment::Previous); } else if(event->modifiers() == Qt::ControlModifier) { - emit mouseRightDoubleClick(mapToScene(event->pos()), 0); + emit mouseRightDoubleClick(mapToScene(event->pos()), PersonStorage::TrajectorySegment::Whole); } else if(event->modifiers() == Qt::AltModifier) { - emit mouseRightDoubleClick(mapToScene(event->pos()), 1); + emit mouseRightDoubleClick(mapToScene(event->pos()), PersonStorage::TrajectorySegment::Following); } } else if(event->button() == Qt::MiddleButton) { if(event->modifiers() == Qt::ShiftModifier) // nur shift zugelassen ... { - emit mouseMiddleDoubleClick(PersonStorage::Direction::Previous); + emit mouseMiddleDoubleClick(PersonStorage::TrajectorySegment::Previous); } else if(event->modifiers() == Qt::ControlModifier) { - emit mouseMiddleDoubleClick(PersonStorage::Direction::Whole); + emit mouseMiddleDoubleClick(PersonStorage::TrajectorySegment::Whole); } else if(event->modifiers() == Qt::AltModifier) { - emit mouseMiddleDoubleClick(PersonStorage::Direction::Following); + emit mouseMiddleDoubleClick(PersonStorage::TrajectorySegment::Following); } }