#ifndef _QCamAdd_hpp_ #define _QCamAdd_hpp_ #include #include "QCam.hpp" #include #include #include #include #include #include #define QCAM_ADD_COLOR class QCamSlider; class QImage; class QHBox; class QPushButton; class elementaryFrame; class QProgressBar; class QCamRadioBox; class QCheckBox; class QVGroupBox; class QCamAdd : public QCam { Q_OBJECT QCam * cam_; /** num total of buffer currently activated (they can not be all in use) */ int numOfActivatedBuffers_; /** num total of buffer currently in use */ int numOfActiveBuffers_; int curBuff_; int * integrationBuff_; int * integrationDarkBuff_; elementaryFrame ** frameHistory_; uchar * computedFrame_; uchar * computedDarkFrame_; mutable bool computedDarkFrameOk_; QSize curSize_; int maxYValue_; int minYValue_; #ifdef QCAM_ADD_COLOR int maxCrValue_; bool maxCrValueAutoSaturated_; #endif bool maxYValueAuto_; bool minYValueAuto_; static const int numOfBuffers_; mutable bool newIntegrationBuff_; mutable bool darkLoaded_; bool darkEnabled_; double (*funcDisplay_)(double); bool negateDisplay_; void allocBuff(const QSize &); void zeroBuff(const QSize & size); void clear(); void addFrame(const uchar *); void initRemoteControl(QWidget * remoteCTRL); bool writeFit(const QString & name,int * buff) const; bool loadFit(const QString & name,int * buff) const; bool loadDark() const; void integrateDark(bool darkEnabled); void integration2yuv(const int * integration, uchar * yuv ) const ; bool autoAlign_; /* for remote control */ QHBox * accumulationWidget_; QCamRadioBox *remoteCTRLnumOfActiveBuffer_; QProgressBar * bufferFill_; QPushButton * resetBufferFill_; QVGroupBox * displayOptions_; QCamSlider *remoteCTRLmaxYvalue_; QCamSlider *remoteCTRLminYvalue_; QCamRadioBox * modeDisplayButton_; QCheckBox * invDisplayButton_; QPushButton * remoteDarkCapture_; QPushButton * remoteDarkEnable_; QHBox * darkButtons_; QPushButton * autoModeButton_; QPushButton * recenterButton_; QHBox * autoAlignButtons_; public: QCamAdd(QCam* cam); const QSize & size() const { return cam_->size();} void resize(const QSize & s) {cam_->resize(s);} const uchar * yuvFrame() const; ~QCamAdd(); public slots: void setNumOfBuffer(int nbuf); void setMaxYvalue(int); void setMinYvalue(int); void writeDark(); void useDark(bool); void useAutoAlign(bool); void autoAlignRecenter(); void resetBufferFill(); void modeDisplay(int val); void negateDisplay(bool val) {negateDisplay_=val;} signals: void numOfBufferChange(int); void maxYValueChange(int); void minYValueChange(int); private slots: void addNewFrame(); }; #endif