Main Page | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members | Related Pages

qwt_scldraw.h

Go to the documentation of this file.
00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * Qwt Widget Library
00003  * Copyright (C) 1997   Josef Wilgen
00004  * Copyright (C) 2002   Uwe Rathmann
00005  * 
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the Qwt License, Version 1.0
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 
00072     const QwtScaleDiv& scaleDiv() const { return d_scldiv; }
00073     int maxWidth(const QPen &pen, const QFontMetrics &fm) const;
00074     int maxHeight(const QPen &pen, const QFontMetrics &fm) const;
00075 
00076     void minBorderDist(const QFontMetrics &fm, int &start, int &end) const;
00077     int minLabelDist(const QFontMetrics &fm) const;
00078 
00079     int minHeight(const QPen &pen, const QFontMetrics &fm) const; 
00080     int minWidth(const QPen &pen, const QFontMetrics &fm) const; 
00081     void labelFormat(char &f, int &prec, int &fieldwidth) const;
00082     int labelAlignment() const;
00083     double labelRotation() const;
00084     void tickLength(unsigned int &minLen, 
00085         unsigned int &medLen, unsigned int &majLen) const;
00086     unsigned int majTickLength() const;
00087         
00088     virtual void draw(QPainter *p) const;
00089     virtual QString label(double) const;
00090 
00091 protected:
00092     virtual void labelPlacement( const QFontMetrics &, double val,
00093         QPoint &pos, int &alignment, double &rotation) const;
00094     virtual int maxLabelHeight(const QFontMetrics &) const;
00095     virtual int maxLabelWidth(const QFontMetrics &) const;
00096     QRect labelBoundingRect(
00097         const QFontMetrics &, double val) const;
00098 
00099     void drawTick(QPainter *p, double val, int len) const;
00100     void drawBackbone(QPainter *p) const;
00101     void drawLabel(QPainter *p, double val) const;
00102 
00103     QWMatrix labelWorldMatrix(const QFontMetrics &,
00104         const QPoint &, int alignment, double rotation, 
00105         const QString &) const;
00106         
00107 private:
00108     int d_options;
00109 
00110     QwtScaleDiv d_scldiv;
00111     Orientation d_orient;
00112         
00113     int d_xorg;
00114     int d_yorg;
00115     int d_len;
00116         
00117     unsigned int d_hpad;
00118     unsigned int d_vpad;
00119         
00120     unsigned int d_medLen;
00121     unsigned int d_majLen;
00122     unsigned int d_minLen;
00123 
00124     int d_minAngle;
00125     int d_maxAngle;
00126 
00127     double d_xCenter;
00128     double d_yCenter;
00129     double d_radius;
00130 
00131     char d_fmt;
00132     int d_prec;
00133     int d_fieldwidth;
00134 
00135     int d_labelAlignment;
00136     double d_labelRotation;
00137 };
00138 
00139 #endif

Generated on Fri Nov 7 14:11:46 2003 for Qwt Developer's Guide by doxygen 1.3.2