00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_SCALE_DRAW_H
00011 #define QWT_SCALE_DRAW_H
00012
00013 #include "qwt_global.h"
00014 #include "qwt_abstract_scale_draw.h"
00015 #include <qpoint.h>
00016 #include <qrect.h>
00017 #include <qtransform.h>
00018
00032 class QWT_EXPORT QwtScaleDraw: public QwtAbstractScaleDraw
00033 {
00034 public:
00039 enum Alignment { BottomScale, TopScale, LeftScale, RightScale };
00040
00041 QwtScaleDraw();
00042 virtual ~QwtScaleDraw();
00043
00044 void getBorderDistHint( const QFont &, int &start, int &end ) const;
00045 int minLabelDist( const QFont & ) const;
00046
00047 int minLength( const QFont & ) const;
00048 virtual double extent( const QFont & ) const;
00049
00050 void move( double x, double y );
00051 void move( const QPointF & );
00052 void setLength( double length );
00053
00054 Alignment alignment() const;
00055 void setAlignment( Alignment );
00056
00057 Qt::Orientation orientation() const;
00058
00059 QPointF pos() const;
00060 double length() const;
00061
00062 void setLabelAlignment( Qt::Alignment );
00063 Qt::Alignment labelAlignment() const;
00064
00065 void setLabelRotation( double rotation );
00066 double labelRotation() const;
00067
00068 int maxLabelHeight( const QFont & ) const;
00069 int maxLabelWidth( const QFont & ) const;
00070
00071 QPointF labelPosition( double val ) const;
00072
00073 QRectF labelRect( const QFont &, double val ) const;
00074 QSizeF labelSize( const QFont &, double val ) const;
00075
00076 QRect boundingLabelRect( const QFont &, double val ) const;
00077
00078 protected:
00079 QTransform labelTransformation( const QPointF &, const QSizeF & ) const;
00080
00081 virtual void drawTick( QPainter *, double val, double len ) const;
00082 virtual void drawBackbone( QPainter * ) const;
00083 virtual void drawLabel( QPainter *, double val ) const;
00084
00085 private:
00086 QwtScaleDraw( const QwtScaleDraw & );
00087 QwtScaleDraw &operator=( const QwtScaleDraw &other );
00088
00089 void updateMap();
00090
00091 class PrivateData;
00092 PrivateData *d_data;
00093 };
00094
00099 inline void QwtScaleDraw::move( double x, double y )
00100 {
00101 move( QPointF( x, y ) );
00102 }
00103
00104 #endif