00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_PLOT_ITEM_H
00011 #define QWT_PLOT_ITEM_H
00012
00013 #include "qwt_global.h"
00014 #include "qwt_legend_itemmanager.h"
00015 #include "qwt_text.h"
00016 #include "qwt_double_rect.h"
00017
00018 class QString;
00019 class QRect;
00020 class QPainter;
00021 class QWidget;
00022 class QwtPlot;
00023 class QwtLegend;
00024 class QwtScaleMap;
00025 class QwtScaleDiv;
00026
00031 class QWT_EXPORT QwtPlotItem: public QwtLegendItemManager
00032 {
00033 public:
00034 enum RttiValues
00035 {
00036 Rtti_PlotItem = 0,
00037
00038 Rtti_PlotGrid,
00039 Rtti_PlotScale,
00040 Rtti_PlotMarker,
00041 Rtti_PlotCurve,
00042 Rtti_PlotHistogram,
00043 Rtti_PlotSpectrogram,
00044 Rtti_PlotSVG,
00045
00046 Rtti_PlotUserItem = 1000
00047 };
00048
00049 enum ItemAttribute
00050 {
00051 Legend = 1,
00052 AutoScale = 2
00053 };
00054
00055 #if QT_VERSION >= 0x040000
00056 enum RenderHint
00057 {
00058 RenderAntialiased = 1
00059 };
00060 #endif
00061
00062 explicit QwtPlotItem(const QwtText &title = QwtText());
00063 virtual ~QwtPlotItem();
00064
00065 void attach(QwtPlot *plot);
00066
00074 void detach() { attach(NULL); }
00075
00076 QwtPlot *plot() const;
00077
00078 void setTitle(const QString &title);
00079 void setTitle(const QwtText &title);
00080 const QwtText &title() const;
00081
00082 virtual int rtti() const;
00083
00084 void setItemAttribute(ItemAttribute, bool on = true);
00085 bool testItemAttribute(ItemAttribute) const;
00086
00087 #if QT_VERSION >= 0x040000
00088 void setRenderHint(RenderHint, bool on = true);
00089 bool testRenderHint(RenderHint) const;
00090 #endif
00091
00092 double z() const;
00093 void setZ(double z);
00094
00095 void show();
00096 void hide();
00097 virtual void setVisible(bool);
00098 bool isVisible () const;
00099
00100 void setAxis(int xAxis, int yAxis);
00101
00102 void setXAxis(int axis);
00103 int xAxis() const;
00104
00105 void setYAxis(int axis);
00106 int yAxis() const;
00107
00108 virtual void itemChanged();
00109
00118 virtual void draw(QPainter *painter,
00119 const QwtScaleMap &xMap, const QwtScaleMap &yMap,
00120 const QRect &canvasRect) const = 0;
00121
00122 virtual QwtDoubleRect boundingRect() const;
00123
00124 virtual void updateLegend(QwtLegend *) const;
00125 virtual void updateScaleDiv(const QwtScaleDiv&,
00126 const QwtScaleDiv&);
00127
00128 virtual QWidget *legendItem() const;
00129
00130 QwtDoubleRect scaleRect(const QwtScaleMap &, const QwtScaleMap &) const;
00131 QRect paintRect(const QwtScaleMap &, const QwtScaleMap &) const;
00132
00133 QRect transform(const QwtScaleMap &, const QwtScaleMap &,
00134 const QwtDoubleRect&) const;
00135 QwtDoubleRect invTransform(const QwtScaleMap &, const QwtScaleMap &,
00136 const QRect&) const;
00137
00138 private:
00139
00140 QwtPlotItem( const QwtPlotItem & );
00141 QwtPlotItem &operator=( const QwtPlotItem & );
00142
00143 class PrivateData;
00144 PrivateData *d_data;
00145 };
00146
00147 #endif