Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

qwt_dial.h

00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * Qwt Widget Library
00003  * Copyright (C) 1997   Josef Wilgen
00004  * Copyright (C) 2002   Uwe Rathmann
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the Qwt License, Version 1.0
00008  *****************************************************************************/
00009 
00010 // vim: expandtab
00011 
00012 #ifndef QWT_DIAL_H
00013 #define QWT_DIAL_H 1
00014 
00015 #include <qframe.h>
00016 #include <qpalette.h>
00017 #include "qwt_global.h"
00018 #include "qwt_abstract_slider.h"
00019 #include "qwt_scale_draw.h"
00020 
00021 class QwtDialNeedle;
00022 class QwtDial;
00023 
00030 class QWT_EXPORT QwtDialScaleDraw: public QwtScaleDraw
00031 {
00032 public:
00033     explicit QwtDialScaleDraw(QwtDial *);
00034     virtual QString label(double value) const;
00035 
00036     void showLabels(bool);
00037     bool visibleLabels() const;
00038 
00039     void setPenWidth(uint);
00040     uint penWidth() const;
00041 
00042 private:
00043     QwtDial *d_parent;
00044     int d_penWidth;
00045     bool d_visibleLabels;
00046 };
00047 
00072 class QWT_EXPORT QwtDial: public QwtAbstractSlider
00073 {
00074     Q_OBJECT
00075 
00076     Q_ENUMS(Shadow)
00077     Q_ENUMS(Mode)
00078 
00079     Q_PROPERTY(bool visibleBackground READ hasVisibleBackground WRITE showBackground)
00080     Q_PROPERTY(int lineWidth READ lineWidth WRITE setLineWidth)
00081     Q_PROPERTY(Shadow frameShadow READ frameShadow WRITE setFrameShadow)
00082     Q_PROPERTY(Mode mode READ mode WRITE setMode)
00083     Q_PROPERTY(double origin READ origin WRITE setOrigin)
00084     Q_PROPERTY(bool wrapping READ wrapping WRITE setWrapping)
00085 
00086     friend class QwtDialScaleDraw;
00087 public:
00088 
00097     enum Shadow
00098     {
00099         Plain = QFrame::Plain,
00100         Raised = QFrame::Raised,
00101         Sunken = QFrame::Sunken
00102     };
00103 
00105     enum ScaleOptions
00106     {
00107         ScaleBackbone = 1,
00108         ScaleTicks = 2,
00109         ScaleLabel = 4
00110     };
00111 
00117     enum Mode
00118     {
00119         RotateNeedle,
00120         RotateScale
00121     };
00122 
00123     QwtDial( QWidget* parent = NULL);
00124     virtual ~QwtDial();
00125 
00126     void setFrameShadow(Shadow);
00127     Shadow frameShadow() const;
00128 
00129     bool hasVisibleBackground() const;
00130     void showBackground(bool);
00131 
00132     void setLineWidth(int);
00133     int lineWidth() const;
00134 
00135     void setMode(Mode);
00136     Mode mode() const;
00137 
00138     virtual void setWrapping(bool);
00139     bool wrapping() const;
00140 
00141     virtual void setScale(int maxMajIntv, int maxMinIntv, double step = 0.0);
00142 
00143     void setScaleArc(double min, double max);
00144     void setScaleOptions(int);
00145     void setScaleTicks(int minLen, int medLen, int majLen, int penWidth = 1);
00146 
00147     double minScaleArc() const;
00148     double maxScaleArc() const;
00149 
00150     virtual void setOrigin(double);
00151     double origin() const;
00152 
00153     virtual void setNeedle(QwtDialNeedle *);
00154     const QwtDialNeedle *needle() const;
00155     QwtDialNeedle *needle();
00156 
00157     QRect boundingRect() const;
00158     QRect contentsRect() const;
00159     virtual QRect scaleContentsRect() const;
00160 
00161     virtual QSize sizeHint() const;
00162     virtual QSize minimumSizeHint() const;
00163 
00164     virtual void setScaleDraw(QwtDialScaleDraw *);
00165 
00166     QwtDialScaleDraw *scaleDraw();
00167     const QwtDialScaleDraw *scaleDraw() const;
00168 
00169 protected:
00170     virtual void paintEvent(QPaintEvent *);
00171     virtual void resizeEvent(QResizeEvent *);
00172     virtual void keyPressEvent(QKeyEvent *);
00173 
00174     virtual void updateMask();
00175 
00176     virtual void drawFrame(QPainter *p);
00177     virtual void drawContents(QPainter *) const;
00178     virtual void drawFocusIndicator(QPainter *) const;
00179 
00180     virtual void drawScale(QPainter *, const QPoint &center,
00181         int radius, double origin, double arcMin, double arcMax) const;
00182 
00192     virtual void drawScaleContents(QPainter *painter, const QPoint &center, 
00193         int radius) const;
00194 
00195     virtual void drawNeedle(QPainter *, const QPoint &, 
00196         int radius, double direction, QPalette::ColorGroup) const;
00197 
00198     virtual QString scaleLabel(double) const;
00199     void updateScale();
00200 
00201     virtual void rangeChange();
00202     virtual void valueChange();
00203 
00204     virtual double getValue(const QPoint &);
00205     virtual void getScrollMode(const QPoint &, 
00206         int &scrollMode, int &direction);
00207 
00208 private:
00209     class PrivateData;
00210     PrivateData *d_data;
00211 };
00212 
00213 #endif

Generated on Wed Aug 31 23:02:29 2005 for Qwt User's Guide by  doxygen 1.4.1