#ifndef CHANGEMASK_H #define CHANGEMASK_H #include #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