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 virtual ~QwtAbstractScaleDraw();
00055
00056 void setScaleDiv( const QwtScaleDiv &s );
00057 const QwtScaleDiv& scaleDiv() const;
00058
00059 void setTransformation( QwtScaleTransformation * );
00060 const QwtScaleMap &map() const;
00061
00062 void enableComponent( ScaleComponent, bool enable = true );
00063 bool hasComponent( ScaleComponent ) const;
00064
00065 void setTickLength( QwtScaleDiv::TickType, double length );
00066 double tickLength( QwtScaleDiv::TickType ) const;
00067 double majTickLength() const;
00068
00069 void setSpacing( double margin );
00070 double spacing() const;
00071
00072 void setPenWidth( int width );
00073 int penWidth() const;
00074
00075 virtual void draw( QPainter *, const QPalette & ) const;
00076
00077 virtual QwtText label( double ) const;
00078
00088 virtual double extent( const QFont & ) const = 0;
00089
00090 void setMinimumExtent( double );
00091 double 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 QwtAbstractScaleDraw( const QwtAbstractScaleDraw & );
00130 QwtAbstractScaleDraw &operator=( const QwtAbstractScaleDraw & );
00131
00132 class PrivateData;
00133 PrivateData *d_data;
00134 };
00135
00136 #endif