www.pudn.com > smstools.rar > Fl_SMS_Grid_Surface.cxx


#include "Fl_SMS_Grid_Surface.hxx" 
#include "CLAMGL.hxx" 
 
namespace CLAMVM 
{ 
	Fl_SMS_Grid_Surface::Fl_SMS_Grid_Surface( int X, int Y, int W, int H, const char* label ) 
		: Fl_Gl_2DSurface( X, Y, W, H ), mXAxisGridWidth( 0.1 ), mYAxisGridWidth( 0.1 ) 
	{ 
	} 
 
	Fl_SMS_Grid_Surface::~Fl_SMS_Grid_Surface() 
	{ 
	} 
 
	void Fl_SMS_Grid_Surface::SetGridWidth( double xAxis, double yAxis ) 
	{ 
		mXAxisGridWidth = xAxis; 
		mYAxisGridWidth = yAxis; 
	} 
 
	void Fl_SMS_Grid_Surface::DrawContents() 
	{ 
		if ( MustReproject() ) 
			WCSProject(); 
 
		glClearColor( 1.0, 1.0, 1.0, 0.0 ); 
		glClear( GL_COLOR_BUFFER_BIT ); 
 
		DrawGridLines(); 
	} 
 
 
	void Fl_SMS_Grid_Surface::DrawGridLines() 
	{ 
		DataBoundBox dataBBox; 
		QueryDataBoundBox( dataBBox ); 
 
		double xOffset = dataBBox.mLeft; 
		double yOffset = dataBBox.mBottom; 
 
		glBegin( GL_LINES ); 
		glColor3f( 0.1f, 0.1f, 0.6f ); 
		glLineWidth( 0.5 ); 
 
		while ( yOffset <= dataBBox.mTop ) 
		{ 
			glVertex2d( dataBBox.mLeft, yOffset ); 
			glVertex2d( dataBBox.mRight, yOffset ); 
			yOffset+=mYAxisGridWidth; 
		} 
		 
		while ( xOffset <= dataBBox.mRight ) 
		{ 
			glVertex2d( xOffset, dataBBox.mBottom ); 
			glVertex2d( xOffset, dataBBox.mTop ); 
			xOffset+=mXAxisGridWidth; 
		} 
 
		glLineWidth( 1.0 ); 
		glEnd(); 
	} 
}