Qwt Polar User's Guide  0.1.0
qwt_polar_grid.h
00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * QwtPolar Widget Library
00003  * Copyright (C) 2008   Uwe Rathmann
00004  * 
00005  * This library is free software; you can redistribute it and/or
00006  * modify it under the terms of the Qwt License, Version 1.0
00007  *****************************************************************************/
00008 
00009 #ifndef QWT_POLAR_GRID_H
00010 #define QWT_POLAR_GRID_H
00011 
00012 #include "qwt_polar_global.h"
00013 #include "qwt_polar.h"
00014 #include "qwt_polar_item.h"
00015 #include "qwt_polar_plot.h"
00016 #include "qwt_scale_div.h"
00017 
00018 class QPainter;
00019 class QPen;
00020 class QwtScaleMap;
00021 class QwtScaleDiv;
00022 class QwtRoundScaleDraw;
00023 class QwtScaleDraw;
00024 
00042 class QWT_POLAR_EXPORT QwtPolarGrid: public QwtPolarItem
00043 {
00044 public:
00070     enum DisplayFlag
00071     {
00072         SmartOriginLabel = 1,
00073         HideMaxRadiusLabel = 2,
00074         ClipAxisBackground = 4,
00075         SmartScaleDraw = 8,
00076         ClipGridLines = 16
00077     };
00078 
00086     enum GridAttribute
00087     {
00088         AutoScaling = 1
00089     };
00090 
00091     explicit QwtPolarGrid();
00092     virtual ~QwtPolarGrid();
00093 
00094     virtual int rtti() const;
00095 
00096     void setDisplayFlag(DisplayFlag, bool on = true);
00097     bool testDisplayFlag(DisplayFlag) const;
00098 
00099     void setGridAttribute(GridAttribute, bool on = true);
00100     bool testGridAttribute(GridAttribute) const;
00101 
00102     void showGrid(int scaleId, bool show = true);
00103     bool isGridVisible(int scaleId) const;
00104 
00105     void showMinorGrid(int scaleId, bool show = true);
00106     bool isMinorGridVisible(int scaleId) const;
00107 
00108     void showAxis(int axisId, bool show = true);
00109     bool isAxisVisible(int axisId) const;
00110 
00111     void setPen(const QPen &p);
00112     void setFont(const QFont &);
00113 
00114     void setMajorGridPen(const QPen &p);
00115     void setMajorGridPen(int scaleId, const QPen &p);
00116     QPen majorGridPen(int scaleId) const;
00117 
00118     void setMinorGridPen(const QPen &p);
00119     void setMinorGridPen(int scaleId, const QPen &p);
00120     QPen minorGridPen(int scaleId) const;
00121 
00122     void setAxisPen(int axisId, const QPen &p);
00123     QPen axisPen(int axisId) const;
00124 
00125     void setAxisFont(int axisId, const QFont &p);
00126     QFont axisFont(int axisId) const;
00127 
00128     virtual void draw(QPainter *p, 
00129         const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
00130         const QwtDoublePoint &pole, double radius,
00131         const QwtDoubleRect &rect) const;
00132 
00133     virtual void updateScaleDiv(const QwtScaleDiv &azimuthMap,
00134         const QwtScaleDiv &radialMap, const QwtDoubleInterval &);
00135 
00136     virtual int marginHint() const;
00137 
00138 protected:
00139     void drawRays(QPainter *, const QwtDoubleRect &,
00140         const QwtDoublePoint &pole, double radius, 
00141         const QwtScaleMap &azimuthMap, const QwtValueList &) const;
00142     void drawCircles(QPainter *, const QwtDoubleRect &,
00143         const QwtDoublePoint &pole, const QwtScaleMap &radialMap, 
00144         const QwtValueList &) const;
00145 
00146     void drawAxis(QPainter *, int axisId) const;
00147 
00148 private:
00149     void updateScaleDraws( 
00150         const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap, 
00151         const QwtDoublePoint &pole, const double radius) const;
00152 
00153 private:
00154     class GridData;
00155     class AxisData;
00156     class PrivateData;
00157     PrivateData *d_data;
00158 };
00159 
00160 #endif