From fe504483993e9b1500fc701a61582396ca39f834 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Sun, 13 Feb 2011 18:53:48 +0100 Subject: [PATCH] Pcbnew: remove duplicate definitions of some flags (like EDIT and IN_EDIT) that have exactly the same meaning, but different values... (very dangerous) Remove obsolete code. --- include/base_struct.h | 22 ++++++++---- include/pcbstruct.h | 18 ---------- pcbnew/attribut.cpp | 12 +++---- pcbnew/class_dimension.cpp | 3 -- pcbnew/class_drawsegment.cpp | 3 -- pcbnew/class_mire.cpp | 3 -- pcbnew/class_module.cpp | 3 -- pcbnew/class_pcb_text.cpp | 3 -- pcbnew/class_track.cpp | 37 +++++++++----------- pcbnew/class_zone.cpp | 3 -- pcbnew/connect.cpp | 2 +- pcbnew/deltrack.cpp | 6 ---- pcbnew/dialogs/dialog_global_deletion.cpp | 6 ++-- pcbnew/dragsegm.cpp | 2 +- pcbnew/edgemod.cpp | 41 +++++++++++++---------- pcbnew/editedge.cpp | 18 +++++----- pcbnew/editrack.cpp | 4 +-- pcbnew/locate.cpp | 24 ++++++------- pcbnew/modules.cpp | 8 ++--- pcbnew/move-drag_pads.cpp | 4 +-- pcbnew/move_or_drag_track.cpp | 6 ++-- pcbnew/onrightclick.cpp | 2 +- pcbnew/pcbnew.h | 17 ++-------- pcbnew/solve.cpp | 4 +-- pcbnew/tr_modif.cpp | 32 +++++++++--------- 25 files changed, 119 insertions(+), 164 deletions(-) diff --git a/include/base_struct.h b/include/base_struct.h index d567e9f4ce..fed9fc3d1e 100644 --- a/include/base_struct.h +++ b/include/base_struct.h @@ -292,13 +292,13 @@ class DHEAD; // These define are used for the .m_Flags and .m_UndoRedoStatus member of the // class EDA_ITEM -#define IS_CHANGED (1 << 0) -#define IS_LINKED (1 << 1) -#define IN_EDIT (1 << 2) -#define IS_MOVED (1 << 3) -#define IS_NEW (1 << 4) -#define IS_RESIZED (1 << 5) -#define IS_DRAGGED (1 << 6) +#define IS_CHANGED (1 << 0) ///< Item was edited, and modified +#define IS_LINKED (1 << 1) ///< Used in calculation to mark linked items (temporary use) +#define IN_EDIT (1 << 2) ///< Item currently edited +#define IS_MOVED (1 << 3) ///< Item being moved +#define IS_NEW (1 << 4) ///< New item, just created +#define IS_RESIZED (1 << 5) ///< Item being resized +#define IS_DRAGGED (1 << 6) ///< Item being dragged #define IS_DELETED (1 << 7) #define IS_WIRE_IMAGE (1 << 8) #define STARTPOINT (1 << 9) @@ -311,6 +311,14 @@ class DHEAD; #define DO_NOT_DRAW (1 << 16) ///< Used to disable draw function #define IS_CANCELLED (1 << 17) ///< flag set when edit dialogs are canceled when editing a ///< new object +#define TRACK_LOCKED (1 << 18) ///< Pcbnew: track locked: protected from global deletion +#define TRACK_AR (1 << 19) ///< Pcbnew: autorouted track +#define FLAG1 (1 << 20) ///< Pcbnew: flag used in local computations +#define FLAG0 (1 << 21) ///< Pcbnew: flag used in local computations +#define BEGIN_ONPAD (1 << 22) ///< Pcbnew: flag set for track segment starting on a pad +#define END_ONPAD (1 << 23) ///< Pcbnew: flag set for track segment ending on a pad +#define BUSY (1 << 24) ///< Pcbnew: flag indicating that the structure has + // already been edited, in some functions class EDA_ITEM { diff --git a/include/pcbstruct.h b/include/pcbstruct.h index fd51ed3aa4..e0cbf6f0a2 100644 --- a/include/pcbstruct.h +++ b/include/pcbstruct.h @@ -16,24 +16,6 @@ #define L_ENTETE_LIB 18 #define EXT_DOC wxT( "mdc" ) - -#define FLAG1 (1 << 13) // flag for free local computations -#define FLAG0 (1 << 12) // flag for free local computations -#define BEGIN_ONPAD (1 << 11) // flag indicating a start of segment pad -#define END_ONPAD (1 << 10) // flag indicating an end of segment pad -#define BUSY (1 << 9) // flag indicating that the structure has - // already been edited, in some routines -#define DELETED (1 << 8) // structures erased and set string "DELETED" -#define NO_TRACE (1 << 7) // The element must not be displayed - -#define SURBRILL (1 << 5) // element highlighted -#define DRAG (1 << 4) // segment in drag mode -#define EDIT (1 << 3) // element being edited -#define SEGM_FIXE (1 << 2) // segment fixed (not erase global) -#define SEGM_AR (1 << 1) // segment marked for auto routing -#define CHAIN (1 << 0) // mark segment - - class NETINFO_ITEM; class MARKER_PCB; class RATSNEST_ITEM; diff --git a/pcbnew/attribut.cpp b/pcbnew/attribut.cpp index 1730aa607d..e0e671542b 100644 --- a/pcbnew/attribut.cpp +++ b/pcbnew/attribut.cpp @@ -13,8 +13,8 @@ /* Attribute change for 1 track segment. * Attributes are - * SEGM_FIXE protection against global delete - * SEGM_AR AutoRouted segment + * TRACK_LOCKED protection against global delete + * TRACK_AR AutoRouted segment */ void WinEDA_PcbFrame::Attribut_Segment( TRACK* track, wxDC* DC, bool Flag_On ) { @@ -23,7 +23,7 @@ void WinEDA_PcbFrame::Attribut_Segment( TRACK* track, wxDC* DC, bool Flag_On ) OnModify(); DrawPanel->CrossHairOff( DC ); // Erase cursor shape - track->SetState( SEGM_FIXE, Flag_On ); + track->SetState( TRACK_LOCKED, Flag_On ); track->Draw( DrawPanel, DC, GR_OR | GR_SURBRILL ); DrawPanel->CrossHairOn( DC ); // Display cursor shape track->DisplayInfo( this ); @@ -45,7 +45,7 @@ void WinEDA_PcbFrame::Attribut_Track( TRACK* track, wxDC* DC, bool Flag_On ) for( ; (Track != NULL) && (nb_segm > 0); nb_segm-- ) { - Track->SetState( SEGM_FIXE, Flag_On ); + Track->SetState( TRACK_LOCKED, Flag_On ); Track->SetState( BUSY, OFF ); Track = Track->Next(); } @@ -56,7 +56,7 @@ void WinEDA_PcbFrame::Attribut_Track( TRACK* track, wxDC* DC, bool Flag_On ) } -/* Modify the flag SEGM_FIXE according to Flag_On value, +/* Modify the flag TRACK_LOCKED according to Flag_On value, * for all the segments related to net_code. * if net_code < 0 all the segments are modified. */ @@ -81,7 +81,7 @@ void WinEDA_PcbFrame::Attribut_net( wxDC* DC, int net_code, bool Flag_On ) break; OnModify(); - Track->SetState( SEGM_FIXE, Flag_On ); + Track->SetState( TRACK_LOCKED, Flag_On ); Track->Draw( DrawPanel, DC, GR_OR | GR_SURBRILL ); Track = Track->Next(); } diff --git a/pcbnew/class_dimension.cpp b/pcbnew/class_dimension.cpp index 62c9bec0b3..6deca20c97 100644 --- a/pcbnew/class_dimension.cpp +++ b/pcbnew/class_dimension.cpp @@ -348,9 +348,6 @@ void DIMENSION::Mirror(const wxPoint& axis_pos) bool DIMENSION::Save( FILE* aFile ) const { - if( GetState( DELETED ) ) - return true; - bool rc = false; // note: COTATION was the previous name of DIMENSION // this old keyword is used here for compatibility diff --git a/pcbnew/class_drawsegment.cpp b/pcbnew/class_drawsegment.cpp index c60c9bfb57..bb0a2c6b84 100644 --- a/pcbnew/class_drawsegment.cpp +++ b/pcbnew/class_drawsegment.cpp @@ -79,9 +79,6 @@ void DRAWSEGMENT::Flip(const wxPoint& aCentre ) bool DRAWSEGMENT::Save( FILE* aFile ) const { - if( GetState( DELETED ) ) - return true; - bool rc = false; if( fprintf( aFile, "$DRAWSEGMENT\n" ) != sizeof("$DRAWSEGMENT\n") - 1 ) diff --git a/pcbnew/class_mire.cpp b/pcbnew/class_mire.cpp index 7b83f3f057..e9884bdbbe 100644 --- a/pcbnew/class_mire.cpp +++ b/pcbnew/class_mire.cpp @@ -70,9 +70,6 @@ bool MIREPCB::ReadMirePcbDescr( LINE_READER* aReader ) bool MIREPCB::Save( FILE* aFile ) const { - if( GetState( DELETED ) ) - return true; - bool rc = false; if( fprintf( aFile, "$MIREPCB\n" ) != sizeof("$MIREPCB\n")-1 ) diff --git a/pcbnew/class_module.cpp b/pcbnew/class_module.cpp index ee03d8470f..4f677156e8 100644 --- a/pcbnew/class_module.cpp +++ b/pcbnew/class_module.cpp @@ -261,9 +261,6 @@ bool MODULE::Save( FILE* aFile ) const char statusTxt[8]; BOARD_ITEM* item; - if( GetState( DELETED ) ) - return true; - bool rc = false; fprintf( aFile, "$MODULE %s\n", CONV_TO_UTF8( m_LibRef ) ); diff --git a/pcbnew/class_pcb_text.cpp b/pcbnew/class_pcb_text.cpp index 563fd506b6..6e2760da79 100644 --- a/pcbnew/class_pcb_text.cpp +++ b/pcbnew/class_pcb_text.cpp @@ -148,9 +148,6 @@ int TEXTE_PCB::ReadTextePcbDescr( LINE_READER* aReader ) bool TEXTE_PCB::Save( FILE* aFile ) const { - if( GetState( DELETED ) ) - return true; - if( m_Text.IsEmpty() ) return true; diff --git a/pcbnew/class_track.cpp b/pcbnew/class_track.cpp index 79c95c8829..455b7f1a7c 100644 --- a/pcbnew/class_track.cpp +++ b/pcbnew/class_track.cpp @@ -532,9 +532,6 @@ bool TRACK::Save( FILE* aFile ) const if( Type() == TYPE_VIA ) type = 1; - if( GetState( DELETED ) ) - return true; - fprintf( aFile, "Po %d %d %d %d %d %d %d\n", m_Shape, m_Start.x, m_Start.y, m_End.x, m_End.y, m_Width, m_Drill ); @@ -1020,10 +1017,10 @@ void TRACK::DisplayInfoBase( EDA_DRAW_FRAME* frame ) /* Display the State member */ msg = wxT( ". . " ); - if( GetState( SEGM_FIXE ) ) + if( GetState( TRACK_LOCKED ) ) msg[0] = 'F'; - if( GetState( SEGM_AR ) ) + if( GetState( TRACK_AR ) ) msg[2] = 'A'; frame->AppendMsgPanel( _( "Status" ), msg, MAGENTA ); @@ -1224,22 +1221,20 @@ wxString TRACK::ShowState( int stateBits ) { wxString ret; - if( stateBits & CHAIN ) - ret << wxT( " | CHAIN" ); - if( stateBits & SEGM_AR ) - ret << wxT( " | SEGM_AR" ); - if( stateBits & SEGM_FIXE ) - ret << wxT( " | SEGM_FIXE" ); - if( stateBits & EDIT ) - ret << wxT( " | EDIT" ); - if( stateBits & DRAG ) - ret << wxT( " | DRAG" ); - if( stateBits & SURBRILL ) - ret << wxT( " | SURBRILL" ); - if( stateBits & NO_TRACE ) - ret << wxT( " | NO_TRACE" ); - if( stateBits & DELETED ) - ret << wxT( " | DELETED" ); + if( stateBits & IS_LINKED ) + ret << wxT( " | IS_LINKED" ); + if( stateBits & TRACK_AR ) + ret << wxT( " | TRACK_AR" ); + if( stateBits & TRACK_LOCKED ) + ret << wxT( " | TRACK_LOCKED" ); + if( stateBits & IN_EDIT ) + ret << wxT( " | IN_EDIT" ); + if( stateBits & IS_DRAGGED ) + ret << wxT( " | IS_DRAGGED" ); + if( stateBits & DO_NOT_DRAW ) + ret << wxT( " | DO_NOT_DRAW" ); + if( stateBits & IS_DELETED ) + ret << wxT( " | IS_DELETED" ); if( stateBits & BUSY ) ret << wxT( " | BUSY" ); if( stateBits & END_ONPAD ) diff --git a/pcbnew/class_zone.cpp b/pcbnew/class_zone.cpp index 4c95ad1bc5..0048ee160a 100644 --- a/pcbnew/class_zone.cpp +++ b/pcbnew/class_zone.cpp @@ -94,9 +94,6 @@ void ZONE_CONTAINER::SetNet( int anet_code ) bool ZONE_CONTAINER::Save( FILE* aFile ) const /********************************************/ { - if( GetState( DELETED ) ) - return true; - unsigned item_pos; int ret; unsigned corners_count = m_Poly->corner.size(); diff --git a/pcbnew/connect.cpp b/pcbnew/connect.cpp index 1b2e6060b7..3942e29e57 100644 --- a/pcbnew/connect.cpp +++ b/pcbnew/connect.cpp @@ -610,7 +610,7 @@ void WinEDA_BasePcbFrame::RecalculateAllTracksNetcode( ) pt_piste = m_Pcb->m_Track; for( ; pt_piste != NULL; pt_piste = pt_piste->Next() ) { - pt_piste->SetState( BUSY | EDIT | BEGIN_ONPAD | END_ONPAD, OFF ); + pt_piste->SetState( BUSY | IN_EDIT | BEGIN_ONPAD | END_ONPAD, OFF ); pt_piste->SetZoneSubNet( 0 ); pt_piste->SetNet( 0 ); // net code = 0 means not connected } diff --git a/pcbnew/deltrack.cpp b/pcbnew/deltrack.cpp index cb62b1f4a8..7d95deaa23 100644 --- a/pcbnew/deltrack.cpp +++ b/pcbnew/deltrack.cpp @@ -25,12 +25,6 @@ TRACK* WinEDA_PcbFrame::Delete_Segment( wxDC* DC, TRACK* aTrack ) if( aTrack == NULL ) return NULL; - if( aTrack->GetState( DELETED ) ) - { - D( printf( "WinEDA_PcbFrame::Delete_Segment(): bug deleted already deleted TRACK\n" ); ) - return NULL; - } - if( aTrack->m_Flags & IS_NEW ) // Trace in progress, erase the last segment { if( g_CurrentTrackList.GetCount() > 0 ) diff --git a/pcbnew/dialogs/dialog_global_deletion.cpp b/pcbnew/dialogs/dialog_global_deletion.cpp index 019be4fb6c..dc5abe123e 100644 --- a/pcbnew/dialogs/dialog_global_deletion.cpp +++ b/pcbnew/dialogs/dialog_global_deletion.cpp @@ -110,13 +110,13 @@ void DIALOG_GLOBAL_DELETION::AcceptPcbDelete( ) { int track_mask_filter = 0; if( !m_TrackFilterLocked->GetValue() ) - track_mask_filter |= SEGM_FIXE; + track_mask_filter |= TRACK_LOCKED; if( !m_TrackFilterAR->GetValue() ) - track_mask_filter |= SEGM_AR; + track_mask_filter |= TRACK_AR; for( item = pcb->m_Track; item != NULL; item = nextitem ) { nextitem = item->Next(); - if( (item->GetState( SEGM_FIXE | SEGM_AR ) & track_mask_filter) != 0 ) + if( (item->GetState( TRACK_LOCKED | TRACK_AR ) & track_mask_filter) != 0 ) continue; itemPicker.m_PickedItem = item; pickersList.PushItem( itemPicker ); diff --git a/pcbnew/dragsegm.cpp b/pcbnew/dragsegm.cpp index da058ae9b2..012c7d02e1 100644 --- a/pcbnew/dragsegm.cpp +++ b/pcbnew/dragsegm.cpp @@ -143,7 +143,7 @@ void AddSegmentToDragList( EDA_DRAW_PANEL* panel, wxDC* DC, int flag, TRACK* Tra wrapper.m_Flag |= 2; Track->Draw( panel, DC, GR_XOR ); - Track->SetState( EDIT, ON ); + Track->SetState( IN_EDIT, ON ); if( (flag & STARTPOINT) ) Track->m_Flags |= STARTPOINT; diff --git a/pcbnew/edgemod.cpp b/pcbnew/edgemod.cpp index 2b9aa8b1db..19194e2a28 100644 --- a/pcbnew/edgemod.cpp +++ b/pcbnew/edgemod.cpp @@ -1,6 +1,6 @@ -/****************************/ -/* Footprint edges editing. */ -/****************************/ +/*******************************/ +/* Footprint outlines editing. */ +/*******************************/ /** * Functions to edit graphic items used to draw footprint edges. @@ -19,10 +19,10 @@ #include "module_editor_frame.h" -static void ShowEdgeModule( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, +static void ShowNewEdgeModule( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, bool erase ); -static void Exit_EditEdge_Module( EDA_DRAW_PANEL* Panel, wxDC* DC ); -static void Move_Segment( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, +static void Abort_Move_ModuleOutline( EDA_DRAW_PANEL* Panel, wxDC* DC ); +static void ShowCurrentOutlineWhileMoving( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, bool aErase ); int ArcValue = 900; @@ -43,7 +43,7 @@ void WinEDA_ModuleEditFrame::Start_Move_EdgeMod( EDGE_MODULE* Edge, wxDC* DC ) Edge->m_Flags |= IS_MOVED; MoveVector.x = MoveVector.y = 0; CursorInitialPosition = GetScreen()->GetCrossHairPosition(); - DrawPanel->SetMouseCapture( Move_Segment, Exit_EditEdge_Module ); + DrawPanel->SetMouseCapture( ShowCurrentOutlineWhileMoving, Abort_Move_ModuleOutline ); SetCurItem( Edge ); DrawPanel->m_mouseCaptureCallback( DrawPanel, DC, wxDefaultPosition, FALSE ); } @@ -72,8 +72,10 @@ void WinEDA_ModuleEditFrame::Place_EdgeMod( EDGE_MODULE* Edge ) } -/* Move and redraw the current edited graphic item when mouse is moving */ -static void Move_Segment( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, bool aErase ) +/* Redraw the current moved graphic item when mouse is moving + * Use this function to show an existing outline, in move command +*/ +static void ShowCurrentOutlineWhileMoving( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, bool aErase ) { BASE_SCREEN* screen = aPanel->GetScreen(); EDGE_MODULE* Edge = (EDGE_MODULE*) screen->GetCurItem(); @@ -96,9 +98,10 @@ static void Move_Segment( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPos } -/* Redraw the current edited (moved) graphic item +/* Redraw the current graphic item during its creation + * Use this function to show a new outline, in begin command */ -static void ShowEdgeModule( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, +static void ShowNewEdgeModule( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, bool aErase ) { BASE_SCREEN* screen = aPanel->GetScreen(); @@ -267,22 +270,24 @@ void WinEDA_ModuleEditFrame::Delete_Edge_Module( EDGE_MODULE* Edge ) } -/* abort function in moving edge. +/* abort function in moving outline. */ -static void Exit_EditEdge_Module( EDA_DRAW_PANEL* Panel, wxDC* DC ) +static void Abort_Move_ModuleOutline( EDA_DRAW_PANEL* Panel, wxDC* DC ) { EDGE_MODULE* Edge = (EDGE_MODULE*) Panel->GetScreen()->GetCurItem(); + Panel->SetMouseCapture( NULL, NULL ); + if( Edge && ( Edge->Type() == TYPE_EDGE_MODULE ) ) { - if( Edge->m_Flags & IS_NEW ) /* Delete if new module. */ + if( Edge->m_Flags & IS_NEW ) // On aborting, delete new outline. { MODULE* Module = (MODULE*) Edge->GetParent(); Edge->Draw( Panel, DC, GR_XOR, MoveVector ); Edge->DeleteStructure(); Module->Set_Rectangle_Encadrement(); } - else + else // On aborting, move existing outline to its initial position. { Edge->Draw( Panel, DC, GR_XOR, MoveVector ); Edge->m_Flags = 0; @@ -350,11 +355,11 @@ EDGE_MODULE* WinEDA_ModuleEditFrame::Begin_Edge_Module( EDGE_MODULE* Edge, Edge->m_End0 = Edge->m_Start0; module->Set_Rectangle_Encadrement(); - DrawPanel->SetMouseCapture( ShowEdgeModule, Exit_EditEdge_Module ); + DrawPanel->SetMouseCapture( ShowNewEdgeModule, Abort_Move_ModuleOutline ); } /* Segment creation in progress. - * The ending coordinate are updated by the function - * Montre_Position_New_Edge_Module() called on move mouse event + * The ending coordinate is updated by the function + * ShowNewEdgeModule() called on move mouse event * during the segment craetion */ else diff --git a/pcbnew/editedge.cpp b/pcbnew/editedge.cpp index f9a44b18e2..4ef759b0cf 100644 --- a/pcbnew/editedge.cpp +++ b/pcbnew/editedge.cpp @@ -14,7 +14,7 @@ #include "protos.h" -static void Exit_EditEdge( EDA_DRAW_PANEL* Panel, wxDC* DC ); +static void Abort_EditEdge( EDA_DRAW_PANEL* Panel, wxDC* DC ); static void Montre_Position_NewSegment( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, bool aErase ); static void Move_Segment( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, @@ -34,7 +34,7 @@ void WinEDA_PcbFrame::Start_Move_DrawItem( DRAWSEGMENT* drawitem, wxDC* DC ) drawitem->m_Flags |= IS_MOVED; s_InitialPosition = s_LastPosition = GetScreen()->GetCrossHairPosition(); drawitem->DisplayInfo( this ); - DrawPanel->SetMouseCapture( Move_Segment, Exit_EditEdge ); + DrawPanel->SetMouseCapture( Move_Segment, Abort_EditEdge ); SetCurItem( drawitem ); DrawPanel->m_mouseCaptureCallback( DrawPanel, DC, wxDefaultPosition, false ); } @@ -48,12 +48,12 @@ void WinEDA_PcbFrame::Place_DrawItem( DRAWSEGMENT* drawitem, wxDC* DC ) if( drawitem == NULL ) return; + drawitem->m_Flags = 0; SaveCopyInUndoList(drawitem, UR_MOVED, s_LastPosition - s_InitialPosition); drawitem->Draw( DrawPanel, DC, GR_OR ); DrawPanel->SetMouseCapture( NULL, NULL ); SetCurItem( NULL ); OnModify(); - drawitem->m_Flags = 0; } /* @@ -63,13 +63,10 @@ static void Move_Segment( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPos bool aErase ) { DRAWSEGMENT* Segment = (DRAWSEGMENT*) aPanel->GetScreen()->GetCurItem(); - int t_fill = DisplayOpt.DisplayDrawItems; if( Segment == NULL ) return; - DisplayOpt.DisplayDrawItems = SKETCH; - if( aErase ) Segment->Draw( aPanel, aDC, GR_XOR ); @@ -80,7 +77,6 @@ static void Move_Segment( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPos s_LastPosition = aPanel->GetScreen()->GetCrossHairPosition(); Segment->Draw( aPanel, aDC, GR_XOR ); - DisplayOpt.DisplayDrawItems = t_fill; } @@ -169,12 +165,15 @@ void WinEDA_PcbFrame::Delete_Drawings_All_Layer( int aLayer ) } -static void Exit_EditEdge( EDA_DRAW_PANEL* Panel, wxDC* DC ) +static void Abort_EditEdge( EDA_DRAW_PANEL* Panel, wxDC* DC ) { DRAWSEGMENT* Segment = (DRAWSEGMENT*) Panel->GetScreen()->GetCurItem(); if( Segment == NULL ) + { + Panel->SetMouseCapture( NULL, NULL ); return; + } if( Segment->m_Flags & IS_NEW ) { @@ -192,6 +191,7 @@ static void Exit_EditEdge( EDA_DRAW_PANEL* Panel, wxDC* DC ) Segment->Draw( Panel, DC, GR_OR ); } + Panel->SetMouseCapture( NULL, NULL ); ( (WinEDA_PcbFrame*) Panel->GetParent() )->SetCurItem( NULL ); } @@ -223,7 +223,7 @@ DRAWSEGMENT* WinEDA_PcbFrame::Begin_DrawSegment( DRAWSEGMENT* Segment, Segment->m_Shape = shape; Segment->m_Angle = 900; Segment->m_Start = Segment->m_End = GetScreen()->GetCrossHairPosition(); - DrawPanel->SetMouseCapture( Montre_Position_NewSegment, Exit_EditEdge ); + DrawPanel->SetMouseCapture( Montre_Position_NewSegment, Abort_EditEdge ); } else /* The ending point ccordinate Segment->m_End was updated by he function * Montre_Position_NewSegment() called on a move mouse event diff --git a/pcbnew/editrack.cpp b/pcbnew/editrack.cpp index 060bbda7c3..28c5f188f6 100644 --- a/pcbnew/editrack.cpp +++ b/pcbnew/editrack.cpp @@ -473,7 +473,7 @@ void WinEDA_PcbFrame::End_Route( TRACK* aTrack, wxDC* DC ) g_HighLight_NetCode = adr_buf->GetNet(); /* Possible establishment of a hanging point. */ - LockPoint = CreateLockPoint( GetBoard(), + LockPoint = CreateLockPoint( GetBoard(), g_CurrentTrackSegment->m_End, adr_buf, &s_ItemsListPicker ); @@ -556,7 +556,7 @@ TRACK* LocateIntrusion( TRACK* listStart, TRACK* aTrack, int aLayer, const wxPoi { if( track->Type() == TYPE_TRACK ) // skip vias { - if( track->GetState( BUSY | DELETED ) ) + if( track->GetState( BUSY | IS_DELETED ) ) continue; if( aLayer != track->GetLayer() ) diff --git a/pcbnew/locate.cpp b/pcbnew/locate.cpp index 27b2089b4e..ba08bed936 100644 --- a/pcbnew/locate.cpp +++ b/pcbnew/locate.cpp @@ -35,7 +35,7 @@ TRACK* Locate_Via( BOARD* Pcb, const wxPoint& pos, int layer ) if( track->m_Start != pos ) continue; - if( track->GetState( BUSY | DELETED ) ) + if( track->GetState( BUSY | IS_DELETED ) ) continue; if( layer < 0 ) @@ -61,7 +61,7 @@ TRACK* Locate_Via_Area( TRACK* aStart, const wxPoint& pos, int layer ) if( !track->HitTest(pos) ) continue; - if( track->GetState( BUSY | DELETED ) ) + if( track->GetState( BUSY | IS_DELETED ) ) continue; if( layer < 0 ) @@ -327,7 +327,7 @@ TRACK* Locate_Piste_Connectee( TRACK* PtRefSegm, TRACK* pt_base, TRACK* pt_lim, if( PtSegmN ) { - if( PtSegmN->GetState( BUSY | DELETED ) ) + if( PtSegmN->GetState( BUSY | IS_DELETED ) ) goto suite; if( PtSegmN == PtRefSegm ) @@ -357,7 +357,7 @@ suite: if( PtSegmB ) { - if( PtSegmB->GetState( BUSY | DELETED ) ) + if( PtSegmB->GetState( BUSY | IS_DELETED ) ) goto suite1; if( PtSegmB == PtRefSegm ) @@ -389,7 +389,7 @@ suite1: /* General search. */ for( PtSegmN = pt_base; PtSegmN != NULL; PtSegmN = PtSegmN->Next() ) { - if( PtSegmN->GetState( DELETED | BUSY ) ) + if( PtSegmN->GetState( IS_DELETED | BUSY ) ) { if( PtSegmN == pt_lim ) break; @@ -438,11 +438,11 @@ TRACK* Locate_Pistes( BOARD* aPcb, TRACK* start_adresse, const wxPoint& ref_pos, { int layer = track->GetLayer(); - if( track->GetState( BUSY | DELETED ) ) + if( track->GetState( BUSY | IS_DELETED ) ) { - // D( printf( "track %p is BUSY | DELETED. BUSY=%d DELETED=%d\n", + // D( printf( "track %p is BUSY | IS_DELETED. BUSY=%d IS_DELETED=%d\n", // track, track->GetState( BUSY ), - // track->GetState( DELETED ) );) + // track->GetState( IS_DELETED ) );) continue; } @@ -524,7 +524,7 @@ D_PAD* Fast_Locate_Pad_Connecte( BOARD* Pcb, const wxPoint& ref_pos, int masque_ * Data on layers by masklayer * Research is done to address start_adr has end_adr * If end_adr = NULL, end search list - * The segments of track marks with the flag are not DELETED or taken + * The segments of track marks with the flag are not IS_DELETED or taken * into account */ TRACK* Fast_Locate_Piste( TRACK* start_adr, TRACK* end_adr, const wxPoint& ref_pos, int MaskLayer ) @@ -536,7 +536,7 @@ TRACK* Fast_Locate_Piste( TRACK* start_adr, TRACK* end_adr, const wxPoint& ref_p for( PtSegm = start_adr; PtSegm != NULL; PtSegm = PtSegm->Next() ) { - if( PtSegm->GetState( DELETED | BUSY ) == 0 ) + if( PtSegm->GetState( IS_DELETED | BUSY ) == 0 ) { if( ref_pos == PtSegm->m_Start ) { @@ -562,7 +562,7 @@ TRACK* Fast_Locate_Piste( TRACK* start_adr, TRACK* end_adr, const wxPoint& ref_p /* Locates via through the point x, y, on layer data by masklayer. * Search is done to address start_adr has end_adr. * If end_adr = NULL, end search list - * Vias whose parameter has the State or DELETED bit BUSY = 1 are ignored + * Vias whose parameter has the State or IS_DELETED bit BUSY = 1 are ignored */ TRACK* Fast_Locate_Via( TRACK* start_adr, TRACK* end_adr, const wxPoint& pos, int MaskLayer ) { @@ -574,7 +574,7 @@ TRACK* Fast_Locate_Via( TRACK* start_adr, TRACK* end_adr, const wxPoint& pos, in { if( pos == PtSegm->m_Start ) { - if( PtSegm->GetState( BUSY | DELETED ) == 0 ) + if( PtSegm->GetState( BUSY | IS_DELETED ) == 0 ) { if( MaskLayer & PtSegm->ReturnMaskLayer() ) return PtSegm; diff --git a/pcbnew/modules.cpp b/pcbnew/modules.cpp index 042eee092e..6e086c2626 100644 --- a/pcbnew/modules.cpp +++ b/pcbnew/modules.cpp @@ -89,7 +89,7 @@ void WinEDA_PcbFrame::StartMove_Module( MODULE* module, wxDC* DC ) TRACK* segm = g_DragSegmentList[ii].m_Segm; itemWrapper.m_PickedItem = segm; itemWrapper.m_Link = segm->Copy(); - itemWrapper.m_Link->SetState( EDIT, OFF ); + itemWrapper.m_Link->SetState( IN_EDIT, OFF ); s_PickedList.PushItem( itemWrapper ); } } @@ -147,7 +147,7 @@ void Abort_MoveOrCopyModule( EDA_DRAW_PANEL* Panel, wxDC* DC ) for( unsigned ii = 0; ii < g_DragSegmentList.size(); ii++ ) { pt_segm = g_DragSegmentList[ii].m_Segm; - pt_segm->SetState( EDIT, OFF ); + pt_segm->SetState( IN_EDIT, OFF ); g_DragSegmentList[ii].SetInitialValues(); pt_segm->Draw( Panel, DC, GR_OR ); } @@ -290,7 +290,7 @@ bool WinEDA_PcbFrame::Delete_Module( MODULE* aModule, /* Remove module from list, and put it in undo command list */ m_Pcb->m_Modules.Remove( aModule ); - aModule->SetState( DELETED, ON ); + aModule->SetState( IS_DELETED, ON ); SaveCopyInUndoList( aModule, UR_DELETED ); if( aDC && GetBoard()->IsElementVisible( RATSNEST_VISIBLE ) ) @@ -439,7 +439,7 @@ void WinEDA_BasePcbFrame::Place_Module( MODULE* module, for( unsigned ii = 0; ii < g_DragSegmentList.size(); ii++ ) { pt_segm = g_DragSegmentList[ii].m_Segm; - pt_segm->SetState( EDIT, OFF ); + pt_segm->SetState( IN_EDIT, OFF ); if( DC ) pt_segm->Draw( DrawPanel, DC, GR_OR ); diff --git a/pcbnew/move-drag_pads.cpp b/pcbnew/move-drag_pads.cpp index d133b7e136..f3b659fdb2 100644 --- a/pcbnew/move-drag_pads.cpp +++ b/pcbnew/move-drag_pads.cpp @@ -43,7 +43,7 @@ static void Abort_Move_Pad( EDA_DRAW_PANEL* Panel, wxDC* DC ) { TRACK* Track = g_DragSegmentList[ii].m_Segm; Track->Draw( Panel, DC, GR_XOR ); - Track->SetState( EDIT, OFF ); + Track->SetState( IN_EDIT, OFF ); g_DragSegmentList[ii].SetInitialValues(); Track->Draw( Panel, DC, GR_OR ); } @@ -356,7 +356,7 @@ void WinEDA_BasePcbFrame::PlacePad( D_PAD* Pad, wxDC* DC ) if( g_DragSegmentList[ii].m_Pad_End ) Track->m_End = Pad->m_Pos; - Track->SetState( EDIT, OFF ); + Track->SetState( IN_EDIT, OFF ); if( DC ) Track->Draw( DrawPanel, DC, GR_OR ); } diff --git a/pcbnew/move_or_drag_track.cpp b/pcbnew/move_or_drag_track.cpp index 6e7a8d3f64..c8842be832 100644 --- a/pcbnew/move_or_drag_track.cpp +++ b/pcbnew/move_or_drag_track.cpp @@ -114,7 +114,7 @@ static void Abort_MoveTrack( EDA_DRAW_PANEL* Panel, wxDC* DC ) { TRACK* Track = g_DragSegmentList[jj].m_Segm; g_DragSegmentList[jj].SetInitialValues(); - Track->SetState( EDIT, OFF ); + Track->SetState( IN_EDIT, OFF ); Track->m_Flags = 0; Track->Draw( Panel, DC, GR_OR ); } @@ -997,14 +997,14 @@ bool WinEDA_PcbFrame::PlaceDraggedOrMovedTrackSegment( TRACK* Track, wxDC* DC ) // DRC Ok: place track segments Track->m_Flags = 0; - Track->SetState( EDIT, OFF ); + Track->SetState( IN_EDIT, OFF ); Track->Draw( DrawPanel, DC, draw_mode ); /* Draw dragged tracks */ for( unsigned ii = 0; ii < g_DragSegmentList.size(); ii++ ) { Track = g_DragSegmentList[ii].m_Segm; - Track->SetState( EDIT, OFF ); + Track->SetState( IN_EDIT, OFF ); Track->m_Flags = 0; Track->Draw( DrawPanel, DC, draw_mode ); diff --git a/pcbnew/onrightclick.cpp b/pcbnew/onrightclick.cpp index 14526e8027..c3c1477bbd 100644 --- a/pcbnew/onrightclick.cpp +++ b/pcbnew/onrightclick.cpp @@ -525,7 +525,7 @@ void WinEDA_PcbFrame::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu ) track_mnu->Append( ID_POPUP_PCB_LOCK_ON_TRACKSEG, _( "Locked: Yes" ), wxEmptyString, true ); track_mnu->Append( ID_POPUP_PCB_LOCK_OFF_TRACKSEG, _( "Locked: No" ), wxEmptyString, true ); - if( Track->GetState( SEGM_FIXE ) ) + if( Track->GetState( TRACK_LOCKED ) ) track_mnu->Check( ID_POPUP_PCB_LOCK_ON_TRACKSEG, true ); else track_mnu->Check( ID_POPUP_PCB_LOCK_OFF_TRACKSEG, true ); diff --git a/pcbnew/pcbnew.h b/pcbnew/pcbnew.h index fdb84a56b0..4c4ca0b3e1 100644 --- a/pcbnew/pcbnew.h +++ b/pcbnew/pcbnew.h @@ -31,22 +31,11 @@ #define DIM_ANCRE_TEXTE 2 /* Anchor size (Text centre) */ #define TEXTS_MIN_SIZE 50 // Min size in pcbnew units value (50 * 0.0001 mils) -#define TEXTS_MAX_SIZE 100000 // Min size in pcbnew units value (1 inch) ) +#define TEXTS_MAX_SIZE 10000 // Min size in pcbnew units value (1 inch) ) #define TEXTS_MAX_WIDTH 5000 // Max width in pcbnew units value (0.5 inches) -/* Used in Zoom menu */ -#define ZOOM_PLUS -1 -#define ZOOM_MOINS -2 -#define ZOOM_AUTO -3 -#define ZOOM_CENTER -4 -#define ZOOM_REDRAW -5 - -/* Flag to force the SKETCH mode to display items (.flags member) */ -#define FORCE_SKETCH (DRAG | EDIT ) - -/* Flags used in read board file */ -#define APPEND_PCB 1 /* used to append the new board to the existing board */ -#define NEWPCB 0 /* used for normal load file */ +/* Flag to force the SKETCH mode to display items (.m_Flags member) */ +#define FORCE_SKETCH ( IS_DRAGGED | IN_EDIT ) /* variables */ extern bool Drc_On; diff --git a/pcbnew/solve.cpp b/pcbnew/solve.cpp index 80bf818eb7..eca62177d0 100644 --- a/pcbnew/solve.cpp +++ b/pcbnew/solve.cpp @@ -1115,7 +1115,7 @@ static void OrCell_Trace( BOARD* pcb, int col, int row, g_CurrentTrackList.PushBack( newTrack ); - g_CurrentTrackSegment->SetState( SEGM_AR, ON ); + g_CurrentTrackSegment->SetState( TRACK_AR, ON ); g_CurrentTrackSegment->SetLayer( 0x0F ); g_CurrentTrackSegment->m_Start.x = @@ -1141,7 +1141,7 @@ static void OrCell_Trace( BOARD* pcb, int col, int row, if( side == TOP ) g_CurrentTrackSegment->SetLayer( Route_Layer_TOP ); - g_CurrentTrackSegment->SetState( SEGM_AR, ON ); + g_CurrentTrackSegment->SetState( TRACK_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 + diff --git a/pcbnew/tr_modif.cpp b/pcbnew/tr_modif.cpp index 0bb171b928..222b3a9d39 100644 --- a/pcbnew/tr_modif.cpp +++ b/pcbnew/tr_modif.cpp @@ -87,9 +87,9 @@ int WinEDA_PcbFrame::EraseRedundantTrack( /* Flags for cleaning the net. */ for( pt_del = BufDeb; pt_del; pt_del = pt_del->Next() ) { - //D( printf( "track %p turning off BUSY | EDIT | CHAIN\n", pt_del ); ) - D( std::cout<<"track "<SetState( BUSY | EDIT | CHAIN, OFF ); + //D( printf( "track %p turning off BUSY | IN_EDIT | IS_LINKED\n", pt_del ); ) + D( std::cout<<"track "<SetState( BUSY | IN_EDIT | IS_LINKED, OFF ); if( pt_del == BufEnd ) // Last segment reached break; } @@ -137,7 +137,7 @@ int WinEDA_PcbFrame::EraseRedundantTrack( /* Mark as deleted a new track (which is not involved in the search for * other connections) */ - ListSetState( aNewTrack, aNewTrackSegmentsCount, DELETED, ON ); + ListSetState( aNewTrack, aNewTrackSegmentsCount, IS_DELETED, ON ); /* A segment must be connected to the starting point, otherwise * it is unnecessary to analyze the other point @@ -147,7 +147,7 @@ int WinEDA_PcbFrame::EraseRedundantTrack( if( pt_segm == NULL ) /* Not connected to the track starting point. */ { /* Clear the delete flag. */ - ListSetState( aNewTrack, aNewTrackSegmentsCount, DELETED, OFF ); + ListSetState( aNewTrack, aNewTrackSegmentsCount, IS_DELETED, OFF ); return 0; } @@ -163,9 +163,9 @@ int WinEDA_PcbFrame::EraseRedundantTrack( if( pt_segm->Type() != TYPE_VIA ) { - if( pt_segm->GetState( CHAIN ) == 0 ) + if( pt_segm->GetState( IS_LINKED ) == 0 ) { - pt_segm->SetState( CHAIN, ON ); + pt_segm->SetState( IS_LINKED, ON ); nbconnect++; } } @@ -180,7 +180,7 @@ int WinEDA_PcbFrame::EraseRedundantTrack( /* Clear used flags */ for( pt_del = BufDeb; pt_del; pt_del = pt_del->Next() ) { - pt_del->SetState( BUSY | DELETED | EDIT | CHAIN, OFF ); + pt_del->SetState( BUSY | IS_DELETED | IN_EDIT | IS_LINKED, OFF ); if( pt_del == BufEnd ) // Last segment reached break; } @@ -191,22 +191,22 @@ int WinEDA_PcbFrame::EraseRedundantTrack( /* Mark trace as edited (which does not involve searching for other * tracks) */ - ListSetState( aNewTrack, aNewTrackSegmentsCount, DELETED, OFF ); - ListSetState( aNewTrack, aNewTrackSegmentsCount, EDIT, ON ); + ListSetState( aNewTrack, aNewTrackSegmentsCount, IS_DELETED, OFF ); + ListSetState( aNewTrack, aNewTrackSegmentsCount, IN_EDIT, ON ); /* Test all marked segments. */ while( nbconnect ) { for( pt_del = BufDeb; pt_del; pt_del = pt_del->Next() ) { - if( pt_del->GetState( CHAIN ) ) + if( pt_del->GetState( IS_LINKED ) ) break; if( pt_del == BufEnd ) // Last segment reached break; } nbconnect--; - pt_del->SetState( CHAIN, OFF ); + pt_del->SetState( IS_LINKED, OFF ); pt_del = Marque_Une_Piste( GetBoard(), pt_del, &nb_segm, NULL, true ); @@ -246,13 +246,13 @@ int WinEDA_PcbFrame::EraseRedundantTrack( for( pt_del = m_Pcb->m_Track; pt_del != NULL; pt_del = pt_del->Next() ) { - if( pt_del->GetState( EDIT ) ) + if( pt_del->GetState( IN_EDIT ) ) { - pt_del->SetState( EDIT, OFF ); + pt_del->SetState( IN_EDIT, OFF ); if( aDC ) pt_del->Draw( DrawPanel, aDC, GR_OR ); } - pt_del->SetState( EDIT | CHAIN, OFF ); + pt_del->SetState( IN_EDIT | IS_LINKED, OFF ); } return 1; @@ -267,7 +267,7 @@ int WinEDA_PcbFrame::EraseRedundantTrack( /* Clear used flags */ for( pt_del = m_Pcb->m_Track; pt_del; pt_del = pt_del->Next() ) { - pt_del->SetState( BUSY | DELETED | EDIT | CHAIN, OFF ); + pt_del->SetState( BUSY | IS_DELETED | IN_EDIT | IS_LINKED, OFF ); if( pt_del == BufEnd ) // Last segment reached break; }