Qwt User's Guide
|
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_PAINTER_H 00011 #define QWT_PAINTER_H 00012 00013 #include "qwt_global.h" 00014 00015 #include <qpoint.h> 00016 #include <qrect.h> 00017 #include <qpen.h> 00018 #include <qline.h> 00019 #include <qpalette.h> 00020 00021 class QPainter; 00022 class QBrush; 00023 class QColor; 00024 class QWidget; 00025 class QPolygonF; 00026 class QRectF; 00027 class QImage; 00028 class QPixmap; 00029 class QwtScaleMap; 00030 class QwtColorMap; 00031 class QwtInterval; 00032 00033 class QTextDocument; 00034 class QPainterPath; 00035 00039 class QWT_EXPORT QwtPainter 00040 { 00041 public: 00042 static void setPolylineSplitting( bool ); 00043 static bool polylineSplitting(); 00044 00045 static void setRoundingAlignment( bool ); 00046 static bool roundingAlignment(); 00047 static bool roundingAlignment(QPainter *); 00048 00049 static void drawText( QPainter *, double x, double y, const QString & ); 00050 static void drawText( QPainter *, const QPointF &, const QString & ); 00051 static void drawText( QPainter *, double x, double y, double w, double h, 00052 int flags, const QString & ); 00053 static void drawText( QPainter *, const QRectF &, 00054 int flags, const QString & ); 00055 00056 #ifndef QT_NO_RICHTEXT 00057 static void drawSimpleRichText( QPainter *, const QRectF &, 00058 int flags, const QTextDocument & ); 00059 #endif 00060 00061 static void drawRect( QPainter *, double x, double y, double w, double h ); 00062 static void drawRect( QPainter *, const QRectF &rect ); 00063 static void fillRect( QPainter *, const QRectF &, const QBrush & ); 00064 00065 static void drawEllipse( QPainter *, const QRectF & ); 00066 static void drawPie( QPainter *, const QRectF & r, int a, int alen ); 00067 00068 static void drawLine( QPainter *, double x1, double y1, double x2, double y2 ); 00069 static void drawLine( QPainter *, const QPointF &p1, const QPointF &p2 ); 00070 static void drawLine( QPainter *, const QLineF & ); 00071 00072 static void drawPolygon( QPainter *, const QPolygonF & ); 00073 static void drawPolyline( QPainter *, const QPolygonF & ); 00074 static void drawPolyline( QPainter *, const QPointF *, int pointCount ); 00075 00076 static void drawPolygon( QPainter *, const QPolygon & ); 00077 static void drawPolyline( QPainter *, const QPolygon & ); 00078 static void drawPolyline( QPainter *, const QPoint *, int pointCount ); 00079 00080 static void drawPoint( QPainter *, const QPoint & ); 00081 static void drawPoints( QPainter *, const QPolygon & ); 00082 static void drawPoints( QPainter *, const QPoint *, int pointCount ); 00083 00084 static void drawPoint( QPainter *, double x, double y ); 00085 static void drawPoint( QPainter *, const QPointF & ); 00086 static void drawPoints( QPainter *, const QPolygonF & ); 00087 static void drawPoints( QPainter *, const QPointF *, int pointCount ); 00088 00089 static void drawPath( QPainter *, const QPainterPath & ); 00090 static void drawImage( QPainter *, const QRectF &, const QImage & ); 00091 static void drawPixmap( QPainter *, const QRectF &, const QPixmap & ); 00092 00093 static void drawRoundFrame( QPainter *, 00094 const QRectF &, const QPalette &, int lineWidth, int frameStyle ); 00095 00096 static void drawRoundedFrame( QPainter *, 00097 const QRectF &, double xRadius, double yRadius, 00098 const QPalette &, int lineWidth, int frameStyle ); 00099 00100 static void drawFrame( QPainter *, const QRectF &rect, 00101 const QPalette &palette, QPalette::ColorRole foregroundRole, 00102 int lineWidth, int midLineWidth, int frameStyle ); 00103 00104 static void drawFocusRect( QPainter *, const QWidget * ); 00105 static void drawFocusRect( QPainter *, const QWidget *, const QRect & ); 00106 00107 static void drawColorBar( QPainter *painter, 00108 const QwtColorMap &, const QwtInterval &, 00109 const QwtScaleMap &, Qt::Orientation, const QRectF & ); 00110 00111 static bool isAligning( QPainter *painter ); 00112 static bool isX11GraphicsSystem(); 00113 00114 static void fillPixmap( const QWidget *, 00115 QPixmap &, const QPoint &offset = QPoint() ); 00116 00117 static void drawBackgound( QPainter *painter, 00118 const QRectF &rect, const QWidget *widget ); 00119 00120 static QPixmap backingStore( QWidget *, const QSize & ); 00121 00122 private: 00123 static bool d_polylineSplitting; 00124 static bool d_roundingAlignment; 00125 }; 00126 00128 inline void QwtPainter::drawPoint( QPainter *painter, double x, double y ) 00129 { 00130 QwtPainter::drawPoint( painter, QPointF( x, y ) ); 00131 } 00132 00134 inline void QwtPainter::drawPoints( QPainter *painter, const QPolygon &polygon ) 00135 { 00136 drawPoints( painter, polygon.data(), polygon.size() ); 00137 } 00138 00140 inline void QwtPainter::drawPoints( QPainter *painter, const QPolygonF &polygon ) 00141 { 00142 drawPoints( painter, polygon.data(), polygon.size() ); 00143 } 00144 00146 inline void QwtPainter::drawLine( QPainter *painter, 00147 double x1, double y1, double x2, double y2 ) 00148 { 00149 QwtPainter::drawLine( painter, QPointF( x1, y1 ), QPointF( x2, y2 ) ); 00150 } 00151 00153 inline void QwtPainter::drawLine( QPainter *painter, const QLineF &line ) 00154 { 00155 QwtPainter::drawLine( painter, line.p1(), line.p2() ); 00156 } 00157 00162 inline bool QwtPainter::polylineSplitting() 00163 { 00164 return d_polylineSplitting; 00165 } 00166 00175 inline bool QwtPainter::roundingAlignment() 00176 { 00177 return d_roundingAlignment; 00178 } 00179 00184 inline bool QwtPainter::roundingAlignment(QPainter *painter) 00185 { 00186 return d_roundingAlignment && isAligning(painter); 00187 } 00188 #endif