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
00031 class QWT_EXPORT QwtScaleDraw: public QwtAbstractScaleDraw
00032 {
00033 public:
00038 enum Alignment { BottomScale, TopScale, LeftScale, RightScale };
00039
00040 QwtScaleDraw();
00041 QwtScaleDraw(const QwtScaleDraw &);
00042
00043 virtual ~QwtScaleDraw();
00044
00045 QwtScaleDraw &operator=(const QwtScaleDraw &other);
00046
00047 void getBorderDistHint(const QFont &, int &start, int &end) const;
00048 int minLabelDist(const QFont &) const;
00049
00050 int minLength(const QPen &, const QFont &) const;
00051 virtual int extent(const QPen &, const QFont &) const;
00052
00053 void move(double x, double y);
00054 void move(const QPointF &);
00055 void setLength(double length);
00056
00057 Alignment alignment() const;
00058 void setAlignment(Alignment);
00059
00060 Qt::Orientation orientation() const;
00061
00062 QPointF pos() const;
00063 double length() const;
00064
00065 void setLabelAlignment(Qt::Alignment);
00066 Qt::Alignment labelAlignment() const;
00067
00068 void setLabelRotation(double rotation);
00069 double labelRotation() const;
00070
00071 int maxLabelHeight(const QFont &) const;
00072 int maxLabelWidth(const QFont &) const;
00073
00074 QPointF labelPosition(double val) const;
00075
00076 QRectF labelRect(const QFont &, double val) const;
00077 QSizeF labelSize(const QFont &, double val) const;
00078
00079 QRect boundingLabelRect(const QFont &, double val) const;
00080
00081 protected:
00082
00083 QMatrix labelMatrix(const QPointF &, const QSizeF &) const;
00084
00085 virtual void drawTick(QPainter *p, double val, double len) const;
00086 virtual void drawBackbone(QPainter *p) const;
00087 virtual void drawLabel(QPainter *p, double val) const;
00088
00089 private:
00090 void updateMap();
00091
00092 class PrivateData;
00093 PrivateData *d_data;
00094 };
00095
00100 inline void QwtScaleDraw::move(double x, double y)
00101 {
00102 move(QPointF(x, y));
00103 }
00104
00105 #endif