#ifndef MASK_H
#define MASK_H

#include <QImage>
#include <QString>
#include <opencv2/opencv.hpp>

/*
 * Verwaltet die Maske einer Kamera
 */
class Mask
{
private:
    QString path; // Der Pfad zum Maskenbild
    QImage *mask; // Das Maskenbild

public:
    Mask( QString p );
    ~Mask();

    // Lädt das Masken Bild
    void loadMask();
    // Gibt das Maskenbild zurück
    QImage *getMask();
    // Gibt ein Bild zurück, indem der Weiße Teil transparent ist
    QPixmap getDrawableImage();
    // Prüft, ob ein Polygon im verbotenen Bereich liegt
    bool isPolygonInside( QPolygon p );
    // Erstellt eine neue Maske
    void createMask( QSize s );
    // Speichert die Maske
    void save() const;
    // Erzeugt für ein Bild das JPEGImage bild
    //  img: Das Bild zu dem das JPEGImage generiert werden soll
    //  frameName: Der Name des Bildes
    void saveToFrameMask( cv::Mat img, QString frameName ) const;
    // Löscht die Maske aus dem Speicher
    void unloadMask();
};

#endif // MASK_H