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
/* -*- 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
{
36
    Q_OBJECT
pixhawk's avatar
pixhawk committed
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

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,
105 106
                   const QRect &rect) const;

pixhawk's avatar
pixhawk committed
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
    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