Skip to content
qwt_round_scale_draw.h 1.91 KiB
Newer Older
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