setids.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #ifndef SETIDS_H
  2. #define SETIDS_H
  3. #include <QDialog>
  4. #include "sequenz.h"
  5. #include "model.h"
  6. namespace Ui {
  7. class SetIds;
  8. }
  9. class SetIdsModel; // Siehe unten
  10. class SetIdsView; // Siehe unten
  11. /*
  12. * Verwaltet die inteligente ID zuweisungs oberfläche
  13. */
  14. class SetIds : public QDialog
  15. {
  16. Q_OBJECT
  17. public:
  18. explicit SetIds(Sequenz *s, QWidget *parent = 0);
  19. ~SetIds();
  20. private slots:
  21. // Die Ids sollen nicht gespeichert werden
  22. void on_abbrechen_clicked();
  23. // Es sollen weitere Bilder geladen werden
  24. void on_weiter_clicked();
  25. // Die Ids sollen gespeichert werden
  26. void on_speichern_clicked();
  27. private:
  28. Ui::SetIds *ui; // Enthält alle in setids.ui spezifizierten Objekte
  29. Sequenz *s; // Enthält die aktuell annotierte Bildsequenz
  30. SetIdsModel *m; // Enthält das Model der SetIdViews
  31. QList<SetIdsView*> views; // Enthält alle aktuellen SetIdViews (für jedes Bild eine)
  32. };
  33. /*
  34. * Das Model der SetIdViews
  35. */
  36. class SetIdsModel : public Model
  37. {
  38. public:
  39. int id; // Die Id, welche vergeben werden soll
  40. QList<ObjectPolygon> list; // Eine Liste mit Objekten, denen die Id zugewiesen werden soll (eins pro bild)
  41. QList<bool> set; // Speichert, ob das Objekt aus der liste vom Nutzer angegeben wurde oder ob es automatisch erkannt wurde
  42. };
  43. /*
  44. * Verwaltet ein Bild der inteligenten ID zuweisungs Oberfläche
  45. */
  46. class SetIdsView : public QWidget
  47. {
  48. float xScaleFactor; // Ein Skallierungsfaktor in x Richtung
  49. float yScaleFactor; // Ein Skallierungsfaktor in y Richtung
  50. QPoint mousePos; // Die momentane Position der Maus
  51. SetIdsModel *m; // Das Model
  52. Sequenz *s; // Die aktuelle Bildsequenz
  53. int i; // Der Index des Bildes ausgehend vom ersten Bild
  54. Frame *f; // Das Bild, welches angezeigt wird
  55. // Transformiert einen Punkt von Bildkoordinaten nach Bildschirmkoordinaten
  56. QPoint translate(QPoint p);
  57. // Transformiert ein Polygon von Bildkoordinaten nach Bildschirmkoordinaten
  58. QPolygon translatePolygon(QPolygon p);
  59. // Transformiert einen Punkt von Bildschirmkoordinaten nach Bildkoordinaten
  60. QPoint inverseTranslate(QPoint p);
  61. // Zeichnet die View neu
  62. void paintEvent(QPaintEvent *e) override;
  63. public:
  64. explicit SetIdsView(Sequenz *s, SetIdsModel *m, int i, QWidget *parent = nullptr);
  65. ~SetIdsView();
  66. // Verarbeitet Maus Events und wählt das richtige Objekt aus
  67. void mouseReleaseEvent(QMouseEvent *e) override;
  68. // Übernimmt die neue Maus Position
  69. void mouseMoveEvent(QMouseEvent *e) override;
  70. };
  71. #endif // SETIDS_H