00001 #ifndef _QCamVesta_hpp_
00002 #define _QCamVesta_hpp_
00003
00004 #include <qobject.h>
00005 #include <qimage.h>
00006
00007 #include <stdio.h>
00008 #include <stdlib.h>
00009
00010 #include <linux/videodev.h>
00011
00012 #include "pwc-ioctl.h"
00013
00014 #include "QCamV4L.hpp"
00015
00016 class QCamSlider;
00017 class QHGroupBox;
00018 class QCamRadioBox;
00019 class QLCDNumber;
00020 class QCheckBox;
00021 class QProgressBar;
00022 class QLineEdit;
00023 class SCmod;
00024 class SCmodTucLed;
00025
00029 class QCamVesta : public QCamV4L {
00030 Q_OBJECT
00031 public:
00032 QCamVesta(const char * devpath="/dev/video0");
00033 ~QCamVesta();
00034 int getGain() const;
00035 int getExposure() const;
00036 int getCompression() const;
00037 bool getFlicker() const;
00038 bool getBackLight() const;
00039 int getNoiseRemoval() const;
00040 int getSharpness() const;
00041 int getGama() const;
00042 int getFrameRate() const;
00043 int getType() const {return type_;}
00044 void setSCmodImpl(SCmod *impl) {SCmodCtrl_=impl;}
00045 const QSize * getAllowedSize() const;
00046 protected:
00047 void checkSize(int & x, int & y) const;
00048 QWidget * buildGUI(QWidget * parent);
00049 virtual void refreshPictureSettings();
00050 private:
00051 void init();
00052 void initRemoteControlLongExposure(QWidget * remoteCTRL);
00053 void getWhiteBalance();
00054 void setWhiteBalance();
00055 void setLed(unsigned char on, unsigned char off) const;
00056 void stopAccumulation();
00057 void startAccumulation();
00058 mutable bool haveLeds_;
00059 bool liveWhiteBalance_;
00060 bool refreshGui_;
00061
00062 int whiteBalanceMode_;
00063 int whiteBalanceRed_;
00064 int whiteBalanceBlue_;
00065 mutable int lastGain_;
00066
00067 QCamSlider * remoteCTRLgama_;
00068 QCamSlider * remoteCTRLgain_;
00069 QCamRadioBox * remoteCTRLWhiteBalance_;
00070 QCamSlider * remoteCTRLWBred_;
00071 QCamSlider * remoteCTRLWBblue_;
00072 QCamSlider * remoteCTRLexposure_;
00073 QCamSlider * remoteCTRLcompression_;
00074 QCamSlider * remoteCTRLnoiseRemoval_;
00075 QCamSlider * remoteCTRLsharpness_;
00076
00077 QHGroupBox * remoteCTRLframeRate_;
00078 QCamComboBox * remoteCTRLframeRate2_;
00079 enum SCmodType { SCmodNone,SCmodPPort,SCmodLed,SCmodSerial, SCmodPPort2};
00080 QCamComboBox * SCmodSelector_;
00081 QLineEdit * longExposureTime_;
00082 QProgressBar * exposureTimeLeft_;
00083 QLCDNumber * exposureTime_;
00084 int multiplicateur_;
00085 int skippedFrame_;
00086 int type_;
00087 SCmod * SCmodCtrl_;
00088
00089 public slots:
00090 void setGain(int value);
00091 void setExposure(int value);
00092 void setCompression(int value);
00093 void setNoiseRemoval(int value);
00094 void setSharpness(int value);
00100 void setBestQuality();
00101 void setGama(int value);
00102 void setFrameRate(int value);
00103 void setSCmod(int value);
00104 void setLongExposureTime(const QString& str);
00105 void setFrameRateMultiplicateur(int value);
00106 void setWhiteBalanceMode(int val);
00107 void setWhiteBalanceRed(int val);
00108 void setWhiteBalanceBlue(int val);
00109 void saveSettings();
00110 void restoreSettings();
00111 void restoreFactorySettings();
00112 void setLiveWhiteBalance(bool val);
00113 void setBackLight(bool val);
00114 void setFlicker(bool val);
00115
00116 protected slots:
00117 bool updateFrame();
00118 signals:
00119 void gainChange(int);
00120 void exposureChange(int);
00121 void compressionChange(int);
00122 void noiseRemovalChange(int);
00123 void sharpnessChange(int);
00124 void gamaChange(int);
00125 void frameRateChange(int);
00126 void frameRateMultiplicateurChange(int);
00127 void exposureTime(double);
00128 void whiteBalanceModeChange(int);
00129 void whiteBalanceRedChange(int);
00130 void whiteBalanceBlueChange(int);
00131 friend class SCmodTucLed;
00132 friend class SCmoduSC2Led;
00133 };
00134
00135 #endif