00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00024
00025 #ifndef QVCAMERA_H
00026 #define QVCAMERA_H
00027
00028 #include <QObject>
00029 #include <QString>
00030 #include <QDebug>
00031
00032 #include <QVImage>
00033 #include <QVPropertyContainer>
00034
00045 class QVCamera : public QObject, public QVPropertyContainer
00046 {
00047 #ifndef DOXYGEN_IGNORE_THIS
00048 Q_OBJECT
00049 public:
00050 QVCamera(QString name = QString());
00051 ~QVCamera();
00052
00053
00054 typedef enum {Closed, Running, RunningOneStep, Paused } TCameraStatus;
00055
00057 typedef enum { SeekCurrent = 0, SeekPercentage = 1, SeekAbsolute = 2 } TSeekType;
00058
00059 virtual bool openCam() = 0;
00060
00061
00062
00063
00064 virtual unsigned int getRows() const = 0;
00065 virtual unsigned int getCols() const = 0;
00066 virtual double getFPS() const = 0;
00067 virtual double getSpeed() const = 0;
00068 virtual unsigned int getFramesGrabbed() const = 0;
00069 virtual unsigned int getFramesRead() const = 0;
00070 virtual const QString getUrlBase() const = 0;
00071 virtual double getTimeLength() const = 0;
00072 virtual double getTimePos() const = 0;
00073 virtual bool isLiveCamera() const = 0;
00074 virtual TCameraStatus getCameraStatus() const { return status; };
00075 virtual bool isClosed() const { return status == Closed; };
00076 virtual bool isRunning() const { return status == Running; };
00077 virtual bool isRunningOneStep() const { return status == RunningOneStep; };
00078 virtual bool isPaused() const { return status == Paused; };
00079
00080
00081 public slots:
00082 virtual bool grab() = 0;
00083 virtual void pauseCam() = 0;
00084 virtual void unpauseCam() = 0;
00085 virtual void nextFrameCam() = 0;
00086 virtual void setSpeedCam(double d) = 0;
00087 virtual void seekCam(TSeekType type, double pos) = 0;
00088 virtual void closeCam() = 0;
00089
00090 signals:
00091 void newGrab();
00092 void newRead();
00093 void camClosed();
00094 void camOpened();
00095 void statusChange(QVCamera::TCameraStatus);
00096
00097 protected:
00098 TCameraStatus status;
00099 void setStatus(TCameraStatus status)
00100 { this->status = status; emit statusChange(status); }
00101
00102 void setImageBuffer(QVGenericImage * image)
00103 {
00104 if (this->image != NULL)
00105 delete image;
00106 this->image = image;
00107 }
00108
00109 private:
00110 QVGenericImage * image;
00111
00112 #endif
00113 };
00114 #endif