Qwt User's Guide
svn
|
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 #ifndef QWT_ABSTRACT_SCALE_DRAW_H 00011 #define QWT_ABSTRACT_SCALE_DRAW_H 00012 00013 #include "qwt_global.h" 00014 #include "qwt_scale_div.h" 00015 #include "qwt_text.h" 00016 00017 class QPalette; 00018 class QPainter; 00019 class QFont; 00020 class QwtScaleTransformation; 00021 class QwtScaleMap; 00022 00032 class QWT_EXPORT QwtAbstractScaleDraw 00033 { 00034 public: 00035 00040 enum ScaleComponent 00041 { 00043 Backbone = 0x01, 00044 00046 Ticks = 0x02, 00047 00049 Labels = 0x04 00050 }; 00051 00053 typedef QFlags<ScaleComponent> ScaleComponents; 00054 00055 QwtAbstractScaleDraw(); 00056 virtual ~QwtAbstractScaleDraw(); 00057 00058 void setScaleDiv( const QwtScaleDiv &s ); 00059 const QwtScaleDiv& scaleDiv() const; 00060 00061 void setTransformation( QwtScaleTransformation * ); 00062 const QwtScaleMap &scaleMap() const; 00063 QwtScaleMap &scaleMap(); 00064 00065 void enableComponent( ScaleComponent, bool enable = true ); 00066 bool hasComponent( ScaleComponent ) const; 00067 00068 void setTickLength( QwtScaleDiv::TickType, double length ); 00069 double tickLength( QwtScaleDiv::TickType ) const; 00070 double maxTickLength() const; 00071 00072 void setSpacing( double margin ); 00073 double spacing() const; 00074 00075 void setPenWidth( int width ); 00076 int penWidth() const; 00077 00078 virtual void draw( QPainter *, const QPalette & ) const; 00079 00080 virtual QwtText label( double ) const; 00081 00091 virtual double extent( const QFont & ) const = 0; 00092 00093 void setMinimumExtent( double ); 00094 double minimumExtent() const; 00095 00096 protected: 00106 virtual void drawTick( QPainter *painter, double value, double len ) const = 0; 00107 00114 virtual void drawBackbone( QPainter *painter ) const = 0; 00115 00124 virtual void drawLabel( QPainter *painter, double value ) const = 0; 00125 00126 void invalidateCache(); 00127 const QwtText &tickLabel( const QFont &, double value ) const; 00128 00129 private: 00130 QwtAbstractScaleDraw( const QwtAbstractScaleDraw & ); 00131 QwtAbstractScaleDraw &operator=( const QwtAbstractScaleDraw & ); 00132 00133 class PrivateData; 00134 PrivateData *d_data; 00135 }; 00136 00137 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtAbstractScaleDraw::ScaleComponents ) 00138 00139 #endif