KiCad PCB EDA Suite
Loading...
Searching...
No Matches
PADS_SCH::PADS_SCH_SYMBOL_BUILDER Class Reference

Builds KiCad LIB_SYMBOL objects from parsed PADS symbol definitions. More...

#include <pads_sch_symbol_builder.h>

Public Member Functions

 PADS_SCH_SYMBOL_BUILDER (const PARAMETERS &aParams)
 
 ~PADS_SCH_SYMBOL_BUILDER ()
 
LIB_SYMBOLBuildSymbol (const SYMBOL_DEF &aSymbolDef)
 Build a KiCad LIB_SYMBOL from a PADS symbol definition.
 
LIB_SYMBOLGetOrCreateSymbol (const SYMBOL_DEF &aSymbolDef)
 Return the cached symbol for the given definition, building and caching it if needed.
 
bool HasSymbol (const std::string &aName) const
 
LIB_SYMBOLGetSymbol (const std::string &aName) const
 
LIB_SYMBOLBuildKiCadPowerSymbol (const std::string &aKiCadName)
 Build a power symbol using hard-coded KiCad-standard graphics, or nullptr if the name is unrecognized.
 
LIB_SYMBOLBuildMultiUnitSymbol (const PARTTYPE_DEF &aPartType, const std::vector< SYMBOL_DEF > &aSymbolDefs)
 Build a composite multi-unit symbol from a multi-gate PARTTYPE.
 
LIB_SYMBOLGetOrCreateMultiUnitSymbol (const PARTTYPE_DEF &aPartType, const std::vector< SYMBOL_DEF > &aSymbolDefs)
 Return the cached multi-unit symbol for the PARTTYPE, building it if needed, so all instances of the same multi-gate part share one symbol.
 
LIB_SYMBOLGetOrCreatePartTypeSymbol (const PARTTYPE_DEF &aPartType, const SYMBOL_DEF &aSymbolDef)
 Return a single-gate symbol with PARTTYPE pin overrides applied at build time.
 
LIB_SYMBOLGetOrCreateConnectorPinSymbol (const PARTTYPE_DEF &aPartType, const SYMBOL_DEF &aSymbolDef, const std::string &aPinNumber)
 Return a connector symbol variant carrying a specific pin number, since PADS connectors reuse one decal across every pin placement.
 
LIB_SYMBOLBuildMultiUnitConnectorSymbol (const PARTTYPE_DEF &aPartType, const SYMBOL_DEF &aSymbolDef, const std::vector< std::string > &aPinNumbers)
 Build a multi-unit connector symbol with one unit per pin, letting all of a connector's individually placed pins share one reference designator.
 
LIB_SYMBOLGetOrCreateMultiUnitConnectorSymbol (const PARTTYPE_DEF &aPartType, const SYMBOL_DEF &aSymbolDef, const std::vector< std::string > &aPinNumbers, const std::string &aCacheKey)
 Return the cached multi-unit connector symbol, building it if needed.
 
void AddHiddenPowerPins (LIB_SYMBOL *aSymbol, const std::vector< PARTTYPE_DEF::SIGPIN > &aSigpins)
 Add hidden PT_POWER_IN pins from PARTTYPE SIGPIN entries, skipping duplicate numbers.
 

Static Public Member Functions

static bool IsPowerSymbol (const std::string &aName)
 
static std::optional< LIB_IDGetKiCadPowerSymbolId (const std::string &aPadsName)
 Map a PADS power symbol name to a KiCad power library LIB_ID, or nullopt if unmapped.
 
static std::string GetPowerStyleFromVariant (const std::string &aDecalName, const std::string &aPinType)
 Map a PADS special_variant decal name and pin type to a power symbol style name for BuildKiCadPowerSymbol(), or empty if unrecognized.
 
static int NextFreePowerOrdinal (SCH_SHEET *aSheet)
 Return the first 1-based ordinal that no "#PWRnnnn" reference under aSheet uses.
 

Private Member Functions

int toKiCadUnits (double aPadsValue) const
 
SCH_SHAPEcreateShape (const SYMBOL_GRAPHIC &aGraphic)
 Create a SCH_SHAPE from a PADS graphic element.
 
std::vector< SCH_SHAPE * > createShapes (const SYMBOL_GRAPHIC &aGraphic)
 
SCH_PINcreatePin (const SYMBOL_PIN &aPin, LIB_SYMBOL *aParent, bool aMapDiodeAK=false)
 
SCH_TEXTcreateSymbolText (const SYMBOL_TEXT &aText, int aUnit=0)
 Build the configured SCH_TEXT for one symbol text field, or nullptr when its content is empty.
 
int mapPinType (PIN_TYPE aPadsType)
 

Static Private Member Functions

static std::vector< SYMBOL_PINapplyGateOverrides (const std::vector< SYMBOL_PIN > &aDecalPins, const GATE_DEF &aGate)
 Return the decal's pins with the gate's name, number and type overrides applied.
 
static bool isDiodeAKPinSet (const std::vector< SYMBOL_PIN > &aPins)
 True when aPins is a bare two-pin A/K pair, i.e.
 

Private Attributes

const PARAMETERSm_params
 
std::map< std::string, std::unique_ptr< LIB_SYMBOL > > m_symbolCache
 

Detailed Description

Builds KiCad LIB_SYMBOL objects from parsed PADS symbol definitions.

Definition at line 43 of file pads_sch_symbol_builder.h.

Constructor & Destructor Documentation

◆ PADS_SCH_SYMBOL_BUILDER()

PADS_SCH::PADS_SCH_SYMBOL_BUILDER::PADS_SCH_SYMBOL_BUILDER ( const PARAMETERS & aParams)

Definition at line 46 of file pads_sch_symbol_builder.cpp.

References m_params.

◆ ~PADS_SCH_SYMBOL_BUILDER()

PADS_SCH::PADS_SCH_SYMBOL_BUILDER::~PADS_SCH_SYMBOL_BUILDER ( )

Definition at line 52 of file pads_sch_symbol_builder.cpp.

Member Function Documentation

◆ AddHiddenPowerPins()

void PADS_SCH::PADS_SCH_SYMBOL_BUILDER::AddHiddenPowerPins ( LIB_SYMBOL * aSymbol,
const std::vector< PARTTYPE_DEF::SIGPIN > & aSigpins )

Add hidden PT_POWER_IN pins from PARTTYPE SIGPIN entries, skipping duplicate numbers.

Definition at line 1001 of file pads_sch_symbol_builder.cpp.

References LIB_SYMBOL::AddDrawItem(), LIB_SYMBOL::GetDrawItems(), LINE, pin, PT_POWER_IN, and SCH_PIN_T.

Referenced by SCH_IO_PADS::ensureLoadedLibrary(), and SCH_IO_PADS::LoadSchematicFile().

◆ applyGateOverrides()

std::vector< SYMBOL_PIN > PADS_SCH::PADS_SCH_SYMBOL_BUILDER::applyGateOverrides ( const std::vector< SYMBOL_PIN > & aDecalPins,
const GATE_DEF & aGate )
staticprivate

Return the decal's pins with the gate's name, number and type overrides applied.

Definition at line 649 of file pads_sch_symbol_builder.cpp.

References PADS_SCH::PADS_SCH_PARSER::ParsePinTypeChar(), and PADS_SCH::GATE_DEF::pins.

Referenced by BuildMultiUnitSymbol(), and GetOrCreatePartTypeSymbol().

◆ BuildKiCadPowerSymbol()

◆ BuildMultiUnitConnectorSymbol()

LIB_SYMBOL * PADS_SCH::PADS_SCH_SYMBOL_BUILDER::BuildMultiUnitConnectorSymbol ( const PARTTYPE_DEF & aPartType,
const SYMBOL_DEF & aSymbolDef,
const std::vector< std::string > & aPinNumbers )

◆ BuildMultiUnitSymbol()

LIB_SYMBOL * PADS_SCH::PADS_SCH_SYMBOL_BUILDER::BuildMultiUnitSymbol ( const PARTTYPE_DEF & aPartType,
const std::vector< SYMBOL_DEF > & aSymbolDefs )

◆ BuildSymbol()

◆ createPin()

◆ createShape()

◆ createShapes()

◆ createSymbolText()

◆ GetKiCadPowerSymbolId()

std::optional< LIB_ID > PADS_SCH::PADS_SCH_SYMBOL_BUILDER::GetKiCadPowerSymbolId ( const std::string & aPadsName)
static

Map a PADS power symbol name to a KiCad power library LIB_ID, or nullopt if unmapped.

Definition at line 1088 of file pads_sch_symbol_builder.cpp.

References LIB_ID::SetLibItemName(), and LIB_ID::SetLibNickname().

Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), and SCH_IO_PADS::LoadSchematicFile().

◆ GetOrCreateConnectorPinSymbol()

LIB_SYMBOL * PADS_SCH::PADS_SCH_SYMBOL_BUILDER::GetOrCreateConnectorPinSymbol ( const PARTTYPE_DEF & aPartType,
const SYMBOL_DEF & aSymbolDef,
const std::string & aPinNumber )

◆ GetOrCreateMultiUnitConnectorSymbol()

LIB_SYMBOL * PADS_SCH::PADS_SCH_SYMBOL_BUILDER::GetOrCreateMultiUnitConnectorSymbol ( const PARTTYPE_DEF & aPartType,
const SYMBOL_DEF & aSymbolDef,
const std::vector< std::string > & aPinNumbers,
const std::string & aCacheKey )

Return the cached multi-unit connector symbol, building it if needed.

Definition at line 405 of file pads_sch_symbol_builder.cpp.

References BuildMultiUnitConnectorSymbol(), and m_symbolCache.

Referenced by BOOST_AUTO_TEST_CASE(), and SCH_IO_PADS::LoadSchematicFile().

◆ GetOrCreateMultiUnitSymbol()

LIB_SYMBOL * PADS_SCH::PADS_SCH_SYMBOL_BUILDER::GetOrCreateMultiUnitSymbol ( const PARTTYPE_DEF & aPartType,
const std::vector< SYMBOL_DEF > & aSymbolDefs )

Return the cached multi-unit symbol for the PARTTYPE, building it if needed, so all instances of the same multi-gate part share one symbol.

Definition at line 191 of file pads_sch_symbol_builder.cpp.

References BuildMultiUnitSymbol(), m_symbolCache, and PADS_SCH::PARTTYPE_DEF::name.

Referenced by SCH_IO_PADS::LoadSchematicFile().

◆ GetOrCreatePartTypeSymbol()

LIB_SYMBOL * PADS_SCH::PADS_SCH_SYMBOL_BUILDER::GetOrCreatePartTypeSymbol ( const PARTTYPE_DEF & aPartType,
const SYMBOL_DEF & aSymbolDef )

◆ GetOrCreateSymbol()

LIB_SYMBOL * PADS_SCH::PADS_SCH_SYMBOL_BUILDER::GetOrCreateSymbol ( const SYMBOL_DEF & aSymbolDef)

Return the cached symbol for the given definition, building and caching it if needed.

The returned pointer is owned by this builder.

Definition at line 103 of file pads_sch_symbol_builder.cpp.

References BuildSymbol(), m_symbolCache, and PADS_SCH::SYMBOL_DEF::name.

Referenced by BOOST_AUTO_TEST_CASE(), and SCH_IO_PADS::LoadSchematicFile().

◆ GetPowerStyleFromVariant()

std::string PADS_SCH::PADS_SCH_SYMBOL_BUILDER::GetPowerStyleFromVariant ( const std::string & aDecalName,
const std::string & aPinType )
static

Map a PADS special_variant decal name and pin type to a power symbol style name for BuildKiCadPowerSymbol(), or empty if unrecognized.

Definition at line 931 of file pads_sch_symbol_builder.cpp.

Referenced by SCH_IO_PADS::LoadSchematicFile().

◆ GetSymbol()

LIB_SYMBOL * PADS_SCH::PADS_SCH_SYMBOL_BUILDER::GetSymbol ( const std::string & aName) const

Definition at line 428 of file pads_sch_symbol_builder.cpp.

References m_symbolCache.

◆ HasSymbol()

bool PADS_SCH::PADS_SCH_SYMBOL_BUILDER::HasSymbol ( const std::string & aName) const

Definition at line 422 of file pads_sch_symbol_builder.cpp.

References m_symbolCache.

Referenced by BOOST_AUTO_TEST_CASE().

◆ isDiodeAKPinSet()

bool PADS_SCH::PADS_SCH_SYMBOL_BUILDER::isDiodeAKPinSet ( const std::vector< SYMBOL_PIN > & aPins)
staticprivate

True when aPins is a bare two-pin A/K pair, i.e.

a PADS diode decal whose pins must be renumbered to the KiCad 1/2 convention.

Definition at line 667 of file pads_sch_symbol_builder.cpp.

References pin.

Referenced by BuildMultiUnitSymbol(), BuildSymbol(), and GetOrCreatePartTypeSymbol().

◆ IsPowerSymbol()

bool PADS_SCH::PADS_SCH_SYMBOL_BUILDER::IsPowerSymbol ( const std::string & aName)
static

◆ mapPinType()

◆ NextFreePowerOrdinal()

int PADS_SCH::PADS_SCH_SYMBOL_BUILDER::NextFreePowerOrdinal ( SCH_SHEET * aSheet)
static

Return the first 1-based ordinal that no "#PWRnnnn" reference under aSheet uses.

PADS has no reference designator for a power port, so the importer invents one. When appending into an existing schematic the invented references must start past whatever the destination already carries, or annotation reports them as duplicates.

Definition at line 968 of file pads_sch_symbol_builder.cpp.

References SCH_SCREEN::Items(), next(), EE_RTREE::OfType(), path, and SCH_SYMBOL_T.

Referenced by PADS_SCH_BINARY::PADS_SCH_BINARY_BUILDER::Build(), and SCH_IO_PADS::LoadSchematicFile().

◆ toKiCadUnits()

int PADS_SCH::PADS_SCH_SYMBOL_BUILDER::toKiCadUnits ( double aPadsValue) const
private

Definition at line 57 of file pads_sch_symbol_builder.cpp.

References schIUScale.

Referenced by createPin(), createShape(), createShapes(), and createSymbolText().

Member Data Documentation

◆ m_params

const PARAMETERS& PADS_SCH::PADS_SCH_SYMBOL_BUILDER::m_params
private

Definition at line 173 of file pads_sch_symbol_builder.h.

Referenced by createShape(), createShapes(), and PADS_SCH_SYMBOL_BUILDER().

◆ m_symbolCache

std::map<std::string, std::unique_ptr<LIB_SYMBOL> > PADS_SCH::PADS_SCH_SYMBOL_BUILDER::m_symbolCache
private

The documentation for this class was generated from the following files: