188 lines
4.0 KiB
C++
188 lines
4.0 KiB
C++
/* -*- 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_DIAL_NEEDLE_H
|
|
#define QWT_DIAL_NEEDLE_H 1
|
|
|
|
#include "qwt_global.h"
|
|
#include <qpalette.h>
|
|
|
|
class QPainter;
|
|
class QPoint;
|
|
|
|
/*!
|
|
\brief Base class for needles that can be used in a QwtDial.
|
|
|
|
QwtDialNeedle is a pointer that indicates a value by pointing
|
|
to a specific direction.
|
|
|
|
\sa QwtDial, QwtCompass
|
|
*/
|
|
|
|
class QWT_EXPORT QwtDialNeedle
|
|
{
|
|
public:
|
|
QwtDialNeedle();
|
|
virtual ~QwtDialNeedle();
|
|
|
|
virtual void setPalette( const QPalette & );
|
|
const QPalette &palette() const;
|
|
|
|
virtual void draw( QPainter *painter, const QPointF ¢er,
|
|
double length, double direction,
|
|
QPalette::ColorGroup = QPalette::Active ) const;
|
|
|
|
protected:
|
|
/*!
|
|
\brief Draw the needle
|
|
|
|
The origin of the needle is at position (0.0, 0.0 )
|
|
pointing in direction 0.0 ( = east ).
|
|
|
|
The painter is already initialized with translation and
|
|
rotation.
|
|
|
|
\param painter Painter
|
|
\param length Length of the needle
|
|
\param colorGroup Color group, used for painting
|
|
|
|
\sa setPalette(), palette()
|
|
*/
|
|
virtual void drawNeedle( QPainter *painter,
|
|
double length, QPalette::ColorGroup colorGroup ) const = 0;
|
|
|
|
virtual void drawKnob( QPainter *, double width,
|
|
const QBrush &, bool sunken ) const;
|
|
|
|
private:
|
|
QPalette d_palette;
|
|
};
|
|
|
|
/*!
|
|
\brief A needle for dial widgets
|
|
|
|
The following colors are used:
|
|
|
|
- QPalette::Mid\n
|
|
Pointer
|
|
- QPalette::Base\n
|
|
Knob
|
|
|
|
\sa QwtDial, QwtCompass
|
|
*/
|
|
|
|
class QWT_EXPORT QwtDialSimpleNeedle: public QwtDialNeedle
|
|
{
|
|
public:
|
|
//! Style of the needle
|
|
enum Style
|
|
{
|
|
//! Arrow
|
|
Arrow,
|
|
|
|
//! A straight line from the center
|
|
Ray
|
|
};
|
|
|
|
QwtDialSimpleNeedle( Style, bool hasKnob = true,
|
|
const QColor &mid = Qt::gray, const QColor &base = Qt::darkGray );
|
|
|
|
void setWidth( double width );
|
|
double width() const;
|
|
|
|
protected:
|
|
virtual void drawNeedle( QPainter *, double length,
|
|
QPalette::ColorGroup ) const;
|
|
|
|
private:
|
|
Style d_style;
|
|
bool d_hasKnob;
|
|
double d_width;
|
|
};
|
|
|
|
/*!
|
|
\brief A magnet needle for compass widgets
|
|
|
|
A magnet needle points to two opposite directions indicating
|
|
north and south.
|
|
|
|
The following colors are used:
|
|
- QPalette::Light\n
|
|
Used for pointing south
|
|
- QPalette::Dark\n
|
|
Used for pointing north
|
|
- QPalette::Base\n
|
|
Knob (ThinStyle only)
|
|
|
|
\sa QwtDial, QwtCompass
|
|
*/
|
|
|
|
class QWT_EXPORT QwtCompassMagnetNeedle: public QwtDialNeedle
|
|
{
|
|
public:
|
|
//! Style of the needle
|
|
enum Style
|
|
{
|
|
//! A needle with a triangular shape
|
|
TriangleStyle,
|
|
|
|
//! A thin needle
|
|
ThinStyle
|
|
};
|
|
|
|
QwtCompassMagnetNeedle( Style = TriangleStyle,
|
|
const QColor &light = Qt::white, const QColor &dark = Qt::red );
|
|
|
|
protected:
|
|
virtual void drawNeedle( QPainter *,
|
|
double length, QPalette::ColorGroup ) const;
|
|
|
|
private:
|
|
Style d_style;
|
|
};
|
|
|
|
/*!
|
|
\brief An indicator for the wind direction
|
|
|
|
QwtCompassWindArrow shows the direction where the wind comes from.
|
|
|
|
- QPalette::Light\n
|
|
Used for Style1, or the light half of Style2
|
|
- QPalette::Dark\n
|
|
Used for the dark half of Style2
|
|
|
|
\sa QwtDial, QwtCompass
|
|
*/
|
|
|
|
class QWT_EXPORT QwtCompassWindArrow: public QwtDialNeedle
|
|
{
|
|
public:
|
|
//! Style of the arrow
|
|
enum Style
|
|
{
|
|
//! A needle pointing to the center
|
|
Style1,
|
|
|
|
//! A needle pointing to the center
|
|
Style2
|
|
};
|
|
|
|
QwtCompassWindArrow( Style, const QColor &light = Qt::white,
|
|
const QColor &dark = Qt::gray );
|
|
|
|
protected:
|
|
virtual void drawNeedle( QPainter *,
|
|
double length, QPalette::ColorGroup ) const;
|
|
|
|
private:
|
|
Style d_style;
|
|
};
|
|
|
|
#endif
|