| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 | /* -*- mode: C++ ; c-file-style: "stroustrup" -*- ***************************** * Qwt Widget Library * Copyright (C) 1997   Josef Wilgen * Copyright (C) 2002   Uwe Rathmann * * This library is free software; you can redistribute it and/or * modify it under the terms of the Qwt License, Version 1.0 *****************************************************************************/#ifndef QWT_PLOT_ITEM_H#define QWT_PLOT_ITEM_H#include "qwt_global.h"#include "qwt_legend_itemmanager.h"#include "qwt_text.h"#include <qrect.h>class QString;class QPainter;class QWidget;class QwtPlot;class QwtLegend;class QwtScaleMap;class QwtScaleDiv;/*!  \brief Base class for items on the plot canvas  A plot item is "something", that can be painted on the plot canvas,  or only affects the scales of the plot widget. They can be categorized as:  - Representator\n    A "Representator" is an item that represents some sort of data    on the plot canvas. The different representator classes are organized    according to the characteristics of the data:    - QwtPlotMarker      Represents a point or a horizontal/vertical coordinate    - QwtPlotCurve      Represents a series of points    - QwtPlotSpectrogram ( QwtPlotRasterItem )      Represents raster data    - ...  - Decorators\n    A "Decorator" is an item, that displays additional information, that    is not related to any data:    - QwtPlotGrid    - QwtPlotScaleItem    - QwtPlotSvgItem    - ...  Depending on the QwtPlotItem::ItemAttribute flags, an item is included  into autoscaling or has an entry on the legnd.  Before misusing the existing item classes it might be better to  implement a new type of plot item  ( don't implement a watermark as spectrogram ).  Deriving a new type of QwtPlotItem primarily means to implement  the YourPlotItem::draw() method.  \sa The cpuplot example shows the implementation of additional plot items.*/class QWT_EXPORT QwtPlotItem: public QwtLegendItemManager{public:    /*!        \brief Runtime type information        RttiValues is used to cast plot items, without        having to enable runtime type information of the compiler.     */    enum RttiValues    {        Rtti_PlotItem = 0,        Rtti_PlotGrid,        Rtti_PlotScale,        Rtti_PlotMarker,        Rtti_PlotCurve,        Rtti_PlotSpectroCurve,        Rtti_PlotIntervalCurve,        Rtti_PlotHistogram,        Rtti_PlotSpectrogram,        Rtti_PlotSVG,        Rtti_PlotUserItem = 1000    };    /*!       Plot Item Attributes       - Legend\n         The item is represented on the legend.       - AutoScale \n         The boundingRect() of the item is included in the         autoscaling calculation.       \sa setItemAttribute(), testItemAttribute()     */    enum ItemAttribute    {        Legend = 1,        AutoScale = 2    };    //! Render hints    enum RenderHint    {        RenderAntialiased = 1    };    explicit QwtPlotItem( const QwtText &title = QwtText() );    virtual ~QwtPlotItem();    void attach( QwtPlot *plot );    /*!       \brief This method detaches a QwtPlotItem from any QwtPlot it has been              associated with.       detach() is equivalent to calling attach( NULL )       \sa attach( QwtPlot* plot )    */    void detach()    {        attach( NULL );    }    QwtPlot *plot() const;    void setTitle( const QString &title );    void setTitle( const QwtText &title );    const QwtText &title() const;    virtual int rtti() const;    void setItemAttribute( ItemAttribute, bool on = true );    bool testItemAttribute( ItemAttribute ) const;    void setRenderHint( RenderHint, bool on = true );    bool testRenderHint( RenderHint ) const;    double z() const;    void setZ( double z );    void show();    void hide();    virtual void setVisible( bool );    bool isVisible () const;    void setAxes( int xAxis, int yAxis );    void setXAxis( int axis );    int xAxis() const;    void setYAxis( int axis );    int yAxis() const;    virtual void itemChanged();    /*!      \brief Draw the item      \param painter Painter      \param xMap Maps x-values into pixel coordinates.      \param yMap Maps y-values into pixel coordinates.      \param canvasRect Contents rect of the canvas in painter coordinates    */    virtual void draw( QPainter *painter,        const QwtScaleMap &xMap, const QwtScaleMap &yMap,        const QRectF &canvasRect ) const = 0;    virtual QRectF boundingRect() const;    virtual void updateLegend( QwtLegend * ) const;    virtual void updateScaleDiv(         const QwtScaleDiv&, const QwtScaleDiv& );    virtual QWidget *legendItem() const;    QRectF scaleRect( const QwtScaleMap &, const QwtScaleMap & ) const;    QRectF paintRect( const QwtScaleMap &, const QwtScaleMap & ) const;private:    // Disabled copy constructor and operator=    QwtPlotItem( const QwtPlotItem & );    QwtPlotItem &operator=( const QwtPlotItem & );    class PrivateData;    PrivateData *d_data;};#endif
 |