Commit 1b39dfc7 authored by dickelbeck's avatar dickelbeck

highlight zone containers

parent 7750cf6d
...@@ -5,6 +5,13 @@ Started 2007-June-11 ...@@ -5,6 +5,13 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2008-Feb-19 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
+pcbnew
Add ZONE_CONTAINER support to the ID_PCB_HIGHLIGHT_BUTT tool and
WinEDA_PcbFrame::DrawHightLight()
2008-Feb-18 UPDATE Dick Hollenbeck <dick@softplc.com> 2008-Feb-18 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================ ================================================================================
+pcbnew +pcbnew
......
...@@ -331,7 +331,7 @@ void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int ...@@ -331,7 +331,7 @@ void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int
// if PAD_SMD pad and high contrast mode // if PAD_SMD pad and high contrast mode
if( m_Attribut==PAD_SMD && DisplayOpt.ContrastModeDisplay ) if( (m_Attribut==PAD_SMD || m_Attribut==PAD_CONN) && DisplayOpt.ContrastModeDisplay )
{ {
// when routing tracks // when routing tracks
if( frame && frame->m_ID_current_state == ID_TRACK_BUTT ) if( frame && frame->m_ID_current_state == ID_TRACK_BUTT )
......
...@@ -93,11 +93,12 @@ const KICAD_T GENERAL_COLLECTOR::PadsOrModules[] = { ...@@ -93,11 +93,12 @@ const KICAD_T GENERAL_COLLECTOR::PadsOrModules[] = {
}; };
const KICAD_T GENERAL_COLLECTOR::PadsOrTracks[] = { const KICAD_T GENERAL_COLLECTOR::PadsTracksOrZones[] = {
TYPEPAD, TYPEPAD,
TYPEVIA, TYPEVIA,
TYPETRACK, TYPETRACK,
TYPEZONE, TYPEZONE,
TYPEZONE_CONTAINER,
EOT EOT
}; };
......
...@@ -229,7 +229,7 @@ public: ...@@ -229,7 +229,7 @@ public:
/** /**
* A scan list for PADs, TRACKs, VIAs, or ZONEs * A scan list for PADs, TRACKs, VIAs, or ZONEs
*/ */
static const KICAD_T PadsOrTracks[]; static const KICAD_T PadsTracksOrZones[];
/** /**
......
...@@ -103,7 +103,7 @@ int WinEDA_PcbFrame::Select_High_Light( wxDC* DC ) ...@@ -103,7 +103,7 @@ int WinEDA_PcbFrame::Select_High_Light( wxDC* DC )
// optionally, modify the "guide" here as needed using its member functions // optionally, modify the "guide" here as needed using its member functions
m_Collector->Collect( m_Pcb, GENERAL_COLLECTOR::PadsOrTracks, m_Collector->Collect( m_Pcb, GENERAL_COLLECTOR::PadsTracksOrZones,
GetScreen()->RefPos( true ), guide ); GetScreen()->RefPos( true ), guide );
BOARD_ITEM* item = (*m_Collector)[0]; BOARD_ITEM* item = (*m_Collector)[0];
...@@ -127,6 +127,11 @@ int WinEDA_PcbFrame::Select_High_Light( wxDC* DC ) ...@@ -127,6 +127,11 @@ int WinEDA_PcbFrame::Select_High_Light( wxDC* DC )
Hight_Light( DC ); Hight_Light( DC );
return g_HightLigth_NetCode; return g_HightLigth_NetCode;
case TYPEZONE_CONTAINER:
g_HightLigth_NetCode = ((ZONE_CONTAINER*)item)->GetNet();
Hight_Light( DC );
return g_HightLigth_NetCode;
default: default:
; // until somebody changes GENERAL_COLLECTOR::PadsOrTracks, ; // until somebody changes GENERAL_COLLECTOR::PadsOrTracks,
// this should not happen. // this should not happen.
...@@ -158,30 +163,37 @@ void WinEDA_PcbFrame::DrawHightLight( wxDC* DC, int NetCode ) ...@@ -158,30 +163,37 @@ void WinEDA_PcbFrame::DrawHightLight( wxDC* DC, int NetCode )
/* Turn On or OFF the HightLight for trcak and pads with the netcode "NetCode' /* Turn On or OFF the HightLight for trcak and pads with the netcode "NetCode'
*/ */
{ {
TRACK* pts;
MODULE* Module;
if( g_HightLigt_Status ) if( g_HightLigt_Status )
draw_mode = GR_SURBRILL | GR_OR; draw_mode = GR_SURBRILL | GR_OR;
else else
draw_mode = GR_AND | GR_SURBRILL; draw_mode = GR_AND | GR_SURBRILL;
Module = m_Pcb->m_Modules;
/* Redraw pads */ /* Redraw pads */
for( ; Module != NULL; Module = (MODULE*) Module->Pnext ) for( MODULE* module = m_Pcb->m_Modules; module; module = module->Next() )
{ {
Pad_Surbrillance( DrawPanel, DC, Module, NetCode ); Pad_Surbrillance( DrawPanel, DC, module, NetCode );
} }
/* Redraw track and vias: */ /* Redraw track and vias: */
for( pts = m_Pcb->m_Track; pts != NULL; pts = (TRACK*) pts->Pnext ) for( TRACK* pts = m_Pcb->m_Track; pts; pts = pts->Next() )
{ {
if( pts->GetNet() == NetCode ) if( pts->GetNet() == NetCode )
{ {
pts->Draw( DrawPanel, DC, draw_mode ); pts->Draw( DrawPanel, DC, draw_mode );
} }
} }
wxPoint zero(0,0); // construct outside loop for speed
// Redraw ZONE_CONTAINERS
BOARD::ZONE_CONTAINERS& zones = m_Pcb->m_ZoneDescriptorList;
for( BOARD::ZONE_CONTAINERS::iterator zc = zones.begin(); zc!=zones.end(); ++zc )
{
if( (*zc)->GetNet() == NetCode )
{
(*zc)->Draw( DrawPanel, DC, zero, draw_mode );
}
}
} }
...@@ -193,12 +205,14 @@ static void Pad_Surbrillance( WinEDA_DrawPanel* panel, ...@@ -193,12 +205,14 @@ static void Pad_Surbrillance( WinEDA_DrawPanel* panel,
{ {
D_PAD* pt_pad; D_PAD* pt_pad;
wxPoint zero(0,0); // construct outside loop for speed
/* trace des pastilles */ /* trace des pastilles */
for( pt_pad = Module->m_Pads; pt_pad != NULL; pt_pad = (D_PAD*) pt_pad->Pnext ) for( pt_pad = Module->m_Pads; pt_pad != NULL; pt_pad = (D_PAD*) pt_pad->Pnext )
{ {
if( pt_pad->GetNet() == NetCode ) if( pt_pad->GetNet() == NetCode )
{ {
pt_pad->Draw( panel, DC, wxPoint( 0, 0 ), draw_mode ); pt_pad->Draw( panel, DC, zero, draw_mode );
} }
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment