00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_SCALE_WIDGET_H
00011 #define QWT_SCALE_WIDGET_H
00012
00013 #include <qwidget.h>
00014 #include <qfont.h>
00015 #include <qcolor.h>
00016 #include <qstring.h>
00017
00018 #include "qwt_global.h"
00019 #include "qwt_text.h"
00020 #include "qwt_scale_draw.h"
00021
00022 class QPainter;
00023 class QwtScaleTransformation;
00024 class QwtScaleDiv;
00025 class QwtColorMap;
00026
00034 class QWT_EXPORT QwtScaleWidget : public QWidget
00035 {
00036 Q_OBJECT
00037
00038 public:
00046 enum LayoutFlag
00047 {
00048 TitleInverted = 1
00049 };
00050
00051 explicit QwtScaleWidget(QWidget *parent = NULL);
00052 #if QT_VERSION < 0x040000
00053 explicit QwtScaleWidget(QWidget *parent, const char *name);
00054 #endif
00055 explicit QwtScaleWidget(QwtScaleDraw::Alignment, QWidget *parent = NULL);
00056 virtual ~QwtScaleWidget();
00057
00058 signals:
00060 void scaleDivChanged();
00061
00062 public:
00063 void setTitle(const QString &title);
00064 void setTitle(const QwtText &title);
00065 QwtText title() const;
00066
00067 void setLayoutFlag(LayoutFlag, bool on);
00068 bool testLayoutFlag(LayoutFlag) const;
00069
00070 void setBorderDist(int start, int end);
00071 int startBorderDist() const;
00072 int endBorderDist() const;
00073
00074 void getBorderDistHint(int &start, int &end) const;
00075
00076 void getMinBorderDist(int &start, int &end) const;
00077 void setMinBorderDist(int start, int end);
00078
00079 void setMargin(int);
00080 int margin() const;
00081
00082 void setSpacing(int td);
00083 int spacing() const;
00084
00085 void setPenWidth(int);
00086 int penWidth() const;
00087
00088 void setScaleDiv(QwtScaleTransformation *, const QwtScaleDiv &sd);
00089
00090 void setScaleDraw(QwtScaleDraw *);
00091 const QwtScaleDraw *scaleDraw() const;
00092 QwtScaleDraw *scaleDraw();
00093
00094 #if QT_VERSION < 0x040000
00095 void setLabelAlignment(int);
00096 #else
00097 void setLabelAlignment(Qt::Alignment);
00098 #endif
00099 void setLabelRotation(double rotation);
00100
00101 void setColorBarEnabled(bool);
00102 bool isColorBarEnabled() const;
00103
00104 void setColorBarWidth(int);
00105 int colorBarWidth() const;
00106
00107 void setColorMap(const QwtDoubleInterval &, const QwtColorMap &);
00108
00109 QwtDoubleInterval colorBarInterval() const;
00110 const QwtColorMap &colorMap() const;
00111
00112 virtual QSize sizeHint() const;
00113 virtual QSize minimumSizeHint() const;
00114
00115 int titleHeightForWidth(int width) const;
00116 int dimForLength(int length, const QFont &scaleFont) const;
00117
00118 void drawColorBar(QPainter *painter, const QRect &rect) const;
00119 void drawTitle(QPainter *painter, QwtScaleDraw::Alignment,
00120 const QRect &rect) const;
00121
00122 void setAlignment(QwtScaleDraw::Alignment);
00123 QwtScaleDraw::Alignment alignment() const;
00124
00125 QRect colorBarRect(const QRect&) const;
00126
00127 protected:
00128 virtual void paintEvent(QPaintEvent *e);
00129 virtual void resizeEvent(QResizeEvent *e);
00130
00131 #if QT_VERSION < 0x040000
00132 virtual void fontChange(const QFont &oldfont);
00133 #endif
00134
00135 void draw(QPainter *p) const;
00136
00137 void scaleChange();
00138 void layoutScale( bool update = true );
00139
00140 private:
00141 void initScale(QwtScaleDraw::Alignment);
00142
00143 class PrivateData;
00144 PrivateData *d_data;
00145 };
00146
00147 #endif