changemask.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #ifndef CHANGEMASK_H
  2. #define CHANGEMASK_H
  3. #include <QDialog>
  4. #include "kamera.h"
  5. namespace Ui
  6. {
  7. class ChangeMask;
  8. }
  9. class ChangeMaskView; // siehe weiter unten
  10. /*
  11. * Verwaltet einen GUI-Dialog, welcher zum editieren einer Maske verwendet wird
  12. */
  13. class ChangeMask : public QDialog
  14. {
  15. Q_OBJECT
  16. public:
  17. // Erstellt den Dialog
  18. // m: Die Maske, welche editiert werden soll
  19. // cam: Die Kamera, zu welcher die Maske gehört
  20. // parent: Der Eltern QWidget von Qt
  21. explicit ChangeMask(Mask *m,
  22. Kamera *cam,
  23. QWidget *parent = 0);
  24. ~ChangeMask();
  25. private slots:
  26. // Setzt die Farbe zukünftiger Polygone auf schwarz
  27. void on_black_clicked();
  28. // Setzt die Farbe zukünftiger Polygone auf Weiß
  29. void on_white_clicked();
  30. // Bricht das Ändern der Maske ab ohne sie zu speichern
  31. void on_abort_clicked();
  32. // Beendet das Ändern der Maske und speichert sie
  33. void on_save_clicked();
  34. private:
  35. Ui::ChangeMask *ui; // Zeiger auf die in changemask.ui spezifizierten Objekte
  36. ChangeMaskView *view; // Zeiger auf die View für das Editieren der Maske
  37. Kamera *cam; // Zeiger auf die Kamera, deren Maske bearbeitet wird
  38. };
  39. /*
  40. * Verwaltet die Ansicht, in der die Maske editiert werden kann
  41. */
  42. class ChangeMaskView : public QWidget
  43. {
  44. Q_OBJECT
  45. private:
  46. QImage background; // Das Bild, welches im Hintergrund angezeigt werden soll
  47. QImage *mask; // Das Maskenbild, welches editiert werden soll
  48. QPolygon polygon; // Das Polygon, welches vom Nutzer angegeben wird
  49. float xScaleFactor; // Ein Skallierungsfaktor in x Richtung
  50. float yScaleFactor; // Ein Skallierungsfaktor in y Richtung
  51. QPoint mousePos; // Die Position der Maus
  52. bool black; // 1, falls schwarz gezeichnet wird, 0, falls weiß gezeichnet wird
  53. // Wandelt einen Punkt aus Bildkoordinaten in Bildschirmkoordinaten um
  54. QPoint translate(QPoint p);
  55. // Wandelt einen Punkt aus Bildschirmkoordinaten in Bildkoordinaten um
  56. QPoint inverseTranslate(QPoint p);
  57. public:
  58. // Erstellt die Ansicht
  59. // background: Ein Bild der Kamera, zu der die Maske editiert werden soll
  60. // mask: Das Schwarz-Weiß Bild, welches die momentane Maske darstellt
  61. // parent: Der Eltern QWidget von Qt
  62. explicit ChangeMaskView(QImage background,
  63. QImage *mask,
  64. QWidget *parent = 0);
  65. ~ChangeMaskView();
  66. // Setzt die Zeichenfarbe
  67. // black: Falls 0 wird in Zukunft mit weiß gezeichnet, andernfalls mit
  68. // schwarz
  69. void setBlack(bool black);
  70. protected:
  71. // Zeichnet die Ansicht (wird automatisch vom Qt Framework aufgerufen)
  72. void paintEvent(QPaintEvent *e) override;
  73. // Verarbeitet Maus Bewegungen (wird automatisch vom Qt Framework
  74. // aufgerufen)
  75. void mouseMoveEvent(QMouseEvent *e) override;
  76. // Verarbeitet Maus Tastendrücke (wird automatisch vom Qt Framework
  77. // aufgerufen)
  78. void mouseReleaseEvent(QMouseEvent *e) override;
  79. };
  80. #endif // CHANGEMASK_H