bool SCH_SCREEN::BreakSegmentsOnJunctions()
{
    bool brokenSegments = false;

    for( SCH_ITEM* item = m_drawList.begin(); item; item = item->Next() )
    {
        if( item->Type() == SCH_JUNCTION_T )
        {
            SCH_JUNCTION* junction = ( SCH_JUNCTION* ) item;

            if( BreakSegment( junction->GetPosition() ) )
                brokenSegments = true;
        }
        else
        {
            SCH_BUS_ENTRY_BASE* busEntry = dynamic_cast<SCH_BUS_ENTRY_BASE*>( item );
            if( busEntry )
            {
                if( BreakSegment( busEntry->GetPosition() )
                 || BreakSegment( busEntry->m_End() ) )
                    brokenSegments = true;
            }
        }
    }

    return brokenSegments;
}
Beispiel #2
0
void BreakSegmentOnJunction( BASE_SCREEN * Screen )
/************************************************/
/* Routine creant des debuts / fin de segment (BUS ou WIRES) sur les jonctions
et les raccords
	Si Screen = NULL: traitement de la hierarchie complete
*/
{
BASE_SCREEN * screen = Screen;
EDA_BaseStruct *DrawList;

	if( screen == NULL ) screen = ScreenSch;

	for ( ; screen != NULL; screen = (BASE_SCREEN*)screen->Pnext )
		{
		DrawList = screen->EEDrawList;
		while ( DrawList )
			{
			switch( DrawList->m_StructType )
				{
				case DRAW_JUNCTION_STRUCT_TYPE :
					#undef STRUCT
					#define STRUCT ((DrawJunctionStruct*)DrawList)
					BreakSegment(screen, STRUCT->m_Pos);
					break;

				case DRAW_BUSENTRY_STRUCT_TYPE :
					#undef STRUCT
					#define STRUCT ((DrawBusEntryStruct*)DrawList)
					BreakSegment(screen, STRUCT->m_Pos);
					BreakSegment(screen, STRUCT->m_End());
					break;

				case DRAW_SEGMENT_STRUCT_TYPE :
				case DRAW_NOCONNECT_STRUCT_TYPE :
				case DRAW_LABEL_STRUCT_TYPE :
				case DRAW_GLOBAL_LABEL_STRUCT_TYPE :
				case DRAW_LIB_ITEM_STRUCT_TYPE :
				case DRAW_PICK_ITEM_STRUCT_TYPE :
				case DRAW_POLYLINE_STRUCT_TYPE :
				case DRAW_MARKER_STRUCT_TYPE :
				case DRAW_TEXT_STRUCT_TYPE :
				case DRAW_SHEET_STRUCT_TYPE :
				case DRAW_SHEETLABEL_STRUCT_TYPE :
					break;

				default :
					break;
				}
			DrawList = DrawList->Pnext;
			}
		}
}