Qwt User's Guide svn
qwt_column_symbol.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 #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
qmi style