Commit graph

21 commits

Author SHA1 Message Date
jaseg
a7a5981e0e Make primitives with unset level polarity inherit from region
This fixes region rendering with programatically generated primitives
such that clear level polarity works in an intuitive way. This is useful
for e.g. cutouts in regions. Before, the renderer would set level
polarity twice, both when starting the region and then again once for
each region primitive (line or arc). The problem was that the primitives
in a region with "clear" polarity would when constructed with unset
polarity default to "dark". Thus the renderer would emit something like
LPC (clear polarity) -> G36 (start region) -> LPD (dark polarity) ->
{lines...} instead of LPC -> G36 -> {lines...}.

After this commit, Line and Arc will retain None as level polarity when
created with unset level polarity, and region rendering will override
None with the region's polarity. Outside regions, the old dark default
remains unchanged.

Note on verification: Somehow, gEDA gerbv would still render the broken
regions the way one would have intended, but other viewers (KiCAD
gerbview, the online EasyEDA one and whatever JLC uses to make their
silkscreens) would not.
2019-02-03 14:37:26 +09:00
Hamilton Kibbe
5245fb9256 Fix hard requirement of cairo per #83, and add stubs for required subclass methods to GerberContext per #84 2018-06-05 08:57:37 -04:00
Hamilton Kibbe
0ae5c48a65 Fix rs274x output bugs 2016-11-18 08:10:32 -05:00
Hamilton Kibbe
422c86bcc6 Merge upstream changes 2016-11-06 14:44:40 -05:00
Garret Fick
8d5e782ccf Fix multiple problems with the merge. There are still errors, but I will intentionally leave them because future merges might resolve them 2016-08-06 09:51:58 +08:00
Garret Fick
965d3ce23b Add more tests for rendering to PNG. Start adding tests for rendering to Gerber format. Changed definition of no hole to use None instead of 0 so we can differentiate when writing to Gerber format. Makde polygon use hole diameter instead of hole radius to match other primitives 2016-07-24 22:08:31 +08:00
Garret Fick
7cd6acf126 Add many render tests based on the Umaco gerger specification. Fix multiple rendering bugs, especially related to holes in flashed apertures 2016-07-24 17:08:47 +08:00
Garret Fick
9b0d3b1122 Fix issue with chaning region mode via flash. Add options for controlling output from rendered gerber 2016-07-10 15:07:17 +08:00
Garret Fick
ccb6eb7a76 Add support for polygon apertures 2016-06-25 16:46:44 +08:00
Garret Fick
ea97d9d037 Fix issue with switching between ROUT and normal drill modes 2016-05-28 17:03:40 +08:00
Garret Fick
3fc296918e Use the known macro statement to render. Fix thermal not setting rotation 2016-05-28 13:06:08 +08:00
Garret Fick
c9c1313d59 Fix units statement. Keep track of original macro statement in the AMGroup 2016-05-28 12:36:31 +08:00
Garret Fick
74c638c718 Fix issue where did not always switch into the G01 mode after G03 when the point was unchanged 2016-05-19 23:19:28 +08:00
Garret Fick
97924d188b More robust writing, even for bad files. Remove accidentally added imports 2016-03-05 16:26:30 +08:00
Garret Fick
0f1d1c3a29 Remove some testing code from gerber writer. More implementation for excellon writer - not working yet 2016-03-05 14:56:08 +08:00
Garret Fick
9735547568 Make rendering more robust for bad gerber files 2016-03-05 10:28:38 +08:00
Garret Fick
7f47aea332 Write polygons to macros 2016-03-05 10:04:58 +08:00
Garret Fick
7b88509c4a Make writer resilient to similar macro defs 2016-03-05 09:24:54 +08:00
Garret Fick
20a9af279a More rendering of AMGroup to statements 2016-03-01 00:06:14 +08:00
Garret Fick
223a010831 Fix critical issue with rotatin points (when the angle is zero the y would be flipped). Render AM with outline to gerber 2016-02-27 18:18:04 +08:00
Garret Fick
29c0d82bf5 RS274X backend for rendering. Incompelte still 2016-02-27 15:24:36 +08:00