/* -*- 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_DIAL_NEEDLE_H #define QWT_DIAL_NEEDLE_H 1 #include "qwt_global.h" #include class QPainter; class QPoint; /*! \brief Base class for needles that can be used in a QwtDial. QwtDialNeedle is a pointer that indicates a value by pointing to a specific direction. \sa QwtDial, QwtCompass */ class QWT_EXPORT QwtDialNeedle { public: QwtDialNeedle(); virtual ~QwtDialNeedle(); virtual void setPalette( const QPalette & ); const QPalette &palette() const; virtual void draw( QPainter *painter, const QPointF ¢er, double length, double direction, QPalette::ColorGroup = QPalette::Active ) const; protected: /*! \brief Draw the needle The origin of the needle is at position (0.0, 0.0 ) pointing in direction 0.0 ( = east ). The painter is already initialized with translation and rotation. \param painter Painter \param length Length of the needle \param colorGroup Color group, used for painting \sa setPalette(), palette() */ virtual void drawNeedle( QPainter *painter, double length, QPalette::ColorGroup colorGroup ) const = 0; virtual void drawKnob( QPainter *, double width, const QBrush &, bool sunken ) const; private: QPalette d_palette; }; /*! \brief A needle for dial widgets The following colors are used: - QPalette::Mid\n Pointer - QPalette::Base\n Knob \sa QwtDial, QwtCompass */ class QWT_EXPORT QwtDialSimpleNeedle: public QwtDialNeedle { public: //! Style of the needle enum Style { //! Arrow Arrow, //! A straight line from the center Ray }; QwtDialSimpleNeedle( Style, bool hasKnob = true, const QColor &mid = Qt::gray, const QColor &base = Qt::darkGray ); void setWidth( double width ); double width() const; protected: virtual void drawNeedle( QPainter *, double length, QPalette::ColorGroup ) const; private: Style d_style; bool d_hasKnob; double d_width; }; /*! \brief A magnet needle for compass widgets A magnet needle points to two opposite directions indicating north and south. The following colors are used: - QPalette::Light\n Used for pointing south - QPalette::Dark\n Used for pointing north - QPalette::Base\n Knob (ThinStyle only) \sa QwtDial, QwtCompass */ class QWT_EXPORT QwtCompassMagnetNeedle: public QwtDialNeedle { public: //! Style of the needle enum Style { //! A needle with a triangular shape TriangleStyle, //! A thin needle ThinStyle }; QwtCompassMagnetNeedle( Style = TriangleStyle, const QColor &light = Qt::white, const QColor &dark = Qt::red ); protected: virtual void drawNeedle( QPainter *, double length, QPalette::ColorGroup ) const; private: Style d_style; }; /*! \brief An indicator for the wind direction QwtCompassWindArrow shows the direction where the wind comes from. - QPalette::Light\n Used for Style1, or the light half of Style2 - QPalette::Dark\n Used for the dark half of Style2 \sa QwtDial, QwtCompass */ class QWT_EXPORT QwtCompassWindArrow: public QwtDialNeedle { public: //! Style of the arrow enum Style { //! A needle pointing to the center Style1, //! A needle pointing to the center Style2 }; QwtCompassWindArrow( Style, const QColor &light = Qt::white, const QColor &dark = Qt::gray ); protected: virtual void drawNeedle( QPainter *, double length, QPalette::ColorGroup ) const; private: Style d_style; }; #endif