Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

qwt_grid.cpp

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 #include <qpainter.h>
00011 #include "qwt_painter.h"
00012 #include "qwt_grid.h"
00013 
00015 QwtGrid::QwtGrid()
00016 {
00017     d_xMinEnabled = FALSE;
00018     d_yMinEnabled = FALSE;
00019     d_xEnabled = TRUE;
00020     d_yEnabled = TRUE;
00021 }
00022 
00024 QwtGrid::~QwtGrid()
00025 {
00026 }
00027 
00035 void QwtGrid::enableX(bool tf)
00036 {
00037     if ( d_xEnabled != tf )
00038     {
00039         d_xEnabled = tf;
00040         gridChanged();
00041     }
00042 }
00043 
00049 void QwtGrid::enableY(bool tf)
00050 {
00051     if ( d_yEnabled != tf )
00052     {
00053         d_yEnabled = tf;  
00054         gridChanged();
00055     }
00056 }
00057 
00063 void QwtGrid::enableXMin(bool tf)
00064 {
00065     if ( d_xMinEnabled != tf )
00066     {
00067         d_xMinEnabled = tf;
00068         gridChanged();
00069     }
00070 }
00071 
00077 void QwtGrid::enableYMin(bool tf)
00078 {
00079     if ( d_yMinEnabled != tf )
00080     {
00081         d_yMinEnabled = tf;
00082         gridChanged();
00083     }
00084 }
00085 
00093 void QwtGrid::setXDiv(const QwtScaleDiv &sx)
00094 {
00095     if ( d_sdx != sx )
00096     {
00097         d_sdx = sx;
00098         gridChanged();
00099     }
00100 }
00101 
00109 void QwtGrid::setYDiv(const QwtScaleDiv &sy)
00110 {
00111     if ( d_sdy != sy )
00112     {
00113         d_sdy = sy;    
00114         gridChanged();
00115     }
00116 }
00117 
00122 void QwtGrid::setPen(const QPen &p)
00123 {
00124     if ( d_majPen != p || d_minPen != p )
00125     {
00126         d_majPen = p;
00127         d_minPen = p;
00128         gridChanged();
00129     }
00130 }
00131 
00136 void QwtGrid::setMajPen(const QPen &p)
00137 {
00138     if ( d_majPen != p )
00139     {
00140         d_majPen = p;
00141         gridChanged();
00142     }
00143 }
00144 
00149 void QwtGrid::setMinPen(const QPen &p)
00150 {
00151     if ( d_minPen != p )
00152     {
00153         d_minPen = p;  
00154         gridChanged();
00155     }
00156 }
00157 
00170 void QwtGrid::draw(QPainter *p, const QRect &r, 
00171     const QwtDiMap &mx, const QwtDiMap &my) const
00172 {
00173     int x1 = r.left();
00174     int x2 = r.right();
00175     int y1 = r.top();
00176     int y2 = r.bottom();
00177 
00178     //
00179     //  draw minor gridlines
00180     //
00181     p->setPen(d_minPen);
00182     
00183     if (d_xEnabled && d_xMinEnabled)
00184     {
00185         for (uint i = 0; i < d_sdx.minCnt(); i++)
00186         {
00187             const int x = mx.transform(d_sdx.minMark(i));
00188             if ((x >= x1) && (x <= x2))
00189                 QwtPainter::drawLine(p, x, y1, x, y2);
00190         }
00191     }
00192 
00193     if (d_yEnabled && d_yMinEnabled)
00194     {
00195         for (uint i = 0; i < d_sdy.minCnt(); i++)
00196         {
00197             const int y = my.transform(d_sdy.minMark(i));
00198             if ((y >= y1) && (y <= y2))
00199                 QwtPainter::drawLine(p, x1, y, x2, y);
00200         }
00201     }
00202 
00203     //
00204     //  draw major gridlines
00205     //
00206     p->setPen(d_majPen);
00207     
00208     if (d_xEnabled)
00209     {
00210         for (uint i = 0; i < d_sdx.majCnt(); i++)
00211         {
00212             const int x = mx.transform(d_sdx.majMark(i));
00213             if ((x >= x1) && (x <= x2))
00214                 QwtPainter::drawLine(p, x, y1, x, y2);
00215         }
00216     
00217     }
00218     
00219     if (d_yEnabled)
00220     {
00221         for (uint i = 0; i < d_sdy.majCnt(); i++)
00222         {
00223             const int y = my.transform(d_sdy.majMark(i));
00224             if ((y >= y1) && (y <= y2))
00225                 QwtPainter::drawLine(p, x1, y, x2, y);
00226         }
00227     }
00228 }
00229 
00234 const QPen &QwtGrid::majPen() const 
00235 { 
00236     return d_majPen; 
00237 }
00238 
00243 const QPen &QwtGrid::minPen() const 
00244 { 
00245     return d_minPen; 
00246 }
00247   
00252 bool QwtGrid::xEnabled() const
00253 { 
00254     return d_xEnabled; 
00255 }
00256 
00261 bool QwtGrid::xMinEnabled() const 
00262 { 
00263     return d_xMinEnabled; 
00264 }
00265 
00270 bool QwtGrid::yEnabled() const 
00271 { 
00272     return d_yEnabled; 
00273 }
00274 
00279 bool QwtGrid::yMinEnabled() const 
00280 {
00281     return d_yMinEnabled; 
00282 }
00283 
00284   
00286 const QwtScaleDiv &QwtGrid::xScaleDiv() const 
00287 { 
00288     return d_sdx; 
00289 }
00290 
00292 const QwtScaleDiv &QwtGrid::yScaleDiv() const 
00293 { 
00294     return d_sdy; 
00295 }
00296  
00304 void QwtGrid::gridChanged() 
00305 {
00306 }
00307 

Generated on Sun Nov 21 11:12:43 2004 for Qwt User's Guide by doxygen 1.3.5