Qwt User's Guide 5.2.2

qwt_plot_item.h

00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * Qwt Widget Library
00003  * Copyright (C) 1997   Josef Wilgen
00004  * Copyright (C) 2002   Uwe Rathmann
00005  * 
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the Qwt License, Version 1.0
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 
00065 class QWT_EXPORT QwtPlotItem: public QwtLegendItemManager
00066 {
00067 public:
00074     enum RttiValues
00075     { 
00076         Rtti_PlotItem = 0,
00077 
00078         Rtti_PlotGrid,
00079         Rtti_PlotScale,
00080         Rtti_PlotMarker,
00081         Rtti_PlotCurve,
00082         Rtti_PlotHistogram,
00083         Rtti_PlotSpectrogram,
00084         Rtti_PlotSVG,
00085 
00086         Rtti_PlotUserItem = 1000
00087     };
00088 
00100     enum ItemAttribute
00101     {
00102         Legend = 1,
00103         AutoScale = 2
00104     };
00105 
00106 #if QT_VERSION >= 0x040000
00107 
00108     enum RenderHint
00109     {
00110         RenderAntialiased = 1
00111     };
00112 #endif
00113 
00114     explicit QwtPlotItem(const QwtText &title = QwtText());
00115     virtual ~QwtPlotItem();
00116 
00117     void attach(QwtPlot *plot);
00118 
00126     void detach() { attach(NULL); }
00127 
00128     QwtPlot *plot() const;
00129     
00130     void setTitle(const QString &title);
00131     void setTitle(const QwtText &title);
00132     const QwtText &title() const;
00133 
00134     virtual int rtti() const;
00135 
00136     void setItemAttribute(ItemAttribute, bool on = true);
00137     bool testItemAttribute(ItemAttribute) const;
00138 
00139 #if QT_VERSION >= 0x040000
00140     void setRenderHint(RenderHint, bool on = true);
00141     bool testRenderHint(RenderHint) const;
00142 #endif
00143 
00144     double z() const; 
00145     void setZ(double z);
00146 
00147     void show();
00148     void hide();
00149     virtual void setVisible(bool);
00150     bool isVisible () const;
00151 
00152     void setAxis(int xAxis, int yAxis);
00153 
00154     void setXAxis(int axis);
00155     int xAxis() const;
00156 
00157     void setYAxis(int axis);
00158     int yAxis() const;
00159 
00160     virtual void itemChanged();
00161 
00170     virtual void draw(QPainter *painter, 
00171         const QwtScaleMap &xMap, const QwtScaleMap &yMap,
00172         const QRect &canvasRect) const = 0;
00173 
00174     virtual QwtDoubleRect boundingRect() const;
00175 
00176     virtual void updateLegend(QwtLegend *) const;
00177     virtual void updateScaleDiv(const QwtScaleDiv&,
00178         const QwtScaleDiv&);
00179 
00180     virtual QWidget *legendItem() const;
00181 
00182     QwtDoubleRect scaleRect(const QwtScaleMap &, const QwtScaleMap &) const;
00183     QRect paintRect(const QwtScaleMap &, const QwtScaleMap &) const;
00184     
00185     QRect transform(const QwtScaleMap &, const QwtScaleMap &, 
00186         const QwtDoubleRect&) const; 
00187     QwtDoubleRect invTransform(const QwtScaleMap &, const QwtScaleMap &,
00188         const QRect&) const; 
00189 
00190 private:
00191     // Disabled copy constructor and operator=
00192     QwtPlotItem( const QwtPlotItem & );
00193     QwtPlotItem &operator=( const QwtPlotItem & );
00194 
00195     class PrivateData;
00196     PrivateData *d_data;
00197 };
00198             
00199 #endif