Qwt Polar User's Guide 0.1.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 #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