Skip to content
qwt_plot_scaleitem.h 2.55 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_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
QwtPlotScaleItem *scaleItem =
pixhawk's avatar
pixhawk committed
    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(
        QwtScaleDraw::Alignment = QwtScaleDraw::BottomScale,
Bryant's avatar
Bryant committed
        const double pos = 0.0 );

pixhawk's avatar
pixhawk committed
    virtual ~QwtPlotScaleItem();

    virtual int rtti() const;

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

Bryant's avatar
Bryant committed
    void setScaleDivFromAxis( bool on );
pixhawk's avatar
pixhawk committed
    bool isScaleDivFromAxis() const;
Bryant's avatar
Bryant committed
    void setPalette( const QPalette & );
pixhawk's avatar
pixhawk committed
    QPalette palette() const;

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

Bryant's avatar
Bryant committed
    void setScaleDraw( QwtScaleDraw * );
pixhawk's avatar
pixhawk committed

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

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

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

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

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

Bryant's avatar
Bryant committed
    virtual void updateScaleDiv( const QwtScaleDiv &, const QwtScaleDiv & );
pixhawk's avatar
pixhawk committed

private:
    class PrivateData;
    PrivateData *d_data;
};

#endif