summaryrefslogtreecommitdiff
path: root/gerber/render
diff options
context:
space:
mode:
authorHamilton Kibbe <hamilton.kibbe@gmail.com>2015-02-02 00:43:08 -0500
committerHamilton Kibbe <hamilton.kibbe@gmail.com>2015-02-02 00:43:08 -0500
commitd98d23f8b5d61bb9d20e743a3c44bf04b6b2330a (patch)
tree8e11666ac2d36aa351d28c457165a688f73f4df9 /gerber/render
parent360eddc3c421cc193716b17d33cc94d8444d64ce (diff)
downloadgerbonara-d98d23f8b5d61bb9d20e743a3c44bf04b6b2330a.tar.gz
gerbonara-d98d23f8b5d61bb9d20e743a3c44bf04b6b2330a.tar.bz2
gerbonara-d98d23f8b5d61bb9d20e743a3c44bf04b6b2330a.zip
More tests and bugfixes
Diffstat (limited to 'gerber/render')
-rw-r--r--gerber/render/render.py130
1 files changed, 63 insertions, 67 deletions
diff --git a/gerber/render/render.py b/gerber/render/render.py
index f5c58d8..2e4abfa 100644
--- a/gerber/render/render.py
+++ b/gerber/render/render.py
@@ -41,7 +41,7 @@ class GerberContext(object):
Attributes
----------
units : string
- Measurement units
+ Measurement units. 'inch' or 'metric'
color : tuple (<float>, <float>, <float>)
Color used for rendering as a tuple of normalized (red, green, blue) values.
@@ -57,74 +57,70 @@ class GerberContext(object):
Rendering opacity. Between 0.0 (transparent) and 1.0 (opaque.)
"""
def __init__(self, units='inch'):
- self.units = units
- self.color = (0.7215, 0.451, 0.200)
- self.drill_color = (0.25, 0.25, 0.25)
- self.background_color = (0.0, 0.0, 0.0)
- self.alpha = 1.0
-
- def set_units(self, units):
- """ Set context measurement units
-
- Parameters
- ----------
- unit : string
- Measurement units. may be 'inch' or 'metric'
-
- Raises
- ------
- ValueError
- If `unit` is not 'inch' or 'metric'
- """
+ self._units = units
+ self._color = (0.7215, 0.451, 0.200)
+ self._drill_color = (0.25, 0.25, 0.25)
+ self._background_color = (0.0, 0.0, 0.0)
+ self._alpha = 1.0
+
+ @property
+ def units(self):
+ return self._units
+
+ @units.setter
+ def units(self, units):
if units not in ('inch', 'metric'):
raise ValueError('Units may be "inch" or "metric"')
- self.units = units
-
- def set_color(self, color):
- """ Set rendering color.
-
- Parameters
- ----------
- color : tuple (<float>, <float>, <float>)
- Color as a tuple of (red, green, blue) values. Each channel is
- represented as a float value in (0, 1)
- """
- self.color = color
-
- def set_drill_color(self, color):
- """ Set color used for rendering drill hits.
-
- Parameters
- ----------
- color : tuple (<float>, <float>, <float>)
- Color as a tuple of (red, green, blue) values. Each channel is
- represented as a float value in (0, 1)
- """
- self.drill_color = color
-
- def set_background_color(self, color):
- """ Set rendering background color
-
- Parameters
- ----------
- color : tuple (<float>, <float>, <float>)
- Color as a tuple of (red, green, blue) values. Each channel is
- represented as a float value in (0, 1)
- """
- self.background_color = color
-
- def set_alpha(self, alpha):
- """ Set layer rendering opacity
-
- .. note::
- Not all backends/rendering devices support this parameter.
-
- Parameters
- ----------
- alpha : float
- Rendering opacity. must be between 0.0 (transparent) and 1.0 (opaque)
- """
- self.alpha = alpha
+ self._units = units
+
+ @property
+ def color(self):
+ return self._color
+
+ @color.setter
+ def color(self, color):
+ if len(color) != 3:
+ raise TypeError('Color must be a tuple of R, G, and B values')
+ for c in color:
+ if c < 0 or c > 1:
+ raise ValueError('Channel values must be between 0.0 and 1.0')
+ self._color = color
+
+ @property
+ def drill_color(self):
+ return self._drill_color
+
+ @drill_color.setter
+ def drill_color(self, color):
+ if len(color) != 3:
+ raise TypeError('Drill color must be a tuple of R, G, and B values')
+ for c in color:
+ if c < 0 or c > 1:
+ raise ValueError('Channel values must be between 0.0 and 1.0')
+ self._drill_color = color
+
+ @property
+ def background_color(self):
+ return self._background_color
+
+ @background_color.setter
+ def background_color(self, color):
+ if len(color) != 3:
+ raise TypeError('Background color must be a tuple of R, G, and B values')
+ for c in color:
+ if c < 0 or c > 1:
+ raise ValueError('Channel values must be between 0.0 and 1.0')
+ self._background_color = color
+
+ @property
+ def alpha(self):
+ return self._alpha
+
+ @alpha.setter
+ def alpha(self, alpha):
+ if alpha < 0 or alpha > 1:
+ raise ValueError('Alpha must be between 0.0 and 1.0')
+ self._alpha = alpha
def render(self, primitive):
color = (self.color if primitive.level_polarity == 'dark'