Skip to content
Snippets Groups Projects
qwt_compass_rose.h 2.16 KiB
Newer Older
  • Learn to ignore specific revisions
  • pixhawk's avatar
    pixhawk committed
    /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
     * Qwt Widget Library
     * Copyright (C) 1997   Josef Wilgen
     * Copyright (C) 2002   Uwe Rathmann
    
    pixhawk's avatar
    pixhawk committed
     * 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_COMPASS_ROSE_H
    #define QWT_COMPASS_ROSE_H 1
    
    #include "qwt_global.h"
    
    Bryant's avatar
    Bryant committed
    #include <qpalette.h>
    
    pixhawk's avatar
    pixhawk committed
    
    class QPainter;
    
    /*!
      \brief Abstract base class for a compass rose
    */
    class QWT_EXPORT QwtCompassRose
    {
    public:
    
    Bryant's avatar
    Bryant committed
        //! Destructor
    
    pixhawk's avatar
    pixhawk committed
        virtual ~QwtCompassRose() {};
    
    
    Bryant's avatar
    Bryant committed
        //! Assign a palette
        virtual void setPalette( const QPalette &p )
        {
    
            d_palette = p;
        }
    
    Bryant's avatar
    Bryant committed
    
        //! \return Current palette
        const QPalette &palette() const
        {
    
            return d_palette;
        }
    
    pixhawk's avatar
    pixhawk committed
    
        /*!
            Draw the rose
    
            \param painter Painter
            \param center Center point
            \param radius Radius of the rose
            \param north Position
            \param colorGroup Color group
         */
    
    Bryant's avatar
    Bryant committed
        virtual void draw( QPainter *painter, 
            const QPointF &center, double radius, double north,
            QPalette::ColorGroup colorGroup = QPalette::Active ) const = 0;
    
    pixhawk's avatar
    pixhawk committed
    
    private:
        QPalette d_palette;
    };
    
    /*!
      \brief A simple rose for QwtCompass
    */
    class QWT_EXPORT QwtSimpleCompassRose: public QwtCompassRose
    {
    public:
    
    Bryant's avatar
    Bryant committed
        QwtSimpleCompassRose( int numThorns = 8, int numThornLevels = -1 );
        virtual ~QwtSimpleCompassRose();
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void setWidth( double w );
        double width() const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void setNumThorns( int count );
    
    pixhawk's avatar
    pixhawk committed
        int numThorns() const;
    
    
    Bryant's avatar
    Bryant committed
        void setNumThornLevels( int count );
    
    pixhawk's avatar
    pixhawk committed
        int numThornLevels() const;
    
    
    Bryant's avatar
    Bryant committed
        void setShrinkFactor( double factor );
        double shrinkFactor() const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        virtual void draw( QPainter *, const QPointF &center, double radius,
            double north, QPalette::ColorGroup = QPalette::Active ) const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        static void drawRose( QPainter *, const QPalette &,
            const QPointF &center, double radius, double origin, double width,
            int numThorns, int numThornLevels, double shrinkFactor );
    
    pixhawk's avatar
    pixhawk committed
    
    private:
    
    Bryant's avatar
    Bryant committed
        class PrivateData;
        PrivateData *d_data;
    
    pixhawk's avatar
    pixhawk committed
    };
    
    
    Bryant's avatar
    Bryant committed
    #endif