summaryrefslogtreecommitdiff
path: root/gerber/render/svgwrite_backend.py
diff options
context:
space:
mode:
authorHamilton Kibbe <hamilton.kibbe@gmail.com>2014-10-10 20:36:38 -0400
committerHamilton Kibbe <hamilton.kibbe@gmail.com>2014-10-10 20:36:38 -0400
commit76c03a55c91addff71339d80cf17560926f1580b (patch)
tree36e6e8b403eafd47cf3f02e9c9914d2cd6e65ea3 /gerber/render/svgwrite_backend.py
parent1750c3c60aeffc813dad8191ceabcdb90dd2e0a6 (diff)
downloadgerbonara-76c03a55c91addff71339d80cf17560926f1580b.tar.gz
gerbonara-76c03a55c91addff71339d80cf17560926f1580b.tar.bz2
gerbonara-76c03a55c91addff71339d80cf17560926f1580b.zip
Working region fills and level polarity. Renders Altium-generated gerbers like a champ!
Diffstat (limited to 'gerber/render/svgwrite_backend.py')
-rw-r--r--gerber/render/svgwrite_backend.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/gerber/render/svgwrite_backend.py b/gerber/render/svgwrite_backend.py
index 7570c84..886b4f8 100644
--- a/gerber/render/svgwrite_backend.py
+++ b/gerber/render/svgwrite_backend.py
@@ -118,6 +118,7 @@ class GerberSvgContext(GerberContext):
self.apertures = {}
self.dwg = svgwrite.Drawing()
self.background = False
+ self.region_path = None
def set_bounds(self, bounds):
xbounds, ybounds = bounds
@@ -125,7 +126,7 @@ class GerberSvgContext(GerberContext):
if not self.background:
self.dwg.add(self.dwg.rect(insert=(SCALE * xbounds[0],
-SCALE * ybounds[1]),
- size=size, fill="black"))
+ size=size, fill=convert_color(self.background_color)))
self.background = True
def define_aperture(self, d, shape, modifiers):
@@ -173,7 +174,8 @@ class GerberSvgContext(GerberContext):
ap = self.apertures.get(self.aperture, None)
if ap is None:
return
- color = (convert_color(self.color) if self.level_polarity == 'dark'
+
+ color = (convert_color(self.color) if self.level_polarity == 'dark'
else convert_color(self.background_color))
for shape in ap.flash(self, x, y, color):
self.dwg.add(shape)
@@ -185,5 +187,21 @@ class GerberSvgContext(GerberContext):
fill=convert_color(self.drill_color))
self.dwg.add(hit)
+ def region_contour(self, x, y):
+ super(GerberSvgContext, self).region_contour(x, y)
+ x, y = self.resolve(x, y)
+ color = (convert_color(self.color) if self.level_polarity == 'dark'
+ else convert_color(self.background_color))
+ if self.region_path is None:
+ self.region_path = self.dwg.path(d = 'M %f, %f' %
+ (self.x*SCALE, -self.y*SCALE),
+ fill = color, stroke = 'none')
+ self.region_path.push('L %f, %f' % (x*SCALE, -y*SCALE))
+ self.move(x, y, resolve=False)
+
+ def fill_region(self):
+ self.dwg.add(self.region_path)
+ self.region_path = None
+
def dump(self, filename):
self.dwg.saveas(filename)