Skip to content
Snippets Groups Projects
qwt_round_scale_draw.h 1.91 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_ROUND_SCALE_DRAW_H
    #define QWT_ROUND_SCALE_DRAW_H
    
    #include "qwt_global.h"
    #include "qwt_abstract_scale_draw.h"
    
    Bryant's avatar
    Bryant committed
    #include <qpoint.h>
    
    pixhawk's avatar
    pixhawk committed
    
    /*!
      \brief A class for drawing round scales
    
      QwtRoundScaleDraw can be used to draw round scales.
    
    Bryant's avatar
    Bryant committed
      The circle segment can be adjusted by setAngleRange().
    
      The geometry of the scale can be specified with
    
    Bryant's avatar
    Bryant committed
      moveCenter() and setRadius().
    
    pixhawk's avatar
    pixhawk committed
    
      After a scale division has been specified as a QwtScaleDiv object
      using QwtAbstractScaleDraw::setScaleDiv(const QwtScaleDiv &s),
      the scale can be drawn with the QwtAbstractScaleDraw::draw() member.
    */
    
    class QWT_EXPORT QwtRoundScaleDraw: public QwtAbstractScaleDraw
    {
    public:
        QwtRoundScaleDraw();
        virtual ~QwtRoundScaleDraw();
    
    
    Bryant's avatar
    Bryant committed
        void setRadius( double radius );
        double radius() const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void moveCenter( double x, double y );
        void moveCenter( const QPointF & );
        QPointF center() const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void setAngleRange( double angle1, double angle2 );
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        virtual double extent( const QFont & ) const;
    
    pixhawk's avatar
    pixhawk committed
    
    protected:
    
    Bryant's avatar
    Bryant committed
        virtual void drawTick( QPainter *, double val, double len ) const;
        virtual void drawBackbone( QPainter * ) const;
        virtual void drawLabel( QPainter *, double val ) const;
    
    pixhawk's avatar
    pixhawk committed
    
    private:
    
    Bryant's avatar
    Bryant committed
        QwtRoundScaleDraw( const QwtRoundScaleDraw & );
        QwtRoundScaleDraw &operator=( const QwtRoundScaleDraw &other );
    
    
    pixhawk's avatar
    pixhawk committed
        class PrivateData;
        PrivateData *d_data;
    };
    
    
    Bryant's avatar
    Bryant committed
    //! Move the center of the scale draw, leaving the radius unchanged
    inline void QwtRoundScaleDraw::moveCenter( double x, double y )
    
    pixhawk's avatar
    pixhawk committed
    {
    
    Bryant's avatar
    Bryant committed
        moveCenter( QPointF( x, y ) );
    
    pixhawk's avatar
    pixhawk committed
    }
    
    #endif