mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-07 23:35:31 +00:00
injected DLIST<> into many list heads, see change_log.txt
This commit is contained in:
parent
67fa1ddb92
commit
aab39d1de7
3d-viewer
change_log.txtcommon
cvpcb
eeschema
gerbview
CMakeLists.txtaffiche.cppblock.cppdeltrack.cppedit.cppexport_to_pcbnew.cppinitpcb.cpplocate.cppmakefile.includeonrightclick.cpprs274d.cpprs274x.cpptracepcb.cpptrpiste.cppundelete.cpp
include
pcbnew
affiche.cppattribut.cppautoplac.cppautorout.cppbasepcbframe.cppblock.cppblock_module_editor.cppboard.cppclass_board.cppclass_board.hclass_board_connected_item.cppclass_board_item.cppclass_cotation.cppclass_cotation.hclass_drawsegment.cppclass_drawsegment.hclass_edge_mod.cppclass_edge_mod.hclass_equipot.cppclass_equipot.hclass_marker.cppclass_marker.hclass_mire.cppclass_mire.hclass_module.cppclass_module.hclass_pad.cppclass_pad.hclass_pcb_text.cppclass_pcb_text.hclass_text_mod.cppclass_text_mod.hclass_track.cppclass_track.hclass_zone.cppclass_zone.hclasspcb.cppclean.cppcollectors.cppcollectors.hconnect.cppcontrole.cppcotation.cppcross-probing.cppdeltrack.cppdialog_edit_module.cppdialog_track_options.cppdragsegm.cppdrc.cppdrc_stuff.hedgemod.cppedit.cppedit_track_width.cppeditedge.cppeditmod.cppeditrack-part2.cppeditrack.cppedtxtmod.cppexport_gencad.cppgen_drill_report_files.cppgen_holes_and_tools_lists_for_drill.cppgen_modules_placefile.cppgen_self.hgendrill.cppgpcb_exchange.cppgraphpcb.cpphotkeys.cppinitpcb.cppioascii.cpplay2plot.cpplibrairi.cpploadcmp.cpplocate.cppmirepcb.cppmodedit.cppmodedit_onclick.cppmodedit_undo_redo.cppmodules.cppmove-drag_pads.cppmove_or_drag_track.cppmuonde.cpponleftclick.cpponrightclick.cpppcbnew.hpcbtexte.cppplot_rtn.cppplotgerb.cppplothpgl.cppplotps.cppratsnest.cpprouter.cppsolve.cppspecctra_export.cppspecctra_import.cppsurbrill.cppswap_layers.cpptr_modif.cpptracepcb.cpptrack.cpptrpiste.cppundelete.cppvia_edit.cppxchgmod.cppzones_by_polygon.cppzones_convert_brd_items_to_polygons.cppzones_polygons_insulated_copper_islands.cppzones_polygons_test_connections.cpp
share
@ -70,8 +70,8 @@ void Struct3D_Master::Copy( Struct3D_Master* pattern )
|
||||
|
||||
|
||||
/***************************************************************/
|
||||
Struct3D_Master::Struct3D_Master( EDA_BaseStruct* StructFather ) :
|
||||
EDA_BaseStruct( StructFather, NOT_USED )
|
||||
Struct3D_Master::Struct3D_Master( EDA_BaseStruct* aParent ) :
|
||||
EDA_BaseStruct( aParent, NOT_USED )
|
||||
/***************************************************************/
|
||||
{
|
||||
m_MatScale.x = m_MatScale.y = m_MatScale.z = 1.0;
|
||||
@ -102,8 +102,8 @@ Struct3D_Master:: ~Struct3D_Master()
|
||||
|
||||
|
||||
/***************************************************************/
|
||||
Struct3D_Shape::Struct3D_Shape( EDA_BaseStruct* StructFather ) :
|
||||
EDA_BaseStruct( StructFather, NOT_USED )
|
||||
Struct3D_Shape::Struct3D_Shape( EDA_BaseStruct* aParent ) :
|
||||
EDA_BaseStruct( aParent, NOT_USED )
|
||||
/***************************************************************/
|
||||
{
|
||||
m_3D_Coord = NULL;
|
||||
|
@ -197,7 +197,7 @@ GLuint Pcb3D_GLCanvas::CreateDrawGL_List()
|
||||
/* draw tracks and vias : */
|
||||
for( track = pcb->m_Track; track != NULL; track = track->Next() )
|
||||
{
|
||||
if( track->Type() == TYPEVIA )
|
||||
if( track->Type() == TYPE_VIA )
|
||||
Draw3D_Via( (SEGVIA*) track );
|
||||
else
|
||||
Draw3D_Track( track );
|
||||
@ -207,7 +207,7 @@ GLuint Pcb3D_GLCanvas::CreateDrawGL_List()
|
||||
{
|
||||
for( segzone = pcb->m_Zone; segzone != NULL; segzone = segzone->Next() )
|
||||
{
|
||||
if( segzone->Type() == TYPEZONE )
|
||||
if( segzone->Type() == TYPE_ZONE )
|
||||
Draw3D_Track( segzone );
|
||||
}
|
||||
}
|
||||
@ -218,11 +218,11 @@ GLuint Pcb3D_GLCanvas::CreateDrawGL_List()
|
||||
{
|
||||
switch( PtStruct->Type() )
|
||||
{
|
||||
case TYPEDRAWSEGMENT:
|
||||
case TYPE_DRAWSEGMENT:
|
||||
Draw3D_DrawSegment( (DRAWSEGMENT*) PtStruct );
|
||||
break;
|
||||
|
||||
case TYPETEXTE:
|
||||
case TYPE_TEXTE:
|
||||
Draw3D_DrawText( (TEXTE_PCB*) PtStruct );
|
||||
break;
|
||||
|
||||
@ -513,10 +513,10 @@ void MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas )
|
||||
{
|
||||
switch( Struct->Type() )
|
||||
{
|
||||
case TYPETEXTEMODULE:
|
||||
case TYPE_TEXTE_MODULE:
|
||||
break;
|
||||
|
||||
case TYPEEDGEMODULE:
|
||||
case TYPE_EDGE_MODULE:
|
||||
( (EDGE_MODULE*) Struct )->Draw3D( glcanvas );
|
||||
break;
|
||||
|
||||
|
@ -70,7 +70,7 @@ public:
|
||||
|
||||
public:
|
||||
|
||||
Struct3D_Master( EDA_BaseStruct * StructFather );
|
||||
Struct3D_Master( EDA_BaseStruct * aParent );
|
||||
~Struct3D_Master();
|
||||
|
||||
Struct3D_Master* Next() const { return (Struct3D_Master*) Pnext; }
|
||||
@ -105,7 +105,7 @@ public:
|
||||
|
||||
public:
|
||||
|
||||
Struct3D_Shape( EDA_BaseStruct * StructFather );
|
||||
Struct3D_Shape( EDA_BaseStruct * aParent );
|
||||
~Struct3D_Shape();
|
||||
|
||||
Struct3D_Shape* Next() const { return (Struct3D_Shape*) Pnext; }
|
||||
|
@ -5,6 +5,36 @@ Started 2007-June-11
|
||||
Please add newer entries at the top, list the date and your name with
|
||||
email address.
|
||||
|
||||
|
||||
2008-Dec-3 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||
================================================================================
|
||||
++pcbnew & gerbview
|
||||
* added g_CurrentTrackList, and made g_CurrentTrackSegment and g_FirstTrackSegment
|
||||
be #defines into this DLIST<TRACK>, see pcbnew.h.
|
||||
* Switched datatype of BOARD::m_Track, BOARD::m_Zone, etc to DLIST<>.
|
||||
This simplifies BOARD::~BOARD() somewhat, and adds automatic counting of list elements and encapsulation
|
||||
of all list operations into DHEAD member functions, see common/dlist.cpp.
|
||||
* Removed TRACK::Insert() since it no long fits with the new BOARD::m_Track and BOARD::m_Zone datatypes.
|
||||
* Removed the g_UnDeleteStack support from <any>::UnLink(), this may leave a deficiency, but this code needs
|
||||
to be external to UnLink() anyway.
|
||||
* Made TRACK::SetNext() and TRACK::SetBack() private so they may not be used,
|
||||
the only way to put a TRACK on a list is through DLIST<TRACK>::PushFront()
|
||||
and other member functions of DLIST<TRACK>.
|
||||
* Switched to std::vector<TRACK*> in track.cpp to hold the temporary static list.
|
||||
* Made g_UnDeleteStack be a DLIST<TRACK>.
|
||||
* renamed some KICAD_T to more closely match the corresponding classname.
|
||||
* Changed to DLIST<> for almost all the list heads in BOARD.
|
||||
++gerbview
|
||||
* switched to GR_COPY mode for drawing so we can see the erasures. debugged
|
||||
erasures in rs274d.cpp.
|
||||
* Now using order specific TRACK loading, so erasures come after objects they
|
||||
are intended to erase. Still need layer ordering and polygon ordering support, my todo.
|
||||
|
||||
I do not like DeleteStructList() and plan to migrate away from it, DLIST<>:DeletAll()
|
||||
does something like it.
|
||||
|
||||
|
||||
=======
|
||||
2008-Dec-03 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||
================================================================================
|
||||
++pcbnew
|
||||
@ -13,6 +43,7 @@ email address.
|
||||
results are same, but using segments can be better (faster redraw time) for polygons having a lot
|
||||
of segments (more than 10000)
|
||||
|
||||
>>>>>>> .r1441
|
||||
2008-Dec-02 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
|
||||
================================================================================
|
||||
++build fixes
|
||||
|
@ -156,8 +156,6 @@ void DHEAD::remove( EDA_BaseStruct* aElement )
|
||||
aElement->SetList( 0 );
|
||||
|
||||
--count;
|
||||
|
||||
D( VerifyListIntegrity(); );
|
||||
}
|
||||
|
||||
#if defined(DEBUG)
|
||||
@ -191,6 +189,8 @@ void DHEAD::VerifyListIntegrity()
|
||||
|
||||
wxASSERT( item == NULL );
|
||||
wxASSERT( i == count );
|
||||
|
||||
// printf("list %p has %d items.\n", this, count );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -51,15 +51,13 @@ void WinEDA_CvpcbFrame::CreateScreenCmp()
|
||||
|
||||
DrawFrame->SetStatusText( msg, 0 );
|
||||
|
||||
if( DrawFrame->m_Pcb->m_Modules )
|
||||
if( DrawFrame->m_Pcb->m_Modules.GetCount() )
|
||||
{
|
||||
// there is only one module in the list
|
||||
DrawFrame->m_Pcb->m_Modules->DeleteStructure();
|
||||
|
||||
DrawFrame->m_Pcb->m_Modules = NULL;
|
||||
DrawFrame->m_Pcb->m_Modules.DeleteAll();
|
||||
}
|
||||
|
||||
DrawFrame->m_Pcb->m_Modules = DrawFrame->Get_Module( FootprintName );
|
||||
DrawFrame->m_Pcb->m_Modules.PushBack( DrawFrame->Get_Module( FootprintName ) );
|
||||
|
||||
DrawFrame->Zoom_Automatique( FALSE );
|
||||
if( DrawFrame->m_Draw3DFrame )
|
||||
|
@ -851,7 +851,7 @@ static SCH_ITEM * CopyStruct( WinEDA_DrawPanel* panel, wxDC* DC, BASE_SCREEN* sc
|
||||
;
|
||||
}
|
||||
|
||||
SetStructFather( Struct, screen );
|
||||
SetaParent( Struct, screen );
|
||||
PickedList = (DrawPickedStruct*) PickedList->Next();
|
||||
}
|
||||
|
||||
@ -900,7 +900,7 @@ static SCH_ITEM * CopyStruct( WinEDA_DrawPanel* panel, wxDC* DC, BASE_SCREEN* sc
|
||||
|
||||
RedrawOneStruct( panel, DC, NewDrawStruct, GR_DEFAULT_DRAWMODE );
|
||||
|
||||
SetStructFather( NewDrawStruct, screen );
|
||||
SetaParent( NewDrawStruct, screen );
|
||||
NewDrawStruct->SetNext( screen->EEDrawList );
|
||||
screen->EEDrawList = NewDrawStruct;
|
||||
}
|
||||
@ -1052,7 +1052,7 @@ void WinEDA_SchematicFrame::PasteStruct( wxDC* DC )
|
||||
{
|
||||
( (SCH_COMPONENT*) Struct )->m_TimeStamp = GetTimeStamp();
|
||||
( (SCH_COMPONENT*) Struct )->ClearAnnotation(NULL);
|
||||
SetStructFather( Struct, GetScreen() );
|
||||
SetaParent( Struct, GetScreen() );
|
||||
}
|
||||
PickedList = (DrawPickedStruct*) PickedList->Next();
|
||||
}
|
||||
@ -1062,7 +1062,7 @@ void WinEDA_SchematicFrame::PasteStruct( wxDC* DC )
|
||||
{
|
||||
SCH_ITEM * Struct = PickedList->m_PickedStruct;
|
||||
Struct->SetNext( GetScreen()->EEDrawList );
|
||||
SetStructFather( Struct, GetScreen() );
|
||||
SetaParent( Struct, GetScreen() );
|
||||
GetScreen()->EEDrawList = Struct;
|
||||
PickedList = PickedList->Next();
|
||||
}
|
||||
@ -1077,7 +1077,7 @@ void WinEDA_SchematicFrame::PasteStruct( wxDC* DC )
|
||||
( (SCH_COMPONENT*) DrawStruct )->m_TimeStamp = GetTimeStamp();
|
||||
( (SCH_COMPONENT*) DrawStruct )->ClearAnnotation(NULL);
|
||||
}
|
||||
SetStructFather( DrawStruct, GetScreen() );
|
||||
SetaParent( DrawStruct, GetScreen() );
|
||||
RedrawOneStruct( DrawPanel, DC, DrawStruct, GR_DEFAULT_DRAWMODE );
|
||||
DrawStruct->SetNext( GetScreen()->EEDrawList );
|
||||
GetScreen()->EEDrawList = DrawStruct;
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
|
||||
/******************************************************************/
|
||||
void SetStructFather( EDA_BaseStruct* Struct, BASE_SCREEN* Screen )
|
||||
void SetaParent( EDA_BaseStruct* Struct, BASE_SCREEN* Screen )
|
||||
/******************************************************************/
|
||||
{
|
||||
switch( Struct->Type() )
|
||||
|
@ -371,7 +371,7 @@ DrawPickedStruct * BreakSegment(SCH_SCREEN * screen, wxPoint breakpoint,
|
||||
/* EECLASS.CPP */
|
||||
/**************/
|
||||
|
||||
void SetStructFather(EDA_BaseStruct * Struct, BASE_SCREEN * Screen);
|
||||
void SetaParent(EDA_BaseStruct * Struct, BASE_SCREEN * Screen);
|
||||
|
||||
/***************/
|
||||
/* LIBALIAS.CPP */
|
||||
|
@ -43,6 +43,7 @@ set(GERBVIEW_SRCS
|
||||
set(GERBVIEW_EXTRA_SRCS
|
||||
../pcbnew/basepcbframe.cpp
|
||||
../pcbnew/class_board.cpp
|
||||
../pcbnew/class_board_item.cpp
|
||||
../pcbnew/class_board_connected_item.cpp
|
||||
../pcbnew/class_drawsegment.cpp
|
||||
../pcbnew/class_drc_item.cpp
|
||||
|
@ -25,7 +25,7 @@ void Affiche_Infos_PCB_Texte( WinEDA_BasePcbFrame* frame, TEXTE_PCB* pt_texte )
|
||||
|
||||
frame->MsgPanel->EraseMsgBox();
|
||||
|
||||
if( pt_texte->Type() == TYPECOTATION )
|
||||
if( pt_texte->Type() == TYPE_COTATION )
|
||||
Affiche_1_Parametre( frame, 1, _( "COTATION" ), pt_texte->m_Text, DARKGREEN );
|
||||
|
||||
else
|
||||
|
@ -398,7 +398,8 @@ void WinEDA_BasePcbFrame::Block_Duplicate( wxDC* DC )
|
||||
/* this track segment must be duplicated */
|
||||
m_Pcb->m_Status_Pcb = 0;
|
||||
TRACK* new_track = track->Copy();
|
||||
new_track->Insert( m_Pcb, NULL );
|
||||
|
||||
m_Pcb->Add( new_track );
|
||||
|
||||
new_track->m_Start += delta;
|
||||
new_track->m_End += delta;
|
||||
@ -417,7 +418,8 @@ void WinEDA_BasePcbFrame::Block_Duplicate( wxDC* DC )
|
||||
{
|
||||
/* this zone segment must be duplicated */
|
||||
SEGZONE * new_zsegment = (SEGZONE*) zsegment->Copy();
|
||||
new_zsegment->Insert( m_Pcb, NULL );
|
||||
|
||||
m_Pcb->Add( new_zsegment );
|
||||
|
||||
new_zsegment->m_Start += delta;
|
||||
new_zsegment->m_End += delta;
|
||||
|
@ -55,29 +55,19 @@ TRACK* WinEDA_GerberFrame::Delete_Segment( wxDC* DC, TRACK* Track )
|
||||
|
||||
if( Track->m_Flags & IS_NEW ) // Trace en cours, on peut effacer le dernier segment
|
||||
{
|
||||
if( g_TrackSegmentCount > 0 )
|
||||
if( g_CurrentTrackList.GetCount() > 0 )
|
||||
{
|
||||
// modification du trace
|
||||
Track = g_CurrentTrackSegment;
|
||||
g_CurrentTrackSegment = g_CurrentTrackSegment->Back();
|
||||
delete g_CurrentTrackList.PopBack();
|
||||
|
||||
delete Track;
|
||||
|
||||
g_TrackSegmentCount--;
|
||||
|
||||
if( g_TrackSegmentCount && (g_CurrentTrackSegment->Type() == TYPEVIA) )
|
||||
if( g_CurrentTrackList.GetCount() && g_CurrentTrackSegment->Type() == TYPE_VIA )
|
||||
{
|
||||
Track = g_CurrentTrackSegment;
|
||||
g_CurrentTrackSegment = g_CurrentTrackSegment->Back();
|
||||
delete Track;
|
||||
g_TrackSegmentCount--;
|
||||
delete g_CurrentTrackList.PopBack();
|
||||
}
|
||||
if( g_CurrentTrackSegment )
|
||||
g_CurrentTrackSegment->SetNext( NULL );
|
||||
|
||||
Affiche_Status_Box();
|
||||
|
||||
if( g_TrackSegmentCount == 0 )
|
||||
if( g_CurrentTrackList.GetCount() == 0 )
|
||||
{
|
||||
DrawPanel->ManageCurseur = NULL;
|
||||
DrawPanel->ForceCloseManageCurseur = NULL;
|
||||
|
@ -60,7 +60,7 @@ void WinEDA_GerberFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||
DrawStruct = GerberGeneralLocateAndDisplay();
|
||||
if( DrawStruct == NULL )
|
||||
break;
|
||||
if( DrawStruct->Type() == TYPETRACK )
|
||||
if( DrawStruct->Type() == TYPE_TRACK )
|
||||
{
|
||||
Delete_Segment( DC, (TRACK*) DrawStruct );
|
||||
GetScreen()->SetCurItem( NULL );
|
||||
|
@ -155,14 +155,14 @@ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* aFile,
|
||||
|
||||
if( pcb_layer_number > LAST_COPPER_LAYER )
|
||||
{
|
||||
DRAWSEGMENT* drawitem = new DRAWSEGMENT( pcb, TYPEDRAWSEGMENT );
|
||||
DRAWSEGMENT* drawitem = new DRAWSEGMENT( pcb, TYPE_DRAWSEGMENT );
|
||||
|
||||
drawitem->SetLayer( pcb_layer_number );
|
||||
drawitem->m_Start = track->m_Start;
|
||||
drawitem->m_End = track->m_End;
|
||||
drawitem->m_Width = track->m_Width;
|
||||
drawitem->SetNext( pcb->m_Drawings );
|
||||
pcb->m_Drawings = drawitem;
|
||||
|
||||
pcb->Add( drawitem );
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -195,7 +195,7 @@ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* aFile,
|
||||
newtrack->SetLayer( pcb_layer_number );
|
||||
}
|
||||
|
||||
newtrack->Insert( pcb, NULL );
|
||||
pcb->Add( newtrack );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,16 +36,11 @@ bool WinEDA_GerberFrame::Clear_Pcb( bool query )
|
||||
}
|
||||
}
|
||||
|
||||
m_Pcb->m_Drawings->DeleteStructList();
|
||||
m_Pcb->m_Drawings = NULL;
|
||||
m_Pcb->m_Drawings.DeleteAll();
|
||||
|
||||
m_Pcb->m_Track->DeleteStructList();
|
||||
m_Pcb->m_Track = NULL;
|
||||
m_Pcb->m_NbSegmTrack = 0;
|
||||
m_Pcb->m_Track.DeleteAll();
|
||||
|
||||
m_Pcb->m_Zone->DeleteStructList();
|
||||
m_Pcb->m_Zone = NULL;
|
||||
m_Pcb->m_NbSegmZone = 0;
|
||||
m_Pcb->m_Zone.DeleteAll();
|
||||
|
||||
for( ; g_UnDeleteStackPtr != 0; )
|
||||
{
|
||||
@ -66,12 +61,8 @@ bool WinEDA_GerberFrame::Clear_Pcb( bool query )
|
||||
m_Pcb->m_Status_Pcb = 0;
|
||||
m_Pcb->m_NbLoclinks = 0;
|
||||
m_Pcb->m_NbLinks = 0;
|
||||
m_Pcb->m_NbPads = 0;
|
||||
m_Pcb->m_NbNets = 0;
|
||||
m_Pcb->m_NbNodes = 0;
|
||||
m_Pcb->m_NbNoconnect = 0;
|
||||
m_Pcb->m_NbSegmTrack = 0;
|
||||
m_Pcb->m_NbSegmZone = 0;
|
||||
|
||||
/* Init parametres de gestion des ecrans PAD et PCB */
|
||||
SetBaseScreen( ActiveScreen = ScreenPcb );
|
||||
@ -88,12 +79,8 @@ void WinEDA_GerberFrame::Erase_Zones( bool query )
|
||||
if( query && !IsOK( this, _( "Delete zones ?" ) ) )
|
||||
return;
|
||||
|
||||
if( m_Pcb->m_Zone )
|
||||
{
|
||||
m_Pcb->m_Zone->DeleteStructList( );
|
||||
m_Pcb->m_Zone = NULL;
|
||||
m_Pcb->m_NbSegmZone = 0;
|
||||
}
|
||||
m_Pcb->m_Zone.DeleteAll();
|
||||
|
||||
ScreenPcb->SetModify();
|
||||
}
|
||||
|
||||
@ -116,10 +103,10 @@ void WinEDA_GerberFrame::Erase_Segments_Pcb( bool all_layers, bool query )
|
||||
|
||||
switch( PtStruct->Type() )
|
||||
{
|
||||
case TYPEDRAWSEGMENT:
|
||||
case TYPETEXTE:
|
||||
case TYPECOTATION:
|
||||
case TYPEMIRE:
|
||||
case TYPE_DRAWSEGMENT:
|
||||
case TYPE_TEXTE:
|
||||
case TYPE_COTATION:
|
||||
case TYPE_MIRE:
|
||||
if( PtStruct->GetLayer() == layer || layer < 0 )
|
||||
PtStruct->DeleteStructure();
|
||||
break;
|
||||
@ -177,7 +164,7 @@ void WinEDA_GerberFrame::Erase_Textes_Pcb( bool query )
|
||||
for( ; PtStruct != NULL; PtStruct = PtNext )
|
||||
{
|
||||
PtNext = PtStruct->Next();
|
||||
if( PtStruct->Type() == TYPETEXTE )
|
||||
if( PtStruct->Type() == TYPE_TEXTE )
|
||||
PtStruct->DeleteStructure();
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ BOARD_ITEM* WinEDA_GerberFrame::Locate( int typeloc )
|
||||
while( ( TrackLocate = Locate_Pistes( TrackLocate, layer, typeloc ) ) != NULL )
|
||||
{
|
||||
Track = TrackLocate;
|
||||
if( TrackLocate->Type() == TYPEVIA )
|
||||
if( TrackLocate->Type() == TYPE_VIA )
|
||||
break;
|
||||
TrackLocate = TrackLocate->Next();
|
||||
}
|
||||
@ -67,7 +67,7 @@ BOARD_ITEM* WinEDA_GerberFrame::Locate( int typeloc )
|
||||
}
|
||||
|
||||
|
||||
pt_texte_pcb = Locate_Texte_Pcb( (TEXTE_PCB*) m_Pcb->m_Drawings, typeloc );
|
||||
pt_texte_pcb = Locate_Texte_Pcb( (TEXTE_PCB*) m_Pcb->m_Drawings.GetFirst(), typeloc );
|
||||
if( pt_texte_pcb ) // texte type PCB localise
|
||||
{
|
||||
pt_texte_pcb->Display_Infos( this );
|
||||
@ -79,7 +79,7 @@ BOARD_ITEM* WinEDA_GerberFrame::Locate( int typeloc )
|
||||
return DrawSegm;
|
||||
}
|
||||
|
||||
if( ( TrackLocate = Locate_Zone( (TRACK*) m_Pcb->m_Zone,
|
||||
if( ( TrackLocate = Locate_Zone( m_Pcb->m_Zone,
|
||||
GetScreen()->m_Active_Layer, typeloc ) ) != NULL )
|
||||
{
|
||||
TrackLocate->Display_Infos( this );
|
||||
@ -112,7 +112,7 @@ DRAWSEGMENT* Locate_Segment_Pcb( BOARD* Pcb, int typeloc )
|
||||
PtStruct = Pcb->m_Drawings;
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Next() )
|
||||
{
|
||||
if( PtStruct->Type() != TYPEDRAWSEGMENT )
|
||||
if( PtStruct->Type() != TYPE_DRAWSEGMENT )
|
||||
continue;
|
||||
pts = (DRAWSEGMENT*) PtStruct;
|
||||
ux0 = pts->m_Start.x; uy0 = pts->m_Start.y;
|
||||
@ -198,7 +198,7 @@ TRACK* Locate_Pistes( TRACK* start_adresse, wxPoint ref, int Layer )
|
||||
dx -= ux0; dy -= uy0;
|
||||
spot_cX = ref.x - ux0; spot_cY = ref.y - uy0;
|
||||
|
||||
if( Track->Type() == TYPEVIA ) /* VIA rencontree */
|
||||
if( Track->Type() == TYPE_VIA ) /* VIA rencontree */
|
||||
{
|
||||
if( (abs( spot_cX ) <= l_piste ) && (abs( spot_cY ) <=l_piste) )
|
||||
{
|
||||
@ -289,7 +289,7 @@ TEXTE_PCB* Locate_Texte_Pcb( TEXTE_PCB* pt_txt_pcb, int typeloc )
|
||||
PtStruct = (EDA_BaseStruct*) pt_txt_pcb;
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Next() )
|
||||
{
|
||||
if( PtStruct->Type() != TYPETEXTE )
|
||||
if( PtStruct->Type() != TYPE_TEXTE )
|
||||
continue;
|
||||
pt_txt_pcb = (TEXTE_PCB*) PtStruct;
|
||||
|
||||
|
@ -22,10 +22,11 @@ OBJECTS= \
|
||||
gerberframe.o\
|
||||
onrightclick.o\
|
||||
class_board.o\
|
||||
class_board_item.o\
|
||||
class_drawsegment.o\
|
||||
class_track.o \
|
||||
class_drc_item.o \
|
||||
class_board_connected_item.o\
|
||||
class_board_connected_item.o\
|
||||
drawframe.o\
|
||||
drawpanel.o\
|
||||
set_color.o \
|
||||
@ -53,7 +54,7 @@ OBJECTS= \
|
||||
controle.o\
|
||||
basepcbframe.o\
|
||||
export_to_pcbnew.o\
|
||||
collectors.o
|
||||
collectors.o
|
||||
|
||||
setpage.o: ../share/setpage.cpp
|
||||
$(CXX) -c $(EDACPPFLAGS) -o $@ ../share/$*.cpp
|
||||
|
@ -72,7 +72,7 @@ bool WinEDA_GerberFrame::OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu
|
||||
|
||||
switch( DrawStruct->Type() )
|
||||
{
|
||||
case TYPETRACK:
|
||||
case TYPE_TRACK:
|
||||
|
||||
// PopMenu->AppendSeparator();
|
||||
// PopMenu->Append(ID_POPUP_PCB_EDIT_TRACK, _("Edit"));
|
||||
|
@ -102,6 +102,13 @@ static void fillRoundFlashTRACK( TRACK* aTrack, int Dcode_index, int aLayer,
|
||||
NEGATE( aTrack->m_End.y );
|
||||
aTrack->SetNet( Dcode_index );
|
||||
aTrack->m_Shape = S_SPOT_CIRCLE;
|
||||
|
||||
D(printf("%s: isDark=%s\n", __func__, isDark ? "true" : "false" );)
|
||||
|
||||
if( !isDark )
|
||||
{
|
||||
aTrack->m_Flags |= DRAW_ERASED;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -148,6 +155,12 @@ static void fillOvalOrRectFlashTRACK( TRACK* aTrack, int Dcode_index, int aLaye
|
||||
aTrack->m_Start.y -= len;
|
||||
aTrack->m_End.y += len;
|
||||
}
|
||||
|
||||
D(printf("%s: isDark=%s\n", __func__, isDark ? "true" : "false" );)
|
||||
if( !isDark )
|
||||
{
|
||||
aTrack->m_Flags |= DRAW_ERASED;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -178,6 +191,12 @@ static void fillLineTRACK( TRACK* aTrack, int Dcode_index, int aLayer,
|
||||
NEGATE( aTrack->m_End.y );
|
||||
|
||||
aTrack->SetNet( Dcode_index );
|
||||
|
||||
D(printf("%s: isDark=%s\n", __func__, isDark ? "true" : "false" );)
|
||||
if( !isDark )
|
||||
{
|
||||
aTrack->m_Flags |= DRAW_ERASED;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -190,16 +209,17 @@ static void Append_1_SEG_ARC_GERBER( int Dcode_index,
|
||||
bool trigo_sens, bool multiquadrant, bool isDark )
|
||||
/*****************************************************************/
|
||||
|
||||
/* creation d'un arc:
|
||||
* si multiquadrant == true arc de 0 a 360 degres
|
||||
* et rel_center est la coordonn<EFBFBD>e du centre relativement au startpoint
|
||||
*
|
||||
* si multiquadrant == false arc de 0 <EFBFBD> 90 entierement contenu dans le meme quadrant
|
||||
* et rel_center est la coordonn<EFBFBD>e du centre relativement au startpoint,
|
||||
* mais en VALEUR ABSOLUE et le signe des valeurs x et y de rel_center doit
|
||||
* etre deduit de cette limite de 90 degres
|
||||
*
|
||||
*/
|
||||
/*
|
||||
creation d'un arc:
|
||||
si multiquadrant == true arc de 0 a 360 degres
|
||||
et rel_center est la coordonn<EFBFBD>e du centre relativement au startpoint
|
||||
|
||||
si multiquadrant == false arc de 0 <EFBFBD> 90 entierement contenu dans le meme quadrant
|
||||
et rel_center est la coordonn<EFBFBD>e du centre relativement au startpoint,
|
||||
mais en VALEUR ABSOLUE et le signe des valeurs x et y de rel_center doit
|
||||
etre deduit de cette limite de 90 degres
|
||||
*/
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@ -291,6 +311,12 @@ static void fillArcTRACK( TRACK* aTrack, int Dcode_index, int aLayer,
|
||||
NEGATE( aTrack->m_End.y );
|
||||
|
||||
aTrack->SetSubNet( -aTrack->GetSubNet() );
|
||||
|
||||
if( !isDark )
|
||||
{
|
||||
D(printf("%s: isDark=false\n", __func__ );)
|
||||
aTrack->m_Flags |= DRAW_ERASED;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -811,16 +837,9 @@ bool GERBER::Execute_DCODE_Command( WinEDA_GerberFrame* frame, wxDC* DC,
|
||||
case 1: // code D01 Draw line, exposure ON
|
||||
{
|
||||
m_Exposure = true;
|
||||
SEGZONE* edge_poly, * last;
|
||||
|
||||
edge_poly = new SEGZONE( frame->m_Pcb );
|
||||
|
||||
last = (SEGZONE*) frame->m_Pcb->m_Zone;
|
||||
if( last )
|
||||
while( last->Next() )
|
||||
last = (SEGZONE*) last->Next();
|
||||
|
||||
edge_poly->Insert( frame->m_Pcb, last );
|
||||
SEGZONE* edge_poly = new SEGZONE( frame->m_Pcb );
|
||||
frame->m_Pcb->m_Zone.Append( edge_poly );
|
||||
|
||||
edge_poly->SetLayer( activeLayer );
|
||||
edge_poly->m_Width = 1;
|
||||
@ -829,6 +848,7 @@ bool GERBER::Execute_DCODE_Command( WinEDA_GerberFrame* frame, wxDC* DC,
|
||||
edge_poly->m_End = m_CurrentPos;
|
||||
NEGATE( edge_poly->m_End.y );
|
||||
edge_poly->SetNet( m_PolygonFillModeState );
|
||||
|
||||
m_PreviousPos = m_CurrentPos;
|
||||
m_PolygonFillModeState = 1;
|
||||
break;
|
||||
@ -862,10 +882,10 @@ bool GERBER::Execute_DCODE_Command( WinEDA_GerberFrame* frame, wxDC* DC,
|
||||
{
|
||||
case GERB_INTERPOL_LINEAR_1X:
|
||||
track = new TRACK( frame->m_Pcb );
|
||||
track->Insert( frame->m_Pcb, NULL );
|
||||
frame->m_Pcb->m_Track.Append( track );
|
||||
fillLineTRACK( track, dcode, activeLayer,
|
||||
m_PreviousPos, m_CurrentPos,
|
||||
size.x, m_Exposure ^ m_ImageNegative );
|
||||
size.x, !(m_LayerNegative ^ m_ImageNegative) );
|
||||
break;
|
||||
|
||||
case GERB_INTERPOL_LINEAR_01X:
|
||||
@ -877,11 +897,11 @@ bool GERBER::Execute_DCODE_Command( WinEDA_GerberFrame* frame, wxDC* DC,
|
||||
case GERB_INTERPOL_ARC_NEG:
|
||||
case GERB_INTERPOL_ARC_POS:
|
||||
track = new TRACK( frame->m_Pcb );
|
||||
track->Insert( frame->m_Pcb, NULL );
|
||||
frame->m_Pcb->m_Track.Append( track );
|
||||
fillArcTRACK( track, dcode, activeLayer,
|
||||
m_PreviousPos, m_CurrentPos, m_IJPos,
|
||||
size.x, m_Iterpolation==GERB_INTERPOL_ARC_NEG ? false : true,
|
||||
m_360Arc_enbl, m_Exposure ^ m_ImageNegative );
|
||||
m_360Arc_enbl, !(m_LayerNegative ^ m_ImageNegative) );
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -913,20 +933,20 @@ bool GERBER::Execute_DCODE_Command( WinEDA_GerberFrame* frame, wxDC* DC,
|
||||
case APT_LINE: // APT_LINE is not in the spec, don't know why it's here
|
||||
case APT_CIRCLE:
|
||||
track = new TRACK( frame->m_Pcb );
|
||||
track->Insert( frame->m_Pcb, NULL );
|
||||
frame->m_Pcb->m_Track.Append( track );
|
||||
fillRoundFlashTRACK( track, dcode, activeLayer,
|
||||
m_CurrentPos,
|
||||
size.x, true ^ m_ImageNegative );
|
||||
size.x, !(m_LayerNegative ^ m_ImageNegative) );
|
||||
break;
|
||||
|
||||
case APT_OVAL:
|
||||
case APT_RECT:
|
||||
track = new TRACK( frame->m_Pcb );
|
||||
track->Insert( frame->m_Pcb, NULL );
|
||||
frame->m_Pcb->m_Track.Append( track );
|
||||
fillOvalOrRectFlashTRACK( track, dcode, activeLayer,
|
||||
m_CurrentPos, size,
|
||||
aperture == APT_RECT ? S_SPOT_RECT : S_SPOT_OVALE,
|
||||
true ^ m_ImageNegative );
|
||||
!(m_LayerNegative ^ m_ImageNegative) );
|
||||
break;
|
||||
|
||||
case APT_MACRO:
|
||||
@ -949,7 +969,7 @@ bool GERBER::Execute_DCODE_Command( WinEDA_GerberFrame* frame, wxDC* DC,
|
||||
int diameter = scale( p->params[1].GetValue( tool ), m_GerbMetric );
|
||||
|
||||
track = new TRACK( frame->m_Pcb );
|
||||
track->Insert( frame->m_Pcb, NULL );
|
||||
frame->m_Pcb->m_Track.Append( track );
|
||||
fillRoundFlashTRACK( track, dcode, activeLayer,
|
||||
m_CurrentPos,
|
||||
diameter, exposure );
|
||||
@ -978,7 +998,7 @@ bool GERBER::Execute_DCODE_Command( WinEDA_GerberFrame* frame, wxDC* DC,
|
||||
wxPoint midPoint( (start.x + end.x)/2, (start.y+end.y)/2 );
|
||||
curPos += midPoint;
|
||||
track = new TRACK( frame->m_Pcb );
|
||||
track->Insert( frame->m_Pcb, NULL );
|
||||
frame->m_Pcb->m_Track.Append( track );
|
||||
fillOvalOrRectFlashTRACK( track, dcode, activeLayer,
|
||||
curPos, size, S_SPOT_RECT,
|
||||
exposure );
|
||||
@ -993,7 +1013,7 @@ bool GERBER::Execute_DCODE_Command( WinEDA_GerberFrame* frame, wxDC* DC,
|
||||
size.y = msize.y;
|
||||
curPos += mapPt( p->params[3].GetValue( tool ), p->params[4].GetValue( tool ), m_GerbMetric );
|
||||
track = new TRACK( frame->m_Pcb );
|
||||
track->Insert( frame->m_Pcb, NULL );
|
||||
frame->m_Pcb->m_Track.Append( track );
|
||||
fillOvalOrRectFlashTRACK( track, dcode, activeLayer,
|
||||
curPos, size, S_SPOT_RECT,
|
||||
exposure );
|
||||
@ -1012,7 +1032,7 @@ bool GERBER::Execute_DCODE_Command( WinEDA_GerberFrame* frame, wxDC* DC,
|
||||
curPos.y += size.y/2;
|
||||
curPos.x += size.x/2;
|
||||
track = new TRACK( frame->m_Pcb );
|
||||
track->Insert( frame->m_Pcb, NULL );
|
||||
frame->m_Pcb->m_Track.Append( track );
|
||||
fillOvalOrRectFlashTRACK( track, dcode, activeLayer,
|
||||
curPos, size, S_SPOT_RECT,
|
||||
exposure );
|
||||
|
@ -309,16 +309,28 @@ bool GERBER::ExecuteRS274XCommand( int command, char buff[GERBER_BUFZ], char*& t
|
||||
|
||||
case IMAGE_POLARITY:
|
||||
if( strnicmp( text, "NEG", 3 ) == 0 )
|
||||
{
|
||||
D(printf("%s: m_ImageNegative=true\n", __func__);)
|
||||
m_ImageNegative = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
D(printf("%s: m_ImageNegative=false\n", __func__);)
|
||||
m_ImageNegative = FALSE;
|
||||
}
|
||||
break;
|
||||
|
||||
case LAYER_POLARITY:
|
||||
if( *text == 'C' )
|
||||
{
|
||||
D(printf("%s: m_LayerNegative=true\n", __func__);)
|
||||
m_LayerNegative = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
D(printf("%s: m_LayerNegative=false\n", __func__);)
|
||||
m_LayerNegative = FALSE;
|
||||
}
|
||||
break;
|
||||
|
||||
case INCLUDE_FILE:
|
||||
|
@ -28,7 +28,7 @@ void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int printmaskl
|
||||
/* routine de trace du pcb, avec selection des couches */
|
||||
{
|
||||
DISPLAY_OPTIONS save_opt;
|
||||
int DisplayPolygonsModeImg;
|
||||
int DisplayPolygonsModeImg;
|
||||
|
||||
save_opt = DisplayOpt;
|
||||
if( printmasklayer & ALL_CU_LAYERS )
|
||||
@ -44,8 +44,8 @@ void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int printmaskl
|
||||
DisplayOpt.DisplayTrackIsol = 0;
|
||||
DisplayOpt.DisplayDrawItems = FILLED;
|
||||
DisplayOpt.DisplayZones = 1;
|
||||
DisplayPolygonsModeImg = g_DisplayPolygonsModeSketch;
|
||||
g_DisplayPolygonsModeSketch = 0;
|
||||
DisplayPolygonsModeImg = g_DisplayPolygonsModeSketch;
|
||||
g_DisplayPolygonsModeSketch = 0;
|
||||
|
||||
m_PrintIsMirrored = aPrintMirrorMode;
|
||||
|
||||
@ -57,7 +57,7 @@ void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int printmaskl
|
||||
m_PrintIsMirrored = false;
|
||||
|
||||
DisplayOpt = save_opt;
|
||||
g_DisplayPolygonsModeSketch = DisplayPolygonsModeImg;
|
||||
g_DisplayPolygonsModeSketch = DisplayPolygonsModeImg;
|
||||
}
|
||||
|
||||
|
||||
@ -80,7 +80,7 @@ void WinEDA_GerberFrame::RedrawActiveWindow( wxDC* DC, bool EraseBg )
|
||||
|
||||
DrawPanel->DrawBackGround( DC );
|
||||
|
||||
Trace_Gerber( DC, GR_OR, -1 );
|
||||
Trace_Gerber( DC, GR_COPY, -1 );
|
||||
TraceWorkSheet( DC, screen, 0 );
|
||||
Affiche_Status_Box();
|
||||
|
||||
@ -117,32 +117,35 @@ void WinEDA_GerberFrame::Trace_Gerber( wxDC* DC, int draw_mode, int printmasklay
|
||||
|
||||
// Draw filled polygons
|
||||
#define NBMAX 20000
|
||||
TRACK* track;
|
||||
int nbpoints = 0;
|
||||
int nbpointsmax = NBMAX;
|
||||
int* coord = (int*) malloc( nbpointsmax * sizeof(int) * 2 );
|
||||
int* ptcoord = coord;
|
||||
track = m_Pcb->m_Zone;
|
||||
for( ; track != NULL; track = track->Next() )
|
||||
|
||||
for( TRACK* track = m_Pcb->m_Zone; track; track = track->Next() )
|
||||
{
|
||||
if ( printmasklayer != -1 )
|
||||
if ( (track->ReturnMaskLayer() & printmasklayer) == 0 ) continue;
|
||||
if( printmasklayer != -1 && !(track->ReturnMaskLayer() & printmasklayer) )
|
||||
continue;
|
||||
|
||||
if( track->GetNet() == 0 ) // StartPoint
|
||||
{
|
||||
if( nbpoints ) // we have found a new polygon: Draw the old polygon
|
||||
{
|
||||
int Color = g_DesignSettings.m_LayerColor[track->GetLayer()];
|
||||
int filled = (g_DisplayPolygonsModeSketch == 0) ? 1 : 0;
|
||||
int filled = (g_DisplayPolygonsModeSketch == 0) ? 1 : 0;
|
||||
|
||||
GRClosedPoly( &DrawPanel->m_ClipBox, DC, nbpoints, coord,
|
||||
filled, Color, Color );
|
||||
}
|
||||
|
||||
nbpoints = 2;
|
||||
ptcoord = coord;
|
||||
*ptcoord = track->m_Start.x; ptcoord++;
|
||||
*ptcoord = track->m_Start.y; ptcoord++;
|
||||
*ptcoord = track->m_End.x; ptcoord++;
|
||||
*ptcoord = track->m_End.y; ptcoord++;
|
||||
|
||||
*ptcoord++ = track->m_Start.x;
|
||||
*ptcoord++ = track->m_Start.y;
|
||||
|
||||
*ptcoord++ = track->m_End.x;
|
||||
*ptcoord++ = track->m_End.y;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -153,13 +156,16 @@ void WinEDA_GerberFrame::Trace_Gerber( wxDC* DC, int draw_mode, int printmasklay
|
||||
ptcoord = coord + nbpointsmax;
|
||||
}
|
||||
nbpoints++;
|
||||
*ptcoord = track->m_End.x; ptcoord++;
|
||||
*ptcoord = track->m_End.y; ptcoord++;
|
||||
|
||||
*ptcoord++ = track->m_End.x;
|
||||
*ptcoord++ = track->m_End.y;
|
||||
}
|
||||
|
||||
if( track->Next() == NULL ) // Last point
|
||||
{
|
||||
int Color = g_DesignSettings.m_LayerColor[track->GetLayer()];
|
||||
int filled = (g_DisplayPolygonsModeSketch == 0) ? 1 : 0;
|
||||
int filled = (g_DisplayPolygonsModeSketch == 0) ? 1 : 0;
|
||||
|
||||
GRClosedPoly( &DrawPanel->m_ClipBox, DC, nbpoints, coord,
|
||||
filled, Color, Color );
|
||||
}
|
||||
|
@ -29,30 +29,28 @@ void Draw_Track_Buffer( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb, int draw_
|
||||
* @param printmasklayer = mask for allowed layer (=-1 to draw all layers)
|
||||
*/
|
||||
{
|
||||
TRACK* Track;
|
||||
int layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
|
||||
GERBER* gerber = g_GERBER_List[layer];
|
||||
GERBER* gerber = g_GERBER_List[layer];
|
||||
int dcode_hightlight = 0;
|
||||
|
||||
if( gerber )
|
||||
dcode_hightlight = gerber->m_Selected_Tool;
|
||||
|
||||
Track = Pcb->m_Track;
|
||||
for( ; Track != NULL; Track = Track->Next() )
|
||||
for( TRACK* track = Pcb->m_Track; track; track = track->Next() )
|
||||
{
|
||||
if( printmasklayer != -1 )
|
||||
if( (Track->ReturnMaskLayer() & printmasklayer) == 0 )
|
||||
continue;
|
||||
if( !(track->ReturnMaskLayer() & printmasklayer) )
|
||||
continue;
|
||||
|
||||
if( (dcode_hightlight == Track->GetNet())
|
||||
&& (Track->GetLayer() == layer) )
|
||||
Trace_Segment( panel, DC, Track, draw_mode | GR_SURBRILL );
|
||||
if( dcode_hightlight == track->GetNet() && track->GetLayer()==layer )
|
||||
Trace_Segment( panel, DC, track, draw_mode | GR_SURBRILL );
|
||||
else
|
||||
Trace_Segment( panel, DC, Track, draw_mode );
|
||||
Trace_Segment( panel, DC, track, draw_mode );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#if 1
|
||||
|
||||
/***********************************************************************************/
|
||||
void Trace_Segment( WinEDA_DrawPanel* panel, wxDC* DC, TRACK* track, int draw_mode )
|
||||
/***********************************************************************************/
|
||||
@ -70,22 +68,30 @@ void Trace_Segment( WinEDA_DrawPanel* panel, wxDC* DC, TRACK* track, int draw_mo
|
||||
int fillopt;
|
||||
static bool show_err;
|
||||
|
||||
color = g_DesignSettings.m_LayerColor[track->GetLayer()];
|
||||
if( color & ITEM_NOT_SHOW )
|
||||
return;
|
||||
if( track->m_Flags & DRAW_ERASED ) // draw in background color, used by classs TRACK in gerbview
|
||||
{
|
||||
color = g_DrawBgColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
color = g_DesignSettings.m_LayerColor[track->GetLayer()];
|
||||
if( color & ITEM_NOT_SHOW )
|
||||
return;
|
||||
|
||||
zoom = panel->GetZoom();
|
||||
if( draw_mode & GR_SURBRILL )
|
||||
{
|
||||
if( draw_mode & GR_AND )
|
||||
color &= ~HIGHT_LIGHT_FLAG;
|
||||
else
|
||||
color |= HIGHT_LIGHT_FLAG;
|
||||
}
|
||||
if( color & HIGHT_LIGHT_FLAG )
|
||||
color = ColorRefs[color & MASKCOLOR].m_LightColor;
|
||||
}
|
||||
|
||||
GRSetDrawMode( DC, draw_mode );
|
||||
if( draw_mode & GR_SURBRILL )
|
||||
{
|
||||
if( draw_mode & GR_AND )
|
||||
color &= ~HIGHT_LIGHT_FLAG;
|
||||
else
|
||||
color |= HIGHT_LIGHT_FLAG;
|
||||
}
|
||||
if( color & HIGHT_LIGHT_FLAG )
|
||||
color = ColorRefs[color & MASKCOLOR].m_LightColor;
|
||||
|
||||
zoom = panel->GetZoom();
|
||||
|
||||
rayon = l_piste = track->m_Width >> 1;
|
||||
|
||||
@ -151,8 +157,8 @@ void Trace_Segment( WinEDA_DrawPanel* panel, wxDC* DC, TRACK* track, int draw_mo
|
||||
}
|
||||
break;
|
||||
|
||||
case S_SPOT_RECT:
|
||||
case S_RECT:
|
||||
case S_SPOT_RECT:
|
||||
case S_RECT:
|
||||
fillopt = DisplayOpt.DisplayPadFill ? FILLED : SKETCH;
|
||||
if( (l_piste / zoom) < L_MIN_DESSIN )
|
||||
{
|
||||
@ -179,10 +185,10 @@ void Trace_Segment( WinEDA_DrawPanel* panel, wxDC* DC, TRACK* track, int draw_mo
|
||||
}
|
||||
break;
|
||||
|
||||
case S_SPOT_OVALE:
|
||||
case S_SPOT_OVALE:
|
||||
fillopt = DisplayOpt.DisplayPadFill ? FILLED : SKETCH;
|
||||
|
||||
case S_SEGMENT:
|
||||
case S_SEGMENT:
|
||||
if( (l_piste / zoom) < L_MIN_DESSIN )
|
||||
{
|
||||
GRLine( &panel->m_ClipBox, DC, track->m_Start.x, track->m_Start.y,
|
||||
@ -214,6 +220,8 @@ void Trace_Segment( WinEDA_DrawPanel* panel, wxDC* DC, TRACK* track, int draw_mo
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*****************************************************************************************/
|
||||
void Affiche_DCodes_Pistes( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb, int drawmode )
|
||||
|
@ -34,8 +34,8 @@ void WinEDA_GerberFrame::UnDeleteItem( wxDC* DC )
|
||||
|
||||
switch( item->Type() )
|
||||
{
|
||||
case TYPEVIA:
|
||||
case TYPETRACK:
|
||||
case TYPE_VIA:
|
||||
case TYPE_TRACK:
|
||||
for( ; item; item = next )
|
||||
{
|
||||
next = item->Next();
|
||||
@ -87,8 +87,8 @@ BOARD_ITEM* SaveItemEfface( BOARD_ITEM* PtItem, int nbitems )
|
||||
|
||||
switch( PtStruct->Type() )
|
||||
{
|
||||
case TYPEVIA:
|
||||
case TYPETRACK:
|
||||
case TYPE_VIA:
|
||||
case TYPE_TRACK:
|
||||
{
|
||||
EDA_BaseStruct* Back = NULL;
|
||||
g_UnDeleteStack[g_UnDeleteStackPtr - 1] = PtStruct;
|
||||
|
@ -22,27 +22,28 @@ enum KICAD_T {
|
||||
EOT = 0, // search types array terminator (End Of Types)
|
||||
|
||||
TYPE_NOT_INIT = 0,
|
||||
TYPEPCB,
|
||||
TYPE_PCB,
|
||||
|
||||
// Items in pcb
|
||||
PCB_EQUIPOT_STRUCT_TYPE,
|
||||
TYPEMODULE,
|
||||
TYPEPAD,
|
||||
TYPEDRAWSEGMENT,
|
||||
TYPETEXTE,
|
||||
TYPETEXTEMODULE,
|
||||
TYPEEDGEMODULE,
|
||||
TYPETRACK,
|
||||
TYPEZONE,
|
||||
TYPEVIA,
|
||||
TYPEMARKER,
|
||||
TYPECOTATION,
|
||||
TYPEMIRE,
|
||||
TYPESCREEN,
|
||||
TYPEBLOCK,
|
||||
TYPEZONE_UNUSED,
|
||||
TYPEZONE_EDGE_CORNER,
|
||||
TYPEZONE_CONTAINER,
|
||||
TYPE_EQUIPOT,
|
||||
TYPE_MODULE,
|
||||
TYPE_PAD,
|
||||
TYPE_DRAWSEGMENT,
|
||||
TYPE_TEXTE,
|
||||
TYPE_TEXTE_MODULE,
|
||||
TYPE_EDGE_MODULE,
|
||||
TYPE_TRACK,
|
||||
TYPE_ZONE,
|
||||
TYPE_VIA,
|
||||
TYPE_MARKER,
|
||||
TYPE_COTATION,
|
||||
TYPE_MIRE,
|
||||
TYPE_SCREEN,
|
||||
TYPE_BLOCK,
|
||||
TYPE_ZONE_UNUSED,
|
||||
TYPE_ZONE_EDGE_CORNER,
|
||||
TYPE_ZONE_CONTAINER,
|
||||
TYPE_BOARD_ITEM_LIST,
|
||||
|
||||
// Draw Items in schematic
|
||||
DRAW_POLYLINE_STRUCT_TYPE,
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user