qwt_scale_widget.h 3.26 KB
Newer Older
pixhawk's avatar
pixhawk committed
1 2 3 4 5 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 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 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
 * Qwt Widget Library
 * Copyright (C) 1997   Josef Wilgen
 * Copyright (C) 2002   Uwe Rathmann
 *
 * 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_SCALE_WIDGET_H
#define QWT_SCALE_WIDGET_H

#include <qwidget.h>
#include <qfont.h>
#include <qcolor.h>
#include <qstring.h>

#include "qwt_global.h"
#include "qwt_text.h"
#include "qwt_scale_draw.h"

class QPainter;
class QwtScaleTransformation;
class QwtScaleDiv;
class QwtColorMap;

/*!
  \brief A Widget which contains a scale

  This Widget can be used to decorate composite widgets with
  a scale.
*/

class QWT_EXPORT QwtScaleWidget : public QWidget
{
    Q_OBJECT 

public:
    explicit QwtScaleWidget(QWidget *parent = NULL);
#if QT_VERSION < 0x040000
    explicit QwtScaleWidget(QWidget *parent, const char *name);
#endif
    explicit QwtScaleWidget(QwtScaleDraw::Alignment, QWidget *parent = NULL);
    virtual ~QwtScaleWidget();

signals:
    //! Signal emitted, whenever the scale divison changes
    void scaleDivChanged();

public:
    void setTitle(const QString &title);
    void setTitle(const QwtText &title);
    QwtText title() const;

    void setBorderDist(int start, int end);
    int startBorderDist() const;
    int endBorderDist() const;

    void getBorderDistHint(int &start, int &end) const;

    void getMinBorderDist(int &start, int &end) const;
    void setMinBorderDist(int start, int end);

    void setMargin(int);
    int margin() const;

    void setSpacing(int td);
    int spacing() const;

    void setPenWidth(int);
    int penWidth() const;

    void setScaleDiv(QwtScaleTransformation *, const QwtScaleDiv &sd);

    void setScaleDraw(QwtScaleDraw *);
    const QwtScaleDraw *scaleDraw() const;
    QwtScaleDraw *scaleDraw();

#if QT_VERSION < 0x040000
    void setLabelAlignment(int);
#else
    void setLabelAlignment(Qt::Alignment);
#endif
    void setLabelRotation(double rotation);

    void setColorBarEnabled(bool);
    bool isColorBarEnabled() const;

    void setColorBarWidth(int);
    int colorBarWidth() const;

    void setColorMap(const QwtDoubleInterval &, const QwtColorMap &);

    QwtDoubleInterval colorBarInterval() const;
    const QwtColorMap &colorMap() const;

    virtual QSize sizeHint() const;
    virtual QSize minimumSizeHint() const;

    int titleHeightForWidth(int width) const;
    int dimForLength(int length, const QFont &scaleFont) const;

    void drawColorBar(QPainter *painter, const QRect &rect) const;
    void drawTitle(QPainter *painter, QwtScaleDraw::Alignment,
        const QRect &rect) const;
        
    void setAlignment(QwtScaleDraw::Alignment);
    QwtScaleDraw::Alignment alignment() const;

    QRect colorBarRect(const QRect&) const;

protected:
    virtual void paintEvent(QPaintEvent *e);
    virtual void resizeEvent(QResizeEvent *e);

#if QT_VERSION < 0x040000
    virtual void fontChange(const QFont &oldfont);
#endif

    void draw(QPainter *p) const;

    void scaleChange();
    void layoutScale( bool update = true );

private:
    void initScale(QwtScaleDraw::Alignment);

    class PrivateData;
    PrivateData *d_data;
};

#endif