00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _PIXMAPLABEL_H_
00022 #define _PIXMAPLABEL_H_
00023
00024 #include <QtGui/QWidget>
00025 #include <QtGui/QPixmap>
00026
00030 class PixmapLabel : public QWidget
00031 {
00032 Q_OBJECT
00033
00034 private:
00035 QPixmap m_pixmap;
00036 qreal m_scale_factor;
00037
00038 qreal m_scale_min;
00039 qreal m_scale_max;
00040 qreal m_scale_step;
00041
00042 bool m_select;
00043 QPoint m_select_start, m_select_end;
00044
00045 public:
00051 PixmapLabel( QWidget* _parent = 0, Qt::WFlags _flags = 0 );
00052
00057 const QPixmap& pixmap() const { return m_pixmap; }
00062 qreal scaleFactor() const { return m_scale_factor; }
00067 qreal scaleMin() const { return m_scale_min; }
00072 qreal scaleMax() const { return m_scale_max; }
00077 qreal scaleStep() const { return m_scale_step; }
00078
00084 void setPixmap( const QPixmap& _pixmap, qreal _scale_factor );
00089 void setScaleMin( qreal _scale_min ) { m_scale_min = _scale_min; if( m_scale_factor < m_scale_min ) updateScale( m_scale_min ); }
00094 void setScaleMax( qreal _scale_max ) { m_scale_max = _scale_max; if( m_scale_factor > m_scale_max ) updateScale( m_scale_max ); }
00099 void setScaleStep( qreal _scale_step ) { m_scale_step = _scale_step; }
00100
00101
00102 protected:
00103 virtual void paintEvent( QPaintEvent * _event );
00104 virtual void wheelEvent( QWheelEvent * _event );
00105 virtual void mouseMoveEvent( QMouseEvent * _event );
00106 virtual void mousePressEvent( QMouseEvent * _event );
00107 virtual void mouseReleaseEvent( QMouseEvent * _event );
00108
00109 public slots:
00114 void updatePixmap( const QPixmap& _pixmap );
00119 void updateScale( qreal _scale_factor );
00120
00121 signals:
00128 void updated( qreal _scale_factor, qreal _scale, QPoint _position );
00134 void selected( QPointF _select_start, QPointF _select_end );
00135
00136 };
00137
00138 #endif //_PIXMAPLABEL_H_