00001 #ifndef _QCamTrans_hpp_
00002 #define _QCamTrans_hpp_
00003
00004 #include <qobject.h>
00005 #include "QCam.hpp"
00006
00007 class FrameAlgo;
00008
00009 class QCamTrans : public QCam {
00010 Q_OBJECT
00011 public:
00013 enum Mode {
00014 On=1 ,
00015 Off=2 ,
00016 Copy=3
00017 };
00019 QCamTrans();
00021 void connectCam(QCam & cam);
00023 void disconnectCam();
00025 Mode mode() const {return mode_;}
00026 QCamFrame yuvFrame() const {return camFrame_; }
00027 void connectAlgo(FrameAlgo & algo);
00028 void disconnectAlgo();
00029 const QSize & size() const {
00030 if (cam_) {
00031 return cam_->size();
00032 } else return emptySize_;
00033 }
00034 void resize(const QSize & s) {
00035 if (cam_) {
00036 cam_->resize(s);
00037 }
00038 }
00039 virtual const QSize * getAllowedSize() const { return QCam::getAllowedSize();}
00040 virtual QWidget* buildGUI(QWidget * parent);
00041 public slots:
00043 void mode(int mode);
00044 signals:
00045 void modeChanged(int);
00046 private slots:
00047 void transNewFrame();
00048 private:
00049 QCam * cam_;
00050 bool paused_;
00051 QCamFrame camFrame_;
00052 Mode mode_;
00053 FrameAlgo * algo_;
00054 QWidget * algoWidget_;
00055 QSize emptySize_;
00056 };
00057 #endif