#ifndef KAMERA_H
#define KAMERA_H

#include "frame.h"
#include <QList>
#include "mask.h"
#include <QString>
#include "frametree.h"

class Kamera : public FrameTreeNode
{
private:
    int ref; // reference Counter
    QList< Frame* > frames; // Liste mit Bildern
    Mask m; // Die Maske der Kamera
    QString name; // Der Name der Kamera)

public:
    Kamera( QString name, QString maskPath, int index );
    ~Kamera();

    // Gibt 1 zurück, falls keine Objekte ohne ID existieren und auf keinem Bild eine ID mehrfach vergeben wurde
    bool isCorrectAnnotated() const;
    // Gibt this zurück
    void *getNodeObject() const override;
    // gibt die Anzahl der Bilder zurück
    int getChildCount() const override;
    // Gibt das Bild mit Index index zurück
    Frame *getFrame( int index ) const;
    // fügt der Kamera das Bild f hinzu
    void addFrame( Frame *f );
    // Wendet die Maske der Kamera auf alle Bilder an
    void applyMask();
    // Gibt den Namen der Kamera zurück
    QString getName() const;
    // Gibt die Maske der Kamera zurück
    Mask *getMask() const;
    // Speichert die Maske der Kamera und erzeugt die Bilder in JPEG Images
    void saveMask();
    // Erhöht den Reference Counter um 1
    void refNew();
    // Verringert den Reference Counter um 1 (bei 0 löscht sich das Objekt selbst)
    void refRelease();
};

#endif // KAMERA_H
