/* -*- 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 "qwt_global.h" #include "qwt_text.h" #include "qwt_scale_draw.h" #include #include #include #include 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: //! Layout flags of the title enum LayoutFlag { /*! The title of vertical scales is painted from top to bottom. Otherwise it is painted from bottom to top. */ TitleInverted = 1 }; //! Layout flags of the title typedef QFlags LayoutFlags; explicit QwtScaleWidget( QWidget *parent = NULL ); explicit QwtScaleWidget( QwtScaleDraw::Alignment, QWidget *parent = NULL ); virtual ~QwtScaleWidget(); Q_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 setLayoutFlag( LayoutFlag, bool on ); bool testLayoutFlag( LayoutFlag ) 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 setScaleDiv( QwtScaleTransformation *, const QwtScaleDiv &sd ); void setScaleDraw( QwtScaleDraw * ); const QwtScaleDraw *scaleDraw() const; QwtScaleDraw *scaleDraw(); void setLabelAlignment( Qt::Alignment ); void setLabelRotation( double rotation ); void setColorBarEnabled( bool ); bool isColorBarEnabled() const; void setColorBarWidth( int ); int colorBarWidth() const; void setColorMap( const QwtInterval &, QwtColorMap * ); QwtInterval 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 QRectF & ) const; void drawTitle( QPainter *painter, QwtScaleDraw::Alignment, const QRectF &rect ) const; void setAlignment( QwtScaleDraw::Alignment ); QwtScaleDraw::Alignment alignment() const; QRectF colorBarRect( const QRectF& ) const; protected: virtual void paintEvent( QPaintEvent * ); virtual void resizeEvent( QResizeEvent * ); void draw( QPainter *p ) const; void scaleChange(); void layoutScale( bool update = true ); private: void initScale( QwtScaleDraw::Alignment ); class PrivateData; PrivateData *d_data; }; Q_DECLARE_OPERATORS_FOR_FLAGS( QwtScaleWidget::LayoutFlags ) #endif