From 3cd47555ca502e5d1d53bfb1f39819ba176440bf Mon Sep 17 00:00:00 2001 From: dickelbeck Date: Sat, 13 Oct 2007 06:18:44 +0000 Subject: [PATCH] see 2007-Oct-12 change_log.txt --- change_log.txt | 34 ++ common/common.cpp | 4 +- eeschema/erc.cpp | 10 +- eeschema/netform.cpp | 16 +- eeschema/netlist.cpp | 80 ++-- eeschema/netlist.h | 6 +- gerbview/affiche.cpp | 2 +- gerbview/block.cpp | 4 +- gerbview/dcode.cpp | 2 +- gerbview/deltrack.cpp | 2 +- gerbview/readgerb.cpp | 2 +- gerbview/rs274d.cpp | 16 +- gerbview/tracepcb.cpp | 2 +- gerbview/trpiste.cpp | 8 +- gerbview/undelete.cpp | 2 +- include/common.h | 2 +- pcbnew/affiche.cpp | 4 +- pcbnew/attribut.cpp | 4 +- pcbnew/autoplac.cpp | 4 +- pcbnew/autorout.cpp | 352 +++++++++-------- pcbnew/autorout.h | 186 ++++----- pcbnew/block.cpp | 9 +- pcbnew/board.cpp | 12 +- pcbnew/class_board.cpp | 2 +- pcbnew/class_board_item.cpp | 26 +- pcbnew/class_equipot.cpp | 8 +- pcbnew/class_equipot.h | 12 +- pcbnew/class_pad.cpp | 13 +- pcbnew/class_pad.h | 13 +- pcbnew/class_track.cpp | 63 ++- pcbnew/class_track.h | 32 +- pcbnew/clean.cpp | 14 +- pcbnew/connect.cpp | 153 ++++---- pcbnew/controle.cpp | 5 + pcbnew/cross-probing.cpp | 2 +- pcbnew/deltrack.cpp | 8 +- pcbnew/dragsegm.cpp | 6 +- pcbnew/drc.cpp | 71 ++-- pcbnew/edit.cpp | 6 +- pcbnew/edit_track_width.cpp | 2 +- pcbnew/editpads.cpp | 696 +++++++++++++++++++--------------- pcbnew/editrack-part2.cpp | 8 +- pcbnew/editrack.cpp | 10 +- pcbnew/editrout.cpp | 2 +- pcbnew/export_gencad.cpp | 12 +- pcbnew/ioascii.cpp | 5 +- pcbnew/modules.cpp | 2 + pcbnew/move_copy_track.cpp | 6 +- pcbnew/move_or_drag_track.cpp | 14 +- pcbnew/ratsnest.cpp | 81 ++-- pcbnew/router.cpp | 16 +- pcbnew/solve.cpp | 8 +- pcbnew/surbrill.cpp | 12 +- pcbnew/tr_modif.cpp | 4 +- pcbnew/undelete.cpp | 2 +- pcbnew/xchgmod.cpp | 4 +- pcbnew/zones.cpp | 18 +- share/drawpanel.cpp | 2 +- 58 files changed, 1185 insertions(+), 916 deletions(-) diff --git a/change_log.txt b/change_log.txt index d8b30e2c7a..69df022440 100644 --- a/change_log.txt +++ b/change_log.txt @@ -19,6 +19,40 @@ email address. with genliste.cpp.notused + +2007-Oct-12 UPDATE Dick Hollenbeck +================================================================================ ++ all + * m_NetCode is now private or protected throughout. + added SetNet() and GetNet() to all classes which have this member name. + ditto for m_Sous_NetCode, for which there is now SetSubNet() and GetSubNet(). ++ pcbnew + added more disambiguating text to the PcbGeneralLocateAndDisplay() popup + menu for tracks. We need all the info we can get there I found after using + the software for many hours. + + + Jean-Pierre: + + I never thought I would find a greater problem in using Kicad than having to + lay down all the ground and power tracks, rather that just linking vias into + pre-established zones or "tagged layers". + + But I have, hundreds of my tracks and vias are showing + unconnected under my BGA, (where say the track or via is NetCode==0) and it + should not be, because the damn track ties the BGA pad to a nearby via. + How can the software be made to think these three items are on the same net, + without re-entering all the damn tracks? + + This issue has been coming up for months on the user list, it must be dealt with now. + There is always the same lame answer, "make sure your tracks go to the center of the pads". + Nonsense, the software picked the track end points, not me, and grid was on when it did it. + There are bugs here. + + Does Recalcule_all_net_connexion() work, and why is not called from anywhere? + + + 2007-Oct-11 UPDATE Dick Hollenbeck ================================================================================ + pcbnew diff --git a/common/common.cpp b/common/common.cpp index 390d51efc0..2795ba707f 100644 --- a/common/common.cpp +++ b/common/common.cpp @@ -427,7 +427,7 @@ int GetTimeStamp() /*************************************************/ -void valeur_param( int valeur, wxString& buf_texte ) +const wxString& valeur_param( int valeur, wxString& buf_texte ) /*************************************************/ /* Retourne pour affichage la valeur d'un parametre, selon type d'unites choisies @@ -444,4 +444,6 @@ void valeur_param( int valeur, wxString& buf_texte ) { buf_texte.Printf( wxT( "%2.4f \"" ), valeur * 0.0001 ); } + + return buf_texte; } diff --git a/eeschema/erc.cpp b/eeschema/erc.cpp index 68623bce2f..3e4045d33c 100644 --- a/eeschema/erc.cpp +++ b/eeschema/erc.cpp @@ -343,7 +343,7 @@ void WinEDA_ErcFrame::TestErc( wxCommandEvent& event ) for( ; NetItemRef < Lim; NetItemRef++ ) { /* Tst changement de net */ - if( OldItem->m_NetCode != NetItemRef->m_NetCode ) + if( OldItem->GetNet() != NetItemRef->GetNet() ) { MinConn = NOC; NetNbItems = 0; @@ -581,7 +581,7 @@ static void Diagnose( WinEDA_DrawPanel* panel, wxDC* DC, { Marker->m_Comment.Printf( _( "Warning Pin %s not driven (Net %d)" ), - MsgPinElectricType[ii], NetItemRef->m_NetCode ); + MsgPinElectricType[ii], NetItemRef->GetNet() ); if( screen == panel->GetScreen() ) RedrawOneStruct( panel, DC, Marker, GR_COPY ); return; @@ -612,7 +612,7 @@ static void Diagnose( WinEDA_DrawPanel* panel, wxDC* DC, "%s: Pin %s connected to Pin %s (net %d)" ), DiagLevel.GetData(), MsgPinElectricType[ii], - MsgPinElectricType[jj], NetItemRef->m_NetCode ); + MsgPinElectricType[jj], NetItemRef->GetNet() ); if( screen == panel->GetScreen() ) RedrawOneStruct( panel, DC, Marker, GR_COPY ); @@ -653,7 +653,7 @@ static void TestOthersItems( WinEDA_DrawPanel* panel, wxDC* DC, /* Est - on toujours dans le meme net ? */ if( (NetItemTst >= Lim) // fin de liste (donc fin de net) - || (NetItemRef->m_NetCode != NetItemTst->m_NetCode) ) // fin de net + || (NetItemRef->GetNet() != NetItemTst->GetNet()) ) // fin de net { /* Fin de netcode trouve: Tst connexion minimum */ if( (*MinConnexion < NET_NC ) && (local_minconn < NET_NC ) ) /* pin non connectée ou non pilotee */ @@ -796,7 +796,7 @@ void TestLabel( WinEDA_DrawPanel* panel, wxDC* DC, /* Est - on toujours dans le meme net ? */ if( ( NetItemTst == Lim ) - || ( NetItemRef->m_NetCode != NetItemTst->m_NetCode ) ) + || ( NetItemRef->GetNet() != NetItemTst->GetNet() ) ) { /* Fin de netcode trouve */ if( erc ) diff --git a/eeschema/netform.cpp b/eeschema/netform.cpp index bb4f0fc408..66fa282c58 100644 --- a/eeschema/netform.cpp +++ b/eeschema/netform.cpp @@ -192,7 +192,7 @@ static wxString ReturnPinNetName( ObjetNetListStruct* Pin, * "netname_sheetnumber" for the usual nets */ { - int netcode = Pin->m_NetCode; + int netcode = Pin->GetNet(); wxString NetName; if( (netcode == 0 ) || ( Pin->m_FlagOfConnection != CONNECT ) ) @@ -204,7 +204,7 @@ static wxString ReturnPinNetName( ObjetNetListStruct* Pin, int jj; for( jj = 0; jj < g_NbrObjNet; jj++ ) { - if( g_TabObjNet[jj].m_NetCode != netcode ) + if( g_TabObjNet[jj].GetNet() != netcode ) continue; if( ( g_TabObjNet[jj].m_Type != NET_GLOBLABEL) && ( g_TabObjNet[jj].m_Type != NET_LABEL) @@ -481,7 +481,7 @@ static void WriteNetListPspice( WinEDA_SchematicFrame* frame, FILE* f, if( NetName == wxT( "0" ) || NetName == wxT( "GND" ) ) fprintf( f, " 0" ); else - fprintf( f, " %d", Pin->m_NetCode ); + fprintf( f, " %d", Pin->GetNet() ); } } @@ -834,13 +834,13 @@ static void WriteGENERICListOfNets( FILE* f, ObjetNetListStruct* ObjNet ) for( ii = 0; ii < g_NbrObjNet; ii++ ) { - if( (NetCode = ObjNet[ii].m_NetCode) != LastNetCode ) // New net found, write net id; + if( (NetCode = ObjNet[ii].GetNet()) != LastNetCode ) // New net found, write net id; { SameNetcodeCount = 0; // Items count for this net NetName.Empty(); for( jj = 0; jj < g_NbrObjNet; jj++ ) // Find a label (if exists) for this net { - if( ObjNet[jj].m_NetCode != NetCode ) + if( ObjNet[jj].GetNet() != NetCode ) continue; if( ( ObjNet[jj].m_Type != NET_GLOBLABEL) && ( ObjNet[jj].m_Type != NET_LABEL) @@ -1010,12 +1010,12 @@ static void WriteListOfNetsCADSTAR( FILE* f, ObjetNetListStruct* ObjNet ) for( ii = 0; ii < g_NbrObjNet; ii++ ) { // Get the NetName of the current net : - if( (NetCode = ObjNet[ii].m_NetCode) != LastNetCode ) + if( (NetCode = ObjNet[ii].GetNet()) != LastNetCode ) { NetName.Empty(); for( jj = 0; jj < g_NbrObjNet; jj++ ) { - if( ObjNet[jj].m_NetCode != NetCode ) + if( ObjNet[jj].GetNet() != NetCode ) continue; if( ( ObjNet[jj].m_Type != NET_GLOBLABEL) && ( ObjNet[jj].m_Type != NET_LABEL) @@ -1089,7 +1089,7 @@ static void WriteListOfNetsCADSTAR( FILE* f, ObjetNetListStruct* ObjNet ) // pour ne pas generer plusieurs fois la connexion for( jj = ii + 1; jj < g_NbrObjNet; jj++ ) { - if( ObjNet[jj].m_NetCode != NetCode ) + if( ObjNet[jj].GetNet() != NetCode ) break; if( ObjNet[jj].m_Type != NET_PIN ) continue; diff --git a/eeschema/netlist.cpp b/eeschema/netlist.cpp index bb1b675862..eed7cfdddc 100644 --- a/eeschema/netlist.cpp +++ b/eeschema/netlist.cpp @@ -66,7 +66,7 @@ void ObjetNetListStruct::Show( std::ostream& out, int ndx ) { out << "\n"; @@ -226,14 +226,14 @@ void* WinEDA_SchematicFrame::BuildNetListBase() case NET_PINLABEL: case NET_SHEETLABEL: case NET_NOCONNECT: - if( g_TabObjNet[i].m_NetCode != 0 ) + if( g_TabObjNet[i].GetNet() != 0 ) break; /* Deja connecte */ case NET_SEGMENT: /* Controle des connexions type point a point ( Sans BUS ) */ - if( g_TabObjNet[i].m_NetCode == 0 ) + if( g_TabObjNet[i].GetNet() == 0 ) { - g_TabObjNet[i].m_NetCode = LastNetCode; + g_TabObjNet[i].SetNet( LastNetCode ); LastNetCode++; } PointToPointConnect( g_TabObjNet + i, 0, istart ); @@ -241,9 +241,9 @@ void* WinEDA_SchematicFrame::BuildNetListBase() case NET_JONCTION: /* Controle des jonction , hors BUS */ - if( g_TabObjNet[i].m_NetCode == 0 ) + if( g_TabObjNet[i].GetNet() == 0 ) { - g_TabObjNet[i].m_NetCode = LastNetCode; + g_TabObjNet[i].SetNet( LastNetCode ); LastNetCode++; } SegmentToPointConnect( g_TabObjNet + i, 0, istart ); @@ -260,9 +260,9 @@ void* WinEDA_SchematicFrame::BuildNetListBase() case NET_LABEL: case NET_GLOBLABEL: /* Controle des connexions type jonction ( Sans BUS ) */ - if( g_TabObjNet[i].m_NetCode == 0 ) + if( g_TabObjNet[i].GetNet() == 0 ) { - g_TabObjNet[i].m_NetCode = LastNetCode; + g_TabObjNet[i].SetNet( LastNetCode ); LastNetCode++; } SegmentToPointConnect( g_TabObjNet + i, 0, istart ); @@ -285,7 +285,7 @@ void* WinEDA_SchematicFrame::BuildNetListBase() case NET_BUSLABELMEMBER: case NET_GLOBBUSLABELMEMBER: /* Controle des connexions semblables a des sur BUS */ - if( g_TabObjNet[i].m_NetCode == 0 ) + if( g_TabObjNet[i].GetNet() == 0 ) { g_TabObjNet[i].m_BusNetCode = LastBusNetCode; LastBusNetCode++; @@ -368,12 +368,12 @@ void* WinEDA_SchematicFrame::BuildNetListBase() LastNetCode = NetCode = 0; for( i = 0; i < g_NbrObjNet; i++ ) { - if( g_TabObjNet[i].m_NetCode != LastNetCode ) + if( g_TabObjNet[i].GetNet() != LastNetCode ) { NetCode++; - LastNetCode = g_TabObjNet[i].m_NetCode; + LastNetCode = g_TabObjNet[i].GetNet(); } - g_TabObjNet[i].m_NetCode = NetCode; + g_TabObjNet[i].SetNet( NetCode ); } Affiche_1_Parametre( this, -1, wxEmptyString, _( "Done" ), GREEN ); @@ -393,7 +393,7 @@ static void SheetLabelConnection( ObjetNetListStruct* SheetLabel ) int i; ObjetNetListStruct* ObjetNet; - if( SheetLabel->m_NetCode == 0 ) + if( SheetLabel->GetNet() == 0 ) return; /* Calcul du numero de sous feuille correspondante au sheetlabel */ @@ -409,17 +409,17 @@ static void SheetLabelConnection( ObjetNetListStruct* SheetLabel ) && (ObjetNet[i].m_Type != NET_GLOBBUSLABELMEMBER ) ) continue; - if( ObjetNet[i].m_NetCode == SheetLabel->m_NetCode ) + if( ObjetNet[i].GetNet() == SheetLabel->GetNet() ) continue; if( ObjetNet[i].m_Label->CmpNoCase( *SheetLabel->m_Label ) != 0 ) continue; /* Propagation du Netcode a tous les Objets de meme NetCode */ - if( ObjetNet[i].m_NetCode ) - PropageNetCode( ObjetNet[i].m_NetCode, SheetLabel->m_NetCode, 0 ); + if( ObjetNet[i].GetNet() ) + PropageNetCode( ObjetNet[i].GetNet(), SheetLabel->GetNet(), 0 ); else - ObjetNet[i].m_NetCode = SheetLabel->m_NetCode; + ObjetNet[i].SetNet( SheetLabel->GetNet() ); } } @@ -714,9 +714,9 @@ static void ConnectBusLabels( ObjetNetListStruct* Label, int NbItems ) || (Label->m_Type == NET_BUSLABELMEMBER) || (Label->m_Type == NET_GLOBBUSLABELMEMBER) ) { - if( Label->m_NetCode == 0 ) + if( Label->GetNet() == 0 ) { - Label->m_NetCode = LastNetCode; + Label->SetNet( LastNetCode ); LastNetCode++; } @@ -732,10 +732,10 @@ static void ConnectBusLabels( ObjetNetListStruct* Label, int NbItems ) if( LabelInTst->m_Member != Label->m_Member ) continue; - if( LabelInTst->m_NetCode == 0 ) - LabelInTst->m_NetCode = Label->m_NetCode; + if( LabelInTst->GetNet() == 0 ) + LabelInTst->SetNet( Label->GetNet() ); else - PropageNetCode( LabelInTst->m_NetCode, Label->m_NetCode, 0 ); + PropageNetCode( LabelInTst->GetNet(), Label->GetNet(), 0 ); } } } @@ -886,9 +886,9 @@ static void PropageNetCode( int OldNetCode, int NewNetCode, int IsBus ) { for( jj = 0; jj < g_NbrObjNet; jj++, Objet++ ) { - if( Objet->m_NetCode == OldNetCode ) + if( Objet->GetNet() == OldNetCode ) { - Objet->m_NetCode = NewNetCode; + Objet->SetNet( NewNetCode ); } } } @@ -933,7 +933,7 @@ static void PointToPointConnect( ObjetNetListStruct* Ref, int IsBus, int start ) if( IsBus == 0 ) /* Objets autres que BUS et BUSLABELS */ { - netCode = Ref->m_NetCode; + netCode = Ref->GetNet(); for( i = start; i < g_NbrObjNet; i++ ) { if( netTable[i].m_SheetNumber > Ref->m_SheetNumber ) @@ -954,10 +954,10 @@ static void PointToPointConnect( ObjetNetListStruct* Ref, int IsBus, int start ) || Ref->m_End == netTable[i].m_Start || Ref->m_End == netTable[i].m_End ) { - if( netTable[i].m_NetCode == 0 ) - netTable[i].m_NetCode = netCode; + if( netTable[i].GetNet() == 0 ) + netTable[i].SetNet( netCode ); else - PropageNetCode( netTable[i].m_NetCode, netCode, 0 ); + PropageNetCode( netTable[i].GetNet(), netCode, 0 ); } break; @@ -1052,11 +1052,11 @@ static void SegmentToPointConnect( ObjetNetListStruct* Jonction, /* Propagation du Netcode a tous les Objets de meme NetCode */ if( IsBus == 0 ) { - if( Segment[i].m_NetCode ) - PropageNetCode( Segment[i].m_NetCode, - Jonction->m_NetCode, IsBus ); + if( Segment[i].GetNet() ) + PropageNetCode( Segment[i].GetNet(), + Jonction->GetNet(), IsBus ); else - Segment[i].m_NetCode = Jonction->m_NetCode; + Segment[i].SetNet( Jonction->GetNet() ); } else { @@ -1076,14 +1076,14 @@ static void SegmentToPointConnect( ObjetNetListStruct* Jonction, *******************************************************************/ static void LabelConnection( ObjetNetListStruct* LabelRef ) { - if( LabelRef->m_NetCode == 0 ) + if( LabelRef->GetNet() == 0 ) return; ObjetNetListStruct* netTable = g_TabObjNet; for( int i=0; im_NetCode ) + if( netTable[i].GetNet() == LabelRef->GetNet() ) continue; if( netTable[i].m_SheetNumber != LabelRef->m_SheetNumber ) @@ -1104,10 +1104,10 @@ static void LabelConnection( ObjetNetListStruct* LabelRef ) /* Ici 2 labels identiques */ /* Propagation du Netcode a tous les Objets de meme NetCode */ - if( netTable[i].m_NetCode ) - PropageNetCode( netTable[i].m_NetCode, LabelRef->m_NetCode, 0 ); + if( netTable[i].GetNet() ) + PropageNetCode( netTable[i].GetNet(), LabelRef->GetNet(), 0 ); else - netTable[i].m_NetCode = LabelRef->m_NetCode; + netTable[i].SetNet( LabelRef->GetNet() ); } } } @@ -1124,7 +1124,7 @@ static int TriNetCode( const void* o1, const void* o2 ) ObjetNetListStruct* Objet1 = (ObjetNetListStruct*) o1; ObjetNetListStruct* Objet2 = (ObjetNetListStruct*) o2; - return Objet1->m_NetCode - Objet2->m_NetCode; + return Objet1->GetNet() - Objet2->GetNet(); } @@ -1173,7 +1173,7 @@ static void SetUnconnectedFlag( ObjetNetListStruct* ListObj, int NbItems ) NetItemTst = NetItemRef + 1; if( (NetItemTst >= Lim) - || (NetItemRef->m_NetCode != NetItemTst->m_NetCode) ) + || (NetItemRef->GetNet() != NetItemTst->GetNet()) ) { /* Net analyse: mise a jour de m_FlagOfConnection */ NetEnd = NetItemTst; @@ -1195,7 +1195,7 @@ static void SetUnconnectedFlag( ObjetNetListStruct* ListObj, int NbItems ) for( ; ; NetItemTst++ ) { if( (NetItemTst >= Lim) - || (NetItemRef->m_NetCode != NetItemTst->m_NetCode) ) + || (NetItemRef->GetNet() != NetItemTst->GetNet()) ) break; switch( NetItemTst->m_Type ) diff --git a/eeschema/netlist.h b/eeschema/netlist.h index 32b4d8d361..42624e50ef 100644 --- a/eeschema/netlist.h +++ b/eeschema/netlist.h @@ -70,7 +70,9 @@ public: SCH_SCREEN* m_Screen; /* Ecran d'appartenance */ NetObjetType m_Type; int m_ElectricalType; /* Pour Pins et sheet labels: type electrique */ +private: int m_NetCode; /* pour elements simples */ +public: int m_BusNetCode; /* pour connexions type bus */ int m_Member; /* pour les labels type BUSWIRE ( labels de bus eclate ) * numero de membre */ @@ -84,7 +86,9 @@ public: #if defined(DEBUG) void Show( std::ostream& out, int ndx ); #endif - + + void SetNet( int aNetCode ) { m_NetCode = aNetCode; } + int GetNet() const { return m_NetCode; } }; diff --git a/gerbview/affiche.cpp b/gerbview/affiche.cpp index 1c76a6b7d2..4c29b7d83a 100644 --- a/gerbview/affiche.cpp +++ b/gerbview/affiche.cpp @@ -71,7 +71,7 @@ void Affiche_Infos_Piste( WinEDA_BasePcbFrame* frame, TRACK* pt_piste ) frame->MsgPanel->EraseMsgBox(); - d_index = pt_piste->m_NetCode; + d_index = pt_piste->GetNet(); pt_D_code = ReturnToolDescr( layer, d_index, &ii ); switch( pt_piste->Type() ) diff --git a/gerbview/block.cpp b/gerbview/block.cpp index 3fbe0d4171..0cd83495d6 100644 --- a/gerbview/block.cpp +++ b/gerbview/block.cpp @@ -334,7 +334,7 @@ void WinEDA_BasePcbFrame::Block_Move( wxDC* DC ) track->Draw( DrawPanel, DC, GR_XOR ); // erase the display track->m_Start.x += deltaX; track->m_Start.y += deltaY; track->m_End.x += deltaX; track->m_End.y += deltaY; - track->m_Param += deltaX; track->m_Sous_Netcode += deltaY; + track->m_Param += deltaX; track->SetSubNet( track->GetSubNet() + deltaY ); track->Draw( DrawPanel, DC, GR_OR ); // redraw the moved track } track = track->Next(); @@ -349,7 +349,7 @@ void WinEDA_BasePcbFrame::Block_Move( wxDC* DC ) zsegment->Draw( DrawPanel, DC, GR_XOR ); // erase the display zsegment->m_Start.x += deltaX; track->m_Start.y += deltaY; zsegment->m_End.x += deltaX; track->m_End.y += deltaY; - zsegment->m_Param += deltaX; track->m_Sous_Netcode += deltaY; + zsegment->m_Param += deltaX; track->SetSubNet( track->GetSubNet() + deltaY ); zsegment->Draw( DrawPanel, DC, GR_OR ); // redraw the moved zone zegment } zsegment = zsegment->Next(); diff --git a/gerbview/dcode.cpp b/gerbview/dcode.cpp index d060bf47e9..e82f9d684b 100644 --- a/gerbview/dcode.cpp +++ b/gerbview/dcode.cpp @@ -340,7 +340,7 @@ D_CODE * pt_Dcode; /* Pointeur sur le D code*/ track = m_Pcb->m_Track; for ( ; track != NULL ; track = (TRACK*) track->Pnext ) { - pt_Dcode = ReturnToolDescr(track->GetLayer(), track->m_NetCode); + pt_Dcode = ReturnToolDescr(track->GetLayer(), track->GetNet()); pt_Dcode->m_InUse = TRUE; if ( // Line Item diff --git a/gerbview/deltrack.cpp b/gerbview/deltrack.cpp index bcbdaccefa..7e49c731b6 100644 --- a/gerbview/deltrack.cpp +++ b/gerbview/deltrack.cpp @@ -28,7 +28,7 @@ void WinEDA_GerberFrame::Delete_DCode_Items( wxDC* DC, int dcode_value, int laye for( ; track != NULL; track = next_track ) { next_track = track->Next(); - if( dcode_value != track->m_NetCode ) + if( dcode_value != track->GetNet() ) continue; if( layer_number >= 0 && layer_number != track->GetLayer() ) continue; diff --git a/gerbview/readgerb.cpp b/gerbview/readgerb.cpp index 6c7496ef79..59ae514757 100644 --- a/gerbview/readgerb.cpp +++ b/gerbview/readgerb.cpp @@ -95,7 +95,7 @@ * Les Flash sont représentées par des DRAWSEGMENTS * - ronds ou ovales: DRAWSEGMENTS * - rectangles: DRAWSEGMENTS - * la reference aux D-CODES est placée dans le membre m_NetCode + * la reference aux D-CODES est placée dans le membre GetNet() */ diff --git a/gerbview/rs274d.cpp b/gerbview/rs274d.cpp index b3a65613f4..7683eb47ff 100644 --- a/gerbview/rs274d.cpp +++ b/gerbview/rs274d.cpp @@ -112,7 +112,7 @@ static void Append_1_Flash_ROND_GERBER( int Dcode_tool, track->m_Start = track->m_End = pos; NEGATE( track->m_Start.y ); NEGATE( track->m_End.y ); - track->m_NetCode = Dcode_tool; + track->SetNet( Dcode_tool ); track->m_Shape = S_SPOT_CIRCLE; Trace_Segment( frame->DrawPanel, DC, track, GR_OR ); @@ -145,7 +145,7 @@ static void Append_1_Flash_GERBER( int Dcode_index, track->m_Start = track->m_End = pos; NEGATE( track->m_Start.y ); NEGATE( track->m_End.y ); - track->m_NetCode = Dcode_index; + track->SetNet( Dcode_index ); if( forme == OVALE ) track->m_Shape = S_SPOT_OVALE; @@ -187,7 +187,7 @@ static void Append_1_Line_GERBER( int Dcode_index, NEGATE( track->m_Start.y ); track->m_End = endpoint; NEGATE( track->m_End.y ); - track->m_NetCode = Dcode_index; + track->SetNet( Dcode_index ); Trace_Segment( frame->DrawPanel, DC, track, GR_OR ); } @@ -279,13 +279,15 @@ static void Append_1_SEG_ARC_GERBER( int Dcode_index, } } - track->m_NetCode = Dcode_index; + track->SetNet( Dcode_index ); track->m_Param = center.x; - track->m_Sous_Netcode = center.y; + track->SetSubNet( center.y ); NEGATE( track->m_Start.y ); NEGATE( track->m_End.y ); - NEGATE( track->m_Sous_Netcode ); + + //NEGATE( track->GetSubNet() ); + track->SetSubNet( -track->GetSubNet() ); Trace_Segment( frame->DrawPanel, DC, track, GR_OR ); } @@ -745,7 +747,7 @@ bool GERBER_Descr::Execute_DCODE_Command( WinEDA_GerberFrame* frame, wxDC* DC, NEGATE( edge_poly->m_Start.y ); edge_poly->m_End = m_CurrentPos; NEGATE( edge_poly->m_End.y ); - edge_poly->m_NetCode = m_PolygonFillModeState; + edge_poly->SetNet( m_PolygonFillModeState ); m_PreviousPos = m_CurrentPos; m_PolygonFillModeState = 1; break; diff --git a/gerbview/tracepcb.cpp b/gerbview/tracepcb.cpp index fa7fc243fc..2d651717b8 100644 --- a/gerbview/tracepcb.cpp +++ b/gerbview/tracepcb.cpp @@ -112,7 +112,7 @@ void WinEDA_GerberFrame::Trace_Gerber( wxDC* DC, int draw_mode, int printmasklay if ( printmasklayer != -1 ) if ( (track->ReturnMaskLayer() & printmasklayer) == 0 ) continue; - if( track->m_NetCode == 0 ) // StartPoint + if( track->GetNet() == 0 ) // StartPoint { if( nbpoints ) { diff --git a/gerbview/trpiste.cpp b/gerbview/trpiste.cpp index 90782c1df2..768fe79271 100644 --- a/gerbview/trpiste.cpp +++ b/gerbview/trpiste.cpp @@ -44,7 +44,7 @@ void Draw_Track_Buffer( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb, int draw_ if( (Track->ReturnMaskLayer() & printmasklayer) == 0 ) continue; - if( (dcode_hightlight == Track->m_NetCode) + if( (dcode_hightlight == Track->GetNet()) && (Track->GetLayer() == layer) ) Trace_Segment( panel, DC, Track, draw_mode | GR_SURBRILL ); else @@ -122,13 +122,13 @@ void Trace_Segment( WinEDA_DrawPanel* panel, wxDC* DC, TRACK* track, int draw_mo { GRArc1( &panel->m_ClipBox, DC, track->m_Start.x, track->m_Start.y, track->m_End.x, track->m_End.y, - track->m_Param, track->m_Sous_Netcode, 0, color ); + track->m_Param, track->GetSubNet(), 0, color ); } else { GRArc1( &panel->m_ClipBox, DC, track->m_Start.x, track->m_Start.y, track->m_End.x, track->m_End.y, - track->m_Param, track->m_Sous_Netcode, + track->m_Param, track->GetSubNet(), track->m_Width, color ); } } @@ -344,7 +344,7 @@ void Affiche_DCodes_Pistes( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb, int d pos.x = (track->m_Start.x + track->m_End.x) / 2; pos.y = (track->m_Start.y + track->m_End.y) / 2; } - Line.Printf( wxT( "D%d" ), track->m_NetCode ); + Line.Printf( wxT( "D%d" ), track->GetNet() ); width = track->m_Width; orient = TEXT_ORIENT_HORIZ; if( track->m_Shape >= S_SPOT_CIRCLE ) // forme flash diff --git a/gerbview/undelete.cpp b/gerbview/undelete.cpp index dc5b36e9f4..e3adaa9f29 100644 --- a/gerbview/undelete.cpp +++ b/gerbview/undelete.cpp @@ -44,7 +44,7 @@ void WinEDA_GerberFrame::UnDeleteItem( wxDC* DC ) } PtStruct = g_UnDeleteStack[g_UnDeleteStackPtr]; - net_code = ( (TRACK*) PtStruct )->m_NetCode; + net_code = ( (TRACK*) PtStruct )->GetNet(); pt_track = ( (TRACK*) PtStruct )->GetBestInsertPoint( m_Pcb ); ( (TRACK*) PtStruct )->Insert( m_Pcb, pt_track ); diff --git a/include/common.h b/include/common.h index 26d7c34e8c..1e99c7d237 100644 --- a/include/common.h +++ b/include/common.h @@ -588,7 +588,7 @@ int GetCommandOptions( const int argc, const char** argv, const char* st const char** optarg, int* optind ); -void valeur_param( int valeur, wxString& buf_texte ); +const wxString& valeur_param( int valeur, wxString& buf_texte ); /* Retourne pour affichage la valeur d'un parametre, selon type d'unites choisies * entree : valeur en mils , buffer de texte diff --git a/pcbnew/affiche.cpp b/pcbnew/affiche.cpp index c57f2619d0..615544c927 100644 --- a/pcbnew/affiche.cpp +++ b/pcbnew/affiche.cpp @@ -43,7 +43,7 @@ void Affiche_Infos_Equipot( int netcode, WinEDA_BasePcbFrame* frame ) { for( pad = module->m_Pads; pad != 0; pad = (D_PAD*) pad->Pnext ) { - if( pad->m_NetCode == netcode ) + if( pad->GetNet() == netcode ) ii++; } } @@ -55,7 +55,7 @@ void Affiche_Infos_Equipot( int netcode, WinEDA_BasePcbFrame* frame ) { ii++; if( Struct->Type() == TYPEVIA ) - if( ( (SEGVIA*) Struct )->m_NetCode == netcode ) + if( ( (SEGVIA*) Struct )->GetNet() == netcode ) nb_vias++; } diff --git a/pcbnew/attribut.cpp b/pcbnew/attribut.cpp index 7c90bbecd4..f3ed8d7824 100644 --- a/pcbnew/attribut.cpp +++ b/pcbnew/attribut.cpp @@ -76,7 +76,7 @@ void WinEDA_PcbFrame::Attribut_net( wxDC* DC, int net_code, bool Flag_On ) { for( ; Track != NULL; Track = (TRACK*) Track->Pnext ) { - if( net_code == Track->m_NetCode ) + if( net_code == Track->GetNet() ) break; } } @@ -84,7 +84,7 @@ void WinEDA_PcbFrame::Attribut_net( wxDC* DC, int net_code, bool Flag_On ) DrawPanel->CursorOff( DC ); // Erase cursor shape while( Track ) /* Flag change */ { - if( (net_code >= 0 ) && (net_code != Track->m_NetCode) ) + if( (net_code >= 0 ) && (net_code != Track->GetNet()) ) break; GetScreen()->SetModify(); Track->SetState( SEGM_FIXE, Flag_On ); diff --git a/pcbnew/autoplac.cpp b/pcbnew/autoplac.cpp index cf87a8f600..6a26e6fe9f 100644 --- a/pcbnew/autoplac.cpp +++ b/pcbnew/autoplac.cpp @@ -449,7 +449,7 @@ int WinEDA_PcbFrame::GenPlaceBoard() TRACK TmpSegm( NULL ); TmpSegm.SetLayer( -1 ); - TmpSegm.m_NetCode = -1; + TmpSegm.SetNet( -1 ); TmpSegm.m_Width = g_GridRoutingSize / 2; for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext ) { @@ -970,7 +970,7 @@ void Build_PlacedPads_List( BOARD* Pcb ) PtPad->m_physical_connexion = 0; PtPad->m_logical_connexion = 0; PtPad->m_Parent = Module; - if( PtPad->m_NetCode ) + if( PtPad->GetNet() ) Pcb->m_NbNodes++; pt_liste_pad++; } diff --git a/pcbnew/autorout.cpp b/pcbnew/autorout.cpp index 3b34960089..b1ed0ccbb3 100644 --- a/pcbnew/autorout.cpp +++ b/pcbnew/autorout.cpp @@ -1,6 +1,6 @@ - /***************************************/ - /* PCBNEW: Autorouting command control */ - /***************************************/ +/***************************************/ +/* PCBNEW: Autorouting command control */ +/***************************************/ #include "fctsys.h" #include "gr_basic.h" @@ -16,204 +16,220 @@ /* Variables locales */ /********************************************************/ -void WinEDA_PcbFrame::Autoroute(wxDC * DC, int mode) +void WinEDA_PcbFrame::Autoroute( wxDC* DC, int mode ) /********************************************************/ /* init board, route traces*/ { -int ii, start, stop; -CHEVELU* ptmp; -MODULE * Module = NULL; -D_PAD * Pad = NULL; -int autoroute_net_code = -1; -wxString msg; + int ii, start, stop; + CHEVELU* ptmp; + MODULE* Module = NULL; + D_PAD* Pad = NULL; + int autoroute_net_code = -1; + wxString msg; - if ( g_DesignSettings.m_CopperLayerCount > 1 ) - { - Route_Layer_TOP = GetScreen()->m_Route_Layer_TOP; - Route_Layer_BOTTOM = GetScreen()->m_Route_Layer_BOTTOM; - } - else - { - Route_Layer_TOP = - Route_Layer_BOTTOM = COPPER_LAYER_N; - } + if( g_DesignSettings.m_CopperLayerCount > 1 ) + { + Route_Layer_TOP = GetScreen()->m_Route_Layer_TOP; + Route_Layer_BOTTOM = GetScreen()->m_Route_Layer_BOTTOM; + } + else + { + Route_Layer_TOP = + Route_Layer_BOTTOM = COPPER_LAYER_N; + } - switch ( mode ) - { - case ROUTE_NET: - if ( GetScreen()->GetCurItem() ) - { - switch ( GetScreen()->GetCurItem()->Type() ) - { - case TYPEPAD: - Pad = (D_PAD*) GetScreen()->GetCurItem(); - autoroute_net_code = Pad->m_NetCode; - break; + switch( mode ) + { + case ROUTE_NET: + if( GetScreen()->GetCurItem() ) + { + switch( GetScreen()->GetCurItem()->Type() ) + { + case TYPEPAD: + Pad = (D_PAD*) GetScreen()->GetCurItem(); + autoroute_net_code = Pad->GetNet(); + break; - default: - break; - } - } - if( autoroute_net_code <= 0) - { - DisplayError(this, _("Net not selected")); return; - } - break; + default: + break; + } + } + if( autoroute_net_code <= 0 ) + { + DisplayError( this, _( "Net not selected" ) ); return; + } + break; - case ROUTE_MODULE: - Module = (MODULE*) GetScreen()->GetCurItem(); - if( (Module == NULL) || (Module->Type() != TYPEMODULE) ) - { - DisplayError(this, _("Module not selected") ); return; - } - break; - - case ROUTE_PAD: - Pad = (D_PAD*) GetScreen()->GetCurItem(); - if( (Pad == NULL) || (Pad->Type() != TYPEPAD) ) - { - DisplayError(this, _("Pad not selected") ); return; - } - break; - - } - if( (m_Pcb->m_Status_Pcb & LISTE_CHEVELU_OK ) == 0 ) - Compile_Ratsnest(DC, TRUE); + case ROUTE_MODULE: + Module = (MODULE*) GetScreen()->GetCurItem(); + if( (Module == NULL) || (Module->Type() != TYPEMODULE) ) + { + DisplayError( this, _( "Module not selected" ) ); return; + } + break; - /* Placement du flag CH_ROUTE_REQ sur les chevelus demandes */ - ptmp = (CHEVELU*) m_Pcb->m_Ratsnest; - for ( ii = m_Pcb->GetNumRatsnests(); ii > 0; ii--, ptmp ++ ) - { - ptmp->status &= ~CH_ROUTE_REQ; - switch ( mode ) - { - case ROUTE_ALL: - ptmp->status |= CH_ROUTE_REQ; break; + case ROUTE_PAD: + Pad = (D_PAD*) GetScreen()->GetCurItem(); + if( (Pad == NULL) || (Pad->Type() != TYPEPAD) ) + { + DisplayError( this, _( "Pad not selected" ) ); return; + } + break; + } - case ROUTE_NET: - if( autoroute_net_code == ptmp->m_NetCode) - ptmp->status |= CH_ROUTE_REQ; - break; - - case ROUTE_MODULE: - { - D_PAD * pt_pad = (D_PAD *) Module->m_Pads; - for( ; pt_pad != NULL; pt_pad = (D_PAD *)pt_pad->Pnext) - { - if( ptmp->pad_start == pt_pad ) - ptmp->status |= CH_ROUTE_REQ; - if( ptmp->pad_end == pt_pad ) - ptmp->status |= CH_ROUTE_REQ; - } - break; - } - case ROUTE_PAD: - if( (ptmp->pad_start == Pad) || (ptmp->pad_end == Pad)) - ptmp->status |= CH_ROUTE_REQ; - break; - } - } - ptmp = (CHEVELU*)m_Pcb->m_Ratsnest; + if( (m_Pcb->m_Status_Pcb & LISTE_CHEVELU_OK ) == 0 ) + Compile_Ratsnest( DC, TRUE ); - start = time( NULL ); + /* Placement du flag CH_ROUTE_REQ sur les chevelus demandes */ + ptmp = (CHEVELU*) m_Pcb->m_Ratsnest; + for( ii = m_Pcb->GetNumRatsnests(); ii > 0; ii--, ptmp++ ) + { + ptmp->status &= ~CH_ROUTE_REQ; - /* Calcul du pas de routage fixe a 5 mils et plus */ - g_GridRoutingSize = GetScreen()->GetGrid().x; - if (g_GridRoutingSize < 50 ) g_GridRoutingSize = 50 ; - E_scale = g_GridRoutingSize / 50 ; if (E_scale < 1 ) E_scale = 1 ; + switch( mode ) + { + case ROUTE_ALL: + ptmp->status |= CH_ROUTE_REQ; break; - /* calcule de Ncols et Nrow, taille de la matrice de routage */ - ComputeMatriceSize(this, g_GridRoutingSize); + case ROUTE_NET: + if( autoroute_net_code == ptmp->GetNet() ) + ptmp->status |= CH_ROUTE_REQ; + break; - MsgPanel->EraseMsgBox(); + case ROUTE_MODULE: + { + D_PAD* pt_pad = (D_PAD*) Module->m_Pads; + for( ; pt_pad != NULL; pt_pad = (D_PAD*) pt_pad->Pnext ) + { + if( ptmp->pad_start == pt_pad ) + ptmp->status |= CH_ROUTE_REQ; + if( ptmp->pad_end == pt_pad ) + ptmp->status |= CH_ROUTE_REQ; + } - /* Creation du mapping du board */ - Nb_Sides = ONE_SIDE; - if(Route_Layer_TOP != Route_Layer_BOTTOM ) Nb_Sides = TWO_SIDES; + break; + } - if ( Board.InitBoard() < 0 ) - { - DisplayError(this, _("No memory for autorouting") ); - Board.UnInitBoard(); /* Libere la memoire BitMap */ - return; - } + case ROUTE_PAD: + if( (ptmp->pad_start == Pad) || (ptmp->pad_end == Pad) ) + ptmp->status |= CH_ROUTE_REQ; + break; + } + } - Affiche_Message( _("Place Cells") ); - PlaceCells(m_Pcb, -1, FORCE_PADS); + ptmp = (CHEVELU*) m_Pcb->m_Ratsnest; - /* Construction de la liste des pistes a router */ - Build_Work(m_Pcb, ptmp); + start = time( NULL ); - // DisplayBoard(DrawPanel, DC); + /* Calcul du pas de routage fixe a 5 mils et plus */ + g_GridRoutingSize = GetScreen()->GetGrid().x; + if( g_GridRoutingSize < 50 ) + g_GridRoutingSize = 50; + E_scale = g_GridRoutingSize / 50; if( E_scale < 1 ) + E_scale = 1; - if( Nb_Sides == TWO_SIDES ) - Solve(DC, TWO_SIDES); /* double face */ - else Solve(DC, ONE_SIDE); /* simple face */ - - /* Liberation de la memoire */ - FreeQueue(); /* Libere la memoire de routage */ - InitWork(); /* Libere la memoire de la liste des connexions a router */ - Board.UnInitBoard(); /* Libere la memoire BitMap */ - stop = time( NULL ) - start; - msg.Printf( wxT("time = %d second%s"), stop, (stop == 1) ? wxT("") : wxT("s") ); - Affiche_Message(msg); + /* calcule de Ncols et Nrow, taille de la matrice de routage */ + ComputeMatriceSize( this, g_GridRoutingSize ); + + MsgPanel->EraseMsgBox(); + + /* Creation du mapping du board */ + Nb_Sides = ONE_SIDE; + if( Route_Layer_TOP != Route_Layer_BOTTOM ) + Nb_Sides = TWO_SIDES; + + if( Board.InitBoard() < 0 ) + { + DisplayError( this, _( "No memory for autorouting" ) ); + Board.UnInitBoard(); /* Libere la memoire BitMap */ + return; + } + + Affiche_Message( _( "Place Cells" ) ); + PlaceCells( m_Pcb, -1, FORCE_PADS ); + + /* Construction de la liste des pistes a router */ + Build_Work( m_Pcb, ptmp ); + + // DisplayBoard(DrawPanel, DC); + + if( Nb_Sides == TWO_SIDES ) + Solve( DC, TWO_SIDES ); /* double face */ + else + Solve( DC, ONE_SIDE ); /* simple face */ + + /* Liberation de la memoire */ + FreeQueue(); /* Libere la memoire de routage */ + InitWork(); /* Libere la memoire de la liste des connexions a router */ + Board.UnInitBoard(); /* Libere la memoire BitMap */ + stop = time( NULL ) - start; + msg.Printf( wxT( "time = %d second%s" ), stop, (stop == 1) ? wxT( "" ) : wxT( "s" ) ); + Affiche_Message( msg ); } + /************************************************/ -void WinEDA_PcbFrame::Reset_Noroutable(wxDC * DC) +void WinEDA_PcbFrame::Reset_Noroutable( wxDC* DC ) /*************************************************/ - /* Remet a 0 le flag CH_NOROUTABLE qui est positionne a 1 par Solve() - lorsque un chevelu n'a pas ete route. - Si ce flag est a 1 il n'est pas reroute -*/ + +/* Remet a 0 le flag CH_NOROUTABLE qui est positionne a 1 par Solve() + * lorsque un chevelu n'a pas ete route. + * Si ce flag est a 1 il n'est pas reroute + */ { -int ii; -CHEVELU* pt_rats; + int ii; + CHEVELU* pt_rats; - if( (m_Pcb->m_Status_Pcb & LISTE_CHEVELU_OK )== 0 ) - Compile_Ratsnest(DC, TRUE); + if( (m_Pcb->m_Status_Pcb & LISTE_CHEVELU_OK )== 0 ) + Compile_Ratsnest( DC, TRUE ); - pt_rats = (CHEVELU*)m_Pcb->m_Ratsnest; - if( pt_rats == NULL ) return; + pt_rats = (CHEVELU*) m_Pcb->m_Ratsnest; + if( pt_rats == NULL ) + return; - for ( ii = m_Pcb->GetNumRatsnests(); ii > 0 ; ii-- , pt_rats++) - { - pt_rats->status &= ~CH_UNROUTABLE ; - } + for( ii = m_Pcb->GetNumRatsnests(); ii > 0; ii--, pt_rats++ ) + { + pt_rats->status &= ~CH_UNROUTABLE; + } } + /*****************************************************/ -void DisplayBoard(WinEDA_DrawPanel * panel, wxDC * DC) +void DisplayBoard( WinEDA_DrawPanel* panel, wxDC* DC ) /****************************************************/ /* Fonction de DEBUG : affiche le remplissage des cellules TOP et BOTTOM */ { -int row, col, i , j; -int dcell0, dcell1 = 0, color; -int maxi; + int row, col, i, j; + int dcell0, dcell1 = 0, color; + int maxi; - maxi = (/*ActiveScreen->Lim_XD - 20*/ 500) / Ncols; - maxi = (maxi * 3 ) / 4; - if (!maxi) maxi = 1; + maxi = ( /*ActiveScreen->Lim_XD - 20*/ 500) / Ncols; + maxi = (maxi * 3 ) / 4; + if( !maxi ) + maxi = 1; - for ( col = 0; col < Ncols; col++) - { - for(row = 0; row < Nrows; row++) - { - color = 0; - dcell0 = GetCell(row,col,BOTTOM); if (dcell0 & HOLE) color = GREEN; - if(Nb_Sides) dcell1 = GetCell(row,col,TOP); - if ( dcell1 & HOLE ) color |= RED; - dcell0 |= dcell1; - if( !color && (dcell0 & VIA_IMPOSSIBLE)) color = BLUE ; - if(color) - { - for (i = 0; i < maxi; i++) - for (j = 0; j < maxi; j++) - GRSPutPixel(&panel->m_ClipBox, DC, - (col*maxi)+i + 10,(row*maxi) + 60 + j, color); - } - } - } + for( col = 0; col < Ncols; col++ ) + { + for( row = 0; row < Nrows; row++ ) + { + color = 0; + dcell0 = GetCell( row, col, BOTTOM ); if( dcell0 & HOLE ) + color = GREEN; + if( Nb_Sides ) + dcell1 = GetCell( row, col, TOP ); + if( dcell1 & HOLE ) + color |= RED; + dcell0 |= dcell1; + if( !color && (dcell0 & VIA_IMPOSSIBLE) ) + color = BLUE; + if( color ) + { + for( i = 0; i < maxi; i++ ) + for( j = 0; j < maxi; j++ ) + GRSPutPixel( &panel->m_ClipBox, DC, + (col * maxi) + i + 10, (row * maxi) + 60 + j, color ); + + } + } + } } - - diff --git a/pcbnew/autorout.h b/pcbnew/autorout.h index 23c831ca28..2e3355da43 100644 --- a/pcbnew/autorout.h +++ b/pcbnew/autorout.h @@ -1,156 +1,167 @@ - /****************************************************/ - /* AUTOROUT.H */ - /* d‚clarations communes relative au routage, DRC */ - /* et placement automatique des composants */ - /****************************************************/ +/****************************************************/ +/* AUTOROUT.H */ +/* d‚clarations communes relative au routage, DRC */ +/* et placement automatique des composants */ +/****************************************************/ #ifndef AUTOROUT_H #define AUTOROUT_H -#define TOP 0 +#define TOP 0 #define BOTTOM 1 -#define EMPTY 0 +#define EMPTY 0 #define ILLEGAL -1 - /*****************************************************/ - /* Structures de representation des pads et chevelus */ - /* pour etablissement du chevelu general complet */ - /*****************************************************/ +/*****************************************************/ +/* Structures de representation des pads et chevelus */ +/* pour etablissement du chevelu general complet */ +/*****************************************************/ - - /***********************************************/ - /* description d'un segment de chevelu general */ - /***********************************************/ - /****************************/ - /* bits d'etat du chevelu : */ - /****************************/ -#define CH_VISIBLE 1 /* affichage permanent demande */ -#define CH_UNROUTABLE 2 /* non route par l'autorouteur */ -#define CH_ROUTE_REQ 4 /* doit etre route par l'autorouteur */ -#define CH_ACTIF 8 /* chevelu non encore routé */ -#define LOCAL_CHEVELU 0x8000 /* indique un chevelu reliant 2 pins d'un meme - module pour le calcul des chevelus relatifs a 1 seul module */ +/***********************************************/ +/* description d'un segment de chevelu general */ +/***********************************************/ +/****************************/ +/* bits d'etat du chevelu : */ +/****************************/ +#define CH_VISIBLE 1 /* affichage permanent demande */ +#define CH_UNROUTABLE 2 /* non route par l'autorouteur */ +#define CH_ROUTE_REQ 4 /* doit etre route par l'autorouteur */ +#define CH_ACTIF 8 /* chevelu non encore routé */ +#define LOCAL_CHEVELU 0x8000 /* indique un chevelu reliant 2 pins d'un meme + * module pour le calcul des chevelus relatifs a 1 seul module */ class CHEVELU { +private: + int m_NetCode; // numero de code du net ( = 0.. n , avec 0 si non connecte) + public: - int m_NetCode; // numero de code du net ( = 0.. n , avec 0 si non connecte) - int status; // etat: voir defines précédents (CH_ ...) - D_PAD * pad_start; // pointeur sur le pad de depart - D_PAD * pad_end ; // pointeur sur le pad de fin - int dist; // longeur du chevelu + int status; // etat: voir defines précédents (CH_ ...) + D_PAD* pad_start; // pointeur sur le pad de depart + D_PAD* pad_end; // pointeur sur le pad de fin + int dist; // longeur du chevelu + + /** + * Function GetNet + * @return int - the net code. + */ + int GetNet() const + { + return m_NetCode; + } + void SetNet( int aNetCode ) + { + m_NetCode = aNetCode; + }; }; - /****************************************************************/ - /* description d'un point de piste pour le suivi des connexions */ - /****************************************************************/ -#define START_SUR_PAD 0x10 -#define END_SUR_PAD 0x20 +/****************************************************************/ +/* description d'un point de piste pour le suivi des connexions */ +/****************************************************************/ +#define START_SUR_PAD 0x10 +#define END_SUR_PAD 0x20 #define START_SUR_TRACK 0x40 -#define END_SUR_TRACK 0x80 +#define END_SUR_TRACK 0x80 #define START_EQU_VIA 0x10 -#define END_EQU_VIA 0x20 +#define END_EQU_VIA 0x20 /* Status bit (OR'ed bits) for class BOARD member .m_Status_Pcb */ -enum StatusPcbFlags -{ - LISTE_PAD_OK = 1, /* Pad list is Ok */ - LISTE_CHEVELU_OK = 2, /* General Rastnest is Ok */ - CHEVELU_LOCAL_OK = 4, /* current MODULE rastnest is Ok */ - CONNEXION_OK = 8, /* Bit indicant que la liste des connexions existe */ - NET_CODES_OK = 0x10, /* Bit indicant que les netcodes sont OK ( pas de modif - de noms de net */ - DO_NOT_SHOW_GENERAL_RASTNEST = 0x20 /* Do not display the general rastnest (used in module moves) */ +enum StatusPcbFlags { + LISTE_PAD_OK = 1, /* Pad list is Ok */ + LISTE_CHEVELU_OK = 2, /* General Rastnest is Ok */ + CHEVELU_LOCAL_OK = 4, /* current MODULE rastnest is Ok */ + CONNEXION_OK = 8, /* Bit indicant que la liste des connexions existe */ + NET_CODES_OK = 0x10, /* Bit indicant que les netcodes sont OK ( pas de modif + * de noms de net */ + DO_NOT_SHOW_GENERAL_RASTNEST = 0x20 /* Do not display the general rastnest (used in module moves) */ }; -#define OK_DRC 0 +#define OK_DRC 0 #define BAD_DRC 1 /* Commandes d'autoplacement / autorouage possibles */ -enum CommandOpt -{ - PLACE_ALL, - PLACE_OUT_OF_BOARD, - PLACE_INCREMENTAL, - PLACE_1_MODULE, +enum CommandOpt { + PLACE_ALL, + PLACE_OUT_OF_BOARD, + PLACE_INCREMENTAL, + PLACE_1_MODULE, - ROUTE_ALL, - ROUTE_NET, - ROUTE_MODULE, - ROUTE_PAD - }; + ROUTE_ALL, + ROUTE_NET, + ROUTE_MODULE, + ROUTE_PAD +}; /* parametre Pas de routage pour routage automatique et generation des zones */ #if defined MAIN -int g_GridRoutingSize = 250; +int g_GridRoutingSize = 250; #else extern int g_GridRoutingSize; #endif /* Variables et structures d'autoroutage */ -eda_global int E_scale; /* facteur d'echelle des tables de distance */ +eda_global int E_scale; /* facteur d'echelle des tables de distance */ -#define ONE_SIDE 0 +#define ONE_SIDE 0 #define TWO_SIDES 1 -eda_global int Nb_Sides; /* Nombre de couches pour autoroutage (0 ou 1) */ +eda_global int Nb_Sides; /* Nombre de couches pour autoroutage (0 ou 1) */ /* Bits Flags de gestion de remplissage du BOARD */ -#define FORCE_PADS 1 /* pour forcage placement pads quel que soit le netcode */ +#define FORCE_PADS 1 /* pour forcage placement pads quel que soit le netcode */ /* board dimensions */ -extern int Nrows, Ncols; +extern int Nrows, Ncols; #if defined MAIN -int Nrows = ILLEGAL; -int Ncols = ILLEGAL; +int Nrows = ILLEGAL; +int Ncols = ILLEGAL; #endif eda_global int Ntotal; /* search statistics */ -eda_global int OpenNodes; /* total number of nodes opened */ -eda_global int ClosNodes; /* total number of nodes closed */ -eda_global int MoveNodes; /* total number of nodes moved */ -eda_global int MaxNodes; /* maximum number of nodes opened at one time */ +eda_global int OpenNodes; /* total number of nodes opened */ +eda_global int ClosNodes; /* total number of nodes closed */ +eda_global int MoveNodes; /* total number of nodes moved */ +eda_global int MaxNodes; /* maximum number of nodes opened at one time */ /* Structures utiles a la generation du board en Bit Map */ typedef char BoardCell; -typedef int DistCell; +typedef int DistCell; -class BOARDHEAD /* header of blocks of BoardCell */ +class BOARDHEAD /* header of blocks of BoardCell */ { public: - BoardCell * m_BoardSide[2]; /* ptr to block of memory: 2-sided board */ - DistCell * m_DistSide[2]; /* ptr to block of memory: path distance to cells */ - char * m_DirSide[2]; /* header of blocks of chars:pointers back to source */ - bool m_InitBoardDone; - int m_Layers; - int m_Nrows, m_Ncols; - int m_MemSize; + BoardCell* m_BoardSide[2]; /* ptr to block of memory: 2-sided board */ + DistCell* m_DistSide[2]; /* ptr to block of memory: path distance to cells */ + char* m_DirSide[2]; /* header of blocks of chars:pointers back to source */ + bool m_InitBoardDone; + int m_Layers; + int m_Nrows, m_Ncols; + int m_MemSize; public: - BOARDHEAD(); - ~BOARDHEAD(); - int InitBoard(); - void UnInitBoard(); - + BOARDHEAD(); + ~BOARDHEAD(); + int InitBoard(); + void UnInitBoard(); }; -eda_global BOARDHEAD Board ; /* 2-sided board */ +eda_global BOARDHEAD Board; /* 2-sided board */ /* Constantes utilisees pour le trace des cellules sur le BOARD */ -#define WRITE_CELL 0 -#define WRITE_OR_CELL 1 +#define WRITE_CELL 0 +#define WRITE_OR_CELL 1 #define WRITE_XOR_CELL 2 #define WRITE_AND_CELL 3 #define WRITE_ADD_CELL 4 @@ -159,5 +170,4 @@ eda_global BOARDHEAD Board ; /* 2-sided board */ #include "ar_protos.h" -#endif /* AUTOROUT_H */ - +#endif /* AUTOROUT_H */ diff --git a/pcbnew/block.cpp b/pcbnew/block.cpp index 68ca7a8c7f..f660f92437 100644 --- a/pcbnew/block.cpp +++ b/pcbnew/block.cpp @@ -82,8 +82,12 @@ static bool InstallBlockCmdFrame( WinEDA_BasePcbFrame* parent, parent->DrawPanel->m_IgnoreMouseEvents = TRUE; WinEDA_ExecBlockCmdFrame* frame = new WinEDA_ExecBlockCmdFrame( parent, title ); - nocmd = frame->ShowModal(); frame->Destroy(); - parent->GetScreen()-> m_Curseur = oldpos; + + nocmd = frame->ShowModal(); + frame->Destroy(); + + parent->GetScreen()->m_Curseur = oldpos; + parent->DrawPanel->MouseToCursorSchema(); parent->DrawPanel->m_IgnoreMouseEvents = FALSE; @@ -494,6 +498,7 @@ void WinEDA_BasePcbFrame::Block_Delete( wxDC* DC ) masque_layer = EDGE_LAYER; if( Block_Include_Draw_Items ) masque_layer = ALL_LAYERS; + if( !Block_Include_Edges_Items ) masque_layer &= ~EDGE_LAYER; diff --git a/pcbnew/board.cpp b/pcbnew/board.cpp index 7958667918..bc8435838d 100644 --- a/pcbnew/board.cpp +++ b/pcbnew/board.cpp @@ -200,7 +200,7 @@ void PlaceCells( BOARD* Pcb, int net_code, int flag ) ptr = (LISTE_PAD*) Pcb->m_Pads; ii = Pcb->m_NbPads; for( ; ii > 0; ii--, ptr++ ) { - if( (net_code != (*ptr)->m_NetCode ) || (flag & FORCE_PADS) ) + if( (net_code != (*ptr)->GetNet() ) || (flag & FORCE_PADS) ) { Place_1_Pad_Board( Pcb, *ptr, HOLE, marge, WRITE_CELL ); } @@ -230,7 +230,7 @@ void PlaceCells( BOARD* Pcb, int net_code, int flag ) TmpSegm->m_Shape = ( (EDGE_MODULE*) PtModStruct )->m_Shape; TmpSegm->m_Width = ( (EDGE_MODULE*) PtModStruct )->m_Width; TmpSegm->m_Param = ( (EDGE_MODULE*) PtModStruct )->m_Angle; - TmpSegm->m_NetCode = -1; + TmpSegm->SetNet( -1 ); TraceSegmentPcb( Pcb, TmpSegm, HOLE, marge, WRITE_CELL ); TraceSegmentPcb( Pcb, TmpSegm, VIA_IMPOSSIBLE, via_marge, @@ -270,7 +270,7 @@ void PlaceCells( BOARD* Pcb, int net_code, int flag ) TmpSegm->m_Shape = DrawSegm->m_Shape; TmpSegm->m_Width = DrawSegm->m_Width; TmpSegm->m_Param = DrawSegm->m_Angle; - TmpSegm->m_NetCode = -1; + TmpSegm->SetNet( -1 ); TraceSegmentPcb( Pcb, TmpSegm, type_cell, marge, WRITE_CELL ); @@ -313,7 +313,7 @@ void PlaceCells( BOARD* Pcb, int net_code, int flag ) pt_segm = Pcb->m_Track; for( ; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext ) { - if( net_code == pt_segm->m_NetCode ) + if( net_code == pt_segm->GetNet() ) continue; TraceSegmentPcb( Pcb, pt_segm, HOLE, marge, WRITE_CELL ); TraceSegmentPcb( Pcb, pt_segm, VIA_IMPOSSIBLE, via_marge, WRITE_OR_CELL ); @@ -323,7 +323,7 @@ void PlaceCells( BOARD* Pcb, int net_code, int flag ) pt_segm = (TRACK*) Pcb->m_Zone; for( ; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext ) { - if( net_code == pt_segm->m_NetCode ) + if( net_code == pt_segm->GetNet() ) continue; TraceSegmentPcb( Pcb, pt_segm, HOLE, marge, WRITE_CELL ); TraceSegmentPcb( Pcb, pt_segm, VIA_IMPOSSIBLE, via_marge, WRITE_OR_CELL ); @@ -357,7 +357,7 @@ int Build_Work( BOARD* Pcb, CHEVELU* pt_base_chevelu ) continue; pt_pad = pt_rats->pad_start; - current_net_code = pt_pad->m_NetCode; + current_net_code = pt_pad->GetNet(); pt_ch = pt_rats; r1 = (pt_pad->m_Pos.y - Pcb->m_BoundaryBox.m_Pos.y + demi_pas ) / g_GridRoutingSize; diff --git a/pcbnew/class_board.cpp b/pcbnew/class_board.cpp index 582a208e86..dcc34934af 100644 --- a/pcbnew/class_board.cpp +++ b/pcbnew/class_board.cpp @@ -568,7 +568,7 @@ EQUIPOT* BOARD::FindNet( int anetcode ) const EQUIPOT* net = (EQUIPOT*) m_Equipots; while( net ) { - if( net->m_NetCode == anetcode ) + if( net->GetNet() == anetcode ) break; net = (EQUIPOT*) net->Pnext; } diff --git a/pcbnew/class_board_item.cpp b/pcbnew/class_board_item.cpp index 349c905cdd..8aa29f32f7 100644 --- a/pcbnew/class_board_item.cpp +++ b/pcbnew/class_board_item.cpp @@ -33,7 +33,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const { case PCB_EQUIPOT_STRUCT_TYPE: text << _( "Net" ) << ( (EQUIPOT*) item )->m_Netname << wxT( " " ) << - ( (EQUIPOT*) item )->m_NetCode; + ( (EQUIPOT*) item )->GetNet(); break; case TYPEMODULE: @@ -60,7 +60,6 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const break; case TYPETEXTEMODULE: - switch( ( (TEXTE_MODULE*) item )->m_Type ) { case TEXT_is_REFERENCE: @@ -78,7 +77,6 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const << ( (MODULE*) GetParent() )->GetReference(); break; } - break; case TYPEEDGEMODULE: @@ -124,13 +122,21 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const break; case TYPETRACK: - text << _( "Track" ) << wxT( " " ) << ((TRACK*)item)->ShowWidth(); - net = aPcb->FindNet( ((TRACK*)item)->m_NetCode ); - if( net ) + // deleting tracks requires all the information we can get to + // disambiguate all the crap under the cursor! { - text << wxT( " [" ) << net->m_Netname << wxT( "]" ); + wxString txt; + + text << _( "Track" ) << wxT( " " ) << ((TRACK*)item)->ShowWidth(); + net = aPcb->FindNet( ((TRACK*)item)->GetNet() ); + if( net ) + { + text << wxT( " [" ) << net->m_Netname << wxT( "]" ); + } + text << _( " on " ) << ReturnPcbLayerName( item->GetLayer() ).Trim() + << wxT(" ") << _("Net:") << ((TRACK*)item)->GetNet() + << wxT(" ") << _("Length:") << valeur_param( (int) ((TRACK*)item)->GetLength(), txt ); } - text << _( " on " ) << ReturnPcbLayerName( item->GetLayer() ).Trim(); break; case TYPEZONE: @@ -140,7 +146,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const TimeStampText.Printf( wxT( "(%8.8X)" ), item->m_TimeStamp ); text << TimeStampText; } - net = aPcb->FindNet( ( (SEGZONE*) item )->m_NetCode ); + net = aPcb->FindNet( ( (SEGZONE*) item )->GetNet() ); if( net ) { text << wxT( " [" ) << net->m_Netname << wxT( "]" ); @@ -160,7 +166,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const text << wxT(" ") << _("Buried"); // else say nothing about normal vias - net = aPcb->FindNet( via->m_NetCode ); + net = aPcb->FindNet( via->GetNet() ); if( net ) { text << wxT( " [" ) << net->m_Netname << wxT( "]" ); diff --git a/pcbnew/class_equipot.cpp b/pcbnew/class_equipot.cpp index 583d41fda0..5eaa24f584 100644 --- a/pcbnew/class_equipot.cpp +++ b/pcbnew/class_equipot.cpp @@ -25,7 +25,7 @@ EQUIPOT::EQUIPOT( BOARD_ITEM* StructFather ) : BOARD_ITEM( StructFather, PCB_EQUIPOT_STRUCT_TYPE ) { - m_NetCode = 0; + SetNet( 0 ); m_NbNodes = m_NbLink = m_NbNoconn = 0; m_Masque_Layer = 0; m_Masque_Plan = 0; @@ -87,7 +87,7 @@ int EQUIPOT:: ReadEquipotDescr( FILE* File, int* LineNum ) if( strncmp( Line, "Na", 2 ) == 0 ) /* Texte */ { sscanf( Line + 2, " %d", &tmp ); - m_NetCode = tmp; + SetNet( tmp ); ReadDelimitedText( Ltmp, Line + 2, sizeof(Ltmp) ); m_Netname = CONV_FROM_UTF8( Ltmp ); @@ -114,7 +114,7 @@ int EQUIPOT:: WriteEquipotDescr( FILE* File ) return 0; fprintf( File, "$EQUIPOT\n" ); - fprintf( File, "Na %d \"%.16s\"\n", m_NetCode, CONV_TO_UTF8( m_Netname ) ); + fprintf( File, "Na %d \"%.16s\"\n", GetNet(), CONV_TO_UTF8( m_Netname ) ); fprintf( File, "St %s\n", "~" ); if( m_ForceWidth ) fprintf( File, "Lw %d\n", m_ForceWidth ); @@ -135,6 +135,6 @@ void EQUIPOT::Show( int nestLevel, std::ostream& os ) // for now, make it look like XML: NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() << " name=\"" << m_Netname.mb_str() << '"' << - " netcode=\"" << m_NetCode << "\"/>\n"; + " netcode=\"" << GetNet() << "\"/>\n"; } #endif diff --git a/pcbnew/class_equipot.h b/pcbnew/class_equipot.h index bea8270d4e..2a92025e90 100644 --- a/pcbnew/class_equipot.h +++ b/pcbnew/class_equipot.h @@ -7,10 +7,13 @@ class EQUIPOT : public BOARD_ITEM { +private: + int m_NetCode; // numero de code interne du net + + public: wxString m_Netname; // nom du net int status; // no route, hight light... - int m_NetCode; // numero de code interne du net int m_NbNodes; // nombre de pads appartenant au net int m_NbLink; // nombre de chevelus int m_NbNoconn; // nombre de chevelus actifs @@ -32,6 +35,13 @@ public: int ReadEquipotDescr( FILE* File, int* LineNum ); int WriteEquipotDescr( FILE* File ); + /** + * Function GetNet + * @return int - the netcode + */ + int GetNet() const { return m_NetCode; } + void SetNet( int aNetCode ) { m_NetCode = aNetCode; } + /** * Function GetClass diff --git a/pcbnew/class_pad.cpp b/pcbnew/class_pad.cpp index aecd16cfe0..5b0ad76827 100644 --- a/pcbnew/class_pad.cpp +++ b/pcbnew/class_pad.cpp @@ -31,7 +31,7 @@ D_PAD::D_PAD( MODULE* parent ) : { m_NumPadName = 0; m_Masque_Layer = CUIVRE_LAYER; - m_NetCode = 0; /* Numero de net pour comparaisons rapides */ + SetNet( 0 ); /* Numero de net pour comparaisons rapides */ m_DrillShape = CIRCLE; // Drill shape = circle m_Size.x = m_Size.y = 500; @@ -169,7 +169,7 @@ void D_PAD::Copy( D_PAD* source ) m_Masque_Layer = source->m_Masque_Layer; memcpy( m_Padname, source->m_Padname, sizeof(m_Padname) ); /* nom de la pastille */ - m_NetCode = source->m_NetCode; /* Numero de net pour comparaisons rapides */ + SetNet( source->GetNet() ); /* Numero de net pour comparaisons rapides */ m_Drill = source->m_Drill; // Diametre de percage m_DrillShape = source->m_DrillShape; m_Offset = source->m_Offset; // Offset de la forme @@ -737,7 +737,10 @@ int D_PAD::ReadDescr( FILE* File, int* LineNum ) break; case 'N': /* Lecture du netname */ - nn = sscanf( PtLine, "%d", &m_NetCode ); + int netcode; + nn = sscanf( PtLine, "%d", &netcode ); + SetNet( netcode ); + /* Lecture du netname */ ReadDelimitedText( BufLine, PtLine, sizeof(BufLine) ); m_Netname = CONV_FROM_UTF8( StrPurge( BufLine ) ); @@ -834,7 +837,7 @@ int D_PAD::WriteDescr( FILE* File ) fprintf( File, "At %s N %8.8X\n", texttype, m_Masque_Layer ); NbLigne++; - fprintf( File, "Ne %d \"%s\"\n", m_NetCode, CONV_TO_UTF8( m_Netname ) ); + fprintf( File, "Ne %d \"%s\"\n", GetNet(), CONV_TO_UTF8( m_Netname ) ); NbLigne++; fprintf( File, "Po %d %d\n", m_Pos0.x, m_Pos0.y ); @@ -1095,7 +1098,7 @@ void D_PAD::Show( int nestLevel, std::ostream& os ) NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() << " num=\"" << padname << '"' << " net=\"" << m_Netname.mb_str() << '"' << - " netcode=\"" << m_NetCode << '"' << + " netcode=\"" << GetNet() << '"' << " layerMask=\"" << layerMask << '"' << m_Pos << "/>\n"; // NestedSpace( nestLevel+1, os ) << m_Text.mb_str() << '\n'; diff --git a/pcbnew/class_pad.h b/pcbnew/class_pad.h index 685eaa638a..1976ef2647 100644 --- a/pcbnew/class_pad.h +++ b/pcbnew/class_pad.h @@ -21,6 +21,9 @@ class Pcb3D_GLCanvas; /* Definition type Structure d'un pad */ class D_PAD : public BOARD_ITEM { +private: + int m_NetCode; // Net number for fast comparisons + public: union { @@ -54,7 +57,6 @@ public: int m_Attribut; // NORMAL, SMD, CONN int m_Orient; // in 1/10 degrees - int m_NetCode; // Net number for fast comparisons int m_logical_connexion; // variable used in rastnest computations // handle block number in ratsnet connection @@ -88,6 +90,15 @@ public: void ComputeRayon(); // compute m_Rayon, rayon du cercle exinscrit const wxPoint ReturnShapePos(); // retourne la position + + /** + * Function GetNet + * @return int - the netcode + */ + int GetNet() const { return m_NetCode; } + void SetNet( int aNetCode ) { m_NetCode = aNetCode; } + + /** * Function Display_Infos * has knowledge about the frame and how and where to put status information diff --git a/pcbnew/class_track.cpp b/pcbnew/class_track.cpp index 7aa1868d11..cc0352c937 100644 --- a/pcbnew/class_track.cpp +++ b/pcbnew/class_track.cpp @@ -28,8 +28,8 @@ TRACK::TRACK( BOARD_ITEM* StructFather, KICAD_T idtype ) : m_Width = 0; m_Shape = S_SEGMENT; start = end = NULL; - m_NetCode = 0; - m_Sous_Netcode = 0; + SetNet( 0 ); + SetSubNet( 0 ); m_Drill = -1; m_Param = 0; } @@ -73,7 +73,7 @@ TRACK::TRACK( const TRACK& Source ) : BOARD_ITEM( Source ) { m_Shape = Source.m_Shape; - m_NetCode = Source.m_NetCode; + SetNet( Source.GetNet() ); m_Flags = Source.m_Flags; m_TimeStamp = Source.m_TimeStamp; SetStatus( Source.ReturnStatus() ); @@ -81,7 +81,7 @@ TRACK::TRACK( const TRACK& Source ) : m_End = Source.m_End; m_Width = Source.m_Width; m_Drill = Source.m_Drill; - m_Sous_Netcode = Source.m_Sous_Netcode; + SetSubNet( Source.GetSubNet() ); m_Param = Source.m_Param; } @@ -121,6 +121,21 @@ bool TRACK::IsNull() } +/*************************************************************/ +double TRACK::GetLength() const +/*************************************************************/ +{ + int dx = m_Start.x - m_End.x; + int dy = m_Start.y - m_End.y; + + double dist = ( (double) dx * dx ) + ( (double) dy * dy ); + + dist = sqrt( dist ); + + return dist; +} + + /*************************************************************/ int TRACK::IsPointOnEnds( const wxPoint& point, int min_dist ) /*************************************************************/ @@ -133,14 +148,14 @@ int TRACK::IsPointOnEnds( const wxPoint& point, int min_dist ) * if min_dist < 0: min_dist = track_width/2 */ { - int dx, dy; int result = 0; if( min_dist < 0 ) min_dist = m_Width / 2; - dx = m_Start.x - point.x; - dy = m_Start.y - point.y; + int dx = m_Start.x - point.x; + int dy = m_Start.y - point.y; + if( min_dist == 0 ) { if( (dx == 0) && (dy == 0 ) ) @@ -410,12 +425,12 @@ TRACK* TRACK::GetBestInsertPoint( BOARD* Pcb ) /* Traitement du debut de liste */ if( track == NULL ) return NULL; /* pas de piste ! */ - if( m_NetCode < track->m_NetCode ) /* insertion en tete de liste */ + if( GetNet() < track->GetNet() ) /* insertion en tete de liste */ return NULL; while( (NextTrack = (TRACK*) track->Pnext) != NULL ) { - if( NextTrack->m_NetCode > this->m_NetCode ) + if( NextTrack->GetNet() > this->GetNet() ) break; track = NextTrack; } @@ -436,16 +451,19 @@ TRACK* TRACK::GetStartNetCode( int NetCode ) int ii = 0; if( NetCode == -1 ) - NetCode = m_NetCode; + NetCode = GetNet(); while( Track != NULL ) { - if( Track->m_NetCode > NetCode ) + if( Track->GetNet() > NetCode ) break; - if( Track->m_NetCode == NetCode ) + + if( Track->GetNet() == NetCode ) { - ii++; break; + ii++; + break; } + Track = (TRACK*) Track->Pnext; } @@ -468,17 +486,20 @@ TRACK* TRACK::GetEndNetCode( int NetCode ) return NULL; if( NetCode == -1 ) - NetCode = m_NetCode; + NetCode = GetNet(); while( Track != NULL ) { NextS = (TRACK*) Track->Pnext; - if( Track->m_NetCode == NetCode ) + if( Track->GetNet() == NetCode ) ii++; + if( NextS == NULL ) break; - if( NextS->m_NetCode > NetCode ) + + if( NextS->GetNet() > NetCode ) break; + Track = NextS; } @@ -539,7 +560,7 @@ bool TRACK::WriteTrackDescr( FILE* File ) m_Start.x, m_Start.y, m_End.x, m_End.y, m_Width, m_Drill ); fprintf( File, "De %d %d %d %lX %X\n", - m_Layer, type, m_NetCode, + m_Layer, type, GetNet(), m_TimeStamp, ReturnStatus() ); return TRUE; @@ -724,7 +745,7 @@ void TRACK::Display_Infos( WinEDA_DrawFrame* frame ) || Type() == TYPEZONE || Type() == TYPEVIA ) { - EQUIPOT* equipot = ((WinEDA_PcbFrame*)frame)->m_Pcb->FindNet( m_NetCode ); + EQUIPOT* equipot = ((WinEDA_PcbFrame*)frame)->m_Pcb->FindNet( GetNet() ); if( equipot ) msg = equipot->m_Netname; @@ -734,7 +755,7 @@ void TRACK::Display_Infos( WinEDA_DrawFrame* frame ) Affiche_1_Parametre( frame, text_pos, _( "NetName" ), msg, RED ); /* Affiche net code :*/ - msg.Printf( wxT( "%d .%d" ), m_NetCode, m_Sous_Netcode ); + msg.Printf( wxT( "%d .%d" ), GetNet(), GetSubNet() ); text_pos += 18; Affiche_1_Parametre( frame, text_pos, _( "NetCode" ), msg, RED ); } @@ -861,7 +882,7 @@ void TRACK::Show( int nestLevel, std::ostream& os ) " layer=\"" << m_Layer << '"' << " width=\"" << m_Width << '"' << // " drill=\"" << m_Drill << '"' << - " netcode=\"" << m_NetCode << "\">" << + " netcode=\"" << GetNet() << "\">" << "" << ""; @@ -900,7 +921,7 @@ void SEGVIA::Show( int nestLevel, std::ostream& os ) << ReturnPcbLayerName( botLayer ).Trim().mb_str() << '"' << " width=\"" << m_Width << '"' << " drill=\"" << m_Drill << '"' << - " netcode=\"" << m_NetCode << "\">" << + " netcode=\"" << GetNet() << "\">" << ""; os << "\n"; diff --git a/pcbnew/class_track.h b/pcbnew/class_track.h index 69633c72fc..e0b19a6661 100644 --- a/pcbnew/class_track.h +++ b/pcbnew/class_track.h @@ -32,14 +32,14 @@ public: BOARD_ITEM* start; // pointers on a connected item (pad or track) BOARD_ITEM* end; - int m_NetCode; // Net number - int m_Sous_Netcode; /* In rastnest routines : for the current net, - * block number (number common to the current connected items found) */ - // chain = 0 indique une connexion non encore traitee int m_Param; // Auxiliary variable ( used in some computations ) protected: + int m_NetCode; // Net number + int m_Sous_Netcode; /* In rastnest routines : for the current net, + * block number (number common to the current connected items found) */ + TRACK( const TRACK& track ); // protected so Copy() is used instead. public: @@ -90,6 +90,30 @@ public: /* Recherche de la fin du net */ TRACK* GetEndNetCode( int NetCode ); + /** + * Function GetNet + * @return int - the net code. + */ + int GetNet() const { return m_NetCode; } + void SetNet( int aNetCode ) { m_NetCode = aNetCode; } + + + /** + * Function GetSubNet + * @return int - the sub net code. + */ + int GetSubNet() const { return m_Sous_Netcode; } + void SetSubNet( int aSubNetCode ) { m_Sous_Netcode = aSubNetCode; } + + + /** + * Function GetLength + * returns the length of the track using the hypotenuse calculation. + * @return double - the length of the track + */ + double GetLength() const; + + /* Display on screen: */ void Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode ); diff --git a/pcbnew/clean.cpp b/pcbnew/clean.cpp index 3b70357c0c..1ea1e8dc20 100644 --- a/pcbnew/clean.cpp +++ b/pcbnew/clean.cpp @@ -207,9 +207,9 @@ static void suppression_piste_non_connectee( WinEDA_PcbFrame* frame, wxDC* DC ) if( frame->DrawPanel->m_AbortRequest ) break; - if( PtSegm->m_NetCode != oldnetcode ) + if( PtSegm->GetNet() != oldnetcode ) { - PtStartNetCode = PtSegm; oldnetcode = PtSegm->m_NetCode; + PtStartNetCode = PtSegm; oldnetcode = PtSegm->GetNet(); } flag_erase = 0; type_end = 0; @@ -381,7 +381,7 @@ static int clean_segments( WinEDA_PcbFrame* frame, wxDC* DC ) continue; if( PtSegm->GetLayer() != pt_aux->GetLayer() ) continue; - if( PtSegm->m_NetCode != pt_aux->m_NetCode ) + if( PtSegm->GetNet() != pt_aux->GetNet() ) break; if( (PtSegm->m_Start.x == pt_aux->m_Start.x ) @@ -676,14 +676,14 @@ int Netliste_Controle_piste( WinEDA_PcbFrame* frame, wxDC* DC, int affiche ) net_code_s = -1; if( (PtSegm->start != NULL) && ( ( (EDA_BaseStruct*) (PtSegm->start) )->Type() == TYPEPAD ) ) - net_code_s = ( (D_PAD*) (PtSegm->start) )->m_NetCode; + net_code_s = ( (D_PAD*) (PtSegm->start) )->GetNet(); else { pt_aux = Locate_Piste_Connectee( PtSegm, frame->m_Pcb->m_Track, NULL, START ); if( pt_aux ) - net_code_s = pt_aux->m_NetCode; + net_code_s = pt_aux->GetNet(); } if( net_code_s < 0 ) continue;/* Extremite en l'air */ @@ -692,14 +692,14 @@ int Netliste_Controle_piste( WinEDA_PcbFrame* frame, wxDC* DC, int affiche ) net_code_e = -1; if( (PtSegm->end != NULL) && ( ( (EDA_BaseStruct*) (PtSegm->end) )->Type() == TYPEPAD ) ) - net_code_e = ( (D_PAD*) (PtSegm->end) )->m_NetCode; + net_code_e = ( (D_PAD*) (PtSegm->end) )->GetNet(); else { pt_aux = Locate_Piste_Connectee( PtSegm, frame->m_Pcb->m_Track, NULL, END ); if( pt_aux ) - net_code_e = pt_aux->m_NetCode; + net_code_e = pt_aux->GetNet(); } if( net_code_e < 0 ) diff --git a/pcbnew/connect.cpp b/pcbnew/connect.cpp index 01c3b9cb18..e7acd054ba 100644 --- a/pcbnew/connect.cpp +++ b/pcbnew/connect.cpp @@ -51,7 +51,7 @@ static int change_equipot( TRACK* pt_start_conn, TRACK* pt_end_conn, pt_conn = pt_start_conn; for( ; pt_conn != NULL; pt_conn = (TRACK*) pt_conn->Pnext ) { - if( pt_conn->m_Sous_Netcode != old_val ) + if( pt_conn->GetSubNet() != old_val ) { if( pt_conn == pt_end_conn ) break; @@ -59,20 +59,20 @@ static int change_equipot( TRACK* pt_start_conn, TRACK* pt_end_conn, } nb_change++; - pt_conn->m_Sous_Netcode = new_val; + pt_conn->SetSubNet( new_val ); if( pt_conn->start && ( pt_conn->start->Type() == TYPEPAD) ) { pt_pad = (D_PAD*) (pt_conn->start); if( pt_pad->m_physical_connexion == old_val ) - pt_pad->m_physical_connexion = pt_conn->m_Sous_Netcode; + pt_pad->m_physical_connexion = pt_conn->GetSubNet(); } if( pt_conn->end && (pt_conn->end->Type() == TYPEPAD) ) { pt_pad = (D_PAD*) (pt_conn->end); if( pt_pad->m_physical_connexion == old_val ) - pt_pad->m_physical_connexion = pt_conn->m_Sous_Netcode; + pt_pad->m_physical_connexion = pt_conn->GetSubNet(); } if( pt_conn == pt_end_conn ) break; @@ -105,7 +105,7 @@ static void propage_equipot( TRACK* pt_start_conn, TRACK* pt_end_conn ) pt_conn = pt_start_conn; for( ; pt_conn != NULL; pt_conn = (TRACK*) pt_conn->Pnext ) { - pt_conn->m_Sous_Netcode = 0; + pt_conn->SetSubNet( 0 ); PtStruct = pt_conn->start; if( PtStruct && (PtStruct->Type() == TYPEPAD) ) ( (D_PAD*) PtStruct )->m_physical_connexion = 0; @@ -119,7 +119,7 @@ static void propage_equipot( TRACK* pt_start_conn, TRACK* pt_end_conn ) } sous_net_code = 1; - pt_start_conn->m_Sous_Netcode = sous_net_code; + pt_start_conn->SetSubNet( sous_net_code ); /* debut du calcul de propagation */ pt_conn = pt_start_conn; @@ -127,31 +127,32 @@ static void propage_equipot( TRACK* pt_start_conn, TRACK* pt_end_conn ) { /* Traitement des connexions a pads */ PtStruct = pt_conn->start; - if( PtStruct && (PtStruct->Type() == TYPEPAD) ) + /* la connexion debute sur 1 pad */ + if( PtStruct && (PtStruct->Type() == TYPEPAD) ) { pt_pad = (D_PAD*) PtStruct; - if( pt_conn->m_Sous_Netcode ) /* la connexion fait deja partie d'une chaine */ + if( pt_conn->GetSubNet() ) /* la connexion fait deja partie d'une chaine */ { if( pt_pad->m_physical_connexion > 0 ) /* le pad fait aussi partie d'une chaine */ { change_equipot( pt_start_conn, pt_end_conn, - pt_pad->m_physical_connexion, pt_conn->m_Sous_Netcode ); + pt_pad->m_physical_connexion, pt_conn->GetSubNet() ); } else - pt_pad->m_physical_connexion = pt_conn->m_Sous_Netcode; + pt_pad->m_physical_connexion = pt_conn->GetSubNet(); } else /* la connexion ne fait pas partie encore d'une chaine */ { if( pt_pad->m_physical_connexion > 0 ) { - pt_conn->m_Sous_Netcode = pt_pad->m_physical_connexion; + pt_conn->SetSubNet( pt_pad->m_physical_connexion ); } else { sous_net_code++; - pt_conn->m_Sous_Netcode = sous_net_code; - pt_pad->m_physical_connexion = pt_conn->m_Sous_Netcode; + pt_conn->SetSubNet( sous_net_code ); + pt_pad->m_physical_connexion = pt_conn->GetSubNet(); } } } @@ -161,26 +162,27 @@ static void propage_equipot( TRACK* pt_start_conn, TRACK* pt_end_conn ) /* la connexion finit sur 1 pad */ { pt_pad = (D_PAD*) PtStruct; - if( pt_conn->m_Sous_Netcode ) + if( pt_conn->GetSubNet() ) { if( pt_pad->m_physical_connexion > 0 ) { change_equipot( pt_start_conn, pt_end_conn, - pt_pad->m_physical_connexion, pt_conn->m_Sous_Netcode ); + pt_pad->m_physical_connexion, pt_conn->GetSubNet() ); } else - pt_pad->m_physical_connexion = pt_conn->m_Sous_Netcode; + pt_pad->m_physical_connexion = pt_conn->GetSubNet(); } else { if( pt_pad->m_physical_connexion > 0 ) { - pt_conn->m_Sous_Netcode = pt_pad->m_physical_connexion; + pt_conn->SetSubNet( pt_pad->m_physical_connexion ); } else { - sous_net_code++; pt_conn->m_Sous_Netcode = sous_net_code; - pt_pad->m_physical_connexion = pt_conn->m_Sous_Netcode; + sous_net_code++; + pt_conn->SetSubNet( sous_net_code ); + pt_pad->m_physical_connexion = pt_conn->GetSubNet(); } } } @@ -193,28 +195,29 @@ static void propage_equipot( TRACK* pt_start_conn, TRACK* pt_end_conn ) /* debut sur une autre piste */ pt_autre_piste = (TRACK*) PtStruct; - if( pt_conn->m_Sous_Netcode ) /* La connexion fait deja partie d'un block */ + if( pt_conn->GetSubNet() ) /* La connexion fait deja partie d'un block */ { - if( pt_autre_piste->m_Sous_Netcode ) + if( pt_autre_piste->GetSubNet() ) { change_equipot( pt_start_conn, pt_end_conn, - pt_autre_piste->m_Sous_Netcode, pt_conn->m_Sous_Netcode ); + pt_autre_piste->GetSubNet(), pt_conn->GetSubNet() ); } else { - pt_autre_piste->m_Sous_Netcode = pt_conn->m_Sous_Netcode; + pt_autre_piste->SetSubNet( pt_conn->GetSubNet() ); } } else /* La connexion ne fait partie d'aucun block */ { - if( pt_autre_piste->m_Sous_Netcode ) + if( pt_autre_piste->GetSubNet() ) { - pt_conn->m_Sous_Netcode = pt_autre_piste->m_Sous_Netcode; + pt_conn->SetSubNet( pt_autre_piste->GetSubNet() ); } else { - sous_net_code++; pt_conn->m_Sous_Netcode = sous_net_code; - pt_autre_piste->m_Sous_Netcode = pt_conn->m_Sous_Netcode; + sous_net_code++; + pt_conn->SetSubNet( sous_net_code ); + pt_autre_piste->SetSubNet( pt_conn->GetSubNet() ); } } } @@ -225,26 +228,27 @@ static void propage_equipot( TRACK* pt_start_conn, TRACK* pt_end_conn ) /* fin connectee a une autre piste */ pt_autre_piste = (TRACK*) PtStruct; - if( pt_conn->m_Sous_Netcode ) /* La connexion fait deja partie d'un block */ + if( pt_conn->GetSubNet() ) /* La connexion fait deja partie d'un block */ { - if( pt_autre_piste->m_Sous_Netcode ) + if( pt_autre_piste->GetSubNet() ) { change_equipot( pt_start_conn, pt_end_conn, - pt_autre_piste->m_Sous_Netcode, pt_conn->m_Sous_Netcode ); + pt_autre_piste->GetSubNet(), pt_conn->GetSubNet() ); } else - pt_autre_piste->m_Sous_Netcode = pt_conn->m_Sous_Netcode; + pt_autre_piste->SetSubNet( pt_conn->GetSubNet() ); } else /* La connexion ne fait partie d'aucun block */ { - if( pt_autre_piste->m_Sous_Netcode ) + if( pt_autre_piste->GetSubNet() ) { - pt_conn->m_Sous_Netcode = pt_autre_piste->m_Sous_Netcode; + pt_conn->SetSubNet( pt_autre_piste->GetSubNet() ); } else { - sous_net_code++; pt_conn->m_Sous_Netcode = sous_net_code; - pt_autre_piste->m_Sous_Netcode = pt_conn->m_Sous_Netcode; + sous_net_code++; + pt_conn->SetSubNet( sous_net_code ); + pt_autre_piste->SetSubNet( pt_conn->GetSubNet() ); } } } @@ -287,7 +291,7 @@ void WinEDA_BasePcbFrame::test_connexions( wxDC* DC ) pt_start_conn = m_Pcb->m_Track; while( pt_start_conn != NULL ) { - current_net_code = pt_start_conn->m_NetCode; + current_net_code = pt_start_conn->GetNet(); pt_end_conn = pt_start_conn->GetEndNetCode( current_net_code ); /* Calcul des connexions type segment du net courant */ @@ -323,7 +327,7 @@ void WinEDA_BasePcbFrame::Recalcule_all_net_connexion( wxDC* DC ) while( EndConn->Pnext ) EndConn = (TRACK*) EndConn->Pnext; - net_code_max = EndConn->m_NetCode; + net_code_max = EndConn->GetNet(); for( net_code = 0; net_code <= net_code_max; net_code++ ) { @@ -354,11 +358,13 @@ void WinEDA_BasePcbFrame::test_1_net_connexion( wxDC* DC, int net_code ) pt_pad = (LISTE_PAD*) m_Pcb->m_Pads; for( ii = 0; ii < m_Pcb->m_NbPads; ii++, pt_pad++ ) { - int pad_net_code = (*pt_pad)->m_NetCode; + int pad_net_code = (*pt_pad)->GetNet(); if( pad_net_code < net_code ) continue; + if( pad_net_code > net_code ) break; + (*pt_pad)->m_physical_connexion = 0; } @@ -412,10 +418,11 @@ static void calcule_connexite_1_net( TRACK* pt_start_conn, TRACK* pt_end_conn ) /* Raz des pointeurs sur pistes */ for( Track = pt_start_conn; Track != NULL; Track = (TRACK*) Track->Pnext ) { - Track->m_Sous_Netcode = 0; + Track->SetSubNet( 0 ); if( Track->GetState( BEGIN_ONPAD ) == 0 ) Track->start = NULL; + if( Track->GetState( END_ONPAD ) == 0 ) Track->end = NULL; @@ -433,11 +440,13 @@ static void calcule_connexite_1_net( TRACK* pt_start_conn, TRACK* pt_end_conn ) for( pt_segm = pt_start_conn; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext ) { int curlayermask = pt_segm->ReturnMaskLayer(); + if( !pt_segm->start && (pt_segm->m_Start == Track->m_Start) && ( layermask & curlayermask ) ) { pt_segm->start = Track; } + if( !pt_segm->end && (pt_segm->m_End == Track->m_Start) && (layermask & curlayermask) ) { @@ -513,11 +522,15 @@ static D_PAD* SuperFast_Locate_Pad_Connecte( BOARD* pcb, LISTE_PAD* pt_liste, { pad = *ptr_pad; ii = nb_pad; - nb_pad >>= 1; if( (ii & 1) && ( ii > 1 ) ) + nb_pad >>= 1; + + if( (ii & 1) && ( ii > 1 ) ) nb_pad++; + if( pad->m_Pos.x < px ) /* on doit chercher plus loin */ { - ptr_pad += nb_pad; if( ptr_pad > lim ) + ptr_pad += nb_pad; + if( ptr_pad > lim ) ptr_pad = lim; continue; } @@ -547,11 +560,14 @@ static D_PAD* SuperFast_Locate_Pad_Connecte( BOARD* pcb, LISTE_PAD* pt_liste, { if( ptr_pad > lim ) return NULL; /* hors zone */ + pad = *ptr_pad; if( pad->m_Pos.x != px ) return NULL; /* hors zone */ + if( pad->m_Pos.y != py ) continue; + /* Pad peut-etre trouve ici: il doit etre sur la bonne couche */ if( pad->m_Masque_Layer & masque_layer ) return pad; @@ -563,7 +579,7 @@ static D_PAD* SuperFast_Locate_Pad_Connecte( BOARD* pcb, LISTE_PAD* pt_liste, } -static int SortPadsByXCoord( void* pt_ref, void* pt_comp ) +static int SortPadsByXCoord( const void* pt_ref, const void* pt_comp ) /* used to Sort a pad list by x coordinate value */ @@ -581,14 +597,13 @@ LISTE_PAD* CreateSortedPadListByXCoord( BOARD* pcb ) /* Create a sorted list of pointers to pads. * This list is sorted by X ccordinate value. - * The list must be freed bu user + * The list must be freed by user */ { - LISTE_PAD* pad_list = (LISTE_PAD*) MyMalloc( pcb->m_NbPads * sizeof( D_PAD *) ); + LISTE_PAD* pad_list = (LISTE_PAD*) MyMalloc( pcb->m_NbPads * sizeof(D_PAD *) ); memcpy( pad_list, pcb->m_Pads, pcb->m_NbPads * sizeof( D_PAD *) ); - qsort( pad_list, pcb->m_NbPads, sizeof( D_PAD *), - ( int( * ) ( const void*, const void* ) )SortPadsByXCoord ); + qsort( pad_list, pcb->m_NbPads, sizeof( D_PAD *), SortPadsByXCoord ); return pad_list; } @@ -602,13 +617,15 @@ void WinEDA_BasePcbFrame::reattribution_reference_piste( int affiche ) int a_color; char new_passe_request = 1, flag; LISTE_PAD* pt_mem; - BOARD_ITEM* PtStruct; + BOARD_ITEM* PtStruct; int masque_layer; wxString msg; if( m_Pcb->m_NbPads == 0 ) return; + a_color = CYAN; + if( affiche ) Affiche_1_Parametre( this, POS_AFF_CHREF, wxT( "DataBase" ), wxT( "Netcodes" ), a_color ); @@ -630,7 +647,7 @@ void WinEDA_BasePcbFrame::reattribution_reference_piste( int affiche ) for( ; pt_piste != NULL; pt_piste = (TRACK*) pt_piste->Pnext ) { pt_piste->SetState( BUSY | EDIT | BEGIN_ONPAD | END_ONPAD, OFF ); - pt_piste->m_NetCode = 0; + pt_piste->SetNet( 0 ); } pt_piste = m_Pcb->m_Track; @@ -648,7 +665,7 @@ void WinEDA_BasePcbFrame::reattribution_reference_piste( int affiche ) if( pt_piste->start != NULL ) { pt_piste->SetState( BEGIN_ONPAD, ON ); - pt_piste->m_NetCode = ( (D_PAD*) (pt_piste->start) )->m_NetCode; + pt_piste->SetNet( ( (D_PAD*) (pt_piste->start) )->GetNet() ); } pt_piste->end = SuperFast_Locate_Pad_Connecte( m_Pcb, @@ -660,7 +677,7 @@ void WinEDA_BasePcbFrame::reattribution_reference_piste( int affiche ) if( pt_piste->end != NULL ) { pt_piste->SetState( END_ONPAD, ON ); - pt_piste->m_NetCode = ( (D_PAD*) (pt_piste->end) )->m_NetCode; + pt_piste->SetNet( ( (D_PAD*) (pt_piste->end) )->GetNet() ); } } @@ -710,15 +727,17 @@ void WinEDA_BasePcbFrame::reattribution_reference_piste( int affiche ) { if( via->Type() != TYPEVIA ) continue; - if( via->m_NetCode > 0 ) + + if( via->GetNet() > 0 ) continue; // Netcode already known + // Lock for a connection to a track with a known netcode pt_next = m_Pcb->m_Track; while( ( pt_next = Locate_Piste_Connectee( via, pt_next, NULL, START ) ) != NULL ) { - if( pt_next->m_NetCode ) + if( pt_next->GetNet() ) { - via->m_NetCode = pt_next->m_NetCode; + via->SetNet( pt_next->GetNet() ); break; } pt_next->SetState( BUSY, ON ); @@ -737,21 +756,22 @@ void WinEDA_BasePcbFrame::reattribution_reference_piste( int affiche ) /* Traitement du point de debut */ PtStruct = (BOARD_ITEM*) pt_piste->start; if( PtStruct && (PtStruct->Type() != TYPEPAD) ) - { // Begin on an other track segment + { + // Begin on an other track segment pt_next = (TRACK*) PtStruct; - if( pt_piste->m_NetCode ) + if( pt_piste->GetNet() ) { - if( pt_next->m_NetCode == 0 ) + if( pt_next->GetNet() == 0 ) { new_passe_request = 1; - pt_next->m_NetCode = pt_piste->m_NetCode; + pt_next->SetNet( pt_piste->GetNet() ); } } else { - if( pt_next->m_NetCode != 0 ) + if( pt_next->GetNet() != 0 ) { - pt_piste->m_NetCode = pt_next->m_NetCode; + pt_piste->SetNet( pt_next->GetNet() ); new_passe_request = 1; } } @@ -760,21 +780,22 @@ void WinEDA_BasePcbFrame::reattribution_reference_piste( int affiche ) /* Localisation du point de fin */ PtStruct = pt_piste->end; if( PtStruct &&(PtStruct->Type() != TYPEPAD) ) - { // End sur piste + { + // End sur piste pt_next = (TRACK*) PtStruct; - if( pt_piste->m_NetCode ) + if( pt_piste->GetNet() ) { - if( pt_next->m_NetCode == 0 ) + if( pt_next->GetNet() == 0 ) { new_passe_request = 1; - pt_next->m_NetCode = pt_piste->m_NetCode; + pt_next->SetNet( pt_piste->GetNet() ); } } else { - if( pt_next->m_NetCode != 0 ) + if( pt_next->GetNet() != 0 ) { - pt_piste->m_NetCode = pt_next->m_NetCode; + pt_piste->SetNet( pt_next->GetNet() ); new_passe_request = 1; } } @@ -800,7 +821,7 @@ int tri_par_netcode( TRACK** pt_ref, TRACK** pt_compare ) { int ii; - ii = (*pt_ref)->m_NetCode - (*pt_compare)->m_NetCode; + ii = (*pt_ref)->GetNet() - (*pt_compare)->GetNet(); return ii; } diff --git a/pcbnew/controle.cpp b/pcbnew/controle.cpp index 8ed39afd7b..925c833f45 100644 --- a/pcbnew/controle.cpp +++ b/pcbnew/controle.cpp @@ -268,6 +268,11 @@ void WinEDA_BasePcbFrame::GeneralControle( wxDC* DC, wxPoint Mouse ) if( delta.y <= 0 ) delta.y = 1; +#if 0 && defined(DEBUG) + printf( "delta.x=%d delta.y=%d grid.x=%d, grid.y=%d, zoom=%d\n", + delta.x, delta.y, GetScreen()->GetGrid().x, GetScreen()->GetGrid().y, zoom ); +#endif + switch( g_KeyPressed ) { case EDA_PANNING_UP_KEY: diff --git a/pcbnew/cross-probing.cpp b/pcbnew/cross-probing.cpp index fe56a5c08f..85fcdbf1c5 100644 --- a/pcbnew/cross-probing.cpp +++ b/pcbnew/cross-probing.cpp @@ -85,7 +85,7 @@ void RemoteCommand( const char* cmdline ) pad = ReturnPad( module, pinName ); if( pad ) - netcode = pad->m_NetCode; + netcode = pad->GetNet(); if( netcode > 0 ) /* hightlighted the net selected net*/ { diff --git a/pcbnew/deltrack.cpp b/pcbnew/deltrack.cpp index 1c38113eea..ee0e81c599 100644 --- a/pcbnew/deltrack.cpp +++ b/pcbnew/deltrack.cpp @@ -110,7 +110,7 @@ TRACK* WinEDA_PcbFrame::Delete_Segment( wxDC* DC, TRACK* Track ) } // Fin traitement si trace en cours - current_net_code = Track->m_NetCode; + current_net_code = Track->GetNet(); Track->Draw( DrawPanel, DC, GR_XOR ); SaveItemEfface( Track, 1 ); @@ -128,7 +128,7 @@ void WinEDA_PcbFrame::Delete_Track( wxDC* DC, TRACK* Track ) { if( Track != NULL ) { - int current_net_code = Track->m_NetCode; + int current_net_code = Track->GetNet(); Supprime_Une_Piste( DC, Track ); GetScreen()->SetModify(); test_1_net_connexion( DC, current_net_code ); @@ -152,7 +152,7 @@ void WinEDA_PcbFrame::Delete_net( wxDC* DC, TRACK* Track ) if( IsOK( this, _( "Delete NET ?" ) ) ) { - net_code_delete = pt_segm->m_NetCode; + net_code_delete = pt_segm->GetNet(); /* Recherche du debut de la zone des pistes du net_code courant */ pt_start = m_Pcb->m_Track->GetStartNetCode( net_code_delete ); @@ -160,7 +160,7 @@ void WinEDA_PcbFrame::Delete_net( wxDC* DC, TRACK* Track ) pt_segm = pt_start; for( ii = 0; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext ) { - if( pt_segm->m_NetCode != net_code_delete ) + if( pt_segm->GetNet() != net_code_delete ) break; ii++; } diff --git a/pcbnew/dragsegm.cpp b/pcbnew/dragsegm.cpp index 13839e0459..196132d4ee 100644 --- a/pcbnew/dragsegm.cpp +++ b/pcbnew/dragsegm.cpp @@ -109,7 +109,7 @@ void Build_1_Pad_SegmentsToDrag(WinEDA_DrawPanel * panel, wxDC * DC, D_PAD * PtP */ { TRACK * Track; -int net_code = PtPad->m_NetCode; +int net_code = PtPad->GetNet(); int MasqueLayer; wxPoint pos; BOARD * pcb = ((WinEDA_BasePcbFrame*)(panel->m_Parent))->m_Pcb; @@ -120,7 +120,7 @@ BOARD * pcb = ((WinEDA_BasePcbFrame*)(panel->m_Parent))->m_Pcb; MasqueLayer = PtPad->m_Masque_Layer; for( ; Track != NULL; Track = (TRACK*)Track->Pnext ) { - if( Track->m_NetCode != net_code ) break; /* hors zone */ + if( Track->GetNet() != net_code ) break; /* hors zone */ if( (MasqueLayer & Track->ReturnMaskLayer()) == 0 ) continue; /* couches differentes */ if( pos == Track->m_Start ) { @@ -172,7 +172,7 @@ BOARD * pcb = ((WinEDA_BasePcbFrame*)(panel->m_Parent))->m_Pcb; for( ; Track != NULL; Track = (TRACK*)Track->Pnext ) { - if( Track->m_NetCode != net_code ) break; /* hors zone */ + if( Track->GetNet() != net_code ) break; /* hors zone */ if( (MasqueLayer & Track->ReturnMaskLayer()) == 0 ) continue; /* couches differentes */ if ( Track->m_Flags & IS_DRAGGED) continue; // already in list if( Track->m_Start == point ) diff --git a/pcbnew/drc.cpp b/pcbnew/drc.cpp index fcbcd76781..47ffea5638 100644 --- a/pcbnew/drc.cpp +++ b/pcbnew/drc.cpp @@ -87,27 +87,35 @@ void WinEDA_DrcFrame::ListUnconnectedPads( wxCommandEvent& event ) { if( (Ratsnest->status & CH_ACTIF) == 0 ) continue; + m_UnconnectedCount++; if( m_UnconnectedCount == 1 ) m_logWindow->AppendText( _( "Unconnected found:\n" ) ); + D_PAD* pad = Ratsnest->pad_start; pad->Draw( panel, m_DC, wxPoint( 0, 0 ), draw_mode ); + wxString pad_name = pad->ReturnStringPadName(); wxString module_name = ( (MODULE*) (pad->m_Parent) )->m_Reference->m_Text; + msg.Printf( _( "%d > Pad %s (%s) @ %.4f,%.4f and " ), m_UnconnectedCount, - pad_name.GetData(), module_name.GetData( - ), pad->m_Pos.x * convert, pad->m_Pos.y * convert ); + pad_name.GetData(), module_name.GetData(), + pad->m_Pos.x * convert, pad->m_Pos.y * convert ); + m_logWindow->AppendText( msg ); if( s_RptFile ) fprintf( s_RptFile, "%s", CONV_TO_UTF8( msg ) ); pad = Ratsnest->pad_end; pad->Draw( panel, m_DC, wxPoint( 0, 0 ), draw_mode ); + pad_name = pad->ReturnStringPadName(); module_name = ( (MODULE*) (pad->m_Parent) )->m_Reference->m_Text; + msg.Printf( _( "Pad %s (%s) @ %.4f,%.4f\n" ), - pad_name.GetData(), module_name.GetData( - ), pad->m_Pos.x * convert, pad->m_Pos.y * convert ); + pad_name.GetData(), module_name.GetData(), + pad->m_Pos.x * convert, pad->m_Pos.y * convert ); + m_logWindow->AppendText( msg ); if( s_RptFile ) fprintf( s_RptFile, "%s", CONV_TO_UTF8( msg ) ); @@ -117,6 +125,7 @@ void WinEDA_DrcFrame::ListUnconnectedPads( wxCommandEvent& event ) msg.Printf( _( "Active routes: %d\n" ), m_UnconnectedCount ); else msg = _( "OK! (No active routes)\n" ); + m_logWindow->AppendText( msg ); if( s_RptFile ) fprintf( s_RptFile, "%s", CONV_TO_UTF8( msg ) ); @@ -135,8 +144,10 @@ void WinEDA_DrcFrame::TestDrc( wxCommandEvent& event ) if( m_CreateRptCtrl->IsChecked() ) // Create a file rpt { s_RptFilename = m_RptFilenameCtrl->GetValue(); + if( s_RptFilename.IsEmpty() ) OnButtonBrowseRptFileClick( event ); + if( !s_RptFilename.IsEmpty() ) s_RptFile = wxFopen( s_RptFilename, wxT( "w" ) ); else @@ -153,14 +164,18 @@ void WinEDA_DrcFrame::TestDrc( wxCommandEvent& event ) s_Pad2PadTestOpt = m_Pad2PadTestCtrl->IsChecked(); s_UnconnectedTestOpt = m_UnconnectedTestCtrl->IsChecked(); + s_ZonesTestOpt = m_ZonesTestCtrl->IsChecked(); + AbortDrc = FALSE; m_logWindow->Clear(); g_DesignSettings.m_TrackClearence = ReturnValueFromTextCtrl( *m_SetClearance, m_Parent->m_InternalUnits ); + /* Test DRC errors (clearance errors, bad connections .. */ errors = m_Parent->Test_DRC( m_DC, m_Pad2PadTestCtrl->IsChecked( ), m_ZonesTestCtrl->IsChecked() ); + /* Search for active routes (unconnected pads) */ if( m_UnconnectedTestCtrl->IsChecked() ) ListUnconnectedPads( event ); @@ -267,6 +282,7 @@ int WinEDA_PcbFrame::Test_DRC( wxDC* DC, bool TestPad2Pad, bool TestZone ) LISTE_PAD* pad_list_limit = &pad_list_start[m_Pcb->m_NbPads]; int max_size = 0; LISTE_PAD* pad_list; + /* Compute the max size of the pads ( used to stop the test) */ for( pad_list = pad_list_start; pad_list < pad_list_limit; pad_list++ ) { @@ -319,6 +335,7 @@ int WinEDA_PcbFrame::Test_DRC( wxDC* DC, bool TestPad2Pad, bool TestZone ) { if( pt_segm->Pnext == NULL ) break; + if( jj == 0 ) { jj = 10; @@ -332,20 +349,20 @@ int WinEDA_PcbFrame::Test_DRC( wxDC* DC, bool TestPad2Pad, bool TestZone ) Affiche_1_Parametre( this, PRINT_TST_POS, wxT( "Test" ), Line, CYAN ); } - if( old_net != pt_segm->m_NetCode ) + if( old_net != pt_segm->GetNet() ) { wxString msg; jj = 1; - EQUIPOT* equipot = m_Pcb->FindNet( pt_segm->m_NetCode ); + EQUIPOT* equipot = m_Pcb->FindNet( pt_segm->GetNet() ); if( equipot ) msg = equipot->m_Netname + wxT( " " ); else msg = wxT( "" ); Affiche_1_Parametre( this, 0, _( "Netname" ), msg, YELLOW ); - old_net = pt_segm->m_NetCode; + old_net = pt_segm->GetNet(); } - g_HightLigth_NetCode = pt_segm->m_NetCode; + g_HightLigth_NetCode = pt_segm->GetNet(); flag_err_Drc = Drc( this, DC, pt_segm, (TRACK*) pt_segm->Pnext, 1 ); if( flag_err_Drc == BAD_DRC ) { @@ -386,6 +403,7 @@ int WinEDA_PcbFrame::Test_DRC( wxDC* DC, bool TestPad2Pad, bool TestZone ) DrcFrame->m_logWindow->AppendText( _( "Tst Zones\n" ) ); pt_segm = (TRACK*) m_Pcb->m_Zone; + for( ii = 0, old_net = -1, jj = 0; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext, ii++, jj-- ) @@ -399,18 +417,19 @@ int WinEDA_PcbFrame::Test_DRC( wxDC* DC, bool TestPad2Pad, bool TestZone ) wxYield(); if( AbortDrc ) { - AbortDrc = FALSE; break; + AbortDrc = FALSE; + break; } /* Print stats */ Line.Printf( wxT( "%d" ), ii ); Affiche_1_Parametre( this, PRINT_TST_POS, wxT( "Test" ), Line, CYAN ); } - if( old_net != pt_segm->m_NetCode ) + if( old_net != pt_segm->GetNet() ) { jj = 1; wxString msg; - EQUIPOT* equipot = m_Pcb->FindNet( pt_segm->m_NetCode ); + EQUIPOT* equipot = m_Pcb->FindNet( pt_segm->GetNet() ); if( equipot ) msg = equipot->m_Netname + wxT( " " ); @@ -418,9 +437,9 @@ int WinEDA_PcbFrame::Test_DRC( wxDC* DC, bool TestPad2Pad, bool TestZone ) msg = wxT( "" ); Affiche_1_Parametre( this, 0, _( "Netname" ), msg, YELLOW ); - old_net = pt_segm->m_NetCode; + old_net = pt_segm->GetNet(); } - g_HightLigth_NetCode = pt_segm->m_NetCode; + g_HightLigth_NetCode = pt_segm->GetNet(); /* Test drc with other zone segments, and pads */ flag_err_Drc = Drc( this, DC, pt_segm, (TRACK*) pt_segm->Pnext, 1 ); @@ -480,7 +499,6 @@ int WinEDA_PcbFrame::Test_DRC( wxDC* DC, bool TestPad2Pad, bool TestZone ) } } - AbortDrc = FALSE; DrcInProgress = FALSE; return ErrorsDRC_Count; @@ -518,7 +536,7 @@ int Drc( WinEDA_BasePcbFrame* frame, wxDC* DC, finy = dy = pt_segment->m_End.y - org_Y; MaskLayer = pt_segment->ReturnMaskLayer(); - net_code_ref = pt_segment->m_NetCode; + net_code_ref = pt_segment->GetNet(); segm_angle = 0; /* for a non horizontal or vertical segment Compute the segment angle @@ -577,10 +595,10 @@ int Drc( WinEDA_BasePcbFrame* frame, wxDC* DC, continue; } - /* The pad must be in a net (i.e pt_pad->m_NetCode != 0 ) + /* The pad must be in a net (i.e pt_pad->GetNet() != 0 ) * but no problem if the pad netcode is the current netcode (same net) */ - if( pt_pad->m_NetCode && // the pad must be connected - net_code_ref == pt_pad->m_NetCode ) // the pad net is the same as current net -> Ok + if( pt_pad->GetNet() && // the pad must be connected + net_code_ref == pt_pad->GetNet() ) // the pad net is the same as current net -> Ok continue; /* Test DRC pour les pads */ @@ -612,7 +630,7 @@ int Drc( WinEDA_BasePcbFrame* frame, wxDC* DC, for( ; pttrack != NULL; pttrack = (TRACK*) pttrack->Pnext ) { //No problem if segments have the meme net code: - if( net_code_ref == pttrack->m_NetCode ) + if( net_code_ref == pttrack->GetNet() ) continue; // No problem if segment are on different layers : @@ -706,6 +724,7 @@ int Drc( WinEDA_BasePcbFrame* frame, wxDC* DC, { if( abs( y0 ) >= w_dist ) continue; + if( x0 > xf ) EXCHG( x0, xf ); /* pour que x0 <= xf */ @@ -941,9 +960,9 @@ static bool Test_Pad_to_Pads_Drc( WinEDA_BasePcbFrame* frame, if( (pad->m_Masque_Layer & MaskLayer ) == 0 ) continue; - /* The pad must be in a net (i.e pt_pad->m_NetCode != 0 ), + /* The pad must be in a net (i.e pt_pad->GetNet() != 0 ), * But no problem if pads have the same netcode (same net)*/ - if( pad->m_NetCode && (pad_ref->m_NetCode == pad->m_NetCode) ) + if( pad->GetNet() && (pad_ref->GetNet() == pad->GetNet()) ) continue; /* No problem if pads are from the same footprint @@ -1334,7 +1353,7 @@ static void Affiche_Erreur_DRC( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb, TRACK* pt_segm; wxString msg; wxString tracktype, netname1, netname2; - EQUIPOT* equipot = Pcb->FindNet( pt_ref->m_NetCode ); + EQUIPOT* equipot = Pcb->FindNet( pt_ref->GetNet() ); if( equipot ) netname1 = equipot->m_Netname; @@ -1355,7 +1374,7 @@ static void Affiche_Erreur_DRC( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb, if( pt_item->Type() == TYPEPAD ) { D_PAD* pad = (D_PAD*) pt_item; - equipot = Pcb->FindNet( pad->m_NetCode ); + equipot = Pcb->FindNet( pad->GetNet() ); if( equipot ) netname2 = equipot->m_Netname; @@ -1375,7 +1394,7 @@ static void Affiche_Erreur_DRC( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb, else /* erreur sur segment de piste */ { pt_segm = (TRACK*) pt_item; - equipot = Pcb->FindNet( pt_segm->m_NetCode ); + equipot = Pcb->FindNet( pt_segm->GetNet() ); if( equipot ) netname2 = equipot->m_Netname; erc_pos = pt_segm->m_Start; @@ -1442,14 +1461,14 @@ static void Affiche_Erreur_DRC( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb, wxString module_name2 = ( (MODULE*) (pad2->m_Parent) )->m_Reference->m_Text; wxString netname1, netname2; - EQUIPOT* equipot = Pcb->FindNet( pad1->m_NetCode ); + EQUIPOT* equipot = Pcb->FindNet( pad1->GetNet() ); if( equipot ) netname1 = equipot->m_Netname; else netname1 = wxT( "" ); - equipot = Pcb->FindNet( pad2->m_NetCode ); + equipot = Pcb->FindNet( pad2->GetNet() ); if( equipot ) netname2 = equipot->m_Netname; else diff --git a/pcbnew/edit.cpp b/pcbnew/edit.cpp index 4006de53c6..11b8a7fc98 100644 --- a/pcbnew/edit.cpp +++ b/pcbnew/edit.cpp @@ -337,7 +337,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) case ID_POPUP_PCB_EDIT_NET: if( GetCurItem() == NULL ) break; - Edit_Net_Width( &dc, ( (TRACK*) GetCurItem() )->m_NetCode ); + Edit_Net_Width( &dc, ( (TRACK*) GetCurItem() )->GetNet() ); DrawPanel->MouseToCursorSchema(); GetScreen()->SetModify(); break; @@ -427,11 +427,11 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) break; case ID_POPUP_PCB_LOCK_ON_NET: - Attribut_net( &dc, ( (TRACK*) GetCurItem() )->m_NetCode, TRUE ); + Attribut_net( &dc, ( (TRACK*) GetCurItem() )->GetNet(), TRUE ); break; case ID_POPUP_PCB_LOCK_OFF_NET: - Attribut_net( &dc, ( (TRACK*) GetCurItem() )->m_NetCode, FALSE ); + Attribut_net( &dc, ( (TRACK*) GetCurItem() )->GetNet(), FALSE ); break; case ID_POPUP_PCB_SETFLAGS_TRACK_MNU: diff --git a/pcbnew/edit_track_width.cpp b/pcbnew/edit_track_width.cpp index 6187ddca6f..4e2e0d6e84 100644 --- a/pcbnew/edit_track_width.cpp +++ b/pcbnew/edit_track_width.cpp @@ -87,7 +87,7 @@ int nb_segm_non_modifies = 0; /* balayage des segments */ for( pt_segm = m_Pcb->m_Track; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext ) { - if ( Netcode != pt_segm->m_NetCode ) /* mauvaise piste */ + if ( Netcode != pt_segm->GetNet() ) /* mauvaise piste */ continue ; /* piste d'un net trouvee */ errdrc = Edit_TrackSegm_Width(DC, pt_segm); diff --git a/pcbnew/editpads.cpp b/pcbnew/editpads.cpp index a7c8d845d1..b2fa46a88e 100644 --- a/pcbnew/editpads.cpp +++ b/pcbnew/editpads.cpp @@ -1,6 +1,6 @@ - /******************************************************/ - /* editpads.cpp: Pad editing functions and dialog box */ - /******************************************************/ +/******************************************************/ +/* editpads.cpp: Pad editing functions and dialog box */ +/******************************************************/ #include "fctsys.h" #include "gr_basic.h" @@ -22,422 +22,496 @@ static wxString Current_PadNetName; #define NBSHAPES 4 int CodeShape[NBSHAPES] = /* forme des pads */ { - CIRCLE, OVALE, RECT, TRAPEZE + CIRCLE, OVALE, RECT, TRAPEZE }; #define NBTYPES 5 int CodeType[NBTYPES] = -{ STANDARD, SMD, CONN, P_HOLE, MECA +{ + STANDARD, SMD, CONN, P_HOLE, MECA }; static long Std_Pad_Layers[NBTYPES] = { - ALL_CU_LAYERS|SILKSCREEN_LAYER_CMP|SOLDERMASK_LAYER_CU|SOLDERMASK_LAYER_CMP, - CMP_LAYER|SOLDERPASTE_LAYER_CMP|SOLDERMASK_LAYER_CMP, - CMP_LAYER|SOLDERMASK_LAYER_CMP, - ALL_CU_LAYERS|SILKSCREEN_LAYER_CU|SILKSCREEN_LAYER_CMP| - SOLDERMASK_LAYER_CU|SOLDERMASK_LAYER_CMP, - ALL_CU_LAYERS|SILKSCREEN_LAYER_CU|SILKSCREEN_LAYER_CMP| - SOLDERMASK_LAYER_CU|SOLDERMASK_LAYER_CMP + ALL_CU_LAYERS | SILKSCREEN_LAYER_CMP | SOLDERMASK_LAYER_CU | SOLDERMASK_LAYER_CMP, + CMP_LAYER | SOLDERPASTE_LAYER_CMP | SOLDERMASK_LAYER_CMP, + CMP_LAYER | SOLDERMASK_LAYER_CMP, + ALL_CU_LAYERS | SILKSCREEN_LAYER_CU | SILKSCREEN_LAYER_CMP | + SOLDERMASK_LAYER_CU | SOLDERMASK_LAYER_CMP, + ALL_CU_LAYERS | SILKSCREEN_LAYER_CU | SILKSCREEN_LAYER_CMP | + SOLDERMASK_LAYER_CU | SOLDERMASK_LAYER_CMP }; - - /************************************/ - /* class WinEDA_PadPropertiesFrame */ - /************************************/ +/************************************/ +/* class WinEDA_PadPropertiesFrame */ +/************************************/ #include "dialog_pad_edit.cpp" /*************************************************************/ -void WinEDA_BasePcbFrame::InstallPadOptionsFrame(D_PAD * Pad, - wxDC * DC, const wxPoint & pos) +void WinEDA_BasePcbFrame::InstallPadOptionsFrame( D_PAD* Pad, + wxDC* DC, const wxPoint& pos ) /*************************************************************/ { - WinEDA_PadPropertiesFrame * frame = new WinEDA_PadPropertiesFrame(this, - Pad, DC); - frame->ShowModal(); frame->Destroy(); + WinEDA_PadPropertiesFrame* frame = new WinEDA_PadPropertiesFrame( this, + Pad, DC ); + + frame->ShowModal(); frame->Destroy(); } + /********************************************************/ void WinEDA_PadPropertiesFrame::SetOthersControls() /********************************************************/ { -int tmp; - - m_PadNumCtrl->SetValue(g_Current_PadName); - m_PadNetNameCtrl->SetValue(Current_PadNetName); + int tmp; - m_PadPositionCtrl = new WinEDA_PositionCtrl(this, _("Pad Position"), - CurrentPad ? CurrentPad->m_Pos : g_Pad_Master.m_Pos, - g_UnitMetric, m_PadPositionBoxSizer, m_Parent->m_InternalUnits); + m_PadNumCtrl->SetValue( g_Current_PadName ); + m_PadNetNameCtrl->SetValue( Current_PadNetName ); - m_PadSizeCtrl = new WinEDA_SizeCtrl(this, _("Pad Size"), - CurrentPad ? CurrentPad->m_Size : g_Pad_Master.m_Size, - g_UnitMetric, m_PadPositionBoxSizer, m_Parent->m_InternalUnits); + m_PadPositionCtrl = new WinEDA_PositionCtrl( this, _( + "Pad Position" ), + CurrentPad ? CurrentPad->m_Pos : g_Pad_Master + .m_Pos, + g_UnitMetric, m_PadPositionBoxSizer, + m_Parent->m_InternalUnits ); - m_PadDeltaSizeCtrl = new WinEDA_SizeCtrl(this, _("Delta"), - CurrentPad ? CurrentPad->m_DeltaSize : g_Pad_Master.m_DeltaSize, - g_UnitMetric, m_PadPositionBoxSizer, m_Parent->m_InternalUnits); + m_PadSizeCtrl = new WinEDA_SizeCtrl( this, _( + "Pad Size" ), + CurrentPad ? CurrentPad->m_Size : g_Pad_Master. + m_Size, + g_UnitMetric, m_PadPositionBoxSizer, + m_Parent->m_InternalUnits ); - m_PadOffsetCtrl = new WinEDA_SizeCtrl(this, _("Offset"), - CurrentPad ? CurrentPad->m_Offset : g_Pad_Master.m_Offset, - g_UnitMetric, m_PadPositionBoxSizer, m_Parent->m_InternalUnits); + m_PadDeltaSizeCtrl = new WinEDA_SizeCtrl( this, _( + "Delta" ), + CurrentPad ? CurrentPad->m_DeltaSize : + g_Pad_Master.m_DeltaSize, + g_UnitMetric, m_PadPositionBoxSizer, + m_Parent->m_InternalUnits ); - /* In second column */ - - m_PadDrillCtrl = new WinEDA_SizeCtrl(this, _("Pad Drill"), - CurrentPad ? CurrentPad->m_Drill : g_Pad_Master.m_Drill, - g_UnitMetric, m_DrillShapeBoxSizer, m_Parent->m_InternalUnits ); + m_PadOffsetCtrl = new WinEDA_SizeCtrl( this, _( + "Offset" ), + CurrentPad ? CurrentPad->m_Offset : g_Pad_Master. + m_Offset, + g_UnitMetric, m_PadPositionBoxSizer, + m_Parent->m_InternalUnits ); - if ( CurrentPad ) - { - tmp = CurrentPad->m_Orient - m_Module->m_Orient; - } - else tmp = g_Pad_Master.m_Orient; - m_DrillShapeBoxSizer->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); - m_PadOrientCtrl = new WinEDA_ValueCtrl(this, _("Pad Orient (0.1 deg)"), - tmp, 2, m_DrillShapeBoxSizer, 1); + /* In second column */ + + m_PadDrillCtrl = new WinEDA_SizeCtrl( this, _( + "Pad Drill" ), + CurrentPad ? CurrentPad->m_Drill : g_Pad_Master.m_Drill, + g_UnitMetric, m_DrillShapeBoxSizer, + m_Parent->m_InternalUnits ); + + if( CurrentPad ) + { + tmp = CurrentPad->m_Orient - m_Module->m_Orient; + } + else + tmp = g_Pad_Master.m_Orient; + m_DrillShapeBoxSizer->Add( 5, 5, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 ); + m_PadOrientCtrl = new WinEDA_ValueCtrl( this, _( "Pad Orient (0.1 deg)" ), + tmp, 2, m_DrillShapeBoxSizer, 1 ); - // Pad Orient - switch ( tmp ) - { - case 0: - m_PadOrient->SetSelection(0); - m_PadOrientCtrl->Enable(FALSE); - break; + // Pad Orient + switch( tmp ) + { + case 0: + m_PadOrient->SetSelection( 0 ); + m_PadOrientCtrl->Enable( FALSE ); + break; - case -2700: - case 900: - m_PadOrient->SetSelection(1); - m_PadOrientCtrl->Enable(FALSE); - break; + case - 2700: + case 900: + m_PadOrient->SetSelection( 1 ); + m_PadOrientCtrl->Enable( FALSE ); + break; - case -900: - case 2700: - m_PadOrient->SetSelection(2); - m_PadOrientCtrl->Enable(FALSE); - break; + case - 900: + case 2700: + m_PadOrient->SetSelection( 2 ); + m_PadOrientCtrl->Enable( FALSE ); + break; - case 1800: - case -1800: - m_PadOrient->SetSelection(3); - m_PadOrientCtrl->Enable(FALSE); - break; + case 1800: + case - 1800: + m_PadOrient->SetSelection( 3 ); + m_PadOrientCtrl->Enable( FALSE ); + break; - default: - m_PadOrient->SetSelection(4); - break; - } + default: + m_PadOrient->SetSelection( 4 ); + break; + } - tmp = CurrentPad ? CurrentPad->m_PadShape : g_Pad_Master.m_PadShape; - switch ( tmp ) - { - case CIRCLE: - m_PadDeltaSizeCtrl->Enable(FALSE, FALSE); - m_PadSizeCtrl->Enable(TRUE, FALSE); - m_PadShape->SetSelection(0); - break; + tmp = CurrentPad ? CurrentPad->m_PadShape : g_Pad_Master.m_PadShape; - case OVALE: - m_PadDeltaSizeCtrl->Enable(FALSE, FALSE); - m_PadSizeCtrl->Enable(TRUE, TRUE); - m_PadShape->SetSelection(1); - break; + switch( tmp ) + { + case CIRCLE: + m_PadDeltaSizeCtrl->Enable( FALSE, FALSE ); + m_PadSizeCtrl->Enable( TRUE, FALSE ); + m_PadShape->SetSelection( 0 ); + break; - case RECT: - m_PadDeltaSizeCtrl->Enable(FALSE, FALSE); - m_PadSizeCtrl->Enable(TRUE, TRUE); - m_PadShape->SetSelection(2); - break; + case OVALE: + m_PadDeltaSizeCtrl->Enable( FALSE, FALSE ); + m_PadSizeCtrl->Enable( TRUE, TRUE ); + m_PadShape->SetSelection( 1 ); + break; - case TRAPEZE: - m_PadDeltaSizeCtrl->Enable(TRUE, TRUE); - m_PadSizeCtrl->Enable(TRUE, TRUE); - m_PadShape->SetSelection(3); - break; - } + case RECT: + m_PadDeltaSizeCtrl->Enable( FALSE, FALSE ); + m_PadSizeCtrl->Enable( TRUE, TRUE ); + m_PadShape->SetSelection( 2 ); + break; - // Selection du type - tmp = CurrentPad ? CurrentPad->m_Attribut : g_Pad_Master.m_Attribut; - m_PadType->SetSelection( 0 ); - for ( int ii = 0; ii < NBTYPES; ii++ ) - { - if ( CodeType[ii] == tmp ) - { - m_PadType->SetSelection( ii ); break ; - } - } + case TRAPEZE: + m_PadDeltaSizeCtrl->Enable( TRUE, TRUE ); + m_PadSizeCtrl->Enable( TRUE, TRUE ); + m_PadShape->SetSelection( 3 ); + break; + } - tmp = CurrentPad ? CurrentPad->m_DrillShape : g_Pad_Master.m_DrillShape; - switch ( tmp ) - { - case CIRCLE: - m_DrillShapeCtrl->SetSelection(0); - m_PadDrillCtrl->Enable(TRUE,FALSE); - break; + // Selection du type + tmp = CurrentPad ? CurrentPad->m_Attribut : g_Pad_Master.m_Attribut; + m_PadType->SetSelection( 0 ); + for( int ii = 0; ii < NBTYPES; ii++ ) + { + if( CodeType[ii] == tmp ) + { + m_PadType->SetSelection( ii ); break; + } + } - case OVALE: - m_DrillShapeCtrl->SetSelection(1); - m_PadDrillCtrl->Enable(TRUE, TRUE); - break; - } - // Selection des couches cuivre : - if ( CurrentPad ) SetPadLayersList(CurrentPad->m_Masque_Layer); - else PadTypeSelected(); + tmp = CurrentPad ? CurrentPad->m_DrillShape : g_Pad_Master.m_DrillShape; + + switch( tmp ) + { + case CIRCLE: + m_DrillShapeCtrl->SetSelection( 0 ); + m_PadDrillCtrl->Enable( TRUE, FALSE ); + break; + + case OVALE: + m_DrillShapeCtrl->SetSelection( 1 ); + m_PadDrillCtrl->Enable( TRUE, TRUE ); + break; + } + + // Selection des couches cuivre : + if( CurrentPad ) + SetPadLayersList( CurrentPad->m_Masque_Layer ); + else + PadTypeSelected(); } /*******************************************************************/ -void WinEDA_PadPropertiesFrame::PadOrientEvent(wxCommandEvent& event) +void WinEDA_PadPropertiesFrame::PadOrientEvent( wxCommandEvent& event ) /********************************************************************/ { - switch ( m_PadOrient->GetSelection() ) - { - case 0: - m_PadOrientCtrl->SetValue(0); - m_PadOrientCtrl->Enable(FALSE); - break; + switch( m_PadOrient->GetSelection() ) + { + case 0: + m_PadOrientCtrl->SetValue( 0 ); + m_PadOrientCtrl->Enable( FALSE ); + break; - case 1: - m_PadOrientCtrl->SetValue(900); - m_PadOrientCtrl->Enable(FALSE); - break; + case 1: + m_PadOrientCtrl->SetValue( 900 ); + m_PadOrientCtrl->Enable( FALSE ); + break; - case 2: - m_PadOrientCtrl->SetValue(2700); - m_PadOrientCtrl->Enable(FALSE); - break; + case 2: + m_PadOrientCtrl->SetValue( 2700 ); + m_PadOrientCtrl->Enable( FALSE ); + break; - case 3: - m_PadOrientCtrl->SetValue(1800); - m_PadOrientCtrl->Enable(FALSE); - break; - - default: - m_PadOrientCtrl->Enable(TRUE); - break; - } + case 3: + m_PadOrientCtrl->SetValue( 1800 ); + m_PadOrientCtrl->Enable( FALSE ); + break; + default: + m_PadOrientCtrl->Enable( TRUE ); + break; + } } + /**************************************************************************/ -void WinEDA_PadPropertiesFrame::PadTypeSelectedEvent(wxCommandEvent& event) +void WinEDA_PadPropertiesFrame::PadTypeSelectedEvent( wxCommandEvent& event ) /**************************************************************************/ + /* calcule un layer_mask type selon la selection du type du pad -*/ + */ { - PadTypeSelected(); + PadTypeSelected(); } + void WinEDA_PadPropertiesFrame::PadTypeSelected() { -long layer_mask; -int ii; + long layer_mask; + int ii; - ii = m_PadType->GetSelection(); - if ( (ii < 0) || ( ii >= NBTYPES) ) ii = 0; + ii = m_PadType->GetSelection(); + if( (ii < 0) || ( ii >= NBTYPES) ) + ii = 0; - layer_mask = Std_Pad_Layers[ii]; - SetPadLayersList(layer_mask); + layer_mask = Std_Pad_Layers[ii]; + SetPadLayersList( layer_mask ); } + /****************************************************************/ -void WinEDA_PadPropertiesFrame::SetPadLayersList(long layer_mask) +void WinEDA_PadPropertiesFrame::SetPadLayersList( long layer_mask ) /****************************************************************/ + /* Met a jour l'etat des CheckBoxes de la liste des layers actives, -données bit a bit dans layer_mask -*/ + * données bit a bit dans layer_mask + */ { - if( layer_mask & CUIVRE_LAYER ) m_PadLayerCu->SetValue(TRUE); - else m_PadLayerCu->SetValue(FALSE); + if( layer_mask & CUIVRE_LAYER ) + m_PadLayerCu->SetValue( TRUE ); + else + m_PadLayerCu->SetValue( FALSE ); - if( layer_mask & CMP_LAYER ) m_PadLayerCmp->SetValue(TRUE); - else m_PadLayerCmp->SetValue(FALSE); + if( layer_mask & CMP_LAYER ) + m_PadLayerCmp->SetValue( TRUE ); + else + m_PadLayerCmp->SetValue( FALSE ); - if( layer_mask & ADHESIVE_LAYER_CMP ) m_PadLayerAdhCmp->SetValue(TRUE); - else m_PadLayerAdhCmp->SetValue(FALSE); + if( layer_mask & ADHESIVE_LAYER_CMP ) + m_PadLayerAdhCmp->SetValue( TRUE ); + else + m_PadLayerAdhCmp->SetValue( FALSE ); - if( layer_mask & ADHESIVE_LAYER_CU ) m_PadLayerAdhCu->SetValue(TRUE); - else m_PadLayerAdhCu->SetValue(FALSE); + if( layer_mask & ADHESIVE_LAYER_CU ) + m_PadLayerAdhCu->SetValue( TRUE ); + else + m_PadLayerAdhCu->SetValue( FALSE ); - if( layer_mask & SOLDERPASTE_LAYER_CMP ) m_PadLayerPateCmp->SetValue(TRUE); - else m_PadLayerPateCmp->SetValue(FALSE); + if( layer_mask & SOLDERPASTE_LAYER_CMP ) + m_PadLayerPateCmp->SetValue( TRUE ); + else + m_PadLayerPateCmp->SetValue( FALSE ); - if( layer_mask & SOLDERPASTE_LAYER_CU ) m_PadLayerPateCu->SetValue(TRUE); - else m_PadLayerPateCu->SetValue(FALSE); + if( layer_mask & SOLDERPASTE_LAYER_CU ) + m_PadLayerPateCu->SetValue( TRUE ); + else + m_PadLayerPateCu->SetValue( FALSE ); - if( layer_mask & SILKSCREEN_LAYER_CMP ) m_PadLayerSilkCmp->SetValue(TRUE); - else m_PadLayerSilkCmp->SetValue(FALSE); + if( layer_mask & SILKSCREEN_LAYER_CMP ) + m_PadLayerSilkCmp->SetValue( TRUE ); + else + m_PadLayerSilkCmp->SetValue( FALSE ); - if( layer_mask & SILKSCREEN_LAYER_CU ) m_PadLayerSilkCu->SetValue(TRUE); - else m_PadLayerSilkCu->SetValue(FALSE); + if( layer_mask & SILKSCREEN_LAYER_CU ) + m_PadLayerSilkCu->SetValue( TRUE ); + else + m_PadLayerSilkCu->SetValue( FALSE ); - if( layer_mask & SOLDERMASK_LAYER_CMP ) m_PadLayerMaskCmp->SetValue(TRUE); - else m_PadLayerMaskCmp->SetValue(FALSE); + if( layer_mask & SOLDERMASK_LAYER_CMP ) + m_PadLayerMaskCmp->SetValue( TRUE ); + else + m_PadLayerMaskCmp->SetValue( FALSE ); - if( layer_mask & SOLDERMASK_LAYER_CU ) m_PadLayerMaskCu->SetValue(TRUE); - else m_PadLayerMaskCu->SetValue(FALSE); + if( layer_mask & SOLDERMASK_LAYER_CU ) + m_PadLayerMaskCu->SetValue( TRUE ); + else + m_PadLayerMaskCu->SetValue( FALSE ); - if( layer_mask & ECO1_LAYER ) m_PadLayerECO1->SetValue(TRUE); - else m_PadLayerECO1->SetValue(FALSE); + if( layer_mask & ECO1_LAYER ) + m_PadLayerECO1->SetValue( TRUE ); + else + m_PadLayerECO1->SetValue( FALSE ); - if( layer_mask & ECO2_LAYER ) m_PadLayerECO2->SetValue(TRUE); - else m_PadLayerECO2->SetValue(FALSE); + if( layer_mask & ECO2_LAYER ) + m_PadLayerECO2->SetValue( TRUE ); + else + m_PadLayerECO2->SetValue( FALSE ); - if( layer_mask & DRAW_LAYER ) m_PadLayerDraft->SetValue(TRUE); - else m_PadLayerDraft->SetValue(FALSE); + if( layer_mask & DRAW_LAYER ) + m_PadLayerDraft->SetValue( TRUE ); + else + m_PadLayerDraft->SetValue( FALSE ); } /*************************************************************************/ -void WinEDA_PadPropertiesFrame::PadPropertiesAccept(wxCommandEvent& event) +void WinEDA_PadPropertiesFrame::PadPropertiesAccept( wxCommandEvent& event ) /*************************************************************************/ + /* Met a jour les differents parametres pour le composant en cours d'édition -*/ + */ { -long PadLayerMask; -bool error = FALSE; - - if ( m_DC ) m_Parent->DrawPanel->CursorOff(m_DC); + long PadLayerMask; + bool error = FALSE; - g_Pad_Master.m_Attribut = CodeType[m_PadType->GetSelection()]; - g_Pad_Master.m_PadShape = CodeShape[m_PadShape->GetSelection()]; - g_Pad_Master.m_Pos = m_PadPositionCtrl->GetValue(); - g_Pad_Master.m_Pos0 = g_Pad_Master.m_Pos; - g_Pad_Master.m_Size = m_PadSizeCtrl->GetValue(); - if ( g_Pad_Master.m_PadShape == CIRCLE ) - g_Pad_Master.m_Size.y = g_Pad_Master.m_Size.x; - g_Pad_Master.m_DeltaSize = m_PadDeltaSizeCtrl->GetValue(); - g_Pad_Master.m_Offset = m_PadOffsetCtrl->GetValue(); - g_Pad_Master.m_Drill = m_PadDrillCtrl->GetValue(); - if( m_DrillShapeCtrl->GetSelection() == 0 ) - { - g_Pad_Master.m_DrillShape = CIRCLE; - g_Pad_Master.m_Drill.y = g_Pad_Master.m_Drill.x; - } - else g_Pad_Master.m_DrillShape = OVALE; - g_Pad_Master.m_Orient = m_PadOrientCtrl->GetValue(); - g_Current_PadName = m_PadNumCtrl->GetValue().Left(4); - Current_PadNetName = m_PadNetNameCtrl->GetValue(); + if( m_DC ) + m_Parent->DrawPanel->CursorOff( m_DC ); - /* Test for incorrect values */ - if ( (g_Pad_Master.m_Size.x < g_Pad_Master.m_Drill.x) || - (g_Pad_Master.m_Size.y < g_Pad_Master.m_Drill.y) ) - { - error = TRUE; - DisplayError(this, _("Incorrect value for pad drill: pad drill bigger than pad size") ); - } - if ( (g_Pad_Master.m_Size.x/2 <= ABS(g_Pad_Master.m_Offset.x)) || - (g_Pad_Master.m_Size.y/2 <= ABS(g_Pad_Master.m_Offset.y)) ) - { - error = TRUE; - DisplayError(this, _("Incorrect value for pad offset") ); - } - - if ( error ) - { - if ( m_DC ) m_Parent->DrawPanel->CursorOn(m_DC); - return; - } + g_Pad_Master.m_Attribut = CodeType[m_PadType->GetSelection()]; + g_Pad_Master.m_PadShape = CodeShape[m_PadShape->GetSelection()]; + g_Pad_Master.m_Pos = m_PadPositionCtrl->GetValue(); + g_Pad_Master.m_Pos0 = g_Pad_Master.m_Pos; + g_Pad_Master.m_Size = m_PadSizeCtrl->GetValue(); + if( g_Pad_Master.m_PadShape == CIRCLE ) + g_Pad_Master.m_Size.y = g_Pad_Master.m_Size.x; + g_Pad_Master.m_DeltaSize = m_PadDeltaSizeCtrl->GetValue(); + g_Pad_Master.m_Offset = m_PadOffsetCtrl->GetValue(); + g_Pad_Master.m_Drill = m_PadDrillCtrl->GetValue(); + if( m_DrillShapeCtrl->GetSelection() == 0 ) + { + g_Pad_Master.m_DrillShape = CIRCLE; + g_Pad_Master.m_Drill.y = g_Pad_Master.m_Drill.x; + } + else + g_Pad_Master.m_DrillShape = OVALE; + g_Pad_Master.m_Orient = m_PadOrientCtrl->GetValue(); + g_Current_PadName = m_PadNumCtrl->GetValue().Left( 4 ); + Current_PadNetName = m_PadNetNameCtrl->GetValue(); - PadLayerMask = 0; - if( m_PadLayerCu->GetValue() ) PadLayerMask |= CUIVRE_LAYER; - if( m_PadLayerCmp->GetValue() ) PadLayerMask |= CMP_LAYER; - if ( (PadLayerMask & (CUIVRE_LAYER|CMP_LAYER)) == (CUIVRE_LAYER|CMP_LAYER) ) - PadLayerMask |= ALL_CU_LAYERS; - if( m_PadLayerAdhCmp->GetValue() ) PadLayerMask |= ADHESIVE_LAYER_CMP; - if( m_PadLayerAdhCu->GetValue() ) PadLayerMask |= ADHESIVE_LAYER_CU; - if( m_PadLayerPateCmp->GetValue() ) PadLayerMask |= SOLDERPASTE_LAYER_CMP; - if( m_PadLayerPateCu->GetValue() ) PadLayerMask |= SOLDERPASTE_LAYER_CU; - if( m_PadLayerSilkCmp->GetValue() ) PadLayerMask |= SILKSCREEN_LAYER_CMP; - if( m_PadLayerSilkCu->GetValue() ) PadLayerMask |= SILKSCREEN_LAYER_CU; - if( m_PadLayerMaskCmp->GetValue() ) PadLayerMask |= SOLDERMASK_LAYER_CMP; - if( m_PadLayerMaskCu->GetValue() ) PadLayerMask |= SOLDERMASK_LAYER_CU; - if( m_PadLayerECO1->GetValue() ) PadLayerMask |= ECO1_LAYER; - if( m_PadLayerECO2->GetValue() ) PadLayerMask |= ECO2_LAYER; - if( m_PadLayerDraft->GetValue() ) PadLayerMask |= DRAW_LAYER; + /* Test for incorrect values */ + if( (g_Pad_Master.m_Size.x < g_Pad_Master.m_Drill.x) + || (g_Pad_Master.m_Size.y < g_Pad_Master.m_Drill.y) ) + { + error = TRUE; + DisplayError( this, _( "Incorrect value for pad drill: pad drill bigger than pad size" ) ); + } + if( ( g_Pad_Master.m_Size.x / 2 <= ABS( g_Pad_Master.m_Offset.x ) ) + || ( g_Pad_Master.m_Size.y / 2 <= ABS( g_Pad_Master.m_Offset.y ) ) ) + { + error = TRUE; + DisplayError( this, _( "Incorrect value for pad offset" ) ); + } - g_Pad_Master.m_Masque_Layer = PadLayerMask; + if( error ) + { + if( m_DC ) + m_Parent->DrawPanel->CursorOn( m_DC ); + return; + } - if ( CurrentPad ) // Set Pad Name & Num - { - m_Parent->SaveCopyInUndoList(m_Parent->m_Pcb->m_Modules); - MODULE * Module; - Module = (MODULE*) CurrentPad->m_Parent; - Module->m_LastEdit_Time = time(NULL); + PadLayerMask = 0; + if( m_PadLayerCu->GetValue() ) + PadLayerMask |= CUIVRE_LAYER; + if( m_PadLayerCmp->GetValue() ) + PadLayerMask |= CMP_LAYER; + if( ( PadLayerMask & (CUIVRE_LAYER | CMP_LAYER) ) == (CUIVRE_LAYER | CMP_LAYER) ) + PadLayerMask |= ALL_CU_LAYERS; + if( m_PadLayerAdhCmp->GetValue() ) + PadLayerMask |= ADHESIVE_LAYER_CMP; + if( m_PadLayerAdhCu->GetValue() ) + PadLayerMask |= ADHESIVE_LAYER_CU; + if( m_PadLayerPateCmp->GetValue() ) + PadLayerMask |= SOLDERPASTE_LAYER_CMP; + if( m_PadLayerPateCu->GetValue() ) + PadLayerMask |= SOLDERPASTE_LAYER_CU; + if( m_PadLayerSilkCmp->GetValue() ) + PadLayerMask |= SILKSCREEN_LAYER_CMP; + if( m_PadLayerSilkCu->GetValue() ) + PadLayerMask |= SILKSCREEN_LAYER_CU; + if( m_PadLayerMaskCmp->GetValue() ) + PadLayerMask |= SOLDERMASK_LAYER_CMP; + if( m_PadLayerMaskCu->GetValue() ) + PadLayerMask |= SOLDERMASK_LAYER_CU; + if( m_PadLayerECO1->GetValue() ) + PadLayerMask |= ECO1_LAYER; + if( m_PadLayerECO2->GetValue() ) + PadLayerMask |= ECO2_LAYER; + if( m_PadLayerDraft->GetValue() ) + PadLayerMask |= DRAW_LAYER; - if ( m_DC ) CurrentPad->Draw(m_Parent->DrawPanel, m_DC, wxPoint(0,0), GR_XOR); - CurrentPad->m_PadShape = g_Pad_Master.m_PadShape; - CurrentPad->m_Attribut = g_Pad_Master.m_Attribut; - CurrentPad->m_Pos = g_Pad_Master.m_Pos; - /* compute the pos 0 value, i.e. pad position for module orient = 0 i.e. - refer to module origin (module position) */ - CurrentPad->m_Pos0 = CurrentPad->m_Pos; - CurrentPad->m_Pos0.x -= Module->m_Pos.x; - CurrentPad->m_Pos0.y -= Module->m_Pos.y; - CurrentPad->m_Orient = g_Pad_Master.m_Orient + Module->m_Orient; - RotatePoint( &CurrentPad->m_Pos0.x, &CurrentPad->m_Pos0.y, - Module->m_Orient ); + g_Pad_Master.m_Masque_Layer = PadLayerMask; - CurrentPad->m_Size = g_Pad_Master.m_Size; - CurrentPad->m_DeltaSize = g_Pad_Master.m_DeltaSize; - CurrentPad->m_Drill = g_Pad_Master.m_Drill; - CurrentPad->m_DrillShape = g_Pad_Master.m_DrillShape; - CurrentPad->m_Offset = g_Pad_Master.m_Offset; - CurrentPad->m_Masque_Layer = g_Pad_Master.m_Masque_Layer; - CurrentPad->SetPadName(g_Current_PadName); - CurrentPad->m_Netname = Current_PadNetName; - if ( Current_PadNetName.IsEmpty() ) CurrentPad->m_NetCode = 0; + if( CurrentPad ) // Set Pad Name & Num + { + m_Parent->SaveCopyInUndoList( m_Parent->m_Pcb->m_Modules ); + MODULE* Module; + Module = (MODULE*) CurrentPad->m_Parent; + Module->m_LastEdit_Time = time( NULL ); - switch ( CurrentPad->m_PadShape ) - { - case CIRCLE: - CurrentPad->m_DeltaSize = wxSize(0,0); - CurrentPad->m_Size.y = CurrentPad->m_Size.x; - break; + if( m_DC ) + CurrentPad->Draw( m_Parent->DrawPanel, m_DC, wxPoint( 0, 0 ), GR_XOR ); + CurrentPad->m_PadShape = g_Pad_Master.m_PadShape; + CurrentPad->m_Attribut = g_Pad_Master.m_Attribut; + CurrentPad->m_Pos = g_Pad_Master.m_Pos; - case RECT: - CurrentPad->m_DeltaSize = wxSize(0,0); - break; + /* compute the pos 0 value, i.e. pad position for module orient = 0 i.e. + * refer to module origin (module position) */ + CurrentPad->m_Pos0 = CurrentPad->m_Pos; + CurrentPad->m_Pos0.x -= Module->m_Pos.x; + CurrentPad->m_Pos0.y -= Module->m_Pos.y; + CurrentPad->m_Orient = g_Pad_Master.m_Orient + Module->m_Orient; + RotatePoint( &CurrentPad->m_Pos0.x, &CurrentPad->m_Pos0.y, -Module->m_Orient ); - case OVALE: - CurrentPad->m_DeltaSize = wxSize(0,0); - break; + CurrentPad->m_Size = g_Pad_Master.m_Size; + CurrentPad->m_DeltaSize = g_Pad_Master.m_DeltaSize; + CurrentPad->m_Drill = g_Pad_Master.m_Drill; + CurrentPad->m_DrillShape = g_Pad_Master.m_DrillShape; + CurrentPad->m_Offset = g_Pad_Master.m_Offset; + CurrentPad->m_Masque_Layer = g_Pad_Master.m_Masque_Layer; + CurrentPad->SetPadName( g_Current_PadName ); + CurrentPad->m_Netname = Current_PadNetName; + if( Current_PadNetName.IsEmpty() ) + CurrentPad->SetNet( 0 ); - case TRAPEZE: - break; - } + switch( CurrentPad->m_PadShape ) + { + case CIRCLE: + CurrentPad->m_DeltaSize = wxSize( 0, 0 ); + CurrentPad->m_Size.y = CurrentPad->m_Size.x; + break; - switch ( CurrentPad->m_Attribut ) - { - case STANDARD: - break; + case RECT: + CurrentPad->m_DeltaSize = wxSize( 0, 0 ); + break; - case CONN: - case SMD: - CurrentPad->m_Offset = wxSize(0,0); - CurrentPad->m_Drill = wxSize(0,0); - break; + case OVALE: + CurrentPad->m_DeltaSize = wxSize( 0, 0 ); + break; - case P_HOLE: - case MECA: - break; - } + case TRAPEZE: + break; + } - CurrentPad->ComputeRayon(); + switch( CurrentPad->m_Attribut ) + { + case STANDARD: + break; - Module->Set_Rectangle_Encadrement(); - CurrentPad->Display_Infos(m_Parent); - if ( m_DC ) CurrentPad->Draw(m_Parent->DrawPanel, m_DC, wxPoint(0,0), GR_OR); - m_Parent->GetScreen()->SetModify(); - } + case CONN: + case SMD: + CurrentPad->m_Offset = wxSize( 0, 0 ); + CurrentPad->m_Drill = wxSize( 0, 0 ); + break; - Close(); + case P_HOLE: + case MECA: + break; + } - if ( m_DC ) m_Parent->DrawPanel->CursorOn(m_DC); + CurrentPad->ComputeRayon(); + + Module->Set_Rectangle_Encadrement(); + CurrentPad->Display_Infos( m_Parent ); + if( m_DC ) + CurrentPad->Draw( m_Parent->DrawPanel, m_DC, wxPoint( 0, 0 ), GR_OR ); + m_Parent->GetScreen()->SetModify(); + } + + Close(); + + if( m_DC ) + m_Parent->DrawPanel->CursorOn( m_DC ); } - diff --git a/pcbnew/editrack-part2.cpp b/pcbnew/editrack-part2.cpp index 5171130793..4e1c63e3fb 100644 --- a/pcbnew/editrack-part2.cpp +++ b/pcbnew/editrack-part2.cpp @@ -146,7 +146,7 @@ void WinEDA_PcbFrame::ExChange_Track_Layer( TRACK* pt_segm, wxDC* DC ) pt_segm->end = Locate_Pad_Connecte( m_Pcb, pt_segm, END ); } - test_1_net_connexion( DC, pt_track->m_NetCode ); + test_1_net_connexion( DC, pt_track->GetNet() ); pt_track->Display_Infos( this ); GetScreen()->SetModify(); } @@ -219,7 +219,7 @@ void WinEDA_PcbFrame::Other_Layer_Route( TRACK* track, wxDC* DC ) Via->m_Flags = IS_NEW; Via->m_Width = g_DesignSettings.m_CurrentViaSize; Via->m_Shape = g_DesignSettings.m_CurrentViaType; - Via->m_NetCode = g_HightLigth_NetCode; + Via->SetNet( g_HightLigth_NetCode ); Via->m_Start = Via->m_End = g_CurrentTrackSegment->m_End; int old_layer = GetScreen()->m_Active_Layer; @@ -321,7 +321,7 @@ void WinEDA_PcbFrame::Affiche_Status_Net( wxDC* DC ) if( pt_segm == NULL ) m_Pcb->Display_Infos( this ); else - test_1_net_connexion( DC, pt_segm->m_NetCode ); + test_1_net_connexion( DC, pt_segm->GetNet() ); } @@ -362,7 +362,7 @@ void WinEDA_PcbFrame::Show_1_Ratsnest( EDA_BaseStruct* item, wxDC* DC ) pt_chevelu = (CHEVELU*) m_Pcb->m_Ratsnest; for( ii = m_Pcb->GetNumRatsnests(); ii > 0; pt_chevelu++, ii-- ) { - if( pt_chevelu->m_NetCode == pt_pad->m_NetCode ) + if( pt_chevelu->GetNet() == pt_pad->GetNet() ) { if( (pt_chevelu->status & CH_VISIBLE) != 0 ) continue; diff --git a/pcbnew/editrack.cpp b/pcbnew/editrack.cpp index 734632fb95..2414b6c571 100644 --- a/pcbnew/editrack.cpp +++ b/pcbnew/editrack.cpp @@ -119,12 +119,12 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* track, wxDC* DC ) /* le debut de la piste est remis sur le centre du pad */ pos = pt_pad->m_Pos; - g_HightLigth_NetCode = pt_pad->m_NetCode; + g_HightLigth_NetCode = pt_pad->GetNet(); } else /* le point d'accrochage est un segment */ { adr_buf = (TRACK*) LockPoint; - g_HightLigth_NetCode = adr_buf->m_NetCode; + g_HightLigth_NetCode = adr_buf->GetNet(); CreateLockPoint( &pos.x, &pos.y, adr_buf, NULL ); } } @@ -137,7 +137,7 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* track, wxDC* DC ) g_CurrentTrackSegment->m_Width = g_DesignSettings.m_CurrentTrackWidth; g_CurrentTrackSegment->m_Start = pos; g_CurrentTrackSegment->m_End = g_CurrentTrackSegment->m_Start; - g_CurrentTrackSegment->m_NetCode = g_HightLigth_NetCode; + g_CurrentTrackSegment->SetNet( g_HightLigth_NetCode ); if( pt_pad ) { g_CurrentTrackSegment->start = pt_pad; @@ -418,7 +418,7 @@ void WinEDA_PcbFrame::End_Route( TRACK* track, wxDC* DC ) * peut-etre creer un point d'ancrage */ { adr_buf = (TRACK*) LockPoint; - g_HightLigth_NetCode = adr_buf->m_NetCode; + g_HightLigth_NetCode = adr_buf->GetNet(); /* creation eventuelle d'un point d'accrochage */ LockPoint = CreateLockPoint( &g_CurrentTrackSegment->m_End.x, &g_CurrentTrackSegment->m_End.y, @@ -458,7 +458,7 @@ void WinEDA_PcbFrame::End_Route( TRACK* track, wxDC* DC ) } /* compute the new rastnest : */ - test_1_net_connexion( DC, g_FirstTrackSegment->m_NetCode ); + test_1_net_connexion( DC, g_FirstTrackSegment->GetNet() ); GetScreen()->SetModify(); m_Pcb->Display_Infos( this ); diff --git a/pcbnew/editrout.cpp b/pcbnew/editrout.cpp index e545be01c0..8c840ba41f 100644 --- a/pcbnew/editrout.cpp +++ b/pcbnew/editrout.cpp @@ -85,7 +85,7 @@ int nb_segm_non_modifies = 0; /* balayage des segments */ for( pt_segm = m_Pcb->m_Track; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext ) { - if ( Netcode != pt_segm->m_NetCode ) /* mauvaise piste */ + if ( Netcode != pt_segm->GetNet() ) /* mauvaise piste */ continue ; /* piste d'un net trouvee */ errdrc = Edit_TrackSegm_Width(DC, pt_segm); diff --git a/pcbnew/export_gencad.cpp b/pcbnew/export_gencad.cpp index 87fb82f13f..5967a35708 100644 --- a/pcbnew/export_gencad.cpp +++ b/pcbnew/export_gencad.cpp @@ -476,7 +476,7 @@ void CreateSignalsSection( FILE* file, BOARD* pcb ) equipot->m_Netname << wxT( "NoConnection" ) << NbNoConn++; } - if( equipot->m_NetCode <= 0 ) // dummy equipot (non connexion) + if( equipot->GetNet() <= 0 ) // dummy equipot (non connexion) continue; msg = wxT( "\nSIGNAL " ) + equipot->m_Netname; @@ -487,7 +487,7 @@ void CreateSignalsSection( FILE* file, BOARD* pcb ) for( pad = module->m_Pads; pad != NULL; pad = (D_PAD*) pad->Pnext ) { wxString padname; - if( pad->m_NetCode != equipot->m_NetCode ) + if( pad->GetNet() != equipot->GetNet() ) continue; pad->ReturnStringPadName( padname ); msg.Printf( wxT( "NODE %s %.4s" ), @@ -545,7 +545,7 @@ static int Track_list_Sort_by_Netcode( const void* refptr, const void* objptr ) ref = *( (TRACK**) refptr ); cmp = *( (TRACK**) objptr ); - if( (diff = ref->m_NetCode - cmp->m_NetCode) ) + if( (diff = ref->GetNet() - cmp->GetNet()) ) return diff; if( (diff = ref->m_Width - cmp->m_Width) ) return diff; @@ -606,10 +606,10 @@ void CreateRoutesSection( FILE* file, BOARD* pcb ) for( ii = 0; ii < nbitems; ii++ ) { track = tracklist[ii]; - if( old_netcode != track->m_NetCode ) + if( old_netcode != track->GetNet() ) { - old_netcode = track->m_NetCode; - EQUIPOT* equipot = pcb->FindNet( track->m_NetCode ); + old_netcode = track->GetNet(); + EQUIPOT* equipot = pcb->FindNet( track->GetNet() ); wxString netname; if( equipot && (equipot->m_Netname != wxEmptyString) ) netname = equipot->m_Netname; diff --git a/pcbnew/ioascii.cpp b/pcbnew/ioascii.cpp index c76bb08178..8211c3f46f 100644 --- a/pcbnew/ioascii.cpp +++ b/pcbnew/ioascii.cpp @@ -177,7 +177,7 @@ int WinEDA_BasePcbFrame::ReadListeSegmentDescr( wxDC* DC, FILE* File, PtSegm->m_Drill = -1; PtSegm->SetLayer( layer ); - PtSegm->m_NetCode = net_code; + PtSegm->SetNet( net_code ); PtSegm->SetState( flags, ON ); #ifdef PCBNEW @@ -356,7 +356,8 @@ int WinEDA_BasePcbFrame::ReadSetup( FILE* File, int* LineNum ) data = strtok( NULL, " =\n\r" ); if( data ) gy = atoi( data ); - m_Auxiliary_Axis_Position.x = gx; m_Auxiliary_Axis_Position.y = gy; + m_Auxiliary_Axis_Position.x = gx; + m_Auxiliary_Axis_Position.y = gy; continue; } #ifdef PCBNEW diff --git a/pcbnew/modules.cpp b/pcbnew/modules.cpp index 06f62c3cad..47de424b73 100644 --- a/pcbnew/modules.cpp +++ b/pcbnew/modules.cpp @@ -499,6 +499,7 @@ void WinEDA_BasePcbFrame::Change_Side_Module( MODULE* Module, wxDC* DC ) if( DC ) { Module->Draw( DrawPanel, DC, wxPoint( 0, 0 ), GR_OR ); + /* affichage chevelu general si necessaire */ ReCompile_Ratsnest_After_Changes( DC ); } @@ -730,6 +731,7 @@ void WinEDA_BasePcbFrame::Rotate_Module( wxDC* DC, MODULE* module, if( !(module->m_Flags & IS_MOVED) ) /* Rotation simple */ { module->Draw( DrawPanel, DC, wxPoint( 0, 0 ), GR_OR ); + /* Reaffichage chevelu general si necessaire */ ReCompile_Ratsnest_After_Changes( DC ); } diff --git a/pcbnew/move_copy_track.cpp b/pcbnew/move_copy_track.cpp index e3a0eb9b45..10c6611968 100644 --- a/pcbnew/move_copy_track.cpp +++ b/pcbnew/move_copy_track.cpp @@ -194,7 +194,7 @@ void WinEDA_PcbFrame::Start_MoveOneTrackSegment( TRACK* track, wxDC* DC, bool Dr { track->m_Flags = IS_DRAGGED | STARTPOINT | ENDPOINT; Collect_TrackSegmentsToDrag( DrawPanel, DC, track->m_Start, - track->ReturnMaskLayer(), track->m_NetCode ); + track->ReturnMaskLayer(), track->GetNet() ); NewTrack = track; NbPtNewTrack = 1; PosInit = track->m_Start; @@ -204,7 +204,7 @@ void WinEDA_PcbFrame::Start_MoveOneTrackSegment( TRACK* track, wxDC* DC, bool Dr int diag = track->IsPointOnEnds( GetScreen()->m_Curseur, -1 ); wxPoint pos = (diag & STARTPOINT) ? track->m_Start : track->m_End; Collect_TrackSegmentsToDrag( DrawPanel, DC, pos, - track->ReturnMaskLayer(), track->m_NetCode ); + track->ReturnMaskLayer(), track->GetNet() ); track->m_Flags |= IS_DRAGGED; NewTrack = NULL; NbPtNewTrack = 0; @@ -214,7 +214,7 @@ void WinEDA_PcbFrame::Start_MoveOneTrackSegment( TRACK* track, wxDC* DC, bool Dr DrawPanel->ManageCurseur = Show_MoveTrack; DrawPanel->ForceCloseManageCurseur = Exit_MoveTrack; - g_HightLigth_NetCode = track->m_NetCode; + g_HightLigth_NetCode = track->GetNet(); g_HightLigt_Status = TRUE; DrawHightLight( DC, g_HightLigth_NetCode ); DrawPanel->ManageCurseur( DrawPanel, DC, TRUE ); diff --git a/pcbnew/move_or_drag_track.cpp b/pcbnew/move_or_drag_track.cpp index 4ee8bbef70..66003f5c11 100644 --- a/pcbnew/move_or_drag_track.cpp +++ b/pcbnew/move_or_drag_track.cpp @@ -618,7 +618,7 @@ void WinEDA_PcbFrame::Start_MoveOneNodeOrSegment( TRACK* track, wxDC* DC, int co if( command != ID_POPUP_PCB_MOVE_TRACK_SEGMENT ) { Collect_TrackSegmentsToDrag( DrawPanel, DC, track->m_Start, - track->ReturnMaskLayer(), track->m_NetCode ); + track->ReturnMaskLayer(), track->GetNet() ); } NewTrack = track; NbPtNewTrack = 1; @@ -639,17 +639,17 @@ void WinEDA_PcbFrame::Start_MoveOneNodeOrSegment( TRACK* track, wxDC* DC, int co case ID_POPUP_PCB_DRAG_TRACK_SEGMENT: pos = track->m_Start; Collect_TrackSegmentsToDrag( DrawPanel, DC, pos, - track->ReturnMaskLayer(), track->m_NetCode ); + track->ReturnMaskLayer(), track->GetNet() ); pos = track->m_End; track->m_Flags |= IS_DRAGGED | ENDPOINT | STARTPOINT; Collect_TrackSegmentsToDrag( DrawPanel, DC, pos, - track->ReturnMaskLayer(), track->m_NetCode ); + track->ReturnMaskLayer(), track->GetNet() ); break; case ID_POPUP_PCB_MOVE_TRACK_NODE: pos = (diag & STARTPOINT) ? track->m_Start : track->m_End; Collect_TrackSegmentsToDrag( DrawPanel, DC, pos, - track->ReturnMaskLayer(), track->m_NetCode ); + track->ReturnMaskLayer(), track->GetNet() ); PosInit = pos; break; } @@ -660,7 +660,7 @@ void WinEDA_PcbFrame::Start_MoveOneNodeOrSegment( TRACK* track, wxDC* DC, int co DrawPanel->ManageCurseur = Show_MoveNode; DrawPanel->ForceCloseManageCurseur = Abort_MoveTrack; - g_HightLigth_NetCode = track->m_NetCode; + g_HightLigth_NetCode = track->GetNet(); g_HightLigt_Status = TRUE; DrawHightLight( DC, g_HightLigth_NetCode ); DrawPanel->ManageCurseur( DrawPanel, DC, TRUE ); @@ -753,7 +753,7 @@ void WinEDA_PcbFrame::Start_DragTrackSegmentAndKeepSlope( TRACK* track, wxDC* DC DrawPanel->ManageCurseur = Show_Drag_Track_Segment_With_Cte_Slope; DrawPanel->ForceCloseManageCurseur = Abort_MoveTrack; - g_HightLigth_NetCode = track->m_NetCode; + g_HightLigth_NetCode = track->GetNet(); g_HightLigt_Status = TRUE; DrawHightLight( DC, g_HightLigth_NetCode ); @@ -778,7 +778,7 @@ bool WinEDA_PcbFrame::PlaceDraggedTrackSegment( TRACK* Track, wxDC* DC ) if( Track == NULL ) return FALSE; - int current_net_code = Track->m_NetCode; + int current_net_code = Track->GetNet(); // DRC control: if( Drc_On ) diff --git a/pcbnew/ratsnest.cpp b/pcbnew/ratsnest.cpp index 8228453d0c..76b0e1328c 100644 --- a/pcbnew/ratsnest.cpp +++ b/pcbnew/ratsnest.cpp @@ -79,7 +79,7 @@ static int tri_par_net( const void* o1, const void* o2 ) LISTE_PAD* pt_ref = (LISTE_PAD*) o1; LISTE_PAD* pt_compare = (LISTE_PAD*) o2; - return (*pt_ref)->m_NetCode - (*pt_compare)->m_NetCode; + return (*pt_ref)->GetNet() - (*pt_compare)->GetNet(); } @@ -151,9 +151,8 @@ static int gen_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC, continue; /* Comparaison des distances des pastilles (calcul simplifie) */ - current_dist = - abs( curr_pad->m_Pos.x - ref_pad->m_Pos.x ) - + abs( curr_pad->m_Pos.y - ref_pad->m_Pos.y ); + current_dist = abs( curr_pad->m_Pos.x - ref_pad->m_Pos.x ) + + abs( curr_pad->m_Pos.y - ref_pad->m_Pos.y ); if( dist_min > current_dist ) { @@ -177,7 +176,7 @@ static int gen_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC, pt_liste_pad = pt_liste_pad_block1; (*nblinks)++; - g_pt_chevelu->m_NetCode = (*pt_liste_pad)->m_NetCode; + g_pt_chevelu->SetNet( (*pt_liste_pad)->GetNet() ); g_pt_chevelu->status = CH_ACTIF | CH_VISIBLE; g_pt_chevelu->dist = dist_min; g_pt_chevelu->pad_start = *pt_liste_pad; @@ -255,9 +254,8 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC, pad = *pt_liste_pad_aux; /* Comparaison des distances des pastilles (calcul simplifie) */ - current_dist = - abs( pad->m_Pos.x - ref_pad->m_Pos.x ) - + abs( pad->m_Pos.y - ref_pad->m_Pos.y ); + current_dist = abs( pad->m_Pos.x - ref_pad->m_Pos.x ) + + abs( pad->m_Pos.y - ref_pad->m_Pos.y ); if( dist_min > current_dist ) { @@ -285,7 +283,7 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC, } (*nblinks)++; - g_pt_chevelu->m_NetCode = ref_pad->m_NetCode; + g_pt_chevelu->SetNet( ref_pad->GetNet() ); g_pt_chevelu->status = CH_ACTIF | CH_VISIBLE; g_pt_chevelu->dist = dist_min; g_pt_chevelu->pad_start = ref_pad; @@ -396,7 +394,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) pt_deb_liste_ch = g_pt_chevelu; pad = *pt_liste_pad; /* saut des pads non connectes */ - if( pad->m_NetCode == 0 ) + if( pad->GetNet() == 0 ) { pt_liste_pad++; pt_start_liste = pt_liste_pad; continue; @@ -409,7 +407,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) if( pt_end_liste >= pt_liste_pad_limite ) break; pad = *pt_end_liste; - if( pad->m_NetCode != current_net_code ) + if( pad->GetNet() != current_net_code ) break; nbpads++; if( num_block < pad->m_logical_connexion ) @@ -454,7 +452,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) pt_liste_pad = pt_start_liste = pt_end_liste; pt_deb_liste_ch = g_pt_chevelu; if( pt_start_liste < pt_liste_pad_limite ) - current_net_code = (*pt_start_liste)->m_NetCode; + current_net_code = (*pt_start_liste)->GetNet(); } m_Pcb->m_NbNoconnect = noconn; @@ -519,7 +517,7 @@ void WinEDA_BasePcbFrame::DrawGeneralRatsnest( wxDC* DC, int net_code ) if( ( Chevelu->status & (CH_VISIBLE | CH_ACTIF) ) != (CH_VISIBLE | CH_ACTIF) ) continue; - if( (net_code <= 0) || (net_code == Chevelu->m_NetCode) ) + if( (net_code <= 0) || (net_code == Chevelu->GetNet()) ) { GRLine( &DrawPanel->m_ClipBox, DC, Chevelu->pad_start->m_Pos.x, Chevelu->pad_start->m_Pos.y, @@ -765,7 +763,7 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code() { if( (*pad_courant)->m_Netname.IsEmpty() ) // pad non connecte { - (*pad_courant)->m_NetCode = 0; + (*pad_courant)->SetNet( 0 ); continue; } @@ -784,10 +782,10 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code() /* si pad_ref = pad_courant: nouveau net sinon, deja net deja traite */ if( pad_ref == pad_courant ) { - m_Pcb->m_NbNets++; (*pad_courant)->m_NetCode = m_Pcb->m_NbNets; + m_Pcb->m_NbNets++; (*pad_courant)->SetNet( m_Pcb->m_NbNets ); } else - (*pad_courant)->m_NetCode = (*pad_ref)->m_NetCode; + (*pad_courant)->SetNet( (*pad_ref)->GetNet() ); } /* Construction ou correction de la liste des equipotentielles, @@ -815,7 +813,7 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code() pt_equipot->Pnext = NULL; } - pt_equipot->m_NetCode = ii; // Mise a jour du numero d'equipot + pt_equipot->SetNet( ii ); // Mise a jour du numero d'equipot pt_equipot->m_NbNodes = 0; pt_equipot->m_Netname.Empty(); @@ -839,7 +837,7 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code() /* Placement des noms de net en structure EQUIPOT */ for( ii = m_Pcb->m_NbPads; ii > 0; pad_courant++, ii-- ) { - jj = (*pad_courant)->m_NetCode; + jj = (*pad_courant)->GetNet(); pt_equipot = BufPtEquipot[jj]; pt_equipot->m_NbNodes++; if( pt_equipot->m_Netname.IsEmpty() ) @@ -926,7 +924,7 @@ void WinEDA_BasePcbFrame::build_liste_pads() PtPad->m_logical_connexion = 0; PtPad->m_Parent = Module; - if( PtPad->m_NetCode ) + if( PtPad->GetNet() ) m_Pcb->m_NbNodes++; pt_liste_pad++; @@ -998,7 +996,7 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module ) pad_ref = Module->m_Pads; for( ; pad_ref != NULL; pad_ref = (D_PAD*) pad_ref->Pnext ) { - if( pad_ref->m_NetCode == 0 ) + if( pad_ref->GetNet() == 0 ) continue; *pt_liste_pad = pad_ref; @@ -1021,15 +1019,15 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module ) for( ii = 0; ii < nb_pads_ref; ii++ ) { pad_ref = pt_liste_ref[ii]; - if( pad_ref->m_NetCode == current_net_code ) + if( pad_ref->GetNet() == current_net_code ) continue; - current_net_code = pad_ref->m_NetCode; + current_net_code = pad_ref->GetNet(); pt_liste_generale = m_Pcb->m_Pads; for( jj = m_Pcb->m_NbPads; jj > 0; jj-- ) { pad_externe = *pt_liste_generale; pt_liste_generale++; - if( pad_externe->m_NetCode != current_net_code ) + if( pad_externe->GetNet() != current_net_code ) continue; if( pad_externe->m_Parent == Module ) @@ -1056,7 +1054,7 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module ) g_pt_chevelu = local_liste_chevelu; pt_liste_pad = pt_start_liste = (LISTE_PAD*) adr_lowmem; pt_liste_pad_limite = pt_liste_pad + nb_pads_ref; - current_net_code = (*pt_liste_pad)->m_NetCode; + current_net_code = (*pt_liste_pad)->GetNet(); for( ; pt_liste_pad < pt_liste_pad_limite; ) { @@ -1067,7 +1065,7 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module ) if( pt_end_liste >= pt_liste_pad_limite ) break; - if( (*pt_end_liste)->m_NetCode != current_net_code ) + if( (*pt_end_liste)->GetNet() != current_net_code ) break; } @@ -1085,7 +1083,7 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module ) pt_liste_pad = pt_start_liste = pt_end_liste; if( pt_start_liste < pt_liste_pad_limite ) - current_net_code = (*pt_start_liste)->m_NetCode; + current_net_code = (*pt_start_liste)->GetNet(); } pt_fin_int_chevelu = local_chevelu = g_pt_chevelu; @@ -1115,14 +1113,14 @@ calcul_chevelu_ext: pt_liste_ref = (LISTE_PAD*) adr_lowmem; pad_ref = *pt_liste_ref; - current_net_code = pad_ref->m_NetCode; + current_net_code = pad_ref->GetNet(); local_chevelu->dist = 0x7FFFFFFF; local_chevelu->status = 0; increment = 0; for( ii = 0; ii < nb_pads_ref; ii++ ) { pad_ref = *(pt_liste_ref + ii); - if( pad_ref->m_NetCode != current_net_code ) + if( pad_ref->GetNet() != current_net_code ) { /* un nouveau chevelu est cree (si necessaire) pour * chaque nouveau net */ @@ -1131,7 +1129,7 @@ calcul_chevelu_ext: nb_local_chevelu++; local_chevelu++; } increment = 0; - current_net_code = pad_ref->m_NetCode; + current_net_code = pad_ref->GetNet(); local_chevelu->dist = 0x7FFFFFFF; } @@ -1144,10 +1142,10 @@ calcul_chevelu_ext: pad_externe = *pt_liste_generale; pt_liste_generale++; /* les netcodes doivent etre identiques */ - if( pad_externe->m_NetCode < pad_ref->m_NetCode ) + if( pad_externe->GetNet() < pad_ref->GetNet() ) continue; - if( pad_externe->m_NetCode > pad_ref->m_NetCode ) + if( pad_externe->GetNet() > pad_ref->GetNet() ) break; distance = abs( pad_externe->m_Pos.x - pad_pos_X ) + @@ -1157,7 +1155,7 @@ calcul_chevelu_ext: { local_chevelu->pad_start = pad_ref; local_chevelu->pad_end = pad_externe; - local_chevelu->m_NetCode = pad_ref->m_NetCode; + local_chevelu->SetNet( pad_ref->GetNet() ); local_chevelu->dist = distance; local_chevelu->status = 0; increment = 1; @@ -1300,7 +1298,7 @@ int* WinEDA_BasePcbFrame::build_ratsnest_pad( EDA_BaseStruct* ref, { case TYPEPAD: pad_ref = (D_PAD*) ref; - current_net_code = pad_ref->m_NetCode; + current_net_code = pad_ref->GetNet(); conn_number = pad_ref->m_physical_connexion; break; @@ -1308,8 +1306,8 @@ int* WinEDA_BasePcbFrame::build_ratsnest_pad( EDA_BaseStruct* ref, case TYPEVIA: { TRACK* track_ref = (TRACK*) ref; - current_net_code = track_ref->m_NetCode; - conn_number = track_ref->m_Sous_Netcode; + current_net_code = track_ref->GetNet(); + conn_number = track_ref->GetSubNet(); break; } @@ -1320,8 +1318,8 @@ int* WinEDA_BasePcbFrame::build_ratsnest_pad( EDA_BaseStruct* ref, if( current_net_code <= 0 ) return NULL; - *pt_coord = refpos.x; pt_coord++; - *pt_coord = refpos.y; pt_coord++; + *pt_coord++ = refpos.x; + *pt_coord++ = refpos.y; if( m_Pcb->m_Ratsnest == NULL ) return NULL; @@ -1330,7 +1328,7 @@ int* WinEDA_BasePcbFrame::build_ratsnest_pad( EDA_BaseStruct* ref, for( ii = 0; ii < m_Pcb->m_NbPads; padlist++, ii++ ) { D_PAD* pad = *padlist; - if( pad->m_NetCode != current_net_code ) + if( pad->GetNet() != current_net_code ) continue; if( pad == pad_ref ) @@ -1346,7 +1344,8 @@ int* WinEDA_BasePcbFrame::build_ratsnest_pad( EDA_BaseStruct* ref, } /* Fin Init */ else if( nb_local_chevelu ) { - *pt_coord = refpos.x; *(pt_coord + 1) = refpos.y; + *pt_coord = refpos.x; + *(pt_coord + 1) = refpos.y; } qsort( base_data + 2, nb_local_chevelu, 2 * sizeof(int), @@ -1378,8 +1377,8 @@ void WinEDA_BasePcbFrame::trace_ratsnest_pad( wxDC* DC ) pt_coord = (int*) local_liste_chevelu; - refX = *pt_coord; pt_coord++; - refY = *pt_coord; pt_coord++; + refX = *pt_coord++; + refY = *pt_coord++; GRSetDrawMode( DC, GR_XOR ); for( ii = 0; ii < nb_local_chevelu; ii++ ) diff --git a/pcbnew/router.cpp b/pcbnew/router.cpp index ea55bf220a..44832ad76b 100644 --- a/pcbnew/router.cpp +++ b/pcbnew/router.cpp @@ -162,7 +162,7 @@ static void Out_Pads( BOARD* Pcb, FILE* outfile ) if( pt_liste_pad == NULL ) return; - netcode = (*pt_liste_pad)->m_NetCode; + netcode = (*pt_liste_pad)->GetNet(); nb_pads = 1; plink = 0; for( ; pt_liste_pad < pt_liste_pad_limite; ) { @@ -171,7 +171,7 @@ static void Out_Pads( BOARD* Pcb, FILE* outfile ) { if( pt_end_liste >= pt_liste_pad_limite ) break; - if( (*pt_end_liste)->m_NetCode != netcode ) + if( (*pt_end_liste)->GetNet() != netcode ) break; nb_pads++; } @@ -197,7 +197,7 @@ static void Out_Pads( BOARD* Pcb, FILE* outfile ) for( ; pt_liste_pad < pt_end_liste; pt_liste_pad++ ) { pt_pad = *pt_liste_pad; - netcode = pt_pad->m_NetCode; + netcode = pt_pad->GetNet(); plink = pt_pad->m_physical_connexion; /* plink = numero unique si pad non deja connecte a une piste */ if( plink <= 0 ) @@ -308,7 +308,7 @@ static void Out_Pads( BOARD* Pcb, FILE* outfile ) nb_pads = 1; pt_liste_pad = pt_start_liste = pt_end_liste; if( pt_start_liste < pt_liste_pad_limite ) - netcode = (*pt_start_liste)->m_NetCode; + netcode = (*pt_start_liste)->GetNet(); } } @@ -332,9 +332,9 @@ static void ReturnNbViasAndTracks( BOARD* Pcb, int netcode, int* nb_vias, for( ; track != NULL; track = (TRACK*) track->Pnext ) { - if( track->m_NetCode > netcode ) + if( track->GetNet() > netcode ) return; - if( track->m_NetCode != netcode ) + if( track->GetNet() != netcode ) continue; if( track->Type() == TYPEVIA ) (*nb_vias)++; @@ -362,12 +362,12 @@ static void GenExistantTracks( BOARD* Pcb, FILE* outfile, for( ; track != NULL; track = (TRACK*) track->Pnext ) { - netcode = track->m_NetCode; + netcode = track->GetNet(); if( netcode > current_net_code ) return; if( netcode != current_net_code ) continue; - plink = track->m_Sous_Netcode; + plink = track->GetSubNet(); via_min_layer = track->GetLayer(); if( track->Type() != type ) diff --git a/pcbnew/solve.cpp b/pcbnew/solve.cpp index ffb4fd34aa..0db6c7437f 100644 --- a/pcbnew/solve.cpp +++ b/pcbnew/solve.cpp @@ -361,7 +361,7 @@ static int Route_1_Trace( WinEDA_PcbFrame* pcbframe, wxDC* DC, masque_layers = masque_layer_TOP | masque_layer_BOTTOM; pt_cur_ch = pt_chevelu; - current_net_code = pt_chevelu->m_NetCode; + current_net_code = pt_chevelu->GetNet(); pad_masque_layer_s = pt_cur_ch->pad_start->m_Masque_Layer; pad_masque_layer_e = pt_cur_ch->pad_end->m_Masque_Layer; @@ -936,7 +936,7 @@ static void OrCell_Trace( BOARD* pcb, int col, int row, (g_GridRoutingSize * col); g_CurrentTrackSegment->m_Width = g_DesignSettings.m_CurrentViaSize; g_CurrentTrackSegment->m_Shape = g_DesignSettings.m_CurrentViaType; - g_CurrentTrackSegment->m_NetCode = current_net_code; + g_CurrentTrackSegment->SetNet( current_net_code ); } else /* Placement d'un segment standard */ { @@ -958,7 +958,7 @@ static void OrCell_Trace( BOARD* pcb, int col, int row, g_CurrentTrackSegment->SetState( SEGM_AR, ON ); g_CurrentTrackSegment->m_End.x = pcb->m_BoundaryBox.m_Pos.x + (g_GridRoutingSize * row); g_CurrentTrackSegment->m_End.y = pcb->m_BoundaryBox.m_Pos.y + (g_GridRoutingSize * col); - g_CurrentTrackSegment->m_NetCode = current_net_code; + g_CurrentTrackSegment->SetNet( current_net_code ); if( g_CurrentTrackSegment->Pback == NULL ) /* Start Piste */ { @@ -1090,7 +1090,7 @@ static void Place_Piste_en_Buffer( WinEDA_PcbFrame* pcbframe, wxDC* DC ) Trace_Une_Piste( panel, DC, g_FirstTrackSegment, g_TrackSegmentCount, GR_OR ); - pcbframe->test_1_net_connexion( DC, g_FirstTrackSegment->m_NetCode ); + pcbframe->test_1_net_connexion( DC, g_FirstTrackSegment->GetNet() ); /* Trace de la forme exacte de la piste en BOARD */ for( pt_track = g_FirstTrackSegment; ; pt_track = (TRACK*) pt_track->Pnext ) diff --git a/pcbnew/surbrill.cpp b/pcbnew/surbrill.cpp index ef3ad02570..9a7c8cf0e1 100644 --- a/pcbnew/surbrill.cpp +++ b/pcbnew/surbrill.cpp @@ -46,7 +46,7 @@ void WinEDA_PcbFrame::Liste_Equipot( wxCommandEvent& event ) if( !WildCompareString( msg, Equipot->m_Netname, FALSE ) ) continue; - Line.Printf( wxT( "net_code = %3.3d [%.16s] " ), Equipot->m_NetCode, + Line.Printf( wxT( "net_code = %3.3d [%.16s] " ), Equipot->GetNet(), Equipot->m_Netname.GetData() ); List->Append( Line ); } @@ -64,7 +64,7 @@ void WinEDA_PcbFrame::Liste_Equipot( wxCommandEvent& event ) continue; if( ii == jj ) { - ii = Equipot->m_NetCode; + ii = Equipot->GetNet(); break; } jj++; @@ -99,7 +99,7 @@ int WinEDA_PcbFrame::Select_High_Light( wxDC* DC ) pt_piste = Locate_Pistes( m_Pcb->m_Track, masquelayer, CURSEUR_OFF_GRILLE ); if( pt_piste ) { - code = g_HightLigth_NetCode = pt_piste->m_NetCode; + code = g_HightLigth_NetCode = pt_piste->GetNet(); Hight_Light( DC ); } else @@ -107,7 +107,7 @@ int WinEDA_PcbFrame::Select_High_Light( wxDC* DC ) pt_pad = Locate_Any_Pad( m_Pcb, CURSEUR_OFF_GRILLE ); if( pt_pad != NULL ) { - code = g_HightLigth_NetCode = pt_pad->m_NetCode; + code = g_HightLigth_NetCode = pt_pad->GetNet(); Hight_Light( DC ); SendMessageToEESCHEMA( pt_pad ); } @@ -157,7 +157,7 @@ void WinEDA_PcbFrame::DrawHightLight( wxDC* DC, int NetCode ) /* Redraw track and vias: */ for( pts = m_Pcb->m_Track; pts != NULL; pts = (TRACK*) pts->Pnext ) { - if( pts->m_NetCode == NetCode ) + if( pts->GetNet() == NetCode ) { pts->Draw( DrawPanel, DC, draw_mode ); } @@ -176,7 +176,7 @@ static void Pad_Surbrillance( WinEDA_DrawPanel* panel, /* trace des pastilles */ for( pt_pad = Module->m_Pads; pt_pad != NULL; pt_pad = (D_PAD*) pt_pad->Pnext ) { - if( pt_pad->m_NetCode == NetCode ) + if( pt_pad->GetNet() == NetCode ) { pt_pad->Draw( panel, DC, wxPoint( 0, 0 ), draw_mode ); } diff --git a/pcbnew/tr_modif.cpp b/pcbnew/tr_modif.cpp index c604fae91b..8ca0b74062 100644 --- a/pcbnew/tr_modif.cpp +++ b/pcbnew/tr_modif.cpp @@ -54,10 +54,10 @@ TRACK * BufDeb, *BufEnd; /* Pointeurs de debut et de fin de la zone /* Calcul des limites de recherche des segments de piste */ /* BufDeb pointe le 1er segment utile */ - BufDeb = Pcb->m_Track->GetStartNetCode(pt_new_track->m_NetCode); + BufDeb = Pcb->m_Track->GetStartNetCode(pt_new_track->GetNet()); /* BufEnd Pointe le dernier segment */ - BufEnd = BufDeb->GetEndNetCode(pt_new_track->m_NetCode); + BufEnd = BufDeb->GetEndNetCode(pt_new_track->GetNet()); /* nettoyage des flags pour tout le net */ for(pt_del = BufDeb; pt_del != NULL; pt_del = (TRACK*)pt_del->Pnext) diff --git a/pcbnew/undelete.cpp b/pcbnew/undelete.cpp index fa2fd36764..2d1c4bd330 100644 --- a/pcbnew/undelete.cpp +++ b/pcbnew/undelete.cpp @@ -45,7 +45,7 @@ void WinEDA_PcbFrame::UnDeleteItem( wxDC* DC ) } PtStruct = g_UnDeleteStack[g_UnDeleteStackPtr]; - net_code = ( (TRACK*) PtStruct )->m_NetCode; + net_code = ( (TRACK*) PtStruct )->GetNet(); pt_track = ( (TRACK*) PtStruct )->GetBestInsertPoint( m_Pcb ); ( (TRACK*) PtStruct )->Insert( m_Pcb, pt_track ); g_UnDeleteStack[g_UnDeleteStackPtr] = NULL; diff --git a/pcbnew/xchgmod.cpp b/pcbnew/xchgmod.cpp index 7b26870e56..4b0d2b8f56 100644 --- a/pcbnew/xchgmod.cpp +++ b/pcbnew/xchgmod.cpp @@ -559,7 +559,7 @@ MODULE* WinEDA_BasePcbFrame::Exchange_Module( wxWindow* winaff, for( ; pt_pad != NULL; pt_pad = (D_PAD*) pt_pad->Pnext ) { pt_pad->m_Netname = wxEmptyString; - pt_pad->m_NetCode = 0; + pt_pad->SetNet( 0 ); pt_old_pad = OldModule->m_Pads; for( ; pt_old_pad != NULL; pt_old_pad = (D_PAD*) pt_old_pad->Pnext ) { @@ -567,7 +567,7 @@ MODULE* WinEDA_BasePcbFrame::Exchange_Module( wxWindow* winaff, sizeof(pt_pad->m_Padname) ) == 0 ) { pt_pad->m_Netname = pt_old_pad->m_Netname; - pt_pad->m_NetCode = pt_old_pad->m_NetCode; + pt_pad->SetNet( pt_old_pad->GetNet() ); } } } diff --git a/pcbnew/zones.cpp b/pcbnew/zones.cpp index 5bc27fe052..d7857294ef 100644 --- a/pcbnew/zones.cpp +++ b/pcbnew/zones.cpp @@ -543,13 +543,13 @@ void WinEDA_PcbFrame::CaptureNetName( wxDC* DC ) if( pt_pad ) { pt_pad->Display_Infos( this ); - netcode = pt_pad->m_NetCode; + netcode = pt_pad->GetNet(); } } else { adrpiste->Display_Infos( this ); - netcode = adrpiste->m_NetCode; + netcode = adrpiste->GetNet(); } // Mise en surbrillance du net @@ -584,7 +584,7 @@ static void Display_Zone_Netname( WinEDA_PcbFrame* frame ) { for( ; pt_equipot != NULL; pt_equipot = (EQUIPOT*) pt_equipot->Pnext ) { - if( pt_equipot->m_NetCode == g_HightLigth_NetCode ) + if( pt_equipot->GetNet() == g_HightLigth_NetCode ) break; } @@ -920,7 +920,7 @@ void WinEDA_PcbFrame::Fill_Zone( wxDC* DC ) TRACK* pt_segm = m_Pcb->m_Track; for( ; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext ) { - if( g_HightLigth_NetCode != pt_segm->m_NetCode ) + if( g_HightLigth_NetCode != pt_segm->GetNet() ) continue; if( pt_segm->GetLayer() != GetScreen()->m_Active_Layer ) continue; @@ -1087,7 +1087,7 @@ static void Genere_Segments_Zone( WinEDA_PcbFrame* frame, wxDC* DC, int net_code /* un segment avait debute de longueur > 0 */ pt_track = new SEGZONE( frame->m_Pcb ); pt_track->SetLayer( layer ); - pt_track->m_NetCode = net_code; + pt_track->SetNet( net_code ); pt_track->m_Width = g_GridRoutingSize; pt_track->m_Start.x = ux0; pt_track->m_Start.y = uy0; pt_track->m_End.x = ux1; pt_track->m_End.y = uy1; @@ -1126,7 +1126,7 @@ static void Genere_Segments_Zone( WinEDA_PcbFrame* frame, wxDC* DC, int net_code pt_track = new SEGZONE( frame->m_Pcb ); pt_track->SetLayer( layer ); pt_track->m_Width = g_GridRoutingSize; - pt_track->m_NetCode = net_code; + pt_track->SetNet( net_code ); pt_track->m_Start.x = ux0; pt_track->m_Start.y = uy0; pt_track->m_End.x = ux1; pt_track->m_End.y = uy1; pt_track->m_TimeStamp = s_TimeStamp; @@ -1310,7 +1310,7 @@ static bool Genere_Pad_Connexion( WinEDA_PcbFrame* frame, wxDC* DC, int layer ) pt_pad = *pt_liste_pad; /* la pastille doit etre du meme net */ - if( pt_pad->m_NetCode != g_HightLigth_NetCode ) + if( pt_pad->GetNet() != g_HightLigth_NetCode ) continue; /* la pastille doit exister sur la couche */ @@ -1329,7 +1329,7 @@ static bool Genere_Pad_Connexion( WinEDA_PcbFrame* frame, wxDC* DC, int layer ) pt_pad = *pt_liste_pad; /* la pastille doit etre du meme net */ - if( pt_pad->m_NetCode != g_HightLigth_NetCode ) + if( pt_pad->GetNet() != g_HightLigth_NetCode ) continue; /* la pastille doit exister sur la couche */ if( (pt_pad->m_Masque_Layer & g_TabOneLayerMask[layer]) == 0 ) @@ -1365,7 +1365,7 @@ static bool Genere_Pad_Connexion( WinEDA_PcbFrame* frame, wxDC* DC, int layer ) pt_track->SetLayer( layer ); pt_track->m_Width = g_DesignSettings.m_CurrentTrackWidth; - pt_track->m_NetCode = g_HightLigth_NetCode; + pt_track->SetNet( g_HightLigth_NetCode ); pt_track->start = pt_pad; pt_track->m_Start.x = cX; pt_track->m_Start.y = cY; pt_track->m_End.x = cX + sommet[jj][0]; diff --git a/share/drawpanel.cpp b/share/drawpanel.cpp index ce7e2302d7..7b5dab958c 100644 --- a/share/drawpanel.cpp +++ b/share/drawpanel.cpp @@ -683,7 +683,7 @@ void WinEDA_DrawPanel::m_Draw_Auxiliary_Axis( wxDC* DC, int drawmode ) /********************************************************************/ { if( m_Parent->m_Auxiliary_Axis_Position.x == 0 - && m_Parent->m_Auxiliary_Axis_Position.y == 0 ) + && m_Parent->m_Auxiliary_Axis_Position.y == 0 ) return; int Color = DARKRED;