qwt_round_scale_draw.h 1.88 KB
Newer Older
pixhawk's avatar
pixhawk committed
1 2 3 4
/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
 * Qwt Widget Library
 * Copyright (C) 1997   Josef Wilgen
 * Copyright (C) 2002   Uwe Rathmann
5
 *
pixhawk's avatar
pixhawk committed
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
 * 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 <qpoint.h>
#include "qwt_global.h"
#include "qwt_abstract_scale_draw.h"

class QPen;

/*!
  \brief A class for drawing round scales

  QwtRoundScaleDraw can be used to draw round scales.
  The circle segment can be adjusted by QwtRoundScaleDraw::setAngleRange().
24
  The geometry of the scale can be specified with
pixhawk's avatar
pixhawk committed
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
  QwtRoundScaleDraw::moveCenter() and QwtRoundScaleDraw::setRadius().

  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();
    QwtRoundScaleDraw(const QwtRoundScaleDraw &);

    virtual ~QwtRoundScaleDraw();

    QwtRoundScaleDraw &operator=(const QwtRoundScaleDraw &other);

    void setRadius(int radius);
    int radius() const;

    void moveCenter(int x, int y);
    void moveCenter(const QPoint &);
    QPoint center() const;

    void setAngleRange(double angle1, double angle2);

    virtual int extent(const QPen &, const QFont &) const;

protected:
    virtual void drawTick(QPainter *p, double val, int len) const;
    virtual void drawBackbone(QPainter *p) const;
    virtual void drawLabel(QPainter *p, double val) const;

private:
    class PrivateData;
    PrivateData *d_data;
};

inline void QwtRoundScaleDraw::moveCenter(int x, int y)
{
    moveCenter(QPoint(x, y));
}

#endif