qwt_plot_scaleitem.h 2.78 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 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
 * 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_PLOT_SCALE_ITEM_H
#define QWT_PLOT_SCALE_ITEM_H

#include "qwt_global.h"
#include "qwt_plot_item.h"
#include "qwt_scale_draw.h"

#if QT_VERSION < 0x040000
class QColorGroup;
#else
class QPalette;
#endif

/*!
  \brief A class which draws a scale inside the plot canvas

  QwtPlotScaleItem can be used to draw an axis inside the plot canvas.
  It might by synchronized to one of the axis of the plot, but can
  also display its own ticks and labels.

  It is allowed to synchronize the scale item with a disabled axis.
  In plots with vertical and horizontal scale items, it might be
  necessary to remove ticks at the intersections, by overloading
  updateScaleDiv().

  The scale might be at a specific position (f.e 0.0) or it might be
  aligned to a canvas border.

  \par Example
  The following example shows how to replace the left axis, by a scale item
  at the x position 0.0.
  \verbatim
42
QwtPlotScaleItem *scaleItem =
pixhawk's avatar
pixhawk committed
43 44 45 46 47 48 49 50 51 52 53 54
    new QwtPlotScaleItem(QwtScaleDraw::RightScale, 0.0);
scaleItem->setFont(plot->axisWidget(QwtPlot::yLeft)->font());
scaleItem->attach(plot);

plot->enableAxis(QwtPlot::yLeft, false);
\endverbatim
*/

class QWT_EXPORT QwtPlotScaleItem: public QwtPlotItem
{
public:
    explicit QwtPlotScaleItem(
55
        QwtScaleDraw::Alignment = QwtScaleDraw::BottomScale,
pixhawk's avatar
pixhawk committed
56 57 58 59 60 61 62 63 64 65
        const double pos = 0.0);
    virtual ~QwtPlotScaleItem();

    virtual int rtti() const;

    void setScaleDiv(const QwtScaleDiv& );
    const QwtScaleDiv& scaleDiv() const;

    void setScaleDivFromAxis(bool on);
    bool isScaleDivFromAxis() const;
66

pixhawk's avatar
pixhawk committed
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
#if QT_VERSION < 0x040000
    void setColorGroup(const QColorGroup &);
    QColorGroup colorGroup() const;
#else
    void setPalette(const QPalette &);
    QPalette palette() const;
#endif

    void setFont(const QFont&);
    QFont font() const;

    void setScaleDraw(QwtScaleDraw *);

    const QwtScaleDraw *scaleDraw() const;
    QwtScaleDraw *scaleDraw();

    void setPosition(double pos);
    double position() const;

    void setBorderDistance(int numPixels);
    int borderDistance() const;

    void setAlignment(QwtScaleDraw::Alignment);

91 92 93
    virtual void draw(QPainter *p,
                      const QwtScaleMap &xMap, const QwtScaleMap &yMap,
                      const QRect &rect) const;
pixhawk's avatar
pixhawk committed
94 95

    virtual void updateScaleDiv(const QwtScaleDiv&,
96
                                const QwtScaleDiv&);
pixhawk's avatar
pixhawk committed
97 98 99 100 101 102 103 104 105

private:
    void updateBorders();

    class PrivateData;
    PrivateData *d_data;
};

#endif