qwt_compass.h 2.14 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
/* -*- 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_COMPASS_H
#define QWT_COMPASS_H 1

#include <qstring.h>
#include <qmap.h>
#include "qwt_dial.h"

#if defined(QWT_TEMPLATEDLL)

#if defined(QT_NO_STL) || QT_VERSION < 0x040000 || QT_VERSION > 0x040001
/*
21 22 23
  Unfortunately Qt 4.0.0/Qt 4.0.1 contains uncompilable
  code in the STL adaptors of qmap.h. The declaration below
  instantiates this code resulting in compiler errors.
pixhawk's avatar
pixhawk committed
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
  If you really need the map to be exported, remove the condition above
  and fix the qmap.h
*/
// MOC_SKIP_BEGIN
template class QWT_EXPORT QMap<double, QString>;
// MOC_SKIP_END
#endif

#endif


class QwtCompassRose;

/*!
  \brief A Compass Widget

  QwtCompass is a widget to display and enter directions. It consists
41
  of a scale, an optional needle and rose.
pixhawk's avatar
pixhawk committed
42

43
  \image html dials1.png
pixhawk's avatar
pixhawk committed
44 45 46 47

  \note The examples/dials example shows how to use QwtCompass.
*/

48
class QWT_EXPORT QwtCompass: public QwtDial
pixhawk's avatar
pixhawk committed
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
{
    Q_OBJECT

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

    void setRose(QwtCompassRose *rose);
    const QwtCompassRose *rose() const;
    QwtCompassRose *rose();

    const QMap<double, QString> &labelMap() const;
    QMap<double, QString> &labelMap();
    void setLabelMap(const QMap<double, QString> &map);

protected:
    virtual QwtText scaleLabel(double value) const;

    virtual void drawRose(QPainter *, const QPoint &center,
71
                          int radius, double north, QPalette::ColorGroup) const;
pixhawk's avatar
pixhawk committed
72

73 74
    virtual void drawScaleContents(QPainter *,
                                   const QPoint &center, int radius) const;
pixhawk's avatar
pixhawk committed
75 76 77 78 79 80 81 82 83 84 85

    virtual void keyPressEvent(QKeyEvent *);

private:
    void initCompass();

    class PrivateData;
    PrivateData *d_data;
};

#endif