diff --git a/pcbnew/import_dxf/dxf2brd_items.cpp b/pcbnew/import_dxf/dxf2brd_items.cpp index 6cd7e86fc4..322b787670 100644 --- a/pcbnew/import_dxf/dxf2brd_items.cpp +++ b/pcbnew/import_dxf/dxf2brd_items.cpp @@ -67,13 +67,13 @@ DXF2BRD_CONVERTER::~DXF2BRD_CONVERTER() // coordinate conversions from dxf to internal units int DXF2BRD_CONVERTER::mapX( double aDxfCoordX ) { - return Millimeter2iu( m_xOffset + (aDxfCoordX * m_Dfx2mm) ); + return Millimeter2iu( m_xOffset + ( aDxfCoordX * m_Dfx2mm ) ); } int DXF2BRD_CONVERTER::mapY( double aDxfCoordY ) { - return Millimeter2iu( m_yOffset - (aDxfCoordY * m_Dfx2mm) ); + return Millimeter2iu( m_yOffset - ( aDxfCoordY * m_Dfx2mm ) ); } @@ -95,23 +95,22 @@ bool DXF2BRD_CONVERTER::ImportDxfFile( const wxString& aFile, BOARD* aBoard ) return success; } -// Add aItem the the board -// this item is also added to the list of new items -// (for undo command for instance) -void DXF2BRD_CONVERTER::appendToBoard( BOARD_ITEM * aItem ) + +void DXF2BRD_CONVERTER::appendToBoard( BOARD_ITEM* aItem ) { m_brd->Add( aItem ); m_newItemsList.push_back( aItem ); } + /* * Implementation of the method which handles layers. */ -void DXF2BRD_CONVERTER::addLayer( const DRW_Layer& data ) +void DXF2BRD_CONVERTER::addLayer( const DRW_Layer& aData ) { // Not yet useful in Pcbnew. #if 0 - wxString name = wxString::FromUTF8( data.name.c_str() ); + wxString name = wxString::FromUTF8( aData.name.c_str() ); wxLogMessage( name ); #endif } @@ -120,25 +119,20 @@ void DXF2BRD_CONVERTER::addLayer( const DRW_Layer& data ) /* * Import line entities. */ -void DXF2BRD_CONVERTER::addLine( const DRW_Line& data ) +void DXF2BRD_CONVERTER::addLine( const DRW_Line& aData ) { - DRAWSEGMENT* segm = new DRAWSEGMENT( m_brd ); + DRAWSEGMENT* segm = new DRAWSEGMENT( m_brd ); segm->SetLayer( ToLAYER_ID( m_brdLayer ) ); - - wxPoint start( mapX( data.basePoint.x ), mapY( data.basePoint.y ) ); - + wxPoint start( mapX( aData.basePoint.x ), mapY( aData.basePoint.y ) ); segm->SetStart( start ); - - wxPoint end( mapX( data.secPoint.x ), mapY( data.secPoint.y ) ); - + wxPoint end( mapX( aData.secPoint.x ), mapY( aData.secPoint.y ) ); segm->SetEnd( end ); - - segm->SetWidth( mapDim( data.thickness == 0 ? m_defaultThickness : data.thickness ) ); + segm->SetWidth( mapDim( aData.thickness == 0 ? m_defaultThickness : aData.thickness ) ); appendToBoard( segm ); } -void DXF2BRD_CONVERTER::addPolyline(const DRW_Polyline& data ) +void DXF2BRD_CONVERTER::addPolyline(const DRW_Polyline& aData ) { // Currently, Pcbnew does not know polylines, for boards. // So we have to convert a polyline to a set of segments. @@ -146,9 +140,9 @@ void DXF2BRD_CONVERTER::addPolyline(const DRW_Polyline& data ) wxPoint startpoint; - for( unsigned ii = 0; ii < data.vertlist.size(); ii++ ) + for( unsigned ii = 0; ii < aData.vertlist.size(); ii++ ) { - DRW_Vertex* vertex = data.vertlist[ii]; + DRW_Vertex* vertex = aData.vertlist[ii]; if( ii == 0 ) { @@ -163,14 +157,14 @@ void DXF2BRD_CONVERTER::addPolyline(const DRW_Polyline& data ) segm->SetStart( startpoint ); wxPoint endpoint( mapX( vertex->basePoint.x ), mapY( vertex->basePoint.y ) ); segm->SetEnd( endpoint ); - segm->SetWidth( mapDim( data.thickness == 0 ? m_defaultThickness - : data.thickness ) ); + segm->SetWidth( mapDim( aData.thickness == 0 ? m_defaultThickness + : aData.thickness ) ); appendToBoard( segm ); startpoint = endpoint; } } -void DXF2BRD_CONVERTER::addLWPolyline(const DRW_LWPolyline& data ) +void DXF2BRD_CONVERTER::addLWPolyline(const DRW_LWPolyline& aData ) { // Currently, Pcbnew does not know polylines, for boards. // So we have to convert a polyline to a set of segments. @@ -179,9 +173,9 @@ void DXF2BRD_CONVERTER::addLWPolyline(const DRW_LWPolyline& data ) // the variable width of each vertex (when exists) is not used. wxPoint startpoint; - for( unsigned ii = 0; ii < data.vertlist.size(); ii++ ) + for( unsigned ii = 0; ii < aData.vertlist.size(); ii++ ) { - DRW_Vertex2D* vertex = data.vertlist[ii]; + DRW_Vertex2D* vertex = aData.vertlist[ii]; if( ii == 0 ) { @@ -196,8 +190,8 @@ void DXF2BRD_CONVERTER::addLWPolyline(const DRW_LWPolyline& data ) segm->SetStart( startpoint ); wxPoint endpoint( mapX( vertex->x ), mapY( vertex->y ) ); segm->SetEnd( endpoint ); - segm->SetWidth( mapDim( data.thickness == 0 ? m_defaultThickness - : data.thickness ) ); + segm->SetWidth( mapDim( aData.thickness == 0 ? m_defaultThickness + : aData.thickness ) ); appendToBoard( segm ); startpoint = endpoint; } @@ -206,19 +200,17 @@ void DXF2BRD_CONVERTER::addLWPolyline(const DRW_LWPolyline& data ) /* * Import Circle entities. */ -void DXF2BRD_CONVERTER::addCircle( const DRW_Circle& data ) +void DXF2BRD_CONVERTER::addCircle( const DRW_Circle& aData ) { DRAWSEGMENT* segm = new DRAWSEGMENT( m_brd ); segm->SetLayer( ToLAYER_ID( m_brdLayer ) ); segm->SetShape( S_CIRCLE ); - wxPoint center( mapX( data.basePoint.x ), mapY( data.basePoint.y ) ); + wxPoint center( mapX( aData.basePoint.x ), mapY( aData.basePoint.y ) ); segm->SetCenter( center ); - wxPoint circle_start( mapX( data.basePoint.x + data.radious ), - mapY( data.basePoint.y ) ); + wxPoint circle_start( mapX( aData.basePoint.x + aData.radious ), mapY( aData.basePoint.y ) ); segm->SetArcStart( circle_start ); - segm->SetWidth( mapDim( data.thickness == 0 ? m_defaultThickness - : data.thickness ) ); + segm->SetWidth( mapDim( aData.thickness == 0 ? m_defaultThickness : aData.thickness ) ); appendToBoard( segm ); } @@ -256,25 +248,24 @@ void DXF2BRD_CONVERTER::addArc( const DRW_Arc& data ) segm->SetAngle( angle ); - segm->SetWidth( mapDim( data.thickness == 0 ? m_defaultThickness - : data.thickness ) ); + segm->SetWidth( mapDim( data.thickness == 0 ? m_defaultThickness : data.thickness ) ); appendToBoard( segm ); } /** * Import texts (TEXT). */ -void DXF2BRD_CONVERTER::addText(const DRW_Text& data) +void DXF2BRD_CONVERTER::addText( const DRW_Text& aData ) { - TEXTE_PCB* pcb_text = new TEXTE_PCB( m_brd ); + TEXTE_PCB* pcb_text = new TEXTE_PCB( m_brd ); pcb_text->SetLayer( ToLAYER_ID( m_brdLayer ) ); - wxPoint refPoint( mapX(data.basePoint.x), mapY(data.basePoint.y) ); - wxPoint secPoint( mapX(data.secPoint.x), mapY(data.secPoint.y) ); + wxPoint refPoint( mapX( aData.basePoint.x ), mapY( aData.basePoint.y ) ); + wxPoint secPoint( mapX( aData.secPoint.x ), mapY( aData.secPoint.y ) ); - if (data.alignV !=0 || data.alignH !=0 ||data.alignH ==DRW_Text::HMiddle) + if( aData.alignV != 0 || aData.alignH != 0 || aData.alignH == DRW_Text::HMiddle ) { - if (data.alignH !=DRW_Text::HAligned && data.alignH !=DRW_Text::HFit) + if( aData.alignH != DRW_Text::HAligned && aData.alignH != DRW_Text::HFit ) { wxPoint tmp = secPoint; secPoint = refPoint; @@ -282,7 +273,7 @@ void DXF2BRD_CONVERTER::addText(const DRW_Text& data) } } - switch( data.alignV ) + switch( aData.alignV ) { case DRW_Text::VBaseLine: pcb_text->SetVertJustify( GR_TEXT_VJUSTIFY_BOTTOM ); @@ -301,7 +292,7 @@ void DXF2BRD_CONVERTER::addText(const DRW_Text& data) break; } - switch( data.alignH ) + switch( aData.alignH ) { case DRW_Text::HLeft: pcb_text->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT ); @@ -332,13 +323,13 @@ void DXF2BRD_CONVERTER::addText(const DRW_Text& data) } #if 0 - wxString sty = wxString::FromUTF8(data.style.c_str()); + wxString sty = wxString::FromUTF8(aData.style.c_str()); sty=sty.ToLower(); - if (data.textgen==2) + if (aData.textgen==2) { // Text dir = left to right; - } else if (data.textgen==4) + } else if (aData.textgen==4) { / Text dir = top to bottom; } else @@ -346,15 +337,14 @@ void DXF2BRD_CONVERTER::addText(const DRW_Text& data) } #endif - wxString text = toNativeString( wxString::FromUTF8( data.text.c_str() ) ); + wxString text = toNativeString( wxString::FromUTF8( aData.text.c_str() ) ); pcb_text->SetTextPosition( refPoint ); - pcb_text->SetOrientation( data.angle * 10 ); + pcb_text->SetOrientation( aData.angle * 10 ); // The 0.8 factor gives a better height/width ratio with our font - pcb_text->SetWidth( mapDim( data.height * 0.8 ) ); - pcb_text->SetHeight( mapDim( data.height ) ); - pcb_text->SetThickness( mapDim( data.thickness == 0 ? m_defaultThickness - : data.thickness ) ); + pcb_text->SetWidth( mapDim( aData.height * 0.8 ) ); + pcb_text->SetHeight( mapDim( aData.height ) ); + pcb_text->SetThickness( mapDim( aData.thickness == 0 ? m_defaultThickness : aData.thickness ) ); pcb_text->SetText( text ); appendToBoard( pcb_text ); @@ -364,9 +354,9 @@ void DXF2BRD_CONVERTER::addText(const DRW_Text& data) /** * Import multi line texts (MTEXT). */ -void DXF2BRD_CONVERTER::addMText( const DRW_MText& data ) +void DXF2BRD_CONVERTER::addMText( const DRW_MText& aData ) { - wxString text = toNativeString( wxString::FromUTF8( data.text.c_str() ) ); + wxString text = toNativeString( wxString::FromUTF8( aData.text.c_str() ) ); wxString attrib, tmp; /* Some texts start by '\' and have formating chars (font name, font option...) @@ -396,23 +386,21 @@ void DXF2BRD_CONVERTER::addMText( const DRW_MText& data ) TEXTE_PCB* pcb_text = new TEXTE_PCB( m_brd ); pcb_text->SetLayer( ToLAYER_ID( m_brdLayer ) ); - - wxPoint textpos( mapX( data.basePoint.x ), mapY( data.basePoint.y ) ); + wxPoint textpos( mapX( aData.basePoint.x ), mapY( aData.basePoint.y ) ); pcb_text->SetTextPosition( textpos ); - pcb_text->SetOrientation( data.angle * 10 ); + pcb_text->SetOrientation( aData.angle * 10 ); // The 0.8 factor gives a better height/width ratio with our font - pcb_text->SetWidth( mapDim( data.height * 0.8 ) ); - pcb_text->SetHeight( mapDim( data.height ) ); - pcb_text->SetThickness( mapDim( data.thickness == 0 ? m_defaultThickness - : data.thickness ) ); + pcb_text->SetWidth( mapDim( aData.height * 0.8 ) ); + pcb_text->SetHeight( mapDim( aData.height ) ); + pcb_text->SetThickness( mapDim( aData.thickness == 0 ? m_defaultThickness : aData.thickness ) ); pcb_text->SetText( text ); // Initialize text justifications: - if( data.textgen <= 3 ) + if( aData.textgen <= 3 ) { pcb_text->SetVertJustify( GR_TEXT_VJUSTIFY_TOP ); } - else if( data.textgen <= 6 ) + else if( aData.textgen <= 6 ) { pcb_text->SetVertJustify( GR_TEXT_VJUSTIFY_CENTER ); } @@ -421,11 +409,11 @@ void DXF2BRD_CONVERTER::addMText( const DRW_MText& data ) pcb_text->SetVertJustify( GR_TEXT_VJUSTIFY_BOTTOM ); } - if( data.textgen % 3 == 1 ) + if( aData.textgen % 3 == 1 ) { pcb_text->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT ); } - else if( data.textgen % 3 == 2 ) + else if( aData.textgen % 3 == 2 ) { pcb_text->SetHorizJustify( GR_TEXT_HJUSTIFY_CENTER ); } @@ -448,7 +436,7 @@ void DXF2BRD_CONVERTER::addMText( const DRW_MText& data ) // use ByStyle; } - if( data.alignV==1 ) + if( aData.alignV==1 ) { // use AtLeast; } @@ -490,24 +478,24 @@ void DXF2BRD_CONVERTER::addHeader( const DRW_Header* data ) * - %%%d for a degree sign * - %%%p for a plus/minus sign */ -wxString DXF2BRD_CONVERTER::toDxfString( const wxString& str ) +wxString DXF2BRD_CONVERTER::toDxfString( const wxString& aStr ) { wxString res; int j = 0; - for( unsigned i = 0; i175 || c<11 ) + if( c > 175 || c < 11 ) { - res.append( str.Mid( j, i - j ) ); + res.append( aStr.Mid( j, i - j ) ); j = i; switch( c ) { case 0x0A: - res += wxT("\\P"); + res += wxT( "\\P" ); break; // diameter: @@ -517,17 +505,17 @@ wxString DXF2BRD_CONVERTER::toDxfString( const wxString& str ) #else case 0x2205: #endif - res += wxT("%%C"); + res += wxT( "%%C" ); break; // degree: case 0x00B0: - res += wxT("%%D"); + res += wxT( "%%D" ); break; // plus/minus case 0x00B1: - res += wxT("%%P"); + res += wxT( "%%P" ); break; default: @@ -539,7 +527,7 @@ wxString DXF2BRD_CONVERTER::toDxfString( const wxString& str ) } } - res.append( str.Mid( j ) ); + res.append( aStr.Mid( j ) ); return res; } @@ -547,26 +535,26 @@ wxString DXF2BRD_CONVERTER::toDxfString( const wxString& str ) /** * Converts a DXF encoded string into a native Unicode string. */ -wxString DXF2BRD_CONVERTER::toNativeString( const wxString& data ) +wxString DXF2BRD_CONVERTER::toNativeString( const wxString& aData ) { wxString res; // Ignore font tags: int j = 0; - for( unsigned i = 0; i m_newItemsList; // The list of new items added - // to the board - BOARD * m_brd; + std::vector m_newItemsList; // The list of new items added to the board + BOARD* m_brd; double m_xOffset; // X coord offset for conversion (in mm) double m_yOffset; // Y coord offset for conversion (in mm) double m_defaultThickness; // default line thickness for conversion (in mm) double m_Dfx2mm; // The scale factor to convert DXF units to mm // Seems DRW_Interface always converts DXF coordinates in mm // (to be confirmed) - int m_brdLayer; // The board layer to place imported dfx items + int m_brdLayer; // The board layer to place imported dfx items int m_version; // the dxf version, not used here std::string m_codePage; // The code page, not used here @@ -85,7 +84,7 @@ public: * @param aFile = the full filename. * @param aBoard = where to store the graphical items and text */ - bool ImportDxfFile( const wxString& aFile, BOARD * aBoard ); + bool ImportDxfFile( const wxString& aFile, BOARD* aBoard ); /** * @return the list of new BOARD_ITEM @@ -104,65 +103,65 @@ private: // Add aItem the the board // this item is also added to the list of new items // (for undo command for instance) - void appendToBoard( BOARD_ITEM * aItem ); + void appendToBoard( BOARD_ITEM* aItem ); // Methods from DRW_CreationInterface: // They are "call back" fonctions, called when the corresponding object // is read in dxf file // Depending of the application, they can do something or not - virtual void addHeader( const DRW_Header* data ); - virtual void addLType( const DRW_LType& data ){} - virtual void addLayer( const DRW_Layer& data ); - virtual void addDimStyle( const DRW_Dimstyle& data ){} - virtual void addBlock(const DRW_Block& data ){} - virtual void endBlock(){} - virtual void addPoint(const DRW_Point& data ){} - virtual void addLine(const DRW_Line& data); - virtual void addRay(const DRW_Ray& data ){} - virtual void addXline(const DRW_Xline& data ){} - virtual void addCircle(const DRW_Circle& data ); - virtual void addArc(const DRW_Arc& data ); - virtual void addEllipse(const DRW_Ellipse& data ){} - virtual void addLWPolyline(const DRW_LWPolyline& data ); - virtual void addText(const DRW_Text& data ); - virtual void addPolyline(const DRW_Polyline& data ); - virtual void addSpline(const DRW_Spline* data ){} - virtual void addKnot(const DRW_Entity&) {} - virtual void addInsert(const DRW_Insert& data ){} - virtual void addTrace(const DRW_Trace& data ){} - virtual void addSolid(const DRW_Solid& data ){} - virtual void addMText(const DRW_MText& data); - virtual void addDimAlign(const DRW_DimAligned *data ){} - virtual void addDimLinear(const DRW_DimLinear *data ){} - virtual void addDimRadial(const DRW_DimRadial *data ){} - virtual void addDimDiametric(const DRW_DimDiametric *data ){} - virtual void addDimAngular(const DRW_DimAngular *data ){} - virtual void addDimAngular3P(const DRW_DimAngular3p *data ){} - virtual void addDimOrdinate(const DRW_DimOrdinate *data ){} - virtual void addLeader(const DRW_Leader *data ){} - virtual void addHatch(const DRW_Hatch* data ){} - virtual void addImage(const DRW_Image* data ){} - virtual void linkImage(const DRW_ImageDef* data ){} + virtual void addHeader( const DRW_Header* aData ); + virtual void addLType( const DRW_LType& aData ) {} + virtual void addLayer( const DRW_Layer& aData ); + virtual void addDimStyle( const DRW_Dimstyle& aData ) {} + virtual void addBlock( const DRW_Block& aData ) {} + virtual void endBlock() {} + virtual void addPoint( const DRW_Point& aData ) {} + virtual void addLine( const DRW_Line& aData); + virtual void addRay( const DRW_Ray& aData ) {} + virtual void addXline( const DRW_Xline& aData ) {} + virtual void addCircle( const DRW_Circle& aData ); + virtual void addArc( const DRW_Arc& aData ); + virtual void addEllipse( const DRW_Ellipse& aData ) {} + virtual void addLWPolyline( const DRW_LWPolyline& aData ); + virtual void addText( const DRW_Text& aData ); + virtual void addPolyline( const DRW_Polyline& aData ); + virtual void addSpline( const DRW_Spline* aData ) {} + virtual void addKnot( const DRW_Entity&) {} + virtual void addInsert( const DRW_Insert& aData ){} + virtual void addTrace( const DRW_Trace& aData ){} + virtual void addSolid( const DRW_Solid& aData ){} + virtual void addMText( const DRW_MText& aData); + virtual void addDimAlign( const DRW_DimAligned* aData ) {} + virtual void addDimLinear( const DRW_DimLinear* aData ) {} + virtual void addDimRadial( const DRW_DimRadial* aData ) {} + virtual void addDimDiametric( const DRW_DimDiametric* aData ) {} + virtual void addDimAngular( const DRW_DimAngular* aData ) {} + virtual void addDimAngular3P( const DRW_DimAngular3p* aData ) {} + virtual void addDimOrdinate( const DRW_DimOrdinate* aData ) {} + virtual void addLeader( const DRW_Leader* aData ) {} + virtual void addHatch( const DRW_Hatch* aData ) {} + virtual void addImage( const DRW_Image* aData ) {} + virtual void linkImage( const DRW_ImageDef* aData ) {} - virtual void add3dFace(const DRW_3Dface& data ){} - virtual void addComment(const char*){} + virtual void add3dFace( const DRW_3Dface& aData ) {} + virtual void addComment( const char*) {} - virtual void addVport(const DRW_Vport& data) {} + virtual void addVport( const DRW_Vport& aData ) {} - virtual void addTextStyle(const DRW_Textstyle& data); + virtual void addTextStyle( const DRW_Textstyle& aData ); - virtual void addViewport(const DRW_Viewport& data) {} + virtual void addViewport( const DRW_Viewport& aData ) {} - virtual void setBlock(const int handle) {} + virtual void setBlock( const int aHandle ) {} - static wxString toDxfString(const wxString& str); - static wxString toNativeString(const wxString& data); + static wxString toDxfString( const wxString& aStr ); + static wxString toNativeString( const wxString& aData ); // These functions are not used in Kicad. // But because they are virtual pure in DRW_Interface, they should be defined virtual void writeTextstyles() {} virtual void writeVports() {} - virtual void writeHeader(DRW_Header& data) {} + virtual void writeHeader( DRW_Header& aData ) {} virtual void writeEntities() {} virtual void writeLTypes() {} virtual void writeLayers() {} @@ -172,7 +171,6 @@ private: void writeLine(); void writeMtext(); - }; #endif // FILTERDXFRW_H