Qwt User's Guide 6.0.0

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 <qrect.h>
00017 
00018 class QString;
00019 class QPainter;
00020 class QWidget;
00021 class QwtPlot;
00022 class QwtLegend;
00023 class QwtScaleMap;
00024 class QwtScaleDiv;
00025 
00064 class QWT_EXPORT QwtPlotItem: public QwtLegendItemManager
00065 {
00066 public:
00073     enum RttiValues
00074     {
00075         Rtti_PlotItem = 0,
00076 
00077         Rtti_PlotGrid,
00078         Rtti_PlotScale,
00079         Rtti_PlotMarker,
00080         Rtti_PlotCurve,
00081         Rtti_PlotSpectroCurve,
00082         Rtti_PlotIntervalCurve,
00083         Rtti_PlotHistogram,
00084         Rtti_PlotSpectrogram,
00085         Rtti_PlotSVG,
00086 
00087         Rtti_PlotUserItem = 1000
00088     };
00089 
00094     enum ItemAttribute
00095     {
00097         Legend = 0x01,
00098 
00103         AutoScale = 0x02
00104     };
00105 
00107     typedef QFlags<ItemAttribute> ItemAttributes;
00108 
00110     enum RenderHint
00111     {
00113         RenderAntialiased = 1
00114     };
00115 
00117     typedef QFlags<RenderHint> RenderHints;
00118 
00119     explicit QwtPlotItem( const QwtText &title = QwtText() );
00120     virtual ~QwtPlotItem();
00121 
00122     void attach( QwtPlot *plot );
00123     void detach();
00124 
00125     QwtPlot *plot() const;
00126 
00127     void setTitle( const QString &title );
00128     void setTitle( const QwtText &title );
00129     const QwtText &title() const;
00130 
00131     virtual int rtti() const;
00132 
00133     void setItemAttribute( ItemAttribute, bool on = true );
00134     bool testItemAttribute( ItemAttribute ) const;
00135 
00136     void setRenderHint( RenderHint, bool on = true );
00137     bool testRenderHint( RenderHint ) const;
00138 
00139     double z() const;
00140     void setZ( double z );
00141 
00142     void show();
00143     void hide();
00144     virtual void setVisible( bool );
00145     bool isVisible () const;
00146 
00147     void setAxes( int xAxis, int yAxis );
00148 
00149     void setXAxis( int axis );
00150     int xAxis() const;
00151 
00152     void setYAxis( int axis );
00153     int yAxis() const;
00154 
00155     virtual void itemChanged();
00156 
00165     virtual void draw( QPainter *painter,
00166         const QwtScaleMap &xMap, const QwtScaleMap &yMap,
00167         const QRectF &canvasRect ) const = 0;
00168 
00169     virtual QRectF boundingRect() const;
00170 
00171     virtual void updateLegend( QwtLegend * ) const;
00172     virtual void updateScaleDiv( 
00173         const QwtScaleDiv&, const QwtScaleDiv& );
00174 
00175     virtual QWidget *legendItem() const;
00176 
00177     QRectF scaleRect( const QwtScaleMap &, const QwtScaleMap & ) const;
00178     QRectF paintRect( const QwtScaleMap &, const QwtScaleMap & ) const;
00179 
00180 private:
00181     // Disabled copy constructor and operator=
00182     QwtPlotItem( const QwtPlotItem & );
00183     QwtPlotItem &operator=( const QwtPlotItem & );
00184 
00185     class PrivateData;
00186     PrivateData *d_data;
00187 };
00188 
00189 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPlotItem::ItemAttributes );
00190 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPlotItem::RenderHints );
00191 
00192 #endif