123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * QwtPolar Widget Library
- * Copyright (C) 2008 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_POLAR_ITEM_H
- #define QWT_POLAR_ITEM_H
- #include "qwt_polar_global.h"
- #include <qwt_text.h>
- #include <qwt_legend_data.h>
- #include <qwt_graphic.h>
- #include <qwt_interval.h>
- class QString;
- class QRect;
- class QPointF;
- class QPainter;
- class QwtPolarPlot;
- class QwtScaleMap;
- class QwtScaleDiv;
- /*!
- \brief Base class for items on a polar plot
- A QwtPolarItem is "something that can be painted on the canvas".
- It is connected to the QwtPolar framework by a couple of virtual
- methods, that are individually implemented in derived item classes.
- QwtPolar offers an implementation of the most common types of items,
- but deriving from QwtPolarItem makes it easy to implement additional
- types of items.
- */
- class QWT_POLAR_EXPORT QwtPolarItem
- {
- public:
- /*!
- \brief Runtime type information
- RttiValues is used to cast plot items, without
- having to enable runtime type information of the compiler.
- */
- enum RttiValues
- {
- //! Unspecific value, that can be used, when it doesn't matter
- Rtti_PolarItem = 0,
- //! For QwtPolarGrid
- Rtti_PolarGrid,
- //! For QwtPolarMarker
- Rtti_PolarMarker,
- //! For QwtPolarCurve
- Rtti_PolarCurve,
- //! For QwtPolarSpectrogram
- Rtti_PolarSpectrogram,
- /*!
- Values >= Rtti_PolarUserItem are reserved for plot items
- not implemented in the QwtPolar library.
- */
- Rtti_PolarUserItem = 1000
- };
- /*!
- \brief Plot Item Attributes
- \sa setItemAttribute(), testItemAttribute()
- */
- enum ItemAttribute
- {
- //! The item is represented on the legend.
- Legend = 0x01,
- /*!
- The boundingRect() of the item is included in the
- autoscaling calculation.
- */
- AutoScale = 0x02
- };
- //! Item attributes
- typedef QFlags<ItemAttribute> ItemAttributes;
- /*!
- \brief Render hints
- \sa setRenderHint(), testRenderHint()
- */
- enum RenderHint
- {
- //! Enable antialiasing
- RenderAntialiased = 0x01
- };
- //! Item attributes
- typedef QFlags<RenderHint> RenderHints;
- explicit QwtPolarItem( const QwtText &title = QwtText() );
- virtual ~QwtPolarItem();
- void attach( QwtPolarPlot *plot );
- void detach();
- QwtPolarPlot *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;
- void setRenderThreadCount( uint numThreads );
- uint renderThreadCount() const;
- double z() const;
- void setZ( double z );
- void show();
- void hide();
- virtual void setVisible( bool );
- bool isVisible () const;
- virtual void itemChanged();
- virtual void legendChanged();
- /*!
- \brief Draw the item
- \param painter Painter
- \param azimuthMap Maps azimuth values to values related to 0.0, M_2PI
- \param radialMap Maps radius values into painter coordinates.
- \param pole Position of the pole in painter coordinates
- \param radius Radius of the complete plot area in painter coordinates
- \param canvasRect Contents rect of the canvas in painter coordinates
- */
- virtual void draw( QPainter *painter,
- const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
- const QPointF &pole, double radius,
- const QRectF &canvasRect ) const = 0;
- virtual QwtInterval boundingInterval( int scaleId ) const;
- virtual void updateScaleDiv( const QwtScaleDiv &,
- const QwtScaleDiv &, const QwtInterval & );
- virtual int marginHint() const;
- void setLegendIconSize( const QSize & );
- QSize legendIconSize() const;
- virtual QList<QwtLegendData> legendData() const;
- virtual QwtGraphic legendIcon( int index, const QSizeF & ) const;
- private:
- // Disabled copy constructor and operator=
- QwtPolarItem( const QwtPolarItem & );
- QwtPolarItem &operator=( const QwtPolarItem & );
- class PrivateData;
- PrivateData *d_data;
- };
- Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPolarItem::ItemAttributes )
- Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPolarItem::RenderHints )
- Q_DECLARE_METATYPE( QwtPolarItem * )
- #endif
|