Commit 1b39dfc7 authored by dickelbeck's avatar dickelbeck
Browse files

highlight zone containers

parent 7750cf6d
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -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
+1 −1
Original line number Original line Diff line number Diff line
@@ -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 )
+6 −5
Original line number Original line Diff line number Diff line
@@ -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
};
};


+89 −89
Original line number Original line Diff line number Diff line
@@ -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[];




    /**
    /**
+32 −18
Original line number Original line Diff line number Diff line
@@ -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 )
            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 )
/* 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,
{
{
    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 );
        }
        }
    }
    }
}
}