00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
#ifndef QWT_SCLDRAW_H
00011
#define QWT_SCLDRAW_H
00012
00013
#include <qstring.h>
00014
#include <qfont.h>
00015
#include <qrect.h>
00016
#include <qcolor.h>
00017
#include "qwt_global.h"
00018
#include "qwt_dimap.h"
00019
#include "qwt_scldiv.h"
00020
00021
class QPainter;
00022
00038 class QWT_EXPORT QwtScaleDraw:
public QwtDiMap
00039 {
00040
public:
00045 enum Orientation { Bottom, Top, Left, Right, Round };
00046
enum Option { None = 0, Backbone = 1 };
00047
00048 QwtScaleDraw();
00049
virtual ~QwtScaleDraw();
00050
00051
void setScale(
const QwtScaleDiv &s);
00052
void setScale(
double vmin,
double vmax,
int maxMajIntv,
int maxMinIntv,
00053
double step = 0.0,
int logarithmic = 0);
00054
00055
void setOptions(
int opt);
00056
int options() const;
00057
00058
void setGeometry(
int xorigin,
int yorigin,
int length, Orientation o);
00059
int x() const;
00060
int y() const;
00061
int length() const;
00062 Orientation orientation() const;
00063
00064
void setAngleRange(
double angle1,
double angle2);
00065
void setLabelFormat(
char f,
int prec,
int fieldwidth = 0);
00066
void setLabelAlignment(
int align);
00067
void setLabelRotation(
double rotation);
00068
void setTickLength(
unsigned int minLen,
00069
unsigned int medLen,
unsigned int majLen);
00070
00071
void setMargin(uint hMargin, uint vMargin);
00072
00074 const
QwtScaleDiv& scaleDiv()
const {
return d_scldiv; }
00075
int maxWidth(
const QPen &pen,
const QFontMetrics &fm)
const;
00076
int maxHeight(
const QPen &pen,
const QFontMetrics &fm)
const;
00077
00078
void minBorderDist(
const QFontMetrics &fm,
int &start,
int &end)
const;
00079
int minLabelDist(
const QFontMetrics &fm)
const;
00080
00081
int minHeight(
const QPen &pen,
const QFontMetrics &fm)
const;
00082
int minWidth(
const QPen &pen,
const QFontMetrics &fm)
const;
00083
void labelFormat(
char &f,
int &prec,
int &fieldwidth)
const;
00084
int labelAlignment() const;
00085
double labelRotation() const;
00086
void tickLength(
unsigned int &minLen,
00087
unsigned int &medLen,
unsigned int &majLen) const;
00088
unsigned int majTickLength() const;
00089
00090 virtual
void draw(QPainter *p) const;
00091 virtual QString label(
double) const;
00092
00093 protected:
00094 virtual
void labelPlacement( const QFontMetrics &,
double val,
00095 QPoint &pos,
int &alignment,
double &rotation) const;
00096 virtual
int maxLabelHeight(const QFontMetrics &) const;
00097 virtual
int maxLabelWidth(const QFontMetrics &) const;
00098 QRect labelBoundingRect(
00099 const QFontMetrics &,
double val) const;
00100
00101
void drawTick(QPainter *p,
double val,
int len) const;
00102
void drawBackbone(QPainter *p) const;
00103
void drawLabel(QPainter *p,
double val) const;
00104
00105 QWMatrix labelWorldMatrix(const QFontMetrics &,
00106 const QPoint &,
int alignment,
double rotation,
00107 const QString &) const;
00108
00109 private:
00110
int d_options;
00111
00112
QwtScaleDiv d_scldiv;
00113 Orientation d_orient;
00114
00115
int d_xorg;
00116
int d_yorg;
00117
int d_len;
00118
00119
unsigned int d_hpad;
00120
unsigned int d_vpad;
00121
00122
unsigned int d_medLen;
00123
unsigned int d_majLen;
00124
unsigned int d_minLen;
00125
00126
int d_minAngle;
00127
int d_maxAngle;
00128
00129
double d_xCenter;
00130
double d_yCenter;
00131
double d_radius;
00132
00133
char d_fmt;
00134
int d_prec;
00135
int d_fieldwidth;
00136
00137
int d_labelAlignment;
00138
double d_labelRotation;
00139
00140
00141
00142
00143
00144
00145
00146
00147
char d_formatBuffer[8];
00148 };
00149
00150 #endif