mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-14 16:19:36 +00:00
Move KICAD_T[] to std::initializer_list<KICAD_T>.
This commit is contained in:
parent
66b8ecb467
commit
aa2ad3b44c
common
eeschema
bus-wire-junction.cpp
dialogs
ee_collectors.cppee_collectors.heeschema_config.cpplib_symbol.cpplib_symbol.hsch_base_frame.cppsch_base_frame.hsch_edit_frame.cppsch_field.cppsch_field.hsch_item.hsch_label.cppsch_label.hsch_line.hsch_painter.cppsch_painter.hsch_plugins/eagle
sch_screen.cppsch_sheet.cppsch_sheet.hsch_symbol.cppsch_symbol.htools
gerbview
gbr_layout.cppgbr_layout.hgerber_collectors.cppgerber_collectors.hgerber_draw_item.cppgerber_draw_item.hgerber_file_image.cppgerber_file_image.h
tools
include
pagelayout_editor/tools
pcbnew
board.cppboard.hcollectors.cppcollectors.h
connectivity
convert_shape_list_to_polygon.cppedit_track_width.cppexporters
footprint.cppfootprint.hfp_shape.hfp_text.hfp_textbox.hnetinfo_item.cpppad.hpcb_base_edit_frame.cpppcb_dimension.hpcb_edit_frame.cpppcb_group.cpppcb_shape.hpcb_text.hpcb_textbox.hpcb_track.cpppcb_track.hpython/swig
router
specctra_import_export
tools
@ -89,14 +89,14 @@ EDA_ITEM* EDA_ITEM::Clone() const
|
||||
|
||||
// see base_struct.h
|
||||
// many classes inherit this method, be careful:
|
||||
//TODO (snh): Fix this to use std::set instead of C-style vector
|
||||
INSPECT_RESULT EDA_ITEM::Visit( INSPECTOR inspector, void* testData, const KICAD_T scanTypes[] )
|
||||
INSPECT_RESULT EDA_ITEM::Visit( INSPECTOR inspector, void* testData,
|
||||
const std::initializer_list<KICAD_T>& aScanTypes )
|
||||
{
|
||||
#if 0 && defined(DEBUG)
|
||||
std::cout << GetClass().mb_str() << ' ';
|
||||
#endif
|
||||
|
||||
if( IsType( scanTypes ) )
|
||||
if( IsType( aScanTypes ) )
|
||||
{
|
||||
if( INSPECT_RESULT::QUIT == inspector( this, testData ) )
|
||||
return INSPECT_RESULT::QUIT;
|
||||
|
@ -2,7 +2,7 @@
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2013-2017 CERN
|
||||
* Copyright (C) 2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 2021-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* @author Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
||||
* @author Maciej Suminski <maciej.suminski@cern.ch>
|
||||
*
|
||||
@ -70,8 +70,7 @@ bool SELECTION::Contains( EDA_ITEM* aItem ) const
|
||||
/// Returns the center point of the selection area bounding box.
|
||||
VECTOR2I SELECTION::GetCenter() const
|
||||
{
|
||||
KICAD_T textTypes[] = { SCH_TEXT_T, SCH_LABEL_LOCATE_ANY_T, EOT };
|
||||
bool hasOnlyText = true;
|
||||
bool hasOnlyText = true;
|
||||
|
||||
// If the selection contains only texts calculate the center as the mean of all positions
|
||||
// instead of using the center of the total bounding box. Otherwise rotating the selection will
|
||||
@ -79,7 +78,7 @@ VECTOR2I SELECTION::GetCenter() const
|
||||
|
||||
for( EDA_ITEM* item : m_items )
|
||||
{
|
||||
if( !item->IsType( textTypes ) )
|
||||
if( !item->IsType( { SCH_TEXT_T, SCH_LABEL_LOCATE_ANY_T } ) )
|
||||
{
|
||||
hasOnlyText = false;
|
||||
break;
|
||||
@ -101,7 +100,7 @@ VECTOR2I SELECTION::GetCenter() const
|
||||
|
||||
for( EDA_ITEM* item : m_items )
|
||||
{
|
||||
if( !item->IsType( textTypes ) )
|
||||
if( !item->IsType( { SCH_TEXT_T, SCH_LABEL_LOCATE_ANY_T } ) )
|
||||
bbox.Merge( item->GetBoundingBox() );
|
||||
}
|
||||
|
||||
|
@ -64,19 +64,13 @@ SELECTION_CONDITION SELECTION_CONDITIONS::HasType( KICAD_T aType )
|
||||
}
|
||||
|
||||
|
||||
SELECTION_CONDITION SELECTION_CONDITIONS::HasTypes( const KICAD_T aTypes[] )
|
||||
SELECTION_CONDITION SELECTION_CONDITIONS::HasTypes( const std::initializer_list<KICAD_T>& aTypes )
|
||||
{
|
||||
return std::bind( &SELECTION_CONDITIONS::hasTypesFunc, _1, aTypes );
|
||||
}
|
||||
|
||||
|
||||
SELECTION_CONDITION SELECTION_CONDITIONS::OnlyType( KICAD_T aType )
|
||||
{
|
||||
return std::bind( &SELECTION_CONDITIONS::onlyTypeFunc, _1, aType );
|
||||
}
|
||||
|
||||
|
||||
SELECTION_CONDITION SELECTION_CONDITIONS::OnlyTypes( const KICAD_T aTypes[] )
|
||||
SELECTION_CONDITION SELECTION_CONDITIONS::OnlyTypes( const std::initializer_list<KICAD_T>& aTypes )
|
||||
{
|
||||
return std::bind( &SELECTION_CONDITIONS::onlyTypesFunc, _1, aTypes );
|
||||
}
|
||||
@ -115,7 +109,8 @@ bool SELECTION_CONDITIONS::hasTypeFunc( const SELECTION& aSelection, KICAD_T aTy
|
||||
}
|
||||
|
||||
|
||||
bool SELECTION_CONDITIONS::hasTypesFunc( const SELECTION& aSelection, const KICAD_T aTypes[] )
|
||||
bool SELECTION_CONDITIONS::hasTypesFunc( const SELECTION& aSelection,
|
||||
const std::initializer_list<KICAD_T>& aTypes )
|
||||
{
|
||||
if( aSelection.Empty() )
|
||||
return false;
|
||||
@ -130,24 +125,8 @@ bool SELECTION_CONDITIONS::hasTypesFunc( const SELECTION& aSelection, const KICA
|
||||
}
|
||||
|
||||
|
||||
bool SELECTION_CONDITIONS::onlyTypeFunc( const SELECTION& aSelection, KICAD_T aType )
|
||||
{
|
||||
if( aSelection.Empty() )
|
||||
return false;
|
||||
|
||||
KICAD_T types[] = { aType, EOT };
|
||||
|
||||
for( const EDA_ITEM* item : aSelection )
|
||||
{
|
||||
if( !item->IsType( types ) )
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool SELECTION_CONDITIONS::onlyTypesFunc( const SELECTION& aSelection, const KICAD_T aTypes[] )
|
||||
bool SELECTION_CONDITIONS::onlyTypesFunc( const SELECTION& aSelection,
|
||||
const std::initializer_list<KICAD_T>& aTypes )
|
||||
{
|
||||
if( aSelection.Empty() )
|
||||
return false;
|
||||
|
@ -2,7 +2,7 @@
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2004 Jean-Pierre Charras, jean-pierre.charras@gipsa-lab.inpg.fr
|
||||
* Copyright (C) 2004-2021 KiCad Developers, see change_log.txt for contributors.
|
||||
* Copyright (C) 2004-2022 KiCad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@ -319,8 +319,6 @@ bool SCH_EDIT_FRAME::BreakSegment( SCH_LINE* aSegment, const VECTOR2I& aPoint,
|
||||
|
||||
bool SCH_EDIT_FRAME::BreakSegments( const VECTOR2I& aPoint, SCH_SCREEN* aScreen )
|
||||
{
|
||||
static const KICAD_T wiresAndBuses[] = { SCH_ITEM_LOCATE_WIRE_T, SCH_ITEM_LOCATE_BUS_T, EOT };
|
||||
|
||||
if( aScreen == nullptr )
|
||||
aScreen = GetScreen();
|
||||
|
||||
@ -329,12 +327,12 @@ bool SCH_EDIT_FRAME::BreakSegments( const VECTOR2I& aPoint, SCH_SCREEN* aScreen
|
||||
|
||||
for( SCH_ITEM* item : aScreen->Items().Overlapping( SCH_LINE_T, aPoint ) )
|
||||
{
|
||||
if( item->IsType( wiresAndBuses ) )
|
||||
if( item->IsType( { SCH_ITEM_LOCATE_WIRE_T, SCH_ITEM_LOCATE_BUS_T } ) )
|
||||
{
|
||||
SCH_LINE* wire = static_cast<SCH_LINE*>( item );
|
||||
|
||||
if( IsPointOnSegment( wire->GetStartPoint(), wire->GetEndPoint(), aPoint )
|
||||
&& !wire->IsEndPoint( aPoint ) )
|
||||
&& !wire->IsEndPoint( aPoint ) )
|
||||
{
|
||||
wires.push_back( wire );
|
||||
}
|
||||
@ -380,13 +378,13 @@ void SCH_EDIT_FRAME::DeleteJunction( SCH_ITEM* aJunction, bool aAppend )
|
||||
SCH_SCREEN* screen = GetScreen();
|
||||
PICKED_ITEMS_LIST undoList;
|
||||
EE_SELECTION_TOOL* selectionTool = m_toolManager->GetTool<EE_SELECTION_TOOL>();
|
||||
KICAD_T wiresAndBuses[] = { SCH_ITEM_LOCATE_WIRE_T, SCH_ITEM_LOCATE_BUS_T, EOT };
|
||||
|
||||
auto remove_item = [ & ]( SCH_ITEM* aItem ) -> void
|
||||
{
|
||||
aItem->SetFlags( STRUCT_DELETED );
|
||||
undoList.PushItem( ITEM_PICKER( screen, aItem, UNDO_REDO::DELETED ) );
|
||||
};
|
||||
auto remove_item =
|
||||
[&]( SCH_ITEM* aItem ) -> void
|
||||
{
|
||||
aItem->SetFlags( STRUCT_DELETED );
|
||||
undoList.PushItem( ITEM_PICKER( screen, aItem, UNDO_REDO::DELETED ) );
|
||||
};
|
||||
|
||||
remove_item( aJunction );
|
||||
RemoveFromScreen( aJunction, screen );
|
||||
@ -399,9 +397,12 @@ void SCH_EDIT_FRAME::DeleteJunction( SCH_ITEM* aJunction, bool aAppend )
|
||||
{
|
||||
SCH_LINE* line = static_cast<SCH_LINE*>( item );
|
||||
|
||||
if( line->IsType( wiresAndBuses ) && line->IsEndPoint( aJunction->GetPosition() )
|
||||
if( line->IsType( { SCH_ITEM_LOCATE_WIRE_T, SCH_ITEM_LOCATE_BUS_T } )
|
||||
&& line->IsEndPoint( aJunction->GetPosition() )
|
||||
&& !( line->GetEditFlags() & STRUCT_DELETED ) )
|
||||
{
|
||||
lines.push_back( line );
|
||||
}
|
||||
}
|
||||
|
||||
alg::for_all_pairs( lines.begin(), lines.end(),
|
||||
|
@ -461,8 +461,6 @@ DIALOG_SCH_FIELD_PROPERTIES::DIALOG_SCH_FIELD_PROPERTIES( SCH_BASE_FRAME* aParen
|
||||
DIALOG_FIELD_PROPERTIES( aParent, aTitle, aField ),
|
||||
m_field( aField )
|
||||
{
|
||||
static KICAD_T labelTypes[] = { SCH_LABEL_LOCATE_ANY_T, EOT };
|
||||
|
||||
m_isSheetFilename = false;
|
||||
|
||||
if( aField->GetParent() && aField->GetParent()->Type() == SCH_SYMBOL_T )
|
||||
@ -490,7 +488,7 @@ DIALOG_SCH_FIELD_PROPERTIES::DIALOG_SCH_FIELD_PROPERTIES( SCH_BASE_FRAME* aParen
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if( aField->GetParent() && aField->GetParent()->IsType( labelTypes ) )
|
||||
else if( aField->GetParent() && aField->GetParent()->IsType( { SCH_LABEL_LOCATE_ANY_T } ) )
|
||||
{
|
||||
m_fieldId = LABELUSERFIELD_V;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2019-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 2019-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@ -39,7 +39,6 @@
|
||||
#include <tools/sch_edit_tool.h>
|
||||
#include <widgets/unit_binder.h>
|
||||
#include <widgets/font_choice.h>
|
||||
#include "font/kicad_font_name.h"
|
||||
|
||||
static bool g_modifyReferences;
|
||||
static bool g_modifyValues;
|
||||
@ -423,18 +422,6 @@ void DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem( const SCH_SHEET_PATH& aShe
|
||||
}
|
||||
}
|
||||
|
||||
static KICAD_T wireTypes[] = { SCH_ITEM_LOCATE_WIRE_T,
|
||||
SCH_LABEL_LOCATE_WIRE_T,
|
||||
EOT };
|
||||
static KICAD_T busTypes[] = { SCH_ITEM_LOCATE_BUS_T,
|
||||
SCH_LABEL_LOCATE_BUS_T,
|
||||
EOT };
|
||||
static KICAD_T schTextAndGraphics[] = { SCH_TEXT_T,
|
||||
SCH_TEXTBOX_T,
|
||||
SCH_ITEM_LOCATE_GRAPHIC_LINE_T,
|
||||
SCH_SHAPE_T,
|
||||
EOT };
|
||||
|
||||
if( aItem->Type() == SCH_SYMBOL_T )
|
||||
{
|
||||
SCH_SYMBOL* symbol = (SCH_SYMBOL*) aItem;
|
||||
@ -520,16 +507,30 @@ void DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem( const SCH_SHEET_PATH& aShe
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( m_wires->GetValue() && aItem->IsType( wireTypes ) )
|
||||
else if( m_wires->GetValue() && aItem->IsType( { SCH_ITEM_LOCATE_WIRE_T,
|
||||
SCH_LABEL_LOCATE_WIRE_T } ) )
|
||||
{
|
||||
processItem( aSheetPath, aItem );
|
||||
else if( m_buses->GetValue() && aItem->IsType( busTypes ) )
|
||||
}
|
||||
else if( m_buses->GetValue() && aItem->IsType( { SCH_ITEM_LOCATE_BUS_T,
|
||||
SCH_LABEL_LOCATE_BUS_T } ) )
|
||||
{
|
||||
processItem( aSheetPath, aItem );
|
||||
}
|
||||
else if( m_globalLabels->GetValue() && aItem->Type() == SCH_GLOBAL_LABEL_T )
|
||||
{
|
||||
processItem( aSheetPath, aItem );
|
||||
}
|
||||
else if( m_hierLabels->GetValue() && aItem->Type() == SCH_HIER_LABEL_T )
|
||||
{
|
||||
processItem( aSheetPath, aItem );
|
||||
else if( m_schTextAndGraphics->GetValue() && aItem->IsType( schTextAndGraphics ) )
|
||||
}
|
||||
else if( m_schTextAndGraphics->GetValue() && aItem->IsType( { SCH_TEXT_T, SCH_TEXTBOX_T,
|
||||
SCH_ITEM_LOCATE_GRAPHIC_LINE_T,
|
||||
SCH_SHAPE_T } ) )
|
||||
{
|
||||
processItem( aSheetPath, aItem );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@gmail.com>
|
||||
* Copyright (C) 2004-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 2004-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 2019 CERN
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@ -36,13 +36,7 @@
|
||||
#include "sch_reference_list.h"
|
||||
|
||||
|
||||
const KICAD_T EE_COLLECTOR::AllItems[] = {
|
||||
SCH_LOCATE_ANY_T,
|
||||
EOT
|
||||
};
|
||||
|
||||
|
||||
const KICAD_T EE_COLLECTOR::EditableItems[] = {
|
||||
const std::initializer_list<KICAD_T> EE_COLLECTOR::EditableItems = {
|
||||
SCH_SHAPE_T,
|
||||
SCH_TEXT_T,
|
||||
SCH_TEXTBOX_T,
|
||||
@ -62,19 +56,7 @@ const KICAD_T EE_COLLECTOR::EditableItems[] = {
|
||||
};
|
||||
|
||||
|
||||
const KICAD_T EE_COLLECTOR::SymbolsOnly[] = {
|
||||
SCH_SYMBOL_T,
|
||||
EOT
|
||||
};
|
||||
|
||||
|
||||
const KICAD_T EE_COLLECTOR::SheetsOnly[] = {
|
||||
SCH_SHEET_T,
|
||||
EOT
|
||||
};
|
||||
|
||||
|
||||
const KICAD_T EE_COLLECTOR::MovableItems[] =
|
||||
const std::initializer_list<KICAD_T> EE_COLLECTOR::MovableItems =
|
||||
{
|
||||
SCH_MARKER_T,
|
||||
SCH_JUNCTION_T,
|
||||
@ -98,20 +80,10 @@ const KICAD_T EE_COLLECTOR::MovableItems[] =
|
||||
};
|
||||
|
||||
|
||||
const KICAD_T EE_COLLECTOR::WiresOnly[] = {
|
||||
SCH_LINE_T,
|
||||
EOT
|
||||
};
|
||||
|
||||
|
||||
const KICAD_T EE_COLLECTOR::FieldOwners[] = {
|
||||
const std::initializer_list<KICAD_T> EE_COLLECTOR::FieldOwners = {
|
||||
SCH_SYMBOL_T,
|
||||
SCH_SHEET_T,
|
||||
SCH_LABEL_T,
|
||||
SCH_GLOBAL_LABEL_T,
|
||||
SCH_HIER_LABEL_T,
|
||||
SCH_DIRECTIVE_LABEL_T,
|
||||
EOT
|
||||
SCH_LABEL_LOCATE_ANY_T
|
||||
};
|
||||
|
||||
|
||||
@ -146,8 +118,9 @@ INSPECT_RESULT EE_COLLECTOR::Inspect( EDA_ITEM* aItem, void* aTestData )
|
||||
}
|
||||
|
||||
|
||||
void EE_COLLECTOR::Collect( SCH_SCREEN* aScreen, const KICAD_T aFilterList[], const VECTOR2I& aPos,
|
||||
int aUnit, int aConvert )
|
||||
void EE_COLLECTOR::Collect( SCH_SCREEN* aScreen,
|
||||
const std::initializer_list<KICAD_T>& aFilterList,
|
||||
const VECTOR2I& aPos, int aUnit, int aConvert )
|
||||
{
|
||||
Empty(); // empty the collection just in case
|
||||
|
||||
@ -166,7 +139,8 @@ void EE_COLLECTOR::Collect( SCH_SCREEN* aScreen, const KICAD_T aFilterList[], co
|
||||
}
|
||||
|
||||
|
||||
void EE_COLLECTOR::Collect( LIB_ITEMS_CONTAINER& aItems, const KICAD_T aFilterList[],
|
||||
void EE_COLLECTOR::Collect( LIB_ITEMS_CONTAINER& aItems,
|
||||
const std::initializer_list<KICAD_T>& aFilterList,
|
||||
const VECTOR2I& aPos, int aUnit, int aConvert )
|
||||
{
|
||||
Empty(); // empty the collection just in case
|
||||
|
@ -2,7 +2,7 @@
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@gmail.com>
|
||||
* Copyright (C) 2011-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 2011-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 2019 CERN
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
@ -39,15 +39,11 @@ class SCH_SYMBOL;
|
||||
class EE_COLLECTOR : public COLLECTOR
|
||||
{
|
||||
public:
|
||||
static const KICAD_T AllItems[];
|
||||
static const KICAD_T EditableItems[];
|
||||
static const KICAD_T MovableItems[];
|
||||
static const KICAD_T SymbolsOnly[];
|
||||
static const KICAD_T SheetsOnly[];
|
||||
static const KICAD_T WiresOnly[];
|
||||
static const KICAD_T FieldOwners[];
|
||||
static const std::initializer_list<KICAD_T> EditableItems;
|
||||
static const std::initializer_list<KICAD_T> MovableItems;
|
||||
static const std::initializer_list<KICAD_T> FieldOwners;
|
||||
|
||||
EE_COLLECTOR( const KICAD_T* aScanTypes = EE_COLLECTOR::AllItems ) :
|
||||
EE_COLLECTOR( const std::initializer_list<KICAD_T>& aScanTypes = { SCH_LOCATE_ANY_T } ) :
|
||||
m_Unit( 0 ),
|
||||
m_Convert( 0 ),
|
||||
m_ShowPinElectricalTypes( false )
|
||||
@ -75,29 +71,27 @@ public:
|
||||
* Scan a #EDA_ITEM using this class's Inspector method which does the collection.
|
||||
*
|
||||
* @param aScreen The eeschema screen to use for scanning
|
||||
* @param aFilterList A list of #KICAD_T types with a terminating #EOT, that determines
|
||||
* what is to be collected and the priority order of the resulting
|
||||
* collection.
|
||||
* @param aFilterList A list of #KICAD_T types that determines what is to be collected and
|
||||
* the priority order of the resulting collection.
|
||||
* @param aPos are the coordinates to use in hit testing.
|
||||
* @param aUnit is the symbol unit filter (for symbol editor).
|
||||
* @param aConvert is the DeMorgan filter (for symbol editor)
|
||||
*/
|
||||
void Collect( SCH_SCREEN* aScreen, const KICAD_T aFilterList[], const VECTOR2I& aPos,
|
||||
int aUnit = 0, int aConvert = 0 );
|
||||
void Collect( SCH_SCREEN* aScreen, const std::initializer_list<KICAD_T>& aFilterList,
|
||||
const VECTOR2I& aPos, int aUnit = 0, int aConvert = 0 );
|
||||
|
||||
/**
|
||||
* Scan an #EDA_ITEM using this class's Inspector method which does the collection.
|
||||
*
|
||||
* @param aItems is a LIB_SYMBOL multivector holding the symbol items.
|
||||
* @param aFilterList is a list of #KICAD_T types with a terminating #EOT, that determines
|
||||
* what is to be collected and the priority order of the resulting
|
||||
* collection.
|
||||
* @param aFilterList is a list of #KICAD_T types that determines what is to be collected
|
||||
* and the priority order of the resulting collection.
|
||||
* @param aPos are the coordinates to use in hit testing.
|
||||
* @param aUnit is the symbol unit filter (for symbol editor).
|
||||
* @param aConvert is the DeMorgan filter (for symbol editor).
|
||||
*/
|
||||
void Collect( LIB_ITEMS_CONTAINER& aItems, const KICAD_T aFilterList[], const VECTOR2I& aPos,
|
||||
int aUnit = 0, int aConvert = 0 );
|
||||
void Collect( LIB_ITEMS_CONTAINER& aItems, const std::initializer_list<KICAD_T>& aFilterList,
|
||||
const VECTOR2I& aPos, int aUnit = 0, int aConvert = 0 );
|
||||
|
||||
/**
|
||||
* Test if the collected items form a corner of two line segments.
|
||||
|
@ -56,7 +56,6 @@ bool SCH_EDIT_FRAME::LoadProjectSettings()
|
||||
GetRenderSettings()->m_LabelSizeRatio = settings.m_LabelSizeRatio;
|
||||
GetRenderSettings()->m_TextOffsetRatio = settings.m_TextOffsetRatio;
|
||||
GetRenderSettings()->m_PinSymbolSize = settings.m_PinSymbolSize;
|
||||
GetRenderSettings()->m_JunctionSize = settings.m_JunctionSize;
|
||||
|
||||
GetRenderSettings()->SetDashLengthRatio( settings.m_DashedLineDashRatio );
|
||||
GetRenderSettings()->SetGapLengthRatio( settings.m_DashedLineGapRatio );
|
||||
@ -94,7 +93,6 @@ void SCH_EDIT_FRAME::ShowSchematicSetupDialog( const wxString& aInitialPage )
|
||||
GetRenderSettings()->m_LabelSizeRatio = Schematic().Settings().m_LabelSizeRatio;
|
||||
GetRenderSettings()->m_TextOffsetRatio = Schematic().Settings().m_TextOffsetRatio;
|
||||
GetRenderSettings()->m_PinSymbolSize = Schematic().Settings().m_PinSymbolSize;
|
||||
GetRenderSettings()->m_JunctionSize = Schematic().Settings().m_JunctionSize;
|
||||
|
||||
GetRenderSettings()->SetDashLengthRatio( Schematic().Settings().m_DashedLineDashRatio );
|
||||
GetRenderSettings()->SetGapLengthRatio( Schematic().Settings().m_DashedLineGapRatio );
|
||||
|
@ -1237,12 +1237,12 @@ LIB_ITEM* LIB_SYMBOL::LocateDrawItem( int aUnit, int aConvert, KICAD_T aType,
|
||||
|
||||
|
||||
INSPECT_RESULT LIB_SYMBOL::Visit( INSPECTOR aInspector, void* aTestData,
|
||||
const KICAD_T aFilterTypes[] )
|
||||
const std::initializer_list<KICAD_T>& aScanTypes )
|
||||
{
|
||||
// The part itself is never inspected, only its children
|
||||
for( LIB_ITEM& item : m_drawings )
|
||||
{
|
||||
if( item.IsType( aFilterTypes ) )
|
||||
if( item.IsType( aScanTypes ) )
|
||||
{
|
||||
if( aInspector( &item, aTestData ) == INSPECT_RESULT::QUIT )
|
||||
return INSPECT_RESULT::QUIT;
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (C) 2004-2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||
* Copyright (C) 2008 Wayne Stambaugh <stambaughw@gmail.com>
|
||||
* Copyright (C) 2004-2021 KiCad Developers, see change_log.txt for contributors.
|
||||
* Copyright (C) 2004-2022 KiCad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@ -502,7 +502,8 @@ public:
|
||||
LIB_ITEMS_CONTAINER& GetDrawItems() { return m_drawings; }
|
||||
const LIB_ITEMS_CONTAINER& GetDrawItems() const { return m_drawings; }
|
||||
|
||||
INSPECT_RESULT Visit( INSPECTOR inspector, void* testData, const KICAD_T scanTypes[] ) override;
|
||||
INSPECT_RESULT Visit( INSPECTOR inspector, void* testData,
|
||||
const std::initializer_list<KICAD_T>& aScanTypes ) override;
|
||||
|
||||
/**
|
||||
* Set the units per symbol count.
|
||||
|
@ -106,11 +106,6 @@ SCH_BASE_FRAME::SCH_BASE_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aWindo
|
||||
}
|
||||
|
||||
|
||||
SCH_BASE_FRAME::~SCH_BASE_FRAME()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
SCH_SCREEN* SCH_BASE_FRAME::GetScreen() const
|
||||
{
|
||||
return (SCH_SCREEN*) EDA_DRAW_FRAME::GetScreen();
|
||||
@ -187,10 +182,7 @@ void SCH_BASE_FRAME::UpdateStatusBar()
|
||||
MessageTextFromValue( GetUserUnits(), hypot( d.x, d.y ), false ) );
|
||||
SetStatusText( line, 3 );
|
||||
|
||||
// refresh grid display
|
||||
DisplayGridMsg();
|
||||
|
||||
// refresh units display
|
||||
DisplayUnitsMsg();
|
||||
}
|
||||
|
||||
@ -255,17 +247,6 @@ void SCH_BASE_FRAME::RedrawScreen( const VECTOR2I& aCenterPoint, bool aWarpPoint
|
||||
}
|
||||
|
||||
|
||||
void SCH_BASE_FRAME::CenterScreen( const VECTOR2I& aCenterPoint, bool aWarpPointer )
|
||||
{
|
||||
GetCanvas()->GetView()->SetCenter( aCenterPoint );
|
||||
|
||||
if( aWarpPointer )
|
||||
GetCanvas()->GetViewControls()->WarpMouseCursor( aCenterPoint, true );
|
||||
|
||||
GetCanvas()->Refresh();
|
||||
}
|
||||
|
||||
|
||||
void SCH_BASE_FRAME::HardRedraw()
|
||||
{
|
||||
if( GetCanvas() && GetCanvas()->GetView() )
|
||||
@ -342,15 +323,7 @@ void SCH_BASE_FRAME::UpdateItem( EDA_ITEM* aItem, bool isAddOrDelete, bool aUpda
|
||||
GetCanvas()->GetView()->Update( aItem );
|
||||
|
||||
// Some children are drawn from their parents. Mark them for re-paint.
|
||||
static KICAD_T parentTypes[] = { SCH_SYMBOL_T,
|
||||
SCH_SHEET_T,
|
||||
SCH_LABEL_T,
|
||||
SCH_GLOBAL_LABEL_T,
|
||||
SCH_HIER_LABEL_T,
|
||||
SCH_DIRECTIVE_LABEL_T,
|
||||
EOT };
|
||||
|
||||
if( parent && parent->IsType( parentTypes ) )
|
||||
if( parent && parent->IsType( { SCH_SYMBOL_T, SCH_SHEET_T, SCH_LABEL_LOCATE_ANY_T } ) )
|
||||
GetCanvas()->GetView()->Update( parent, KIGFX::REPAINT );
|
||||
}
|
||||
|
||||
|
@ -92,13 +92,12 @@ LIB_SYMBOL* SchGetLibSymbol( const LIB_ID& aLibId, SYMBOL_LIB_TABLE* aLibTable,
|
||||
class SCH_BASE_FRAME : public EDA_DRAW_FRAME
|
||||
{
|
||||
public:
|
||||
SCH_BASE_FRAME( KIWAY* aKiway, wxWindow* aParent,
|
||||
FRAME_T aWindowType,
|
||||
const wxString& aTitle,
|
||||
const wxPoint& aPosition, const wxSize& aSize,
|
||||
long aStyle, const wxString & aFrameName );
|
||||
SCH_BASE_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aWindowType, const wxString& aTitle,
|
||||
const wxPoint& aPosition, const wxSize& aSize, long aStyle,
|
||||
const wxString & aFrameName );
|
||||
|
||||
virtual ~SCH_BASE_FRAME();
|
||||
virtual ~SCH_BASE_FRAME()
|
||||
{ }
|
||||
|
||||
void createCanvas();
|
||||
|
||||
@ -198,8 +197,6 @@ public:
|
||||
|
||||
virtual void RedrawScreen( const VECTOR2I& aCenterPoint, bool aWarpPointer );
|
||||
|
||||
virtual void CenterScreen( const VECTOR2I& aCenterPoint, bool aWarpPointer );
|
||||
|
||||
void HardRedraw() override;
|
||||
|
||||
/**
|
||||
|
@ -1353,8 +1353,7 @@ void SCH_EDIT_FRAME::AddItemToScreenAndUndoList( SCH_SCREEN* aScreen, SCH_ITEM*
|
||||
|
||||
if( connected )
|
||||
{
|
||||
static KICAD_T autoRotatableLabelTypes[] = { SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T };
|
||||
if( aItem->IsType( autoRotatableLabelTypes ) )
|
||||
if( aItem->IsType( { SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T } ) )
|
||||
{
|
||||
auto label = static_cast<SCH_LABEL_BASE*>( aItem );
|
||||
if( label->AutoRotateOnPlacement() )
|
||||
|
@ -90,11 +90,6 @@ SCH_FIELD::SCH_FIELD( const SCH_FIELD& aField ) :
|
||||
}
|
||||
|
||||
|
||||
SCH_FIELD::~SCH_FIELD()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
SCH_FIELD& SCH_FIELD::operator=( const SCH_FIELD& aField )
|
||||
{
|
||||
EDA_TEXT::operator=( aField );
|
||||
@ -125,8 +120,6 @@ EDA_ITEM* SCH_FIELD::Clone() const
|
||||
|
||||
void SCH_FIELD::SetId( int aId )
|
||||
{
|
||||
KICAD_T labelTypes[] = { SCH_LABEL_LOCATE_ANY_T, EOT };
|
||||
|
||||
m_id = aId;
|
||||
|
||||
if( m_parent && m_parent->Type() == SCH_SHEET_T )
|
||||
@ -147,7 +140,7 @@ void SCH_FIELD::SetId( int aId )
|
||||
default: SetLayer( LAYER_FIELDS ); break;
|
||||
}
|
||||
}
|
||||
else if( m_parent && m_parent->IsType( labelTypes ) )
|
||||
else if( m_parent && m_parent->IsType( { SCH_LABEL_LOCATE_ANY_T } ) )
|
||||
{
|
||||
// We can't use defined IDs for labels because there can be multiple net class
|
||||
// assignments.
|
||||
@ -164,8 +157,6 @@ void SCH_FIELD::SetId( int aId )
|
||||
|
||||
wxString SCH_FIELD::GetShownText( int aDepth ) const
|
||||
{
|
||||
KICAD_T labelTypes[] = { SCH_LABEL_LOCATE_ANY_T, EOT };
|
||||
|
||||
std::function<bool( wxString* )> symbolResolver =
|
||||
[&]( wxString* token ) -> bool
|
||||
{
|
||||
@ -223,7 +214,7 @@ wxString SCH_FIELD::GetShownText( int aDepth ) const
|
||||
text = ExpandTextVars( text, &symbolResolver, nullptr, project );
|
||||
else if( m_parent && m_parent->Type() == SCH_SHEET_T )
|
||||
text = ExpandTextVars( text, &sheetResolver, nullptr, project );
|
||||
else if( m_parent && m_parent->IsType( labelTypes ) )
|
||||
else if( m_parent && m_parent->IsType( { SCH_LABEL_LOCATE_ANY_T } ) )
|
||||
text = ExpandTextVars( text, &labelResolver, nullptr, project );
|
||||
else
|
||||
text = ExpandTextVars( text, project );
|
||||
@ -790,8 +781,6 @@ void SCH_FIELD::DoHypertextMenu( EDA_DRAW_FRAME* aFrame )
|
||||
|
||||
wxString SCH_FIELD::GetName( bool aUseDefaultName ) const
|
||||
{
|
||||
KICAD_T labelTypes[] = { SCH_LABEL_LOCATE_ANY_T, EOT };
|
||||
|
||||
if( m_parent && m_parent->Type() == SCH_SYMBOL_T )
|
||||
{
|
||||
if( m_id >= 0 && m_id < MANDATORY_FIELDS )
|
||||
@ -810,7 +799,7 @@ wxString SCH_FIELD::GetName( bool aUseDefaultName ) const
|
||||
else
|
||||
return m_name;
|
||||
}
|
||||
else if( m_parent && m_parent->IsType( labelTypes ) )
|
||||
else if( m_parent && m_parent->IsType( { SCH_LABEL_LOCATE_ANY_T } ) )
|
||||
{
|
||||
return SCH_LABEL_BASE::GetDefaultFieldName( m_name, aUseDefaultName );
|
||||
}
|
||||
@ -824,8 +813,6 @@ wxString SCH_FIELD::GetName( bool aUseDefaultName ) const
|
||||
|
||||
wxString SCH_FIELD::GetCanonicalName() const
|
||||
{
|
||||
KICAD_T labelTypes[] = { SCH_LABEL_LOCATE_ANY_T, EOT };
|
||||
|
||||
if( m_parent && m_parent->Type() == SCH_SYMBOL_T )
|
||||
{
|
||||
switch( m_id )
|
||||
@ -846,7 +833,7 @@ wxString SCH_FIELD::GetCanonicalName() const
|
||||
default: return m_name;
|
||||
}
|
||||
}
|
||||
else if( m_parent && m_parent->IsType( labelTypes ) )
|
||||
else if( m_parent && m_parent->IsType( { SCH_LABEL_LOCATE_ANY_T } ) )
|
||||
{
|
||||
// These should be stored in canonical format, but just in case:
|
||||
if( m_name == _( "Net Class" ) )
|
||||
|
@ -54,7 +54,8 @@ public:
|
||||
|
||||
SCH_FIELD( const SCH_FIELD& aText );
|
||||
|
||||
~SCH_FIELD();
|
||||
~SCH_FIELD()
|
||||
{ }
|
||||
|
||||
SCH_FIELD& operator=( const SCH_FIELD& aField );
|
||||
|
||||
@ -68,20 +69,20 @@ public:
|
||||
return wxT( "SCH_FIELD" );
|
||||
}
|
||||
|
||||
bool IsType( const KICAD_T aScanTypes[] ) const override
|
||||
bool IsType( const std::initializer_list<KICAD_T>& aScanTypes ) const override
|
||||
{
|
||||
if( SCH_ITEM::IsType( aScanTypes ) )
|
||||
return true;
|
||||
|
||||
for( const KICAD_T* p = aScanTypes; *p != EOT; ++p )
|
||||
for( KICAD_T scanType : aScanTypes )
|
||||
{
|
||||
if( *p == SCH_FIELD_LOCATE_REFERENCE_T && m_id == REFERENCE_FIELD )
|
||||
if( scanType == SCH_FIELD_LOCATE_REFERENCE_T && m_id == REFERENCE_FIELD )
|
||||
return true;
|
||||
else if ( *p == SCH_FIELD_LOCATE_VALUE_T && m_id == VALUE_FIELD )
|
||||
else if ( scanType == SCH_FIELD_LOCATE_VALUE_T && m_id == VALUE_FIELD )
|
||||
return true;
|
||||
else if ( *p == SCH_FIELD_LOCATE_FOOTPRINT_T && m_id == FOOTPRINT_FIELD )
|
||||
else if ( scanType == SCH_FIELD_LOCATE_FOOTPRINT_T && m_id == FOOTPRINT_FIELD )
|
||||
return true;
|
||||
else if ( *p == SCH_FIELD_LOCATE_DATASHEET_T && m_id == DATASHEET_FIELD )
|
||||
else if ( scanType == SCH_FIELD_LOCATE_DATASHEET_T && m_id == DATASHEET_FIELD )
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -157,20 +157,20 @@ public:
|
||||
return wxT( "SCH_ITEM" );
|
||||
}
|
||||
|
||||
bool IsType( const KICAD_T aScanTypes[] ) const override
|
||||
bool IsType( const std::initializer_list<KICAD_T>& aScanTypes ) const override
|
||||
{
|
||||
if( EDA_ITEM::IsType( aScanTypes ) )
|
||||
return true;
|
||||
|
||||
for( const KICAD_T* p = aScanTypes; *p != EOT; ++p )
|
||||
for( KICAD_T scanType : aScanTypes )
|
||||
{
|
||||
if( *p == SCH_ITEM_LOCATE_WIRE_T && m_layer == LAYER_WIRE )
|
||||
if( scanType == SCH_ITEM_LOCATE_WIRE_T && m_layer == LAYER_WIRE )
|
||||
return true;
|
||||
|
||||
if ( *p == SCH_ITEM_LOCATE_BUS_T && m_layer == LAYER_BUS )
|
||||
if ( scanType == SCH_ITEM_LOCATE_BUS_T && m_layer == LAYER_BUS )
|
||||
return true;
|
||||
|
||||
if ( *p == SCH_ITEM_LOCATE_GRAPHIC_LINE_T
|
||||
if ( scanType == SCH_ITEM_LOCATE_GRAPHIC_LINE_T
|
||||
&& Type() == SCH_LINE_T && m_layer == LAYER_NOTES )
|
||||
{
|
||||
return true;
|
||||
|
@ -190,17 +190,14 @@ const wxString SCH_LABEL_BASE::GetDefaultFieldName( const wxString& aName, bool
|
||||
}
|
||||
|
||||
|
||||
bool SCH_LABEL_BASE::IsType( const KICAD_T aScanTypes[] ) const
|
||||
bool SCH_LABEL_BASE::IsType( const std::initializer_list<KICAD_T>& aScanTypes ) const
|
||||
{
|
||||
static KICAD_T wireTypes[] = { SCH_ITEM_LOCATE_WIRE_T, SCH_PIN_T, EOT };
|
||||
static KICAD_T busTypes[] = { SCH_ITEM_LOCATE_BUS_T, EOT };
|
||||
|
||||
if( SCH_TEXT::IsType( aScanTypes ) )
|
||||
return true;
|
||||
|
||||
for( const KICAD_T* p = aScanTypes; *p != EOT; ++p )
|
||||
for( KICAD_T scanType : aScanTypes )
|
||||
{
|
||||
if( *p == SCH_LABEL_LOCATE_ANY_T )
|
||||
if( scanType == SCH_LABEL_LOCATE_ANY_T )
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -213,22 +210,22 @@ bool SCH_LABEL_BASE::IsType( const KICAD_T aScanTypes[] ) const
|
||||
|
||||
const SCH_ITEM_SET& item_set = m_connected_items.at( Schematic()->CurrentSheet() );
|
||||
|
||||
for( const KICAD_T* p = aScanTypes; *p != EOT; ++p )
|
||||
for( KICAD_T scanType : aScanTypes )
|
||||
{
|
||||
if( *p == SCH_LABEL_LOCATE_WIRE_T )
|
||||
if( scanType == SCH_LABEL_LOCATE_WIRE_T )
|
||||
{
|
||||
for( SCH_ITEM* connection : item_set )
|
||||
{
|
||||
if( connection->IsType( wireTypes ) )
|
||||
if( connection->IsType( { SCH_ITEM_LOCATE_WIRE_T, SCH_PIN_T } ) )
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if ( *p == SCH_LABEL_LOCATE_BUS_T )
|
||||
if ( scanType == SCH_LABEL_LOCATE_BUS_T )
|
||||
{
|
||||
for( SCH_ITEM* connection : item_set )
|
||||
{
|
||||
if( connection->IsType( busTypes ) )
|
||||
if( connection->IsType( { SCH_ITEM_LOCATE_BUS_T } ) )
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -545,19 +542,19 @@ void SCH_LABEL_BASE::RunOnChildren( const std::function<void( SCH_ITEM* )>& aFun
|
||||
|
||||
|
||||
INSPECT_RESULT SCH_LABEL_BASE::Visit( INSPECTOR aInspector, void* testData,
|
||||
const KICAD_T aFilterTypes[] )
|
||||
const std::initializer_list<KICAD_T>& aScanTypes )
|
||||
{
|
||||
KICAD_T stype;
|
||||
|
||||
if( IsType( aFilterTypes ) )
|
||||
if( IsType( aScanTypes ) )
|
||||
{
|
||||
if( INSPECT_RESULT::QUIT == aInspector( this, nullptr ) )
|
||||
return INSPECT_RESULT::QUIT;
|
||||
}
|
||||
|
||||
for( const KICAD_T* p = aFilterTypes; (stype = *p) != EOT; ++p )
|
||||
for( KICAD_T scanType : aScanTypes )
|
||||
{
|
||||
if( stype == SCH_LOCATE_ANY_T || stype == SCH_FIELD_T )
|
||||
if( scanType == SCH_LOCATE_ANY_T || scanType == SCH_FIELD_T )
|
||||
{
|
||||
for( SCH_FIELD& field : m_fields )
|
||||
{
|
||||
|
@ -44,7 +44,7 @@ public:
|
||||
// Abstract class
|
||||
virtual wxString GetClass() const override = 0;
|
||||
|
||||
bool IsType( const KICAD_T aScanTypes[] ) const override;
|
||||
bool IsType( const std::initializer_list<KICAD_T>& aScanTypes ) const override;
|
||||
|
||||
void SwapData( SCH_ITEM* aItem ) override;
|
||||
|
||||
@ -119,7 +119,8 @@ public:
|
||||
|
||||
void RunOnChildren( const std::function<void( SCH_ITEM* )>& aFunction ) override;
|
||||
|
||||
INSPECT_RESULT Visit( INSPECTOR inspector, void* testData, const KICAD_T scanTypes[] ) override;
|
||||
INSPECT_RESULT Visit( INSPECTOR inspector, void* testData,
|
||||
const std::initializer_list<KICAD_T>& scanTypes ) override;
|
||||
|
||||
VECTOR2I GetSchematicTextOffset( const RENDER_SETTINGS* aSettings ) const override;
|
||||
|
||||
|
@ -67,20 +67,20 @@ public:
|
||||
*/
|
||||
wxString GetNetname(const SCH_SHEET_PATH &aSheet);
|
||||
|
||||
bool IsType( const KICAD_T aScanTypes[] ) const override
|
||||
bool IsType( const std::initializer_list<KICAD_T>& aScanTypes ) const override
|
||||
{
|
||||
if( SCH_ITEM::IsType( aScanTypes ) )
|
||||
return true;
|
||||
|
||||
for( const KICAD_T* p = aScanTypes; *p != EOT; ++p )
|
||||
for( KICAD_T scanType : aScanTypes )
|
||||
{
|
||||
if( *p == SCH_ITEM_LOCATE_WIRE_T && m_layer == LAYER_WIRE )
|
||||
if( scanType == SCH_ITEM_LOCATE_WIRE_T && m_layer == LAYER_WIRE )
|
||||
return true;
|
||||
|
||||
if ( *p == SCH_ITEM_LOCATE_BUS_T && m_layer == LAYER_BUS )
|
||||
if ( scanType == SCH_ITEM_LOCATE_BUS_T && m_layer == LAYER_BUS )
|
||||
return true;
|
||||
|
||||
if ( *p == SCH_ITEM_LOCATE_GRAPHIC_LINE_T && m_layer == LAYER_NOTES )
|
||||
if ( scanType == SCH_ITEM_LOCATE_GRAPHIC_LINE_T && m_layer == LAYER_NOTES )
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -74,19 +74,20 @@ EESCHEMA_SETTINGS* eeconfig()
|
||||
}
|
||||
|
||||
|
||||
KICAD_T SCH_PAINTER::g_ScaledSelectionTypes[] = { SCH_MARKER_T,
|
||||
SCH_JUNCTION_T,
|
||||
SCH_NO_CONNECT_T,
|
||||
SCH_BUS_WIRE_ENTRY_T,
|
||||
SCH_BUS_BUS_ENTRY_T,
|
||||
SCH_LINE_T,
|
||||
LIB_SHAPE_T, SCH_SHAPE_T,
|
||||
SCH_BITMAP_T,
|
||||
SCH_DIRECTIVE_LABEL_T,
|
||||
LIB_SYMBOL_T, SCH_SYMBOL_T,
|
||||
SCH_SHEET_T,
|
||||
LIB_PIN_T, SCH_PIN_T,
|
||||
EOT };
|
||||
std::initializer_list<KICAD_T> SCH_PAINTER::g_ScaledSelectionTypes = {
|
||||
SCH_MARKER_T,
|
||||
SCH_JUNCTION_T,
|
||||
SCH_NO_CONNECT_T,
|
||||
SCH_BUS_WIRE_ENTRY_T,
|
||||
SCH_BUS_BUS_ENTRY_T,
|
||||
SCH_LINE_T,
|
||||
LIB_SHAPE_T, SCH_SHAPE_T,
|
||||
SCH_BITMAP_T,
|
||||
SCH_DIRECTIVE_LABEL_T,
|
||||
LIB_SYMBOL_T, SCH_SYMBOL_T,
|
||||
SCH_SHEET_T,
|
||||
LIB_PIN_T, SCH_PIN_T
|
||||
};
|
||||
|
||||
|
||||
SCH_RENDER_SETTINGS::SCH_RENDER_SETTINGS() :
|
||||
@ -99,8 +100,7 @@ SCH_RENDER_SETTINGS::SCH_RENDER_SETTINGS() :
|
||||
m_OverrideItemColors( false ),
|
||||
m_LabelSizeRatio( DEFAULT_LABEL_SIZE_RATIO ),
|
||||
m_TextOffsetRatio( DEFAULT_TEXT_OFFSET_RATIO ),
|
||||
m_PinSymbolSize( DEFAULT_TEXT_SIZE * IU_PER_MILS / 2 ),
|
||||
m_JunctionSize( DEFAULT_JUNCTION_DIAM * IU_PER_MILS )
|
||||
m_PinSymbolSize( DEFAULT_TEXT_SIZE * IU_PER_MILS / 2 )
|
||||
{
|
||||
SetDefaultPenWidth( DEFAULT_LINE_WIDTH_MILS * IU_PER_MILS );
|
||||
SetDashLengthRatio( 12 ); // From ISO 128-2
|
||||
|
@ -122,9 +122,7 @@ public:
|
||||
double m_LabelSizeRatio; // Proportion of font size to label box
|
||||
double m_TextOffsetRatio; // Proportion of font size to offset text above/below
|
||||
// wires, buses, etc.
|
||||
|
||||
int m_PinSymbolSize;
|
||||
int m_JunctionSize;
|
||||
};
|
||||
|
||||
|
||||
@ -140,15 +138,9 @@ public:
|
||||
virtual bool Draw( const VIEW_ITEM*, int ) override;
|
||||
|
||||
/// @copydoc PAINTER::GetSettings()
|
||||
virtual SCH_RENDER_SETTINGS* GetSettings() override
|
||||
{
|
||||
return &m_schSettings;
|
||||
}
|
||||
virtual SCH_RENDER_SETTINGS* GetSettings() override { return &m_schSettings; }
|
||||
|
||||
void SetSchematic( SCHEMATIC* aSchematic )
|
||||
{
|
||||
m_schematic = aSchematic;
|
||||
}
|
||||
void SetSchematic( SCHEMATIC* aSchematic ) { m_schematic = aSchematic; }
|
||||
|
||||
private:
|
||||
void draw( LIB_PIN* aPin, int aLayer );
|
||||
@ -195,21 +187,19 @@ private:
|
||||
|
||||
bool setDeviceColors( const LIB_ITEM* aItem, int aLayer );
|
||||
|
||||
void triLine ( const VECTOR2D &a, const VECTOR2D &b, const VECTOR2D &c );
|
||||
void triLine( const VECTOR2D &a, const VECTOR2D &b, const VECTOR2D &c );
|
||||
void strokeText( const wxString& aText, const VECTOR2D& aPosition,
|
||||
const TEXT_ATTRIBUTES& aAttributes );
|
||||
void bitmapText( const wxString& aText, const VECTOR2D& aPosition,
|
||||
const TEXT_ATTRIBUTES& aAttributes );
|
||||
void boxText( const wxString& aText, const VECTOR2D& aPosition,
|
||||
const TEXT_ATTRIBUTES& aAttrs );
|
||||
void boxText( const wxString& aText, const VECTOR2D& aPosition, const TEXT_ATTRIBUTES& aAttrs );
|
||||
|
||||
public:
|
||||
static KICAD_T g_ScaledSelectionTypes[];
|
||||
static std::initializer_list<KICAD_T> g_ScaledSelectionTypes;
|
||||
|
||||
private:
|
||||
SCH_RENDER_SETTINGS m_schSettings;
|
||||
|
||||
SCHEMATIC* m_schematic;
|
||||
SCHEMATIC* m_schematic;
|
||||
};
|
||||
|
||||
}; // namespace KIGFX
|
||||
|
@ -2355,12 +2355,11 @@ bool SCH_EAGLE_PLUGIN::CheckHeader( const wxString& aFileName )
|
||||
|
||||
void SCH_EAGLE_PLUGIN::moveLabels( SCH_LINE* aWire, const VECTOR2I& aNewEndPoint )
|
||||
{
|
||||
static KICAD_T labelTypes[] = { SCH_LABEL_LOCATE_ANY_T, EOT };
|
||||
SCH_SCREEN* screen = m_currentSheet->GetScreen();
|
||||
SCH_SCREEN* screen = m_currentSheet->GetScreen();
|
||||
|
||||
for( SCH_ITEM* item : screen->Items().Overlapping( aWire->GetBoundingBox() ) )
|
||||
{
|
||||
if( !item->IsType( labelTypes ) )
|
||||
if( !item->IsType( { SCH_LABEL_LOCATE_ANY_T } ) )
|
||||
continue;
|
||||
|
||||
if( TestSegmentHit( item->GetPosition(), aWire->GetStartPoint(), aWire->GetEndPoint(), 0 ) )
|
||||
|
@ -24,11 +24,6 @@
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file sch_screen.cpp
|
||||
* @brief Implementation of SCH_SCREEN and SCH_SCREENS classes.
|
||||
*/
|
||||
|
||||
#include <wx/filefn.h>
|
||||
|
||||
#include <eda_item.h>
|
||||
@ -92,7 +87,7 @@ SCH_SCREEN::~SCH_SCREEN()
|
||||
SCHEMATIC* SCH_SCREEN::Schematic() const
|
||||
{
|
||||
wxCHECK_MSG( GetParent() && GetParent()->Type() == SCHEMATIC_T, nullptr,
|
||||
"SCH_SCREEN must have a SCHEMATIC parent!" );
|
||||
wxT( "SCH_SCREEN must have a SCHEMATIC parent!" ) );
|
||||
|
||||
return static_cast<SCHEMATIC*>( GetParent() );
|
||||
}
|
||||
@ -123,8 +118,7 @@ void SCH_SCREEN::IncRefCount()
|
||||
|
||||
void SCH_SCREEN::DecRefCount()
|
||||
{
|
||||
wxCHECK_RET( m_refCount != 0,
|
||||
wxT( "Screen reference count already zero. Bad programmer!" ) );
|
||||
wxCHECK_RET( m_refCount != 0, wxT( "Screen reference count already zero. Bad programmer!" ) );
|
||||
m_refCount--;
|
||||
}
|
||||
|
||||
@ -1284,17 +1278,9 @@ void SCH_SCREEN::EnsureAlternateReferencesExist()
|
||||
|
||||
void SCH_SCREEN::GetHierarchicalItems( std::vector<SCH_ITEM*>* aItems ) const
|
||||
{
|
||||
static KICAD_T hierarchicalTypes[] = { SCH_SYMBOL_T,
|
||||
SCH_SHEET_T,
|
||||
SCH_LABEL_T,
|
||||
SCH_HIER_LABEL_T,
|
||||
SCH_DIRECTIVE_LABEL_T,
|
||||
SCH_GLOBAL_LABEL_T,
|
||||
EOT };
|
||||
|
||||
for( SCH_ITEM* item : Items() )
|
||||
{
|
||||
if( item->IsType( hierarchicalTypes ) )
|
||||
if( item->IsType( { SCH_SYMBOL_T, SCH_SHEET_T, SCH_LABEL_LOCATE_ANY_T } ) )
|
||||
aItems->push_back( item );
|
||||
}
|
||||
}
|
||||
@ -1317,7 +1303,9 @@ void SCH_SCREEN::GetSheets( std::vector<SCH_ITEM*>* aItems ) const
|
||||
return a->GetPosition().y < b->GetPosition().y;
|
||||
}
|
||||
else
|
||||
{
|
||||
return a->GetPosition().x < b->GetPosition().x;
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
|
@ -943,20 +943,19 @@ std::vector<VECTOR2I> SCH_SHEET::GetConnectionPoints() const
|
||||
}
|
||||
|
||||
|
||||
INSPECT_RESULT SCH_SHEET::Visit( INSPECTOR aInspector, void* testData, const KICAD_T aFilterTypes[] )
|
||||
INSPECT_RESULT SCH_SHEET::Visit( INSPECTOR aInspector, void* testData,
|
||||
const std::initializer_list<KICAD_T>& aScanTypes )
|
||||
{
|
||||
KICAD_T stype;
|
||||
|
||||
for( const KICAD_T* p = aFilterTypes; (stype = *p) != EOT; ++p )
|
||||
for( KICAD_T scanType : aScanTypes )
|
||||
{
|
||||
// If caller wants to inspect my type
|
||||
if( stype == SCH_LOCATE_ANY_T || stype == Type() )
|
||||
if( scanType == SCH_LOCATE_ANY_T || scanType == Type() )
|
||||
{
|
||||
if( INSPECT_RESULT::QUIT == aInspector( this, nullptr ) )
|
||||
return INSPECT_RESULT::QUIT;
|
||||
}
|
||||
|
||||
if( stype == SCH_LOCATE_ANY_T || stype == SCH_FIELD_T )
|
||||
if( scanType == SCH_LOCATE_ANY_T || scanType == SCH_FIELD_T )
|
||||
{
|
||||
// Test the sheet fields.
|
||||
for( SCH_FIELD& field : m_fields )
|
||||
@ -966,7 +965,7 @@ INSPECT_RESULT SCH_SHEET::Visit( INSPECTOR aInspector, void* testData, const KIC
|
||||
}
|
||||
}
|
||||
|
||||
if( stype == SCH_LOCATE_ANY_T || stype == SCH_SHEET_PIN_T )
|
||||
if( scanType == SCH_LOCATE_ANY_T || scanType == SCH_SHEET_PIN_T )
|
||||
{
|
||||
// Test the sheet labels.
|
||||
for( SCH_SHEET_PIN* sheetPin : m_pins )
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user