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 class QPalette;
00018 class QPainter;
00019 class QFont;
00020 class QwtScaleTransformation;
00021 class QwtScaleMap;
00022
00032 class QWT_EXPORT QwtAbstractScaleDraw
00033 {
00034 public:
00035
00046 enum ScaleComponent
00047 {
00048 Backbone = 1,
00049 Ticks = 2,
00050 Labels = 4
00051 };
00052
00053 QwtAbstractScaleDraw();
00054 QwtAbstractScaleDraw( const QwtAbstractScaleDraw & );
00055 virtual ~QwtAbstractScaleDraw();
00056
00057 QwtAbstractScaleDraw &operator=(const QwtAbstractScaleDraw &);
00058
00059 void setScaleDiv(const QwtScaleDiv &s);
00060 const QwtScaleDiv& scaleDiv() const;
00061
00062 void setTransformation(QwtScaleTransformation *);
00063 const QwtScaleMap &map() const;
00064
00065 void enableComponent(ScaleComponent, bool enable = true);
00066 bool hasComponent(ScaleComponent) const;
00067
00068 void setTickLength(QwtScaleDiv::TickType, int length);
00069 int tickLength(QwtScaleDiv::TickType) const;
00070 int majTickLength() const;
00071
00072 void setSpacing(int margin);
00073 int spacing() const;
00074
00075 virtual void draw(QPainter *, const QPalette &) const;
00076
00077 virtual QwtText label(double) const;
00078
00088 virtual int extent(const QPen &, const QFont &) const = 0;
00089
00090 void setMinimumExtent(int);
00091 int minimumExtent() const;
00092
00093 QwtScaleMap &scaleMap();
00094
00095 protected:
00105 virtual void drawTick(QPainter *painter, double value, double len) const = 0;
00106
00113 virtual void drawBackbone(QPainter *painter) const = 0;
00114
00123 virtual void drawLabel(QPainter *painter, double value) const = 0;
00124
00125 void invalidateCache();
00126 const QwtText &tickLabel(const QFont &, double value) const;
00127
00128 private:
00129 int operator==(const QwtAbstractScaleDraw &) const;
00130 int operator!=(const QwtAbstractScaleDraw &) const;
00131
00132 class PrivateData;
00133 PrivateData *d_data;
00134 };
00135
00136 #endif