qwt_plot_scaleitem.h 2.55 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
 * 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"

class QPalette;

/*!
  \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
38
QwtPlotScaleItem *scaleItem =
pixhawk's avatar
pixhawk committed
39 40 41 42 43 44 45 46 47 48 49 50
    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(
51
        QwtScaleDraw::Alignment = QwtScaleDraw::BottomScale,
Bryant's avatar
Bryant committed
52 53
        const double pos = 0.0 );

pixhawk's avatar
pixhawk committed
54 55 56 57
    virtual ~QwtPlotScaleItem();

    virtual int rtti() const;

Bryant's avatar
Bryant committed
58
    void setScaleDiv( const QwtScaleDiv& );
pixhawk's avatar
pixhawk committed
59 60
    const QwtScaleDiv& scaleDiv() const;

Bryant's avatar
Bryant committed
61
    void setScaleDivFromAxis( bool on );
pixhawk's avatar
pixhawk committed
62
    bool isScaleDivFromAxis() const;
63

Bryant's avatar
Bryant committed
64
    void setPalette( const QPalette & );
pixhawk's avatar
pixhawk committed
65 66
    QPalette palette() const;

Bryant's avatar
Bryant committed
67
    void setFont( const QFont& );
pixhawk's avatar
pixhawk committed
68 69
    QFont font() const;

Bryant's avatar
Bryant committed
70
    void setScaleDraw( QwtScaleDraw * );
pixhawk's avatar
pixhawk committed
71 72 73 74

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

Bryant's avatar
Bryant committed
75
    void setPosition( double pos );
pixhawk's avatar
pixhawk committed
76 77
    double position() const;

Bryant's avatar
Bryant committed
78
    void setBorderDistance( int numPixels );
pixhawk's avatar
pixhawk committed
79 80
    int borderDistance() const;

Bryant's avatar
Bryant committed
81
    void setAlignment( QwtScaleDraw::Alignment );
pixhawk's avatar
pixhawk committed
82

Bryant's avatar
Bryant committed
83 84 85
    virtual void draw( QPainter *p,
        const QwtScaleMap &xMap, const QwtScaleMap &yMap,
        const QRectF &rect ) const;
pixhawk's avatar
pixhawk committed
86

Bryant's avatar
Bryant committed
87
    virtual void updateScaleDiv( const QwtScaleDiv &, const QwtScaleDiv & );
pixhawk's avatar
pixhawk committed
88 89 90 91 92 93 94

private:
    class PrivateData;
    PrivateData *d_data;
};

#endif