3d-viwer: minor clean code
This commit is contained in:
parent
d44521fe6f
commit
355fc48e6a
|
@ -24,6 +24,34 @@
|
||||||
#include "bitmaps.h"
|
#include "bitmaps.h"
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------
|
||||||
|
// helper function (from wxWidgets, opengl/cube.cpp sample
|
||||||
|
// -----------------
|
||||||
|
void CheckGLError()
|
||||||
|
{
|
||||||
|
GLenum errLast = GL_NO_ERROR;
|
||||||
|
|
||||||
|
for ( ;; )
|
||||||
|
{
|
||||||
|
GLenum err = glGetError();
|
||||||
|
if ( err == GL_NO_ERROR )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// normally the error is reset by the call to glGetError() but if
|
||||||
|
// glGetError() itself returns an error, we risk looping forever here
|
||||||
|
// so check that we get a different error than the last time
|
||||||
|
if ( err == errLast )
|
||||||
|
{
|
||||||
|
wxLogError(wxT("OpenGL error state couldn't be reset."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
errLast = err;
|
||||||
|
|
||||||
|
wxLogError(wxT("OpenGL error %d"), err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Pcb3D_GLCanvas implementation
|
* Pcb3D_GLCanvas implementation
|
||||||
*/
|
*/
|
||||||
|
@ -519,7 +547,7 @@ void Pcb3D_GLCanvas::InitGL()
|
||||||
{
|
{
|
||||||
// Ratio width / height of the window display
|
// Ratio width / height of the window display
|
||||||
double ratio_HV = (double) size.x / size.y;
|
double ratio_HV = (double) size.x / size.y;
|
||||||
|
|
||||||
// Initialize Projection Matrix for Perspective View
|
// Initialize Projection Matrix for Perspective View
|
||||||
gluPerspective( 45.0 * g_Parm_3D_Visu.m_Zoom, ratio_HV, 1, 10 );
|
gluPerspective( 45.0 * g_Parm_3D_Visu.m_Zoom, ratio_HV, 1, 10 );
|
||||||
}
|
}
|
||||||
|
@ -538,6 +566,8 @@ void Pcb3D_GLCanvas::InitGL()
|
||||||
|
|
||||||
// Setup light souces:
|
// Setup light souces:
|
||||||
SetLights();
|
SetLights();
|
||||||
|
|
||||||
|
CheckGLError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -603,7 +633,7 @@ void Pcb3D_GLCanvas::TakeScreenshot( wxCommandEvent& event )
|
||||||
GLint x;
|
GLint x;
|
||||||
GLint y;
|
GLint y;
|
||||||
} viewport;
|
} viewport;
|
||||||
|
|
||||||
// Build image from the 3D buffer
|
// Build image from the 3D buffer
|
||||||
wxWindowUpdateLocker noUpdates( this );
|
wxWindowUpdateLocker noUpdates( this );
|
||||||
glGetIntegerv( GL_VIEWPORT, (GLint*) &viewport );
|
glGetIntegerv( GL_VIEWPORT, (GLint*) &viewport );
|
||||||
|
|
|
@ -20,6 +20,8 @@
|
||||||
#error Please set wxUSE_GLCANVAS to 1 in setup.h.
|
#error Please set wxUSE_GLCANVAS to 1 in setup.h.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern void CheckGLError();
|
||||||
|
|
||||||
static void Draw3D_FilledCircle( double posx, double posy, double rayon,
|
static void Draw3D_FilledCircle( double posx, double posy, double rayon,
|
||||||
double hole_rayon, double zpos );
|
double hole_rayon, double zpos );
|
||||||
static void Draw3D_FilledSegment( double startx, double starty,
|
static void Draw3D_FilledSegment( double startx, double starty,
|
||||||
|
@ -348,9 +350,8 @@ GLuint Pcb3D_GLCanvas::CreateDrawGL_List()
|
||||||
glEndList();
|
glEndList();
|
||||||
|
|
||||||
/* Test for errors */
|
/* Test for errors */
|
||||||
GLenum err = glGetError();
|
CheckGLError();
|
||||||
if( err != GL_NO_ERROR )
|
|
||||||
DisplayError( this, wxT( "Error in GL commands" ) );
|
|
||||||
return m_gllist;
|
return m_gllist;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -786,8 +787,6 @@ void D_PAD::Draw3D( Pcb3D_GLCanvas* glcanvas )
|
||||||
delta_cx, delta_cy,
|
delta_cx, delta_cy,
|
||||||
xc, yc;
|
xc, yc;
|
||||||
int angle, delta_angle;
|
int angle, delta_angle;
|
||||||
int coord[4][2];
|
|
||||||
double fcoord[8][2], f_hole_coord[8][2];
|
|
||||||
double scale;
|
double scale;
|
||||||
double zpos;
|
double zpos;
|
||||||
wxPoint shape_pos;
|
wxPoint shape_pos;
|
||||||
|
@ -917,33 +916,18 @@ void D_PAD::Draw3D( Pcb3D_GLCanvas* glcanvas )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PAD_RECT:
|
case PAD_RECT:
|
||||||
|
|
||||||
case PAD_TRAPEZOID:
|
case PAD_TRAPEZOID:
|
||||||
{
|
{
|
||||||
int ddx, ddy;
|
wxPoint coord[5];
|
||||||
ddx = m_DeltaSize.x >> 1;
|
wxRealPoint fcoord[8], f_hole_coord[8];
|
||||||
ddy = m_DeltaSize.y >> 1;
|
BuildPadPolygon( coord, wxSize(0,0), angle );
|
||||||
|
|
||||||
coord[0][0] = -dx - ddy;
|
|
||||||
coord[0][1] = +dy + ddx;
|
|
||||||
|
|
||||||
coord[1][0] = -dx + ddy;
|
|
||||||
coord[1][1] = -dy - ddx;
|
|
||||||
|
|
||||||
coord[2][0] = +dx - ddy;
|
|
||||||
coord[2][1] = -dy + ddx;
|
|
||||||
|
|
||||||
coord[3][0] = +dx + ddy;
|
|
||||||
coord[3][1] = +dy - ddx;
|
|
||||||
|
|
||||||
for( ii = 0; ii < 4; ii++ )
|
for( ii = 0; ii < 4; ii++ )
|
||||||
{
|
{
|
||||||
RotatePoint( &coord[ii][0], &coord[ii][1], angle );
|
coord[ii].x += ux0;
|
||||||
coord[ii][0] += ux0;
|
coord[ii].y += uy0;
|
||||||
coord[ii][1] += uy0;
|
|
||||||
ll = ii * 2;
|
ll = ii * 2;
|
||||||
fcoord[ll][0] = coord[ii][0] *scale;
|
fcoord[ll].x = coord[ii].x *scale;
|
||||||
fcoord[ll][1] = coord[ii][1] *scale;
|
fcoord[ll].y = coord[ii].y *scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
for( ii = 0; ii < 7; ii += 2 )
|
for( ii = 0; ii < 7; ii += 2 )
|
||||||
|
@ -951,18 +935,17 @@ void D_PAD::Draw3D( Pcb3D_GLCanvas* glcanvas )
|
||||||
ll = ii + 2;
|
ll = ii + 2;
|
||||||
if( ll > 7 )
|
if( ll > 7 )
|
||||||
ll -= 8;
|
ll -= 8;
|
||||||
fcoord[ii + 1][0] = (fcoord[ii][0] + fcoord[ll][0]) / 2;
|
fcoord[ii + 1].x = (fcoord[ii].x + fcoord[ll].x) / 2;
|
||||||
fcoord[ii + 1][1] = (fcoord[ii][1] + fcoord[ll][1]) / 2;
|
fcoord[ii + 1].y = (fcoord[ii].y + fcoord[ll].y) / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
for( ii = 0; ii < 8; ii++ )
|
for( ii = 0; ii < 8; ii++ )
|
||||||
{
|
{
|
||||||
f_hole_coord[ii][0] = -hole * 0.707;
|
f_hole_coord[ii].x = -hole * 0.707;
|
||||||
f_hole_coord[ii][1] = hole * 0.707;
|
f_hole_coord[ii].y = hole * 0.707;
|
||||||
RotatePoint( &f_hole_coord[ii][0], &f_hole_coord[ii][1],
|
RotatePoint( &f_hole_coord[ii].x, &f_hole_coord[ii].y, angle - (ii * 450) );
|
||||||
angle - (ii * 450) );
|
f_hole_coord[ii].x += drillx;
|
||||||
f_hole_coord[ii][0] += drillx;
|
f_hole_coord[ii].y += drilly;
|
||||||
f_hole_coord[ii][1] += drilly;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for( layer = FIRST_COPPER_LAYER; layer <= LAST_COPPER_LAYER; layer++ )
|
for( layer = FIRST_COPPER_LAYER; layer <= LAST_COPPER_LAYER; layer++ )
|
||||||
|
@ -991,12 +974,12 @@ void D_PAD::Draw3D( Pcb3D_GLCanvas* glcanvas )
|
||||||
glBegin( GL_QUAD_STRIP );
|
glBegin( GL_QUAD_STRIP );
|
||||||
for( ii = 0; ii < 8; ii++ )
|
for( ii = 0; ii < 8; ii++ )
|
||||||
{
|
{
|
||||||
glVertex3f( f_hole_coord[ii][0], -f_hole_coord[ii][1], zpos );
|
glVertex3f( f_hole_coord[ii].x, -f_hole_coord[ii].y, zpos );
|
||||||
glVertex3f( fcoord[ii][0], -fcoord[ii][1], zpos );
|
glVertex3f( fcoord[ii].x, -fcoord[ii].y, zpos );
|
||||||
}
|
}
|
||||||
|
|
||||||
glVertex3f( f_hole_coord[0][0], -f_hole_coord[0][1], zpos );
|
glVertex3f( f_hole_coord[0].x, -f_hole_coord[0].y, zpos );
|
||||||
glVertex3f( fcoord[0][0], -fcoord[0][1], zpos );
|
glVertex3f( fcoord[0].x, -fcoord[0].y, zpos );
|
||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue