Qwt Polar User's Guide 1.0.0
|
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