To do ===== [X] Actually use newly added gerber samples in test suite [X] Make Gerber parser error out if no unit is set anywhere [ ] Add test case for board outline / bounds with arcs (e.g. circle made up of four arcs, each with center line along x/y axis) [ ] Add "find outline" method [X] Refactor layer identification logic, automatically detect Allegro NCPARAM files [X] Add idempotence test: When reading, then reserializing the output of an earlier invocation of gerbonara, the output should not change. That is, in f1 --gn-> f2 --gn-> f3, it should be f2 == f3 but not necessarily f1 == f2. [X] Handle upverter output correctly: Upverter puts drils in a file called "design_export.xln" that actually contains Gerber, not Excellon [X] Add standard comment/attribute support for Gerber and Excellon [ ] Add attribute support to gerber output [X] Add file/lineno info to all warnings and syntax errors [X] Make sure we handle arcs with co-inciding start/end points correctly (G74: no arc, G75: full circle) [ ] Add allegro drill test files with different zero suppression settings [ ] Add pcb-rnd to layer matching [ ] Add librepcb to layer matching [ ] On altium exports with multiple mech layers, use lowest-numbered one as board outline and raise a warning. [ ] Assign layer rules based on allegro metadata instead of filenames for allegro files [ ] Add more IPC-356 test files from github [X] Add IPC netlist support to LayerStack [ ] It seems the excellon generator never generates M16 (drill up) commands, only M15 (drill down) commands during routing [ ] Add standalone excellon SVG export test [ ] In image difference tests, detect empty images. [ ] Merge subsequent paths in gerbv svgs for less bad rendering performance [ ] Add integrated zip handling to layerstack [ ] Add GraphicObject.as(unit) method [ ] Add methods to graphic_object Line, Arc, Flash to convert between gerber and excellon representations. [ ] Add to_primitives to all *File classes [ ] Add region cut-in API [ ] Add radius- instead of center-based method of creating Arcs [ ] Add warning when interpolating aperture that is not either a circle or a rectangle. [ ] Maybe have Line and Arc just use a width instead of an aperture after all, and roll plating of excellon tool into graphic object subclass. [ ] Figure out whether to drop rectangular holes or whether to support them in polygon apertures as well. [ ] Add "number of parameters" property to ApertureMacro [ ] Aperture macro outline: Warn if first and last point are not the same. [ ] Make sure incremental mode actually works for gerber import [ ] Add text rendering function