25#ifndef _SCH_IO_ALTIUM_H_ 
   26#define _SCH_IO_ALTIUM_H_ 
   33#include <wx/filename.h> 
   89                                      { 
"SchLib", 
"IntLib" } );
 
 
   99                                  const std::map<std::string, UTF8>* aProperties = 
nullptr ) 
override;
 
  102                                     const std::map<std::string, UTF8>* aProperties );
 
  112                             const wxString&        aLibraryPath,
 
  113                             const std::map<std::string, UTF8>* aProperties = 
nullptr ) 
override;
 
  116                             const wxString&           aLibraryPath,
 
  117                             const std::map<std::string, UTF8>*    aProperties = 
nullptr ) 
override;
 
  120                            const wxString&        aAliasName,
 
  121                            const std::map<std::string, UTF8>* aProperties = 
nullptr ) 
override;
 
  144    void ParseRecord( 
int index, std::map<wxString, wxString>& properties,
 
  145                      const wxString& aSectionName );
 
  157                        std::vector<int>& aFontSize = 
nullint );
 
  159    void ParseComponent( 
int aIndex, 
const std::map<wxString, wxString>& aProperties );
 
  160    void ParseTemplate( 
int aIndex, 
const std::map<wxString, wxString>& aProperties );
 
  161    void ParsePin( 
const std::map<wxString, wxString>& aProperties, std::vector<LIB_SYMBOL*>& aSymbol = 
nullsym);
 
  162    void ParseLabel( 
const std::map<wxString, wxString>& aProperties, std::vector<LIB_SYMBOL*>& aSymbol = 
nullsym,
 
  163                     std::vector<int>& aFontSize = 
nullint );
 
  164    void ParseTextFrame( 
const std::map<wxString, wxString>& aProperties, std::vector<LIB_SYMBOL*>& aSymbol = 
nullsym,
 
  165                         std::vector<int>& aFontSize = 
nullint );
 
  166    void ParseNote( 
const std::map<wxString, wxString>& aProperties );
 
  167    void ParseBezier( 
const std::map<wxString, wxString>& aProperties, std::vector<LIB_SYMBOL*>& aSymbol  = 
nullsym);
 
  168    void ParsePolyline( 
const std::map<wxString, wxString>& aProperties, std::vector<LIB_SYMBOL*>& aSymbol  = 
nullsym);
 
  169    void ParsePolygon( 
const std::map<wxString, wxString>& aProperties, std::vector<LIB_SYMBOL*>& aSymbol  = 
nullsym);
 
  171    void ParseArc( 
const std::map<wxString, wxString>& aProperties, std::vector<LIB_SYMBOL*>& aSymbol  = 
nullsym);
 
  173    void ParseEllipse( 
const std::map<wxString, wxString>& aProperties, std::vector<LIB_SYMBOL*>& aSymbol  = 
nullsym);
 
  174    void ParseCircle( 
const std::map<wxString, wxString>& aProperties, std::vector<LIB_SYMBOL*>& aSymbol  = 
nullsym);
 
  175    void ParseLine( 
const std::map<wxString, wxString>& aProperties, std::vector<LIB_SYMBOL*>& aSymbol  = 
nullsym);
 
  182    void ParsePieChart( 
const std::map<wxString, wxString>& aProperties, std::vector<LIB_SYMBOL*>& aSymbol  = 
nullsym);
 
  183    void ParseRectangle( 
const std::map<wxString, wxString>& aProperties, std::vector<LIB_SYMBOL*>& aSymbol  = 
nullsym);
 
  184    void ParseSheetSymbol( 
int aIndex, 
const std::map<wxString, wxString>& aProperties );
 
  185    void ParseSheetEntry( 
const std::map<wxString, wxString>& aProperties );
 
  186    void ParsePowerPort( 
const std::map<wxString, wxString>& aProperties );
 
  189    void ParseNoERC( 
const std::map<wxString, wxString>& aProperties );
 
  190    void ParseNetLabel( 
const std::map<wxString, wxString>& aProperties );
 
  191    void ParseBus( 
const std::map<wxString, wxString>& aProperties );
 
  192    void ParseWire( 
const std::map<wxString, wxString>& aProperties );
 
  193    void ParseJunction( 
const std::map<wxString, wxString>& aProperties );
 
  194    void ParseImage( 
const std::map<wxString, wxString>& aProperties );
 
  195    void ParseSheet( 
const std::map<wxString, wxString>& aProperties );
 
  196    void ParseSheetName( 
const std::map<wxString, wxString>& aProperties );
 
  197    void ParseFileName( 
const std::map<wxString, wxString>& aProperties );
 
  198    void ParseDesignator( 
const std::map<wxString, wxString>& aProperties );
 
  199    void ParseLibDesignator( 
const std::map<wxString, wxString>& aProperties, std::vector<LIB_SYMBOL*>& aSymbol  = 
nullsym, std::vector<int>& aFontSize = 
nullint );
 
  200    void ParseBusEntry( 
const std::map<wxString, wxString>& aProperties );
 
  201    void ParseParameter( 
const std::map<wxString, wxString>& aProperties );
 
  202    void ParseLibParameter( 
const std::map<wxString, wxString>& aProperties, std::vector<LIB_SYMBOL*>& aSymbol  = 
nullsym, std::vector<int>& aFontSize = 
nullint );
 
  208    std::vector<LIB_SYMBOL*> 
ParseLibComponent( 
const std::map<wxString, wxString>& aProperties );
 
  210    void doEnumerateSymbolLib( 
const wxString& aLibraryPath, 
const std::map<std::string, UTF8>* aProperties,
 
  211                               std::function<
void(
const wxString&, 
LIB_SYMBOL*)> aInserter );
 
  216    void ensureLoadedLibrary( 
const wxString& aLibraryPath, 
const std::map<std::string, UTF8>* aProperties );
 
  220    static bool isASCIIFile( 
const wxString& aFileName );
 
  258    std::map<wxString, CASE_INSENSITIVE_MAP<LIB_SYMBOL*>> 
m_libCache;
 
  261    std::vector<std::pair<wxString, int>> 
m_fonts;
 
 
std::map< wxString, ValueType, DETAIL::CASE_INSENSITIVE_COMPARER > CASE_INSENSITIVE_MAP
 
Define a library symbol object.
 
Holds all the data relating to one schematic.
 
void ParseFileHeader(const ALTIUM_COMPOUND_FILE &aAltiumSchFile)
 
void ParseHyperlink(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym)
 
void ParseSignalHarness(const std::map< wxString, wxString > &aProperties)
 
std::map< int, ASCH_TEMPLATE > m_altiumTemplates
 
std::map< int, ASCH_SYMBOL > m_altiumComponents
 
void ParsePort(const ASCH_PORT &aElem)
 
bool IsComponentPartVisible(const ASCH_OWNER_INTERFACE &aElem) const
 
void ParseNote(const std::map< wxString, wxString > &aProperties)
 
void ParseAltiumSch(const wxString &aFileName)
 
std::vector< ASCH_PORT > m_altiumPortsCurrentSheet
 
void ParseSheetName(const std::map< wxString, wxString > &aProperties)
 
void ParseBusEntry(const std::map< wxString, wxString > &aProperties)
 
const IO_BASE::IO_FILE_DESC GetLibraryDesc() const override
Get the descriptor for the library container that this IO plugin operates on.
 
SCH_SHEET * getCurrentSheet()
 
void ParseStorage(const ALTIUM_COMPOUND_FILE &aAltiumSchFile)
 
std::map< wxString, LIB_SYMBOL * > m_powerSymbols
 
void ParseBus(const std::map< wxString, wxString > &aProperties)
 
void ParseFileName(const std::map< wxString, wxString > &aProperties)
 
static bool isASCIIFile(const wxString &aFileName)
 
LIB_SYMBOL * LoadSymbol(const wxString &aLibraryPath, const wxString &aAliasName, const std::map< std::string, UTF8 > *aProperties=nullptr) override
Load a LIB_SYMBOL object having aPartName from the aLibraryPath containing a library format that this...
 
std::map< int, SCH_SHEET * > m_sheets
 
const IO_BASE::IO_FILE_DESC GetSchematicFileDesc() const override
Returns schematic file description for the SCH_IO.
 
void ParseLibHeader(const ALTIUM_COMPOUND_FILE &aAltiumSchFile, std::vector< int > &aFontSizes)
 
void ParseHarnessPort(const ASCH_PORT &aElem)
 
void ParseRoundRectangle(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym)
 
int GetModifyHash() const override
Return the modification hash from the library cache.
 
void ParseLibDesignator(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym, std::vector< int > &aFontSize=nullint)
 
std::map< wxString, CASE_INSENSITIVE_MAP< LIB_SYMBOL * > > m_libCache
 
std::map< int, int > m_altiumImplementationList
 
void ParseTextFrame(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym, std::vector< int > &aFontSize=nullint)
 
void ParsePolygon(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym)
 
void fixupSymbolPinNameNumbers(SYMBOL *aSymbol)
 
void ParseRecord(int index, std::map< wxString, wxString > &properties, const wxString &aSectionName)
 
std::vector< ASCH_PORT > m_altiumHarnessPortsCurrentSheet
 
void ParseDesignator(const std::map< wxString, wxString > &aProperties)
 
int m_harnessOwnerIndexOffset
 
void ParsePortHelper(const ASCH_PORT &aElem)
 
static bool checkFileHeader(const wxString &aFileName)
 
long long getLibraryTimestamp(const wxString &aLibraryPath) const
 
void ParseSheetEntry(const std::map< wxString, wxString > &aProperties)
 
static bool isBinaryFile(const wxString &aFileName)
 
void ParseHarnessType(const std::map< wxString, wxString > &aProperties)
 
void ParseJunction(const std::map< wxString, wxString > &aProperties)
 
void ParseLibParameter(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym, std::vector< int > &aFontSize=nullint)
 
void ParseASCIISchematic(const wxString &aFileName)
 
void ParsePolyline(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym)
 
std::unique_ptr< ASCH_SHEET > m_altiumSheet
 
void ParseComponent(int aIndex, const std::map< wxString, wxString > &aProperties)
 
std::unique_ptr< TITLE_BLOCK > m_currentTitleBlock
 
SCH_SHEET * LoadSchematicProject(SCHEMATIC *aSchematic, const std::map< std::string, UTF8 > *aProperties)
 
void ParseImage(const std::map< wxString, wxString > &aProperties)
 
void ParseArc(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym)
 
void ParseNetLabel(const std::map< wxString, wxString > &aProperties)
 
void ParseNoERC(const std::map< wxString, wxString > &aProperties)
 
SCH_SHEET * LoadSchematicFile(const wxString &aFileName, SCHEMATIC *aSchematic, SCH_SHEET *aAppendToMe=nullptr, const std::map< std::string, UTF8 > *aProperties=nullptr) override
Load information from some input file format that this SCH_IO implementation knows about,...
 
std::unordered_map< wxString, SEVERITY > m_errorMessages
 
void ParseImplementationList(int aIndex, const std::map< wxString, wxString > &aProperties)
 
std::vector< LIB_SYMBOL * > ParseLibComponent(const std::map< wxString, wxString > &aProperties)
 
void ParseSheet(const std::map< wxString, wxString > &aProperties)
 
void ParseParameter(const std::map< wxString, wxString > &aProperties)
 
bool ShouldPutItemOnSheet(int aOwnerindex)
 
void AddLibTextBox(const ASCH_TEXT_FRAME *aElem, std::vector< LIB_SYMBOL * > &aSymbol=nullsym, std::vector< int > &aFontSize=nullint)
 
bool CanReadSchematicFile(const wxString &aFileName) const override
Checks if this SCH_IO can read the specified schematic file.
 
void ParsePieChart(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym)
 
void ParseEllipticalArc(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym)
 
std::map< int, HARNESS > m_altiumHarnesses
 
void ParseEllipse(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym)
 
void ParseWire(const std::map< wxString, wxString > &aProperties)
 
bool IsLibraryWritable(const wxString &aLibraryPath) override
Return true if the library at aLibraryPath is writable.
 
void ParseHarnessEntry(const std::map< wxString, wxString > &aProperties)
 
void EnumerateSymbolLib(wxArrayString &aSymbolNameList, const wxString &aLibraryPath, const std::map< std::string, UTF8 > *aProperties=nullptr) override
Populate a list of LIB_SYMBOL alias names contained within the library aLibraryPath.
 
void ParseImplementation(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym)
 
void ParseTemplate(int aIndex, const std::map< wxString, wxString > &aProperties)
 
void ParseAdditional(const ALTIUM_COMPOUND_FILE &aAltiumSchFile)
 
std::vector< ASCH_ADDITIONAL_FILE > m_altiumAdditional
 
void AddTextBox(const ASCH_TEXT_FRAME *aElem)
 
void ParsePowerPort(const std::map< wxString, wxString > &aProperties)
 
bool CanReadLibrary(const wxString &aFileName) const override
Checks if this IO object can read the specified library file/directory.
 
const ASCH_STORAGE_FILE * GetFileFromStorage(const wxString &aFilename) const
 
void ParseRectangle(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym)
 
void doEnumerateSymbolLib(const wxString &aLibraryPath, const std::map< std::string, UTF8 > *aProperties, std::function< void(const wxString &, LIB_SYMBOL *)> aInserter)
 
std::vector< ASCH_STORAGE_FILE > m_altiumStorage
 
SCH_SHEET_PATH m_sheetPath
 
void ParseLabel(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym, std::vector< int > &aFontSize=nullint)
 
CASE_INSENSITIVE_MAP< LIB_SYMBOL * > ParseLibFile(const ALTIUM_COMPOUND_FILE &aAltiumSchFile)
 
void ParseBezier(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym)
 
void ParseLine(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym)
 
void ParseCircle(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym)
 
std::map< int, SCH_SYMBOL * > m_symbols
 
void ParseSheetSymbol(int aIndex, const std::map< wxString, wxString > &aProperties)
 
std::vector< std::pair< wxString, int > > m_fonts
 
std::map< wxString, long long > m_timestamps
 
wxFileName getLibFileName()
 
SCH_SCREEN * getCurrentScreen()
 
void ParsePin(const std::map< wxString, wxString > &aProperties, std::vector< LIB_SYMBOL * > &aSymbol=nullsym)
 
std::map< int, LIB_SYMBOL * > m_libSymbols
 
void ParseHarnessConnector(int aIndex, const std::map< wxString, wxString > &aProperties)
 
void ensureLoadedLibrary(const wxString &aLibraryPath, const std::map< std::string, UTF8 > *aProperties)
 
SCH_IO(const wxString &aName)
 
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
 
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
 
A base class for LIB_SYMBOL and SCH_SYMBOL.
 
Hold the information shown in the lower right corner of a plot, printout, or editing view.
 
static std::vector< int > nullint
 
static std::vector< LIB_SYMBOL * > nullsym
SCH_IO_ALTIUM is a SCH_IO derivation for loading Altium .SchDoc schematic files.
 
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
 
int m_primaryConnectionPosition
 
ASCH_SHEET_ENTRY_SIDE m_harnessConnectorSide
 
std::vector< HARNESS_PORT > m_ports
 
Container that describes file type info.
 
VECTOR2< int32_t > VECTOR2I