QCamDisplay.hpp

00001 #ifndef _QCamDisplay_hpp_
00002 #define _QCamDisplay_hpp_
00003 
00004 #include "QCamClient.hpp"
00005 #include "QCamFrame.hpp"
00006 #include <qwidget.h>
00007 #include "../config.h"
00008 
00009 class QCam;
00010 class QPainter;
00011 class QVBox;
00012 class QCamComboBox;
00013 class QCamDisplayImpl;
00014 class QCamSlider;
00015 class QHBox;
00016 class QLabel;
00017 
00020 class QCamDisplay : public QCamClient {
00021    Q_OBJECT
00022    void commonInit(QWidget * parent);
00023 public:
00024    QCamDisplay(QWidget * parent=NULL);
00025    QCamDisplay(QCam &, QWidget * parent=NULL);
00026    virtual ~QCamDisplay();
00027    QWidget & widget();
00028    QCamFrame yuvFrame() const { return yuvFrame_;}
00029    enum CrossType {
00030       None,
00031       Cross,
00032       Circle
00033    };
00034    enum DisplayMode {
00035       Color,
00036       Gray,
00037       Negate,
00038       FalseColor
00039    };
00040    static const int defaultLum_;
00041 public slots:
00042    void setCross(CrossType t);
00043    void setDisplayMode(DisplayMode t);  
00044 protected:
00045    void camConnected();
00046 protected slots: 
00047    void newFrame();
00048    void setCross(int t);
00049    void setDisplayMode(int t);
00050    void setCrossLum(int l);
00051 private:
00052    void setCaption();
00053    QVBox * mainWidget_;
00054    QCamDisplayImpl * widget_;
00055    QHBox * buttonsContainer_;
00056    QLabel * crossLabel_;
00057    QCamSlider * crossLumSlider_;
00058    QCamComboBox * crossButton_;
00059    QCamComboBox * displayModeButton_;
00060    QCamFrame yuvFrame_;
00061    int crossLum_;
00062 #if HAVE_SDL_H
00063    static bool SDL_on_;
00064    bool use_SDL_;
00065    friend class QCamDisplayImplSDL;
00066 #endif
00067    friend class QCamDisplayImpl;
00068 };
00069 
00071 class QCamDisplayImpl : public QWidget {
00072    Q_OBJECT;
00073 protected slots:
00074    virtual void setCross(QCamDisplay::CrossType);
00075    virtual void setDisplayMode(QCamDisplay::DisplayMode);
00076    virtual void setCrossLum(int l);
00077 protected:
00078    QCamDisplayImpl(QCamDisplay &, QWidget * parent);
00079    virtual void paintEvent(QPaintEvent * ev)=0;
00080    virtual void resizeEvent(QResizeEvent*ev);
00081    QSize sizeHint () const;
00082    void mouseDoubleClickEvent ( QMouseEvent * e );
00084    void annotate(QPainter &);
00085 protected:
00086    int crossCenterX_;
00087    int crossCenterY_;
00088    QCamDisplay & camClient_;
00089    QCamDisplay::CrossType currentCross_;
00090    QCamDisplay::DisplayMode displayMode_;
00091    
00092    QPainter * painter_;
00093    QPen * pen_;
00094    bool firtsFrameReceived_;
00095    
00096    friend class QCamDisplay;
00097 };
00098 
00101 class QCamDisplayImplQT : public QCamDisplayImpl {
00102    Q_OBJECT;
00103 private:
00104    QCamDisplayImplQT(QCamDisplay &, QWidget * parent);
00105 protected:
00106    void paintEvent(QPaintEvent * ev);
00107 private:
00108    friend class QCamDisplay;
00109 };
00110 
00111 
00112 
00113 #include "QCamDisplayImplSDL.hpp"
00114 
00115 #endif

Generated on Sat Oct 27 09:21:03 2007 for QastroCam by  doxygen 1.5.1