Qwt Polar User's Guide 1.0.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 
00017 class QPainter;
00018 class QPen;
00019 class QwtScaleMap;
00020 class QwtScaleDiv;
00021 class QwtRoundScaleDraw;
00022 class QwtScaleDraw;
00023 
00041 class QWT_POLAR_EXPORT QwtPolarGrid: public QwtPolarItem
00042 {
00043 public:
00052     enum DisplayFlag
00053     {
00058         SmartOriginLabel = 1,
00059 
00064         HideMaxRadiusLabel = 2,
00065 
00072         ClipAxisBackground = 4,
00073 
00078         SmartScaleDraw = 8,
00079 
00085         ClipGridLines = 16
00086     };
00087 
00089     typedef QFlags<DisplayFlag> DisplayFlags;
00090 
00095     enum GridAttribute
00096     {
00101         AutoScaling = 0x01
00102     };
00103 
00105     typedef QFlags<GridAttribute> GridAttributes;
00106 
00107     explicit QwtPolarGrid();
00108     virtual ~QwtPolarGrid();
00109 
00110     virtual int rtti() const;
00111 
00112     void setDisplayFlag( DisplayFlag, bool on = true );
00113     bool testDisplayFlag( DisplayFlag ) const;
00114 
00115     void setGridAttribute( GridAttribute, bool on = true );
00116     bool testGridAttribute( GridAttribute ) const;
00117 
00118     void showGrid( int scaleId, bool show = true );
00119     bool isGridVisible( int scaleId ) const;
00120 
00121     void showMinorGrid( int scaleId, bool show = true );
00122     bool isMinorGridVisible( int scaleId ) const;
00123 
00124     void showAxis( int axisId, bool show = true );
00125     bool isAxisVisible( int axisId ) const;
00126 
00127     void setPen( const QPen &p );
00128     void setFont( const QFont & );
00129 
00130     void setMajorGridPen( const QPen &p );
00131     void setMajorGridPen( int scaleId, const QPen &p );
00132     QPen majorGridPen( int scaleId ) const;
00133 
00134     void setMinorGridPen( const QPen &p );
00135     void setMinorGridPen( int scaleId, const QPen &p );
00136     QPen minorGridPen( int scaleId ) const;
00137 
00138     void setAxisPen( int axisId, const QPen &p );
00139     QPen axisPen( int axisId ) const;
00140 
00141     void setAxisFont( int axisId, const QFont &p );
00142     QFont axisFont( int axisId ) const;
00143 
00144     void setScaleDraw( int axisId, QwtScaleDraw * );
00145     const QwtScaleDraw *scaleDraw( int axisId ) const;
00146     QwtScaleDraw *scaleDraw( int axisId );
00147 
00148     void setAzimuthScaleDraw( QwtRoundScaleDraw * );
00149     const QwtRoundScaleDraw *azimuthScaleDraw() const;
00150     QwtRoundScaleDraw *azimuthScaleDraw();
00151 
00152     virtual void draw( QPainter *p,
00153         const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
00154         const QPointF &pole, double radius,
00155         const QRectF &rect ) const;
00156 
00157     virtual void updateScaleDiv( const QwtScaleDiv &azimuthMap,
00158         const QwtScaleDiv &radialMap, const QwtInterval & );
00159 
00160     virtual int marginHint() const;
00161 
00162 protected:
00163     void drawRays( QPainter *, const QRectF &,
00164         const QPointF &pole, double radius,
00165         const QwtScaleMap &azimuthMap, const QList<double> & ) const;
00166     void drawCircles( QPainter *, const QRectF &,
00167         const QPointF &pole, const QwtScaleMap &radialMap,
00168         const QList<double> & ) const;
00169 
00170     void drawAxis( QPainter *, int axisId ) const;
00171 
00172 private:
00173     void updateScaleDraws(
00174         const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
00175         const QPointF &pole, const double radius ) const;
00176 
00177 private:
00178     class GridData;
00179     class AxisData;
00180     class PrivateData;
00181     PrivateData *d_data;
00182 };
00183 
00184 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPolarGrid::DisplayFlags )
00185 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPolarGrid::GridAttributes )
00186 
00187 #endif