# qwt_thermo.h

    00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
    00002  * Qwt Widget Library
    00003  * Copyright (C) 1997   Josef Wilgen
    00004  * Copyright (C) 2002   Uwe Rathmann
    00005  *
    00006  * This library is free software; you can redistribute it and/or
    00007  * modify it under the terms of the Qwt License, Version 1.0
    00008  *****************************************************************************/
    00009
    00010 #ifndef QWT_THERMO_H
    00011 #define QWT_THERMO_H
    00012
    00013 #include <qwidget.h>
    00014 #include <qcolor.h>
    00015 #include <qfont.h>
    00016 #include <qrect.h>
    00017 #include "qwt_global.h"
    00018 #include "qwt_abstract_scale.h"
    00019
    00020 class QwtScaleDraw;
    00021
    00069 class QWT_EXPORT QwtThermo: public QWidget, public QwtAbstractScale
    00070 {
    00071     Q_OBJECT
    00072
    00073     Q_ENUMS( ScalePos )
    00074
    00075     Q_PROPERTY( QBrush alarmBrush READ alarmBrush WRITE setAlarmBrush )
    00076     Q_PROPERTY( QColor alarmColor READ alarmColor WRITE setAlarmColor )
    00077     Q_PROPERTY( bool alarmEnabled READ alarmEnabled WRITE setAlarmEnabled )
    00078     Q_PROPERTY( double alarmLevel READ alarmLevel WRITE setAlarmLevel )
    00079     Q_PROPERTY( ScalePos scalePosition READ scalePosition
    00080         WRITE setScalePosition )
    00081     Q_PROPERTY( int borderWidth READ borderWidth WRITE setBorderWidth )
    00082     Q_PROPERTY( QBrush fillBrush READ fillBrush WRITE setFillBrush )
    00083     Q_PROPERTY( QColor fillColor READ fillColor WRITE setFillColor )
    00084     Q_PROPERTY( double maxValue READ maxValue WRITE setMaxValue )
    00085     Q_PROPERTY( double minValue READ minValue WRITE setMinValue )
    00086     Q_PROPERTY( int pipeWidth READ pipeWidth WRITE setPipeWidth )
    00087     Q_PROPERTY( double value READ value WRITE setValue )
    00088
    00089 public:
    00090     /*
    00091       Scale position. QwtThermo tries to enforce valid combinations of its
    00092       orientation and scale position:
    00093       - Qt::Horizonal combines with NoScale, TopScale and BottomScale
    00094       - Qt::Vertical combines with NoScale, LeftScale and RightScale
    00095
    00096       \sa setOrientation(), setScalePosition()
    00097     */
    00098     enum ScalePos
    00099     {
    00100         NoScale,
    00101         LeftScale,
    00102         RightScale,
    00103         TopScale,
    00104         BottomScale
    00105     };
    00106
    00107     explicit QwtThermo(QWidget *parent = NULL);
    00108 #if QT_VERSION < 0x040000
    00109     explicit QwtThermo(QWidget *parent, const char *name);
    00110 #endif
    00111     virtual ~QwtThermo();
    00112
    00113     void setOrientation(Qt::Orientation o, ScalePos s);
    00114
    00115     void setScalePosition(ScalePos s);
    00116     ScalePos scalePosition() const;
    00117
    00118     void setBorderWidth(int w);
    00119     int borderWidth() const;
    00120
    00121     void setFillBrush(const QBrush &b);
    00122     const QBrush &fillBrush() const;
    00123
    00124     void setFillColor(const QColor &c);
    00125     const QColor &fillColor() const;
    00126
    00127     void setAlarmBrush(const QBrush &b);
    00128     const QBrush &alarmBrush() const;
    00129
    00130     void setAlarmColor(const QColor &c);
    00131     const QColor &alarmColor() const;
    00132
    00133     void setAlarmLevel(double v);
    00134     double alarmLevel() const;
    00135
    00136     void setAlarmEnabled(bool tf);
    00137     bool alarmEnabled() const;
    00138
    00139     void setPipeWidth(int w);
    00140     int pipeWidth() const;
    00141
    00142     void setMaxValue(double v);
    00143     double maxValue() const;
    00144
    00145     void setMinValue(double v);
    00146     double minValue() const;
    00147
    00148     double value() const;
    00149
    00150     void setRange(double vmin, double vmax, bool lg = false);
    00151     void setMargin(int m);
    00152
    00153     virtual QSize sizeHint() const;
    00154     virtual QSize minimumSizeHint() const;
    00155
    00156     void setScaleDraw(QwtScaleDraw *);
    00157     const QwtScaleDraw *scaleDraw() const;
    00158
    00159 public slots:
    00160     void setValue(double val);
    00161
    00162 protected:
    00163     void draw(QPainter *p, const QRect& update_rect);
    00164     void drawThermo(QPainter *p);
    00165     void layoutThermo( bool update = true );
    00166     virtual void scaleChange();
    00167     virtual void fontChange(const QFont &oldFont);
    00168
    00169     virtual void paintEvent(QPaintEvent *e);
    00170     virtual void resizeEvent(QResizeEvent *e);
    00171
    00172     QwtScaleDraw *scaleDraw();
    00173
    00174 private:
    00175     void initThermo();
    00176     int transform(double v) const;
    00177
    00178     class PrivateData;
    00179     PrivateData *d_data;
    00180 };
    00181
    00182 #endif