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_COLUMN_SYMBOL_H 00011 #define QWT_COLUMN_SYMBOL_H 00012 00013 #include "qwt_global.h" 00014 #include "qwt_interval.h" 00015 #include <qpen.h> 00016 #include <qsize.h> 00017 #include <qrect.h> 00018 00019 class QPainter; 00020 class QPalette; 00021 class QRect; 00022 class QwtText; 00023 00028 class QWT_EXPORT QwtColumnRect 00029 { 00030 public: 00032 enum Direction 00033 { 00035 LeftToRight, 00036 00038 RightToLeft, 00039 00041 BottomToTop, 00042 00044 TopToBottom 00045 }; 00046 00048 QwtColumnRect(): 00049 direction( BottomToTop ) 00050 { 00051 } 00052 00054 QRectF toRect() const 00055 { 00056 QRectF r( hInterval.minValue(), vInterval.minValue(), 00057 hInterval.maxValue() - hInterval.minValue(), 00058 vInterval.maxValue() - vInterval.minValue() ); 00059 r = r.normalized(); 00060 00061 if ( hInterval.borderFlags() & QwtInterval::ExcludeMinimum ) 00062 r.adjust( 1, 0, 0, 0 ); 00063 if ( hInterval.borderFlags() & QwtInterval::ExcludeMaximum ) 00064 r.adjust( 0, 0, -1, 0 ); 00065 if ( vInterval.borderFlags() & QwtInterval::ExcludeMinimum ) 00066 r.adjust( 0, 1, 0, 0 ); 00067 if ( vInterval.borderFlags() & QwtInterval::ExcludeMaximum ) 00068 r.adjust( 0, 0, 0, -1 ); 00069 00070 return r; 00071 } 00072 00074 Qt::Orientation orientation() const 00075 { 00076 if ( direction == LeftToRight || direction == RightToLeft ) 00077 return Qt::Horizontal; 00078 00079 return Qt::Vertical; 00080 } 00081 00083 QwtInterval hInterval; 00084 00086 QwtInterval vInterval; 00087 00089 Direction direction; 00090 }; 00091 00093 class QWT_EXPORT QwtColumnSymbol 00094 { 00095 public: 00100 enum Style 00101 { 00103 NoStyle = -1, 00104 00109 Box, 00110 00116 UserStyle = 1000 00117 }; 00118 00123 enum FrameStyle 00124 { 00126 NoFrame, 00127 00129 Plain, 00130 00132 Raised 00133 }; 00134 00135 public: 00136 QwtColumnSymbol( Style = NoStyle ); 00137 virtual ~QwtColumnSymbol(); 00138 00139 void setFrameStyle( FrameStyle style ); 00140 FrameStyle frameStyle() const; 00141 00142 void setLineWidth( int width ); 00143 int lineWidth() const; 00144 00145 void setPalette( const QPalette & ); 00146 const QPalette &palette() const; 00147 00148 void setStyle( Style ); 00149 Style style() const; 00150 00151 virtual void draw( QPainter *, const QwtColumnRect & ) const; 00152 00153 protected: 00154 void drawBox( QPainter *, const QwtColumnRect & ) const; 00155 00156 private: 00157 class PrivateData; 00158 PrivateData* d_data; 00159 }; 00160 00161 #endif