bool PCB_POLYGON::Parse( XNODE* aNode, const wxString& aDefaultMeasurementUnit, const wxString& aActualConversion ) { XNODE* lNode; wxString propValue; lNode = FindNode( aNode, wxT( "netNameRef" ) ); if( lNode ) { lNode->GetAttribute( wxT( "Name" ), &propValue ); propValue.Trim( false ); propValue.Trim( true ); m_net = propValue; m_netCode = GetNetCode( m_net ); } // retrieve polygon outline FormPolygon( aNode, &m_outline, aDefaultMeasurementUnit, aActualConversion ); m_positionX = m_outline[0]->x; m_positionY = m_outline[0]->y; // fill the polygon with the same contour as its outline is m_islands.Add( new VERTICES_ARRAY ); FormPolygon( aNode, m_islands[0], aDefaultMeasurementUnit, aActualConversion ); return true; }
bool PCB_COPPER_POUR::Parse( XNODE* aNode, wxString aDefaultMeasurementUnit, wxString aActualConversion, wxStatusBar* aStatusBar ) { XNODE* lNode; wxString pourType, str, propValue; int pourSpacing, thermalWidth; // aStatusBar->SetStatusText( aStatusBar->GetStatusText() + wxT( " CooperPour..." ) ); //str = FindNode( aNode, wxT( "pourType" ) )->GetNodeContent(); //str.Trim( false ); //pourType = str.MakeUpper(); lNode = FindNode( aNode, wxT( "netNameRef" ) ); if( lNode ) { lNode->GetAttribute( wxT( "Name" ), &propValue ); propValue.Trim( false ); propValue.Trim( true ); m_net = propValue; m_netCode = GetNetCode( m_net ); } if( FindNode( aNode, wxT( "width" ) ) ) SetWidth( FindNode( aNode, wxT( "width" ) )->GetNodeContent(), aDefaultMeasurementUnit, &m_width, aActualConversion ); if( FindNode( aNode, wxT( "pourSpacing" ) ) ) SetWidth( FindNode( aNode, wxT( "pourSpacing" ) )->GetNodeContent(), aDefaultMeasurementUnit, &pourSpacing, aActualConversion ); if( FindNode( aNode, wxT( "thermalWidth" ) ) ) SetWidth( FindNode( aNode, wxT( "thermalWidth" ) )->GetNodeContent(), aDefaultMeasurementUnit, &thermalWidth, aActualConversion ); lNode = FindNode( aNode, wxT( "pcbPoly" ) ); if( lNode ) { // retrieve copper pour outline FormPolygon( lNode, &m_outline, aDefaultMeasurementUnit, aActualConversion ); m_positionX = m_outline[0]->x; m_positionY = m_outline[0]->y; } else { return false; } return true; }
bool PCB_PLANE::Parse( XNODE* aNode, wxString aDefaultMeasurementUnit, wxString aActualConversion, wxStatusBar* aStatusBar ) { XNODE* lNode; wxString pourType, str, propValue; // aStatusBar->SetStatusText( aStatusBar->GetStatusText() + wxT( " Plane..." ) ); lNode = FindNode( aNode, wxT( "netNameRef" ) ); if( lNode ) { lNode->GetAttribute( wxT( "Name" ), &propValue ); propValue.Trim( false ); propValue.Trim( true ); m_net = propValue; m_netCode = GetNetCode( m_net ); } if( FindNode( aNode, wxT( "width" ) ) ) SetWidth( FindNode( aNode, wxT( "width" ) )->GetNodeContent(), aDefaultMeasurementUnit, &m_width, aActualConversion ); lNode = FindNode( aNode, wxT( "pcbPoly" ) ); if( lNode ) { // retrieve plane outline FormPolygon( lNode, &m_outline, aDefaultMeasurementUnit, aActualConversion ); m_positionX = m_outline[0]->x; m_positionY = m_outline[0]->y; } else { return false; } return true; }