Skip to content
Snippets Groups Projects
qwt_thermo.h 4.59 KiB
Newer Older
  • Learn to ignore specific revisions
  • pixhawk's avatar
    pixhawk committed
    /* -*- 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_THERMO_H
    #define QWT_THERMO_H
    
    #include "qwt_global.h"
    #include "qwt_abstract_scale.h"
    
    Bryant's avatar
    Bryant committed
    #include "qwt_interval.h"
    
    pixhawk's avatar
    pixhawk committed
    
    class QwtScaleDraw;
    
    Bryant's avatar
    Bryant committed
    class QwtColorMap;
    
    pixhawk's avatar
    pixhawk committed
    
    /*!
      \brief The Thermometer Widget
    
      QwtThermo is a widget which displays a value in an interval. It supports:
      - a horizontal or vertical layout;
      - a range;
      - a scale;
      - an alarm level.
    
      \image html sysinfo.png
    
    
    Bryant's avatar
    Bryant committed
      The fill colors might be calculated from an optional color map
      If no color map has been assigned QwtThermo uses the 
      following colors/brushes from the widget palette:
    
      - QPalette::Base
        Background of the pipe
      - QPalette::ButtonText
        Fill brush below the alarm level
      - QPalette::Highlight
        Fill brush for the values above the alarm level
      - QPalette::WindowText
        For the axis of the scale
      - QPalette::Text
        For the labels of the scale
    
    pixhawk's avatar
    pixhawk committed
    */
    
    Bryant's avatar
    Bryant committed
    class QWT_EXPORT QwtThermo: public QwtAbstractScale
    
    pixhawk's avatar
    pixhawk committed
    {
        Q_OBJECT
    
    
    Bryant's avatar
    Bryant committed
        Q_ENUMS( ScalePosition )
        Q_ENUMS( OriginMode )
    
        Q_PROPERTY( Qt::Orientation orientation
            READ orientation WRITE setOrientation )
        Q_PROPERTY( ScalePosition scalePosition 
            READ scalePosition WRITE setScalePosition )
        Q_PROPERTY( OriginMode originMode READ originMode WRITE setOriginMode )
    
    pixhawk's avatar
    pixhawk committed
    
        Q_PROPERTY( bool alarmEnabled READ alarmEnabled WRITE setAlarmEnabled )
        Q_PROPERTY( double alarmLevel READ alarmLevel WRITE setAlarmLevel )
    
    Bryant's avatar
    Bryant committed
        Q_PROPERTY( double origin READ origin WRITE setOrigin )
        Q_PROPERTY( int spacing READ spacing WRITE setSpacing )
    
    pixhawk's avatar
    pixhawk committed
        Q_PROPERTY( int borderWidth READ borderWidth WRITE setBorderWidth )
        Q_PROPERTY( int pipeWidth READ pipeWidth WRITE setPipeWidth )
        Q_PROPERTY( double value READ value WRITE setValue )
    
    public:
    
    Bryant's avatar
    Bryant committed
        /*!
          Position of the scale
          \sa setScalePosition(), setOrientation()
         */
        enum ScalePosition
        {
            //! The slider has no scale
    
    Bryant's avatar
    Bryant committed
    
            //! The scale is right of a vertical or below of a horizontal slider
            LeadingScale,
    
            //! The scale is left of a vertical or above of a horizontal slider
            TrailingScale
    
    pixhawk's avatar
    pixhawk committed
        };
    
    
    Bryant's avatar
    Bryant committed
        /*!
          Origin mode. This property specifies where the beginning of the liquid
          is placed.
    
          \sa setOriginMode(), setOrigin()
        */
        enum OriginMode
        {
            //! The origin is the minimum of the scale
            OriginMinimum,
    
            //! The origin is the maximum of the scale
            OriginMaximum,
    
            //! The origin is specified using the origin() property
            OriginCustom
        };
    
        explicit QwtThermo( QWidget *parent = NULL );
    
    pixhawk's avatar
    pixhawk committed
        virtual ~QwtThermo();
    
    
    Bryant's avatar
    Bryant committed
        void setOrientation( Qt::Orientation );
        Qt::Orientation orientation() const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void setScalePosition( ScalePosition );
        ScalePosition scalePosition() const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void setSpacing( int );
        int spacing() const;
    
        void setBorderWidth( int w );
    
    pixhawk's avatar
    pixhawk committed
        int borderWidth() const;
    
    
    Bryant's avatar
    Bryant committed
        void setOriginMode( OriginMode );
        OriginMode originMode() const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void setOrigin( double );
        double origin() const;
    
    Bryant's avatar
    Bryant committed
        void setFillBrush( const QBrush &b );
        QBrush fillBrush() const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void setAlarmBrush( const QBrush &b );
        QBrush alarmBrush() const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void setAlarmLevel( double v );
    
    pixhawk's avatar
    pixhawk committed
        double alarmLevel() const;
    
    
    Bryant's avatar
    Bryant committed
        void setAlarmEnabled( bool tf );
    
    pixhawk's avatar
    pixhawk committed
        bool alarmEnabled() const;
    
    
    Bryant's avatar
    Bryant committed
        void setColorMap( QwtColorMap * );
        QwtColorMap *colorMap();
        const QwtColorMap *colorMap() const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void setPipeWidth( int w );
        int pipeWidth() const;
    
    pixhawk's avatar
    pixhawk committed
    
    
    Bryant's avatar
    Bryant committed
        void setRangeFlags( QwtInterval::BorderFlags );
        QwtInterval::BorderFlags rangeFlags() const;
    
    pixhawk's avatar
    pixhawk committed
    
        double value() const;
    
        virtual QSize sizeHint() const;
        virtual QSize minimumSizeHint() const;
    
    
    Bryant's avatar
    Bryant committed
        void setScaleDraw( QwtScaleDraw * );
    
    pixhawk's avatar
    pixhawk committed
        const QwtScaleDraw *scaleDraw() const;
    
    
    Bryant's avatar
    Bryant committed
    public Q_SLOTS:
        virtual void setValue( double val );
    
    pixhawk's avatar
    pixhawk committed
    protected:
    
    Bryant's avatar
    Bryant committed
        virtual void drawLiquid( QPainter *, const QRect & ) const;
    
    pixhawk's avatar
    pixhawk committed
        virtual void scaleChange();
    
    
    Bryant's avatar
    Bryant committed
        virtual void paintEvent( QPaintEvent * );
        virtual void resizeEvent( QResizeEvent * );
        virtual void changeEvent( QEvent * );
    
    pixhawk's avatar
    pixhawk committed
    
        QwtScaleDraw *scaleDraw();
    
    
    Bryant's avatar
    Bryant committed
        QRect pipeRect() const;
        QRect fillRect( const QRect & ) const;
        QRect alarmRect( const QRect & ) const;
    
    
    pixhawk's avatar
    pixhawk committed
    private:
    
    Bryant's avatar
    Bryant committed
        void layoutThermo( bool );
    
    pixhawk's avatar
    pixhawk committed
        class PrivateData;
        PrivateData *d_data;
    };
    
    #endif