Circles and Squares are handled correctly. Octagons are converted to
circles. Pad 1 is identified by the "1" string in the Eagle name.
Fixes: lp:1784126
* https://bugs.launchpad.net/kicad/+bug/1784126
Unplated holes in Ealge can either be free floating or part of a larger
footprint. We handle both in the same packageHole routine by either
offsetting the hole in a centered footprint or offsetting the footprint
in a centered hole.
Fixes: lp:1791287
* https://bugs.launchpad.net/kicad/+bug/1791287
It's too expensive to fetch the timestamps when the github
server is busy. See Dick Hollenbeck's comments at the top of
github_plugin.cpp for more info.
Also adds some safety to the other caching algorithms after
seeing github_plugin's wild-west usage of the kicad_plugin.
Fixes: lp:1753143
* https://bugs.launchpad.net/kicad/+bug/1753143
Allow partial library reads in libraries that support footprint per file.
This includes the KiCad and GEDA footprint libraries.
Allow for partially cached libraries rather than ignoring all valid files
when an error occurs.
All E'STRUCTS' are moved to common except for ERULES (which is
specific to pcbnew and needs its internal units), still in
pcbnew/eagle_plugin.{h,cpp}
In order to get rid of another boost dependency, this also changes
the parsing of the XML from Boost.PropertyTree to wxXml.
To replace boost::optional, an OPTIONAL_XML_ATTRIBUTE class has
been implemented. This could be replaced with std::optional when
C++17 is ready.
Currently, kicad_pcb files have a (version ...) tag, but it is ignored. This
commit does the following:
1. Parse the version. If it's later than the last supported version, present an
alternative error message suggesting an upgrade if the file does not load
correctly. The version will be interpreted as an integer YYYYMMDD to suggest
a KiCad release date.
2. Accept a (version ...) tag also in kicad_mod files, but do not write them
yet. If no version tag is present in these files, assume the version to be that
of the current format version at the time of this commit.
This is meant to be merged to the 4.x stable series, and preps for KiCad 5
which will start emitting version tags also in footprints - users with what
will then be 'old stable' will not get a parse error when we introduce this for
footprints, and we can safely increment the format version later.
2) Change from legacy Cu stack to counting down from top=(F_Cu or 0).
The old Cu stack required knowing the count of Cu layers to make
sense of the layer number when converting to many exported file types.
The new Cu stack is more commonly used, although ours still gives
B_Cu a fixed number.
3) Introduce class LSET and enum LAYER_ID.
4) Change *.kicad_pcb file format version to 4 from 3.
5) Change fixed names Inner1_Cu-Inner14_Cu to In1_Cu-In30_Cu and their
meanings are typically flipped.
6) Moved the #define LAYER_N_* stuff into legacy_plugin.cpp where they
can die a quiet death, and switch to enum LAYER_ID symbols throughout.
7) Removed the LEGACY_PLUGIN::Save() and FootprintSave() functions.
You will need to convert to the format immediately, *.kicad_pcb and
*.kicad_mod (=pretty) since legacy format was never going to know
about 32 Cu layers and additional technical layers and the reversed Cu
stack.
comment for GITHUB_PLUGIN which should flow into Doxygen output.
*) Rewrote:
PCB_BASE_FRAME::Save_Module_In_Library(): now uses fp-lib-table and PROPERTIES.
PCB_EDIT_FRAME::ArchiveModulesOnBoard(): now can archive to any writable library type.
PCB_BASE_FRAME::SelectLibrary(): is now generic for selecting a library, not just the active library.
FIX: unique renaming of eagle footprints by substituting illegal : and / with URL encoding technique.
ADD: window resize border to DisplayError() windows.
their type, by using the more abstract PLUGIN::Footprint*() functions.
This is an intermediate phase only, other changes will be necessary as library table support comes in.
Encapsulate usage of library path searching, since that will go away as library table support comes in.
Add FOOTPRINT_EDIT_FRAME::{get,set}LibPath() and FOOTPRINT_EDIT_FRAME::{get,set}LibNickName() functions
to provide this encapsulation.
pad and via sizes from those settings when diameter is not given
in the local object. Calculation algorithms are inferred from the
UI help of the Eagle program.
For edge connector type of footprints, some copper pads can be on the
back side even within packages.
Flipping of packages to back was not being done correctly, but I think this
is working now.
There are still remaining issues with text positioning that I am working on.
* Derive the pcbnew copper zone and non-copper zone dialog windows from DIAG_SHIM,
which injects some template code.
* Update UIpolicies.txt to talk about DIALOG_SHIM support.
* Add zone support to eagle_plugin.
* Organize ZONE_CONTAINER class declaration for future privacy and accessors.