00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_ABSTRACT_SCALE_DRAW_H
00011 #define QWT_ABSTRACT_SCALE_DRAW_H
00012
00013 #include "qwt_global.h"
00014 #include "qwt_scale_div.h"
00015 #include "qwt_text.h"
00016
00017
00018 #if QT_VERSION < 0x040000
00019 class QColorGroup;
00020 #else
00021 class QPalette;
00022 #endif
00023 class QPainter;
00024 class QFont;
00025 class QwtScaleTransformation;
00026 class QwtScaleMap;
00027
00037 class QWT_EXPORT QwtAbstractScaleDraw
00038 {
00039 public:
00040
00041 enum ScaleComponent
00042 {
00049 Backbone = 1,
00050 Ticks = 2,
00051 Labels = 4
00052 };
00053
00054 QwtAbstractScaleDraw();
00055 QwtAbstractScaleDraw( const QwtAbstractScaleDraw & );
00056 virtual ~QwtAbstractScaleDraw();
00057
00058 QwtAbstractScaleDraw &operator=(const QwtAbstractScaleDraw &);
00059
00060 void setScaleDiv(const QwtScaleDiv &s);
00061 const QwtScaleDiv& scaleDiv() const;
00062
00063 void setTransformation(const QwtScaleTransformation&);
00064 const QwtScaleMap &map() const;
00065
00066 void enableComponent(ScaleComponent, bool enable = true);
00067 bool hasComponent(ScaleComponent) const;
00068
00069 void setTickLength(QwtScaleDiv::TickType, int length);
00070 int tickLength(QwtScaleDiv::TickType) const;
00071 int majTickLength() const;
00072
00073 void setSpacing(int margin);
00074 int spacing() const;
00075
00076 #if QT_VERSION < 0x040000
00077 virtual void draw(QPainter *, const QColorGroup &) const;
00078 #else
00079 virtual void draw(QPainter *, const QPalette &) const;
00080 #endif
00081
00082 virtual QwtText label(double) const;
00083
00093 virtual int extent(const QPen &, const QFont &) const = 0;
00094
00095 void setMinimumExtent(int);
00096 int minimumExtent() const;
00097
00098 protected:
00108 virtual void drawTick(QPainter *painter, double value, int len) const = 0;
00109
00116 virtual void drawBackbone(QPainter *painter) const = 0;
00117
00126 virtual void drawLabel(QPainter *painter, double value) const = 0;
00127
00128 QwtScaleMap &scaleMap();
00129
00130 void invalidateCache();
00131 const QwtText &tickLabel(const QFont &, double value) const;
00132
00133 private:
00134 int operator==(const QwtAbstractScaleDraw &) const;
00135 int operator!=(const QwtAbstractScaleDraw &) const;
00136
00137 class PrivateData;
00138 PrivateData *d_data;
00139 };
00140
00141 #endif