123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #ifndef CHANGEMASK_H
- #define CHANGEMASK_H
- #include <QDialog>
- #include "kamera.h"
- namespace Ui
- {
- class ChangeMask;
- }
- class ChangeMaskView; // siehe weiter unten
- /*
- * Verwaltet einen GUI-Dialog, welcher zum editieren einer Maske verwendet wird
- */
- class ChangeMask : public QDialog
- {
- Q_OBJECT
- public:
- // Erstellt den Dialog
- // m: Die Maske, welche editiert werden soll
- // cam: Die Kamera, zu welcher die Maske gehört
- // parent: Der Eltern QWidget von Qt
- explicit ChangeMask(Mask *m,
- Kamera *cam,
- QWidget *parent = 0);
- ~ChangeMask();
- private slots:
- // Setzt die Farbe zukünftiger Polygone auf schwarz
- void on_black_clicked();
- // Setzt die Farbe zukünftiger Polygone auf Weiß
- void on_white_clicked();
- // Bricht das Ändern der Maske ab ohne sie zu speichern
- void on_abort_clicked();
- // Beendet das Ändern der Maske und speichert sie
- void on_save_clicked();
- private:
- Ui::ChangeMask *ui; // Zeiger auf die in changemask.ui spezifizierten Objekte
- ChangeMaskView *view; // Zeiger auf die View für das Editieren der Maske
- Kamera *cam; // Zeiger auf die Kamera, deren Maske bearbeitet wird
- };
- /*
- * Verwaltet die Ansicht, in der die Maske editiert werden kann
- */
- class ChangeMaskView : public QWidget
- {
- Q_OBJECT
- private:
- QImage background; // Das Bild, welches im Hintergrund angezeigt werden soll
- QImage *mask; // Das Maskenbild, welches editiert werden soll
- QPolygon polygon; // Das Polygon, welches vom Nutzer angegeben wird
- float xScaleFactor; // Ein Skallierungsfaktor in x Richtung
- float yScaleFactor; // Ein Skallierungsfaktor in y Richtung
- QPoint mousePos; // Die Position der Maus
- bool black; // 1, falls schwarz gezeichnet wird, 0, falls weiß gezeichnet wird
- // Wandelt einen Punkt aus Bildkoordinaten in Bildschirmkoordinaten um
- QPoint translate(QPoint p);
- // Wandelt einen Punkt aus Bildschirmkoordinaten in Bildkoordinaten um
- QPoint inverseTranslate(QPoint p);
- public:
- // Erstellt die Ansicht
- // background: Ein Bild der Kamera, zu der die Maske editiert werden soll
- // mask: Das Schwarz-Weiß Bild, welches die momentane Maske darstellt
- // parent: Der Eltern QWidget von Qt
- explicit ChangeMaskView(QImage background,
- QImage *mask,
- QWidget *parent = 0);
- ~ChangeMaskView();
- // Setzt die Zeichenfarbe
- // black: Falls 0 wird in Zukunft mit weiß gezeichnet, andernfalls mit
- // schwarz
- void setBlack(bool black);
- protected:
- // Zeichnet die Ansicht (wird automatisch vom Qt Framework aufgerufen)
- void paintEvent(QPaintEvent *e) override;
- // Verarbeitet Maus Bewegungen (wird automatisch vom Qt Framework
- // aufgerufen)
- void mouseMoveEvent(QMouseEvent *e) override;
- // Verarbeitet Maus Tastendrücke (wird automatisch vom Qt Framework
- // aufgerufen)
- void mouseReleaseEvent(QMouseEvent *e) override;
- };
- #endif // CHANGEMASK_H
|