Loading 3d-viewer/3d_draw.cpp +85 −30 Original line number Original line Diff line number Diff line Loading @@ -728,13 +728,10 @@ void EDGE_MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas ) int color = g_ColorsSettings.GetLayerColor( m_Layer ); int color = g_ColorsSettings.GetLayerColor( m_Layer ); SetGLColor( color ); SetGLColor( color ); glNormal3f( 0.0, 0.0, (m_Layer == LAYER_N_BACK) ? -1.0 : 1.0 ); dx = m_End.x; dx = m_End.x; dy = m_End.y; dy = m_End.y; zpos = g_Parm_3D_Visu.m_LayerZcoord[m_Layer]; w = m_Width * g_Parm_3D_Visu.m_BoardScale; w = m_Width * g_Parm_3D_Visu.m_BoardScale; x = m_Start.x * g_Parm_3D_Visu.m_BoardScale; x = m_Start.x * g_Parm_3D_Visu.m_BoardScale; y = m_Start.y * g_Parm_3D_Visu.m_BoardScale; y = m_Start.y * g_Parm_3D_Visu.m_BoardScale; Loading @@ -742,6 +739,13 @@ void EDGE_MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas ) fy = dy * g_Parm_3D_Visu.m_BoardScale; fy = dy * g_Parm_3D_Visu.m_BoardScale; if( m_Layer == EDGE_N ) { for( int layer = 0; layer < g_Parm_3D_Visu.m_Layers; layer++ ) { glNormal3f( 0.0, 0.0, (layer == LAYER_N_BACK) ? -1.0 : 1.0 ); zpos = g_Parm_3D_Visu.m_LayerZcoord[layer]; switch( m_Shape ) switch( m_Shape ) { { case S_SEGMENT: case S_SEGMENT: Loading @@ -762,8 +766,10 @@ void EDGE_MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas ) // which are relative to module position and module orientation = 0 // which are relative to module position and module orientation = 0 std::vector<wxPoint> points = m_PolyPoints; std::vector<wxPoint> points = m_PolyPoints; MODULE* module = (MODULE*) m_Parent; MODULE* module = (MODULE*) m_Parent; if( module == NULL ) if( module == NULL ) break; break; for( unsigned ii = 0; ii < points.size(); ii++ ) for( unsigned ii = 0; ii < points.size(); ii++ ) { { wxPoint& pt = points[ii]; wxPoint& pt = points[ii]; Loading @@ -782,6 +788,55 @@ void EDGE_MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas ) break; break; } } } } } else { glNormal3f( 0.0, 0.0, (m_Layer == LAYER_N_BACK) ? -1.0 : 1.0 ); zpos = g_Parm_3D_Visu.m_LayerZcoord[m_Layer]; switch( m_Shape ) { case S_SEGMENT: Draw3D_FilledSegment( x, -y, fx, -fy, w, zpos ); break; case S_CIRCLE: Draw3D_CircleSegment( x, -y, fx, -fy, w, zpos ); break; case S_ARC: Draw3D_ArcSegment( x, -y, fx, -fy, (double) m_Angle, w, zpos ); break; case S_POLYGON: { // We must compute true coordinates from m_PolyPoints // which are relative to module position and module orientation = 0 std::vector<wxPoint> points = m_PolyPoints; MODULE* module = (MODULE*) m_Parent; if( module == NULL ) break; for( unsigned ii = 0; ii < points.size(); ii++ ) { wxPoint& pt = points[ii]; RotatePoint( &pt.x, &pt.y, module->m_Orient ); pt += module->m_Pos; } glcanvas->Draw3D_Polygon( points, zpos ); } break; default: s.Printf( wxT( "Error: Shape nr %d not implemented!\n" ), m_Shape ); D( printf( "%s", CONV_TO_UTF8( s ) ); ) break; } } } /* Draw 3D pads. */ /* Draw 3D pads. */ Loading Loading
3d-viewer/3d_draw.cpp +85 −30 Original line number Original line Diff line number Diff line Loading @@ -728,13 +728,10 @@ void EDGE_MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas ) int color = g_ColorsSettings.GetLayerColor( m_Layer ); int color = g_ColorsSettings.GetLayerColor( m_Layer ); SetGLColor( color ); SetGLColor( color ); glNormal3f( 0.0, 0.0, (m_Layer == LAYER_N_BACK) ? -1.0 : 1.0 ); dx = m_End.x; dx = m_End.x; dy = m_End.y; dy = m_End.y; zpos = g_Parm_3D_Visu.m_LayerZcoord[m_Layer]; w = m_Width * g_Parm_3D_Visu.m_BoardScale; w = m_Width * g_Parm_3D_Visu.m_BoardScale; x = m_Start.x * g_Parm_3D_Visu.m_BoardScale; x = m_Start.x * g_Parm_3D_Visu.m_BoardScale; y = m_Start.y * g_Parm_3D_Visu.m_BoardScale; y = m_Start.y * g_Parm_3D_Visu.m_BoardScale; Loading @@ -742,6 +739,13 @@ void EDGE_MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas ) fy = dy * g_Parm_3D_Visu.m_BoardScale; fy = dy * g_Parm_3D_Visu.m_BoardScale; if( m_Layer == EDGE_N ) { for( int layer = 0; layer < g_Parm_3D_Visu.m_Layers; layer++ ) { glNormal3f( 0.0, 0.0, (layer == LAYER_N_BACK) ? -1.0 : 1.0 ); zpos = g_Parm_3D_Visu.m_LayerZcoord[layer]; switch( m_Shape ) switch( m_Shape ) { { case S_SEGMENT: case S_SEGMENT: Loading @@ -762,8 +766,10 @@ void EDGE_MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas ) // which are relative to module position and module orientation = 0 // which are relative to module position and module orientation = 0 std::vector<wxPoint> points = m_PolyPoints; std::vector<wxPoint> points = m_PolyPoints; MODULE* module = (MODULE*) m_Parent; MODULE* module = (MODULE*) m_Parent; if( module == NULL ) if( module == NULL ) break; break; for( unsigned ii = 0; ii < points.size(); ii++ ) for( unsigned ii = 0; ii < points.size(); ii++ ) { { wxPoint& pt = points[ii]; wxPoint& pt = points[ii]; Loading @@ -782,6 +788,55 @@ void EDGE_MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas ) break; break; } } } } } else { glNormal3f( 0.0, 0.0, (m_Layer == LAYER_N_BACK) ? -1.0 : 1.0 ); zpos = g_Parm_3D_Visu.m_LayerZcoord[m_Layer]; switch( m_Shape ) { case S_SEGMENT: Draw3D_FilledSegment( x, -y, fx, -fy, w, zpos ); break; case S_CIRCLE: Draw3D_CircleSegment( x, -y, fx, -fy, w, zpos ); break; case S_ARC: Draw3D_ArcSegment( x, -y, fx, -fy, (double) m_Angle, w, zpos ); break; case S_POLYGON: { // We must compute true coordinates from m_PolyPoints // which are relative to module position and module orientation = 0 std::vector<wxPoint> points = m_PolyPoints; MODULE* module = (MODULE*) m_Parent; if( module == NULL ) break; for( unsigned ii = 0; ii < points.size(); ii++ ) { wxPoint& pt = points[ii]; RotatePoint( &pt.x, &pt.y, module->m_Orient ); pt += module->m_Pos; } glcanvas->Draw3D_Polygon( points, zpos ); } break; default: s.Printf( wxT( "Error: Shape nr %d not implemented!\n" ), m_Shape ); D( printf( "%s", CONV_TO_UTF8( s ) ); ) break; } } } /* Draw 3D pads. */ /* Draw 3D pads. */ Loading