25#ifndef SCH_IO_EAGLE_H_ 
   26#define SCH_IO_EAGLE_H_ 
   69    std::unordered_map<wxString, wxString> 
package;
 
 
  103                                  const std::map<std::string, UTF8>* aProperties = 
nullptr ) 
override;
 
  105    void EnumerateSymbolLib( wxArrayString& aSymbolNameList, 
const wxString& aLibraryPath,
 
  106                             const std::map<std::string, UTF8>* aProperties ) 
override;
 
  108    void EnumerateSymbolLib( std::vector<LIB_SYMBOL*>& aSymbolList, 
const wxString& aLibraryPath,
 
  109                             const std::map<std::string, UTF8>* aProperties ) 
override;
 
  112                            const std::map<std::string, UTF8>* aProperties ) 
override;
 
  117    bool          checkHeader( 
const wxString& aFileName ) 
const;
 
  122    void loadDrawing( 
const std::unique_ptr<EDRAWING>& aDrawing );
 
  123    void loadLayerDefs( 
const std::vector<std::unique_ptr<ELAYER>>& aLayers );
 
  125    void loadSheet( 
const std::unique_ptr<ESHEET>& aSheet );
 
  126    void loadInstance( 
const std::unique_ptr<EINSTANCE>& aInstance,
 
  127                       const std::map<wxString, std::unique_ptr<EPART>>& aParts );
 
  145                                                          const std::vector<SEG>& aLines ) 
const;
 
  147    void          loadSegments( 
const std::vector<std::unique_ptr<ESEGMENT>>& aSegments,
 
  148                                const wxString& aNetName,
 
  149                                const wxString& aNetClass );
 
  154    SCH_TEXT*     
loadLabel( 
const std::unique_ptr<ELABEL>& aLabel, 
const wxString& aNetName );
 
  157    void          loadFrame( 
const std::unique_ptr<EFRAME>& aFrame,
 
  158                             std::vector<SCH_ITEM*>& aItems );
 
  160    bool          loadSymbol( 
const std::unique_ptr<ESYMBOL>& aEsymbol,
 
  161                              std::unique_ptr<LIB_SYMBOL>& aSymbol,
 
  162                              const std::unique_ptr<EDEVICE>& aDevice, 
int aGateNumber,
 
  163                              const wxString& aGateName );
 
  165                                    const std::unique_ptr<ECIRCLE>& aCircle,
 
  168                                       const std::unique_ptr<ERECT>& aRectangle,
 
  171                                      const std::unique_ptr<EPOLYGON>& aPolygon, 
int aGateNumber );
 
  173                                  const std::unique_ptr<EWIRE>& aWire,
 
  175    SCH_PIN*      
loadPin( std::unique_ptr<LIB_SYMBOL>& aSymbol, 
const std::unique_ptr<EPIN>& aPin,
 
  178                                  const std::unique_ptr<ETEXT>& aText,
 
  181                                      const std::unique_ptr<ETEXT>& aAttributes ) 
const;
 
  220                                        const wxString& aEagleFieldName,
 
 
constexpr double SCH_IU_PER_MM
Schematic internal units 1=100nm.
 
constexpr BOX2I KiROUND(const BOX2D &aBoxD)
 
A mix-in class (via multiple inheritance) that handles texts such as labels, parts,...
 
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
 
Object used to load, save, search, and otherwise manipulate symbol library files.
 
Define a library symbol object.
 
An abstract class from which implementation specific LINE_READERs may be derived to read single lines...
 
Holds all the data relating to one schematic.
 
Object to handle a bitmap image that can be inserted in a schematic.
 
Base class for a bus or wire entry.
 
std::unique_ptr< EAGLE_DOC > m_eagleDoc
 
SCH_ITEM * loadWire(const std::unique_ptr< EWIRE > &aWire, SEG &endpoints)
 
void loadTextAttributes(EDA_TEXT *aText, const std::unique_ptr< ETEXT > &aAttributes) const
 
std::map< wxString, std::unique_ptr< EMODULE > > m_eagleModules
 
void loadModuleInstance(const std::unique_ptr< EMODULEINST > &aModuleInstance)
 
SCH_TEXT * loadLabel(const std::unique_ptr< ELABEL > &aLabel, const wxString &aNetName)
 
void ensureLoadedLibrary(const wxString &aLibraryPath)
 
void loadSchematic(const ESCHEMATIC &aSchematic)
 
SCH_TEXT * loadPlainText(const std::unique_ptr< ETEXT > &aSchText)
 
void loadSheet(const std::unique_ptr< ESHEET > &aSheet)
 
bool netHasPowerDriver(SCH_LINE *aLine, const wxString &aNetName) const
 
void loadLayerDefs(const std::vector< std::unique_ptr< ELAYER > > &aLayers)
 
const ESYMBOL * getEagleSymbol(const std::unique_ptr< EINSTANCE > &aInstance)
 
EAGLE_LIBRARY * loadLibrary(const ELIBRARY *aLibrary, EAGLE_LIBRARY *aEagleLib)
 
wxXmlDocument loadXmlDocument(const wxString &aFileName)
 
wxString translateEagleBusName(const wxString &aEagleName) const
Translate an Eagle-style bus name into one that is KiCad-compatible.
 
void loadFieldAttributes(SCH_FIELD *aField, const SCH_TEXT *aText) const
Move net labels that are detached from any wire to the nearest wire.
 
std::map< wxString, wxString > m_powerPorts
map from symbol reference to global label equivalent
 
SCH_SHEET_PATH m_sheetPath
The current sheet path of the schematic being loaded.
 
wxString m_libName
Library name to save symbols.
 
SCH_TEXT * loadSymbolText(std::unique_ptr< LIB_SYMBOL > &aSymbol, const std::unique_ptr< ETEXT > &aText, int aGateNumber)
 
std::pair< VECTOR2I, const SEG * > findNearestLinePoint(const VECTOR2I &aPoint, const std::vector< SEG > &aLines) const
 
std::map< wxString, long long > m_timestamps
 
void loadInstance(const std::unique_ptr< EINSTANCE > &aInstance, const std::map< wxString, std::unique_ptr< EPART > > &aParts)
 
LIB_SYMBOL * LoadSymbol(const wxString &aLibraryPath, const wxString &aAliasName, const std::map< std::string, UTF8 > *aProperties) override
Load a LIB_SYMBOL object having aPartName from the aLibraryPath containing a library format that this...
 
std::unordered_map< wxString, bool > m_userValue
deviceset/@uservalue for device.
 
int GetModifyHash() const override
Return the modification hash from the library cache.
 
std::map< wxString, int > m_netCounts
 
std::map< wxString, EAGLE_LIBRARY > m_eagleLibs
 
std::map< wxString, ENET > m_nets
Positions of pins and wire endings mapped to its parent.
 
bool loadSymbol(const std::unique_ptr< ESYMBOL > &aEsymbol, std::unique_ptr< LIB_SYMBOL > &aSymbol, const std::unique_ptr< EDEVICE > &aDevice, int aGateNumber, const wxString &aGateName)
 
SCH_SHEET * getCurrentSheet()
 
void loadDrawing(const std::unique_ptr< EDRAWING > &aDrawing)
 
void EnumerateSymbolLib(wxArrayString &aSymbolNameList, const wxString &aLibraryPath, const std::map< std::string, UTF8 > *aProperties) override
Populate a list of LIB_SYMBOL alias names contained within the library aLibraryPath.
 
SCH_SHAPE * loadSymbolPolyLine(std::unique_ptr< LIB_SYMBOL > &aSymbol, const std::unique_ptr< EPOLYGON > &aPolygon, int aGateNumber)
 
std::vector< VECTOR2I > m_wireIntersections
Wires and labels of a single connection (segment in Eagle nomenclature)
 
std::map< VECTOR2I, std::set< const EDA_ITEM * > > m_connPoints
The fully parsed Eagle schematic file.
 
void loadSegments(const std::vector< std::unique_ptr< ESEGMENT > > &aSegments, const wxString &aNetName, const wxString &aNetClass)
 
bool checkConnections(const SCH_SYMBOL *aSymbol, const SCH_PIN *aPin) const
 
IO_RELEASER< SCH_IO > m_pi
PI to create KiCad symbol library.
 
SCH_SHAPE * loadRectangle(const std::unique_ptr< ERECT > &aRect)
 
void addBusEntries()
This function finds best way to place a bus entry symbol for when an Eagle wire segment ends on an Ea...
 
bool CanReadSchematicFile(const wxString &aFileName) const override
Checks if this SCH_IO can read the specified schematic file.
 
void addImplicitConnections(SCH_SYMBOL *aSymbol, SCH_SCREEN *aScreen, bool aUpdateSet)
Create net labels to emulate implicit connections in Eagle.
 
std::map< int, SCH_LAYER_ID > m_layerMap
 
SCH_LAYER_ID kiCadLayer(int aEagleLayer)
Return the matching layer or return LAYER_NOTES.
 
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,...
 
SCH_PIN * loadPin(std::unique_ptr< LIB_SYMBOL > &aSymbol, const std::unique_ptr< EPIN > &aPin, int aGateNumber)
 
SCH_SHAPE * loadCircle(const std::unique_ptr< ECIRCLE > &aCircle)
 
wxFileName getLibFileName()
Checks if there are other wires or pins at the position of the tested pin.
 
SCH_SHAPE * loadSymbolRectangle(std::unique_ptr< LIB_SYMBOL > &aSymbol, const std::unique_ptr< ERECT > &aRectangle, int aGateNumber)
 
const IO_BASE::IO_FILE_DESC GetSchematicFileDesc() const override
Returns schematic file description for the SCH_IO.
 
SCH_JUNCTION * loadJunction(const std::unique_ptr< EJUNCTION > &aJunction)
 
wxString m_version
Eagle file version.
 
void getEagleSymbolFieldAttributes(const std::unique_ptr< EINSTANCE > &aInstance, const wxString &aEagleFieldName, SCH_FIELD *aField)
 
const IO_BASE::IO_FILE_DESC GetLibraryDesc() const override
Get the descriptor for the library container that this IO plugin operates on.
 
std::map< wxString, const EPART * > m_partlist
 
void moveLabels(SCH_LINE *aWire, const VECTOR2I &aNewEndPoint)
Move any labels on the wire to the new end point of the wire.
 
bool checkHeader(const wxString &aFileName) const
 
SCHEMATIC * m_schematic
Passed to Load(), the schematic object being loaded.
 
bool IsLibraryWritable(const wxString &aLibraryPath) override
Return true if the library at aLibraryPath is writable.
 
void countNets(const ESCHEMATIC &aSchematic)
 
SCH_SHEET * m_rootSheet
The root sheet of the schematic being loaded.
 
SCH_SHAPE * loadPolyLine(const std::unique_ptr< EPOLYGON > &aPolygon)
 
SCH_SHAPE * loadSymbolCircle(std::unique_ptr< LIB_SYMBOL > &aSymbol, const std::unique_ptr< ECIRCLE > &aCircle, int aGateNumber)
 
SCH_SCREEN * getCurrentScreen()
 
bool CanReadLibrary(const wxString &aFileName) const override
Checks if this IO object can read the specified library file/directory.
 
std::map< wxString, EAGLE_MISSING_CMP > m_missingCmps
 
void loadFrame(const std::unique_ptr< EFRAME > &aFrame, std::vector< SCH_ITEM * > &aItems)
 
std::vector< SEG_DESC > m_segments
Nets as defined in the <nets> sections of an Eagle schematic file.
 
std::vector< EMODULE * > m_modules
The current module stack being loaded.
 
std::vector< EMODULEINST * > m_moduleInstances
 
SCH_ITEM * loadSymbolWire(std::unique_ptr< LIB_SYMBOL > &aSymbol, const std::unique_ptr< EWIRE > &aWire, int aGateNumber)
 
long long getLibraryTimestamp(const wxString &aLibraryPath) const
 
SCH_IO(const wxString &aName)
 
Base class for any item which can be embedded within the SCHEMATIC container class,...
 
Segment description base class to describe items which have 2 end points (track, wire,...
 
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.
 
std::unique_ptr< T > IO_RELEASER
Helper to hold and release an IO_BASE object when exceptions are thrown.
 
SCH_LAYER_ID
Eeschema drawing layers.
 
std::map< wxString, std::unique_ptr< LIB_SYMBOL > > KiCadSymbols
 
std::unordered_map< wxString, wxString > package
 
std::unordered_map< wxString, int > GateToUnitMap
Map Eagle gate unit number (which are strings) to KiCad library symbol unit number.
 
Container that describes file type info.
 
EAGLE_MISSING_CMP(const SCH_SYMBOL *aSymbol=nullptr)
Link to the parent symbol.
 
std::map< int, bool > units
 
Segments representing wires for intersection checking.
 
std::vector< SCH_TEXT * > labels
 
const SEG * LabelAttached(const SCH_TEXT *aLabel) const
< Test if a particular label is attached to any of the stored segments
 
VECTOR2< int32_t > VECTOR2I