SCH_SHEET_PIN* SCH_SCREEN::GetSheetLabel( const wxPoint& aPosition ) { SCH_SHEET_PIN* sheetPin = NULL; for( SCH_ITEM* item = m_drawList.begin(); item; item = item->Next() ) { if( item->Type() != SCH_SHEET_T ) continue; SCH_SHEET* sheet = (SCH_SHEET*) item; sheetPin = sheet->GetPin( aPosition ); if( sheetPin ) break; } return sheetPin; }
SCH_ITEM* SCH_SCREEN::GetItem( const wxPoint& aPosition, int aAccuracy, KICAD_T aType ) const { for( SCH_ITEM* item = m_drawList.begin(); item; item = item->Next() ) { if( item->HitTest( aPosition, aAccuracy ) && (aType == NOT_USED) ) return item; if( (aType == SCH_FIELD_T) && (item->Type() == SCH_COMPONENT_T) ) { SCH_COMPONENT* component = (SCH_COMPONENT*) item; for( int i = REFERENCE; i < component->GetFieldCount(); i++ ) { SCH_FIELD* field = component->GetField( i ); if( field->HitTest( aPosition, aAccuracy ) ) return (SCH_ITEM*) field; } } else if( (aType == SCH_SHEET_PIN_T) && (item->Type() == SCH_SHEET_T) ) { SCH_SHEET* sheet = (SCH_SHEET*)item; SCH_SHEET_PIN* label = sheet->GetPin( aPosition ); if( label ) return (SCH_ITEM*) label; } else if( (item->Type() == aType) && item->HitTest( aPosition, aAccuracy ) ) { return item; } } return NULL; }