Eneboo - Documentación para desarrolladores
|
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_round_scale_draw.h" 00020 00021 class QwtDialNeedle; 00022 class QwtDial; 00023 00029 class QWT_EXPORT QwtDialScaleDraw: public QwtRoundScaleDraw 00030 { 00031 public: 00032 explicit QwtDialScaleDraw(QwtDial *); 00033 virtual QwtText label(double value) const; 00034 00035 void setPenWidth(uint); 00036 uint penWidth() const; 00037 00038 private: 00039 QwtDial *d_parent; 00040 int d_penWidth; 00041 }; 00042 00067 class QWT_EXPORT QwtDial: public QwtAbstractSlider 00068 { 00069 Q_OBJECT 00070 00071 Q_ENUMS(Shadow) 00072 Q_ENUMS(Mode) 00073 00074 Q_PROPERTY(bool visibleBackground READ hasVisibleBackground WRITE showBackground) 00075 Q_PROPERTY(int lineWidth READ lineWidth WRITE setLineWidth) 00076 Q_PROPERTY(Shadow frameShadow READ frameShadow WRITE setFrameShadow) 00077 Q_PROPERTY(Mode mode READ mode WRITE setMode) 00078 Q_PROPERTY(double origin READ origin WRITE setOrigin) 00079 Q_PROPERTY(bool wrapping READ wrapping WRITE setWrapping) 00080 00081 friend class QwtDialScaleDraw; 00082 public: 00083 00092 enum Shadow 00093 { 00094 Plain = QFrame::Plain, 00095 Raised = QFrame::Raised, 00096 Sunken = QFrame::Sunken 00097 }; 00098 00100 enum ScaleOptions 00101 { 00102 ScaleBackbone = 1, 00103 ScaleTicks = 2, 00104 ScaleLabel = 4 00105 }; 00106 00112 enum Mode 00113 { 00114 RotateNeedle, 00115 RotateScale 00116 }; 00117 00118 explicit QwtDial( QWidget *parent = NULL); 00119 #if QT_VERSION < 0x040000 00120 explicit QwtDial( QWidget *parent, const char *name); 00121 #endif 00122 00123 virtual ~QwtDial(); 00124 00125 void setFrameShadow(Shadow); 00126 Shadow frameShadow() const; 00127 00128 bool hasVisibleBackground() const; 00129 void showBackground(bool); 00130 00131 void setLineWidth(int); 00132 int lineWidth() const; 00133 00134 void setMode(Mode); 00135 Mode mode() const; 00136 00137 virtual void setWrapping(bool); 00138 bool wrapping() const; 00139 00140 virtual void setScale(int maxMajIntv, int maxMinIntv, double step = 0.0); 00141 00142 void setScaleArc(double min, double max); 00143 void setScaleOptions(int); 00144 void setScaleTicks(int minLen, int medLen, int majLen, int penWidth = 1); 00145 00146 double minScaleArc() const; 00147 double maxScaleArc() const; 00148 00149 virtual void setOrigin(double); 00150 double origin() const; 00151 00152 virtual void setNeedle(QwtDialNeedle *); 00153 const QwtDialNeedle *needle() const; 00154 QwtDialNeedle *needle(); 00155 00156 QRect boundingRect() const; 00157 QRect contentsRect() const; 00158 virtual QRect scaleContentsRect() const; 00159 00160 virtual QSize sizeHint() const; 00161 virtual QSize minimumSizeHint() const; 00162 00163 virtual void setScaleDraw(QwtDialScaleDraw *); 00164 00165 QwtDialScaleDraw *scaleDraw(); 00166 const QwtDialScaleDraw *scaleDraw() const; 00167 00168 protected: 00169 virtual void paintEvent(QPaintEvent *); 00170 virtual void resizeEvent(QResizeEvent *); 00171 virtual void keyPressEvent(QKeyEvent *); 00172 00173 virtual void updateMask(); 00174 00175 virtual void drawFrame(QPainter *p); 00176 virtual void drawContents(QPainter *) const; 00177 virtual void drawFocusIndicator(QPainter *) const; 00178 00179 virtual void drawScale(QPainter *, const QPoint ¢er, 00180 int radius, double origin, double arcMin, double arcMax) const; 00181 00191 virtual void drawScaleContents(QPainter *painter, const QPoint ¢er, 00192 int radius) const; 00193 00194 virtual void drawNeedle(QPainter *, const QPoint &, 00195 int radius, double direction, QPalette::ColorGroup) const; 00196 00197 virtual QwtText scaleLabel(double) const; 00198 void updateScale(); 00199 00200 virtual void rangeChange(); 00201 virtual void valueChange(); 00202 00203 virtual double getValue(const QPoint &); 00204 virtual void getScrollMode(const QPoint &, 00205 int &scrollMode, int &direction); 00206 00207 private: 00208 void initDial(); 00209 00210 class PrivateData; 00211 PrivateData *d_data; 00212 }; 00213 00214 #endif