1 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- ***************************** 2 * Qwt Widget Library 3 * Copyright (C) 1997 Josef Wilgen 4 * Copyright (C) 2002 Uwe Rathmann 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the Qwt License, Version 1.0 8 *****************************************************************************/ 9 10 #ifndef QWT_SCALE_WIDGET_H 11 #define QWT_SCALE_WIDGET_H 12 13 #include "qwt_global.h" 14 #include "qwt_text.h" 15 #include "qwt_scale_draw.h" 16 #include <qwidget.h> 17 #include <qfont.h> 18 #include <qcolor.h> 19 #include <qstring.h> 20 21 class QPainter; 22 class QwtTransform; 23 class QwtScaleDiv; 24 class QwtColorMap; 25 26 /*! 27 \brief A Widget which contains a scale 28 29 This Widget can be used to decorate composite widgets with 30 a scale. 31 */ 32 33 class QWT_EXPORT QwtScaleWidget : public QWidget 34 { 35 Q_OBJECT 36 37 public: 38 //! Layout flags of the title 39 enum LayoutFlag 40 { 41 /*! 42 The title of vertical scales is painted from top to bottom. 43 Otherwise it is painted from bottom to top. 44 */ 45 TitleInverted = 1 46 }; 47 48 //! Layout flags of the title 49 typedef QFlags<LayoutFlag> LayoutFlags; 50 51 explicit QwtScaleWidget( QWidget *parent = NULL ); 52 explicit QwtScaleWidget( QwtScaleDraw::Alignment, QWidget *parent = NULL ); 53 virtual ~QwtScaleWidget(); 54 55 Q_SIGNALS: 56 //! Signal emitted, whenever the scale division changes 57 void scaleDivChanged(); 58 59 public: 60 void setTitle( const QString &title ); 61 void setTitle( const QwtText &title ); 62 QwtText title() const; 63 64 void setLayoutFlag( LayoutFlag, bool on ); 65 bool testLayoutFlag( LayoutFlag ) const; 66 67 void setBorderDist( int dist1, int dist2 ); 68 int startBorderDist() const; 69 int endBorderDist() const; 70 71 void getBorderDistHint( int &start, int &end ) const; 72 73 void getMinBorderDist( int &start, int &end ) const; 74 void setMinBorderDist( int start, int end ); 75 76 void setMargin( int ); 77 int margin() const; 78 79 void setSpacing( int ); 80 int spacing() const; 81 82 void setScaleDiv( const QwtScaleDiv & ); 83 void setTransformation( QwtTransform * ); 84 85 void setScaleDraw( QwtScaleDraw * ); 86 const QwtScaleDraw *scaleDraw() const; 87 QwtScaleDraw *scaleDraw(); 88 89 void setLabelAlignment( Qt::Alignment ); 90 void setLabelRotation( double rotation ); 91 92 void setColorBarEnabled( bool ); 93 bool isColorBarEnabled() const; 94 95 void setColorBarWidth( int ); 96 int colorBarWidth() const; 97 98 void setColorMap( const QwtInterval &, QwtColorMap * ); 99 100 QwtInterval colorBarInterval() const; 101 const QwtColorMap *colorMap() const; 102 103 virtual QSize sizeHint() const; 104 virtual QSize minimumSizeHint() const; 105 106 int titleHeightForWidth( int width ) const; 107 int dimForLength( int length, const QFont &scaleFont ) const; 108 109 void drawColorBar( QPainter *painter, const QRectF & ) const; 110 void drawTitle( QPainter *painter, QwtScaleDraw::Alignment, 111 const QRectF &rect ) const; 112 113 void setAlignment( QwtScaleDraw::Alignment ); 114 QwtScaleDraw::Alignment alignment() const; 115 116 QRectF colorBarRect( const QRectF& ) const; 117 118 protected: 119 virtual void paintEvent( QPaintEvent * ); 120 virtual void resizeEvent( QResizeEvent * ); 121 122 void draw( QPainter * ) const; 123 124 void scaleChange(); 125 void layoutScale( bool update_geometry = true ); 126 127 private: 128 void initScale( QwtScaleDraw::Alignment ); 129 130 class PrivateData; 131 PrivateData *d_data; 132 }; 133 134 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtScaleWidget::LayoutFlags ) 135 136 #endif 137