summaryrefslogtreecommitdiff
path: root/gerber/render
diff options
context:
space:
mode:
Diffstat (limited to 'gerber/render')
-rw-r--r--gerber/render/cairo_backend.py25
-rw-r--r--gerber/render/theme.py17
2 files changed, 32 insertions, 10 deletions
diff --git a/gerber/render/cairo_backend.py b/gerber/render/cairo_backend.py
index 3c4a395..fe27d60 100644
--- a/gerber/render/cairo_backend.py
+++ b/gerber/render/cairo_backend.py
@@ -15,19 +15,23 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-from .render import GerberContext
-
+
try:
import cairo
except ImportError:
- import cairocffi as cairo
-
+ import cairocffi as cairo
from operator import mul
import math
import tempfile
+from .render import GerberContext
from ..primitives import *
+try:
+ from cStringIO import StringIO
+except(ImportError):
+ from io import StringIO
+
class GerberCairoContext(GerberContext):
def __init__(self, scale=300):
@@ -272,8 +276,8 @@ class GerberCairoContext(GerberContext):
self.ctx.scale(1, -1)
self.ctx.show_text(primitive.net_name)
self.ctx.scale(1, -1)
-
- def _paint_inverted_layer(self):
+
+ def _clear_mask(self):
self.mask_ctx.set_operator(cairo.OPERATOR_OVER)
self.mask_ctx.set_source_rgba(self.background_color[0], self.background_color[1], self.background_color[2], alpha=self.alpha)
self.mask_ctx.paint()
@@ -302,7 +306,16 @@ class GerberCairoContext(GerberContext):
else:
return self.surface.write_to_png(filename)
+ def dump_str(self):
+ """ Return a string containing the rendered image.
+ """
+ fobj = StringIO()
+ self.surface.write_to_png(fobj)
+ return fobj.getvalue()
+
def dump_svg_str(self):
+ """ Return a string containg the rendered SVG.
+ """
self.surface.finish()
self.surface_buffer.flush()
return self.surface_buffer.read()
diff --git a/gerber/render/theme.py b/gerber/render/theme.py
index 5d39bb6..eae3735 100644
--- a/gerber/render/theme.py
+++ b/gerber/render/theme.py
@@ -19,12 +19,13 @@
COLORS = {
'black': (0.0, 0.0, 0.0),
'white': (1.0, 1.0, 1.0),
- 'fr-4': (0.702, 0.655, 0.192),
+ 'fr-4': (0.290, 0.345, 0.0),
'green soldermask': (0.0, 0.612, 0.396),
'blue soldermask': (0.059, 0.478, 0.651),
'red soldermask': (0.968, 0.169, 0.165),
'black soldermask': (0.298, 0.275, 0.282),
- 'enig copper': (0.780, 0.588, 0.286),
+ 'purple soldermask': (0.2, 0.0, 0.334),
+ 'enig copper': (0.686, 0.525, 0.510),
'hasl copper': (0.871, 0.851, 0.839)
}
@@ -40,11 +41,19 @@ class Theme(object):
def __init__(self, **kwargs):
self.background = kwargs.get('background', RenderSettings(COLORS['black'], 0.0))
self.topsilk = kwargs.get('topsilk', RenderSettings(COLORS['white']))
- self.topsilk = kwargs.get('bottomsilk', RenderSettings(COLORS['white']))
- self.topmask = kwargs.get('topmask', RenderSettings(COLORS['green soldermask'], 0.8, True))
+ self.bottomsilk = kwargs.get('bottomsilk', RenderSettings(COLORS['white']))
self.topmask = kwargs.get('topmask', RenderSettings(COLORS['green soldermask'], 0.8, True))
+ self.bottommask = kwargs.get('bottommask', RenderSettings(COLORS['green soldermask'], 0.8, True))
self.top = kwargs.get('top', RenderSettings(COLORS['hasl copper']))
self.bottom = kwargs.get('top', RenderSettings(COLORS['hasl copper']))
self.drill = kwargs.get('drill', self.background)
+THEMES = {
+ 'Default': Theme(),
+ 'Osh Park': Theme(top=COLORS['enig copper'],
+ bottom=COLORS['enig copper'],
+ topmask=COLORS['purple soldermask'],
+ bottommask=COLORS['purple soldermask']),
+}
+