#ifndef SETIDS_H #define SETIDS_H #include #include "sequenz.h" #include "model.h" namespace Ui { class SetIds; } class SetIdsModel; // Siehe unten class SetIdsView; // Siehe unten /* * Verwaltet die inteligente ID zuweisungs oberfläche */ class SetIds : public QDialog { Q_OBJECT public: explicit SetIds(Sequenz *s, QWidget *parent = 0); ~SetIds(); private slots: // Die Ids sollen nicht gespeichert werden void on_abbrechen_clicked(); // Es sollen weitere Bilder geladen werden void on_weiter_clicked(); // Die Ids sollen gespeichert werden void on_speichern_clicked(); private: Ui::SetIds *ui; // Enthält alle in setids.ui spezifizierten Objekte Sequenz *s; // Enthält die aktuell annotierte Bildsequenz SetIdsModel *m; // Enthält das Model der SetIdViews QList views; // Enthält alle aktuellen SetIdViews (für jedes Bild eine) }; /* * Das Model der SetIdViews */ class SetIdsModel : public Model { public: int id; // Die Id, welche vergeben werden soll QList list; // Eine Liste mit Objekten, denen die Id zugewiesen werden soll (eins pro bild) QList set; // Speichert, ob das Objekt aus der liste vom Nutzer angegeben wurde oder ob es automatisch erkannt wurde }; /* * Verwaltet ein Bild der inteligenten ID zuweisungs Oberfläche */ class SetIdsView : public QWidget { float xScaleFactor; // Ein Skallierungsfaktor in x Richtung float yScaleFactor; // Ein Skallierungsfaktor in y Richtung QPoint mousePos; // Die momentane Position der Maus SetIdsModel *m; // Das Model Sequenz *s; // Die aktuelle Bildsequenz int i; // Der Index des Bildes ausgehend vom ersten Bild Frame *f; // Das Bild, welches angezeigt wird // Transformiert einen Punkt von Bildkoordinaten nach Bildschirmkoordinaten QPoint translate(QPoint p); // Transformiert ein Polygon von Bildkoordinaten nach Bildschirmkoordinaten QPolygon translatePolygon(QPolygon p); // Transformiert einen Punkt von Bildschirmkoordinaten nach Bildkoordinaten QPoint inverseTranslate(QPoint p); // Zeichnet die View neu void paintEvent(QPaintEvent *e) override; public: explicit SetIdsView(Sequenz *s, SetIdsModel *m, int i, QWidget *parent = nullptr); ~SetIdsView(); // Verarbeitet Maus Events und wählt das richtige Objekt aus void mouseReleaseEvent(QMouseEvent *e) override; // Übernimmt die neue Maus Position void mouseMoveEvent(QMouseEvent *e) override; }; #endif // SETIDS_H