diff options
author | Walter Bender <walter.bender@gmail.com> | 2012-10-02 14:14:44 (GMT) |
---|---|---|
committer | Walter Bender <walter.bender@gmail.com> | 2012-10-02 14:14:44 (GMT) |
commit | c273205075a55846548da41247c3b1ad07a4d954 (patch) | |
tree | 735b559baaa6c237e76479c423f6b58f2cdc5ab2 | |
parent | cd22ed480868bc7da08638ac945f37c6690944a8 (diff) |
add support for boolean
-rwxr-xr-x | TurtleArt/tasprite_factory.py | 52 |
1 files changed, 36 insertions, 16 deletions
diff --git a/TurtleArt/tasprite_factory.py b/TurtleArt/tasprite_factory.py index 6eaeafa..1084936 100755 --- a/TurtleArt/tasprite_factory.py +++ b/TurtleArt/tasprite_factory.py @@ -335,26 +335,43 @@ class SVG: self.margins[3] = int(self._stroke_width * self._scale) return self.header() + svg - def boolean_not(self): - ''' Booleans are in a class of their own ''' + def boolean_not(self, notnot): + ''' Booleans are in a class of their own: not and not not ''' self.reset_min_max() - svg = self._start_boolean(self._stroke_width / 2.0, self._radius * \ - 2.0 + self._stroke_width / 2.0) + if not notnot: + svg = self._start_boolean( + self._stroke_width / 2.0, + self._radius * 2.0 + self._stroke_width / 2.0) + else: + svg = self._start_boolean( + self._stroke_width / 2.0, + self._radius + self._stroke_width / 2.0) svg += self._rline_to(0, -self._stroke_width) - svg += self._rarc_to(1, -1) + if not notnot: + svg += self._rarc_to(1, -1) svg += self._rline_to(self._radius / 2.0 + self._expand_x, 0) xx = self._x - svg += self._rline_to(0, self._radius / 2.0) - svg += self._do_boolean() - svg += self._rline_to(0, self._radius / 2.0) + if not notnot: + svg += self._rline_to(0, self._radius / 2.0) + svg += self._do_boolean() + svg += self._rline_to(0, self._radius / 2.0) + else: + svg += self._rline_to(0, self._radius * 2) svg += self.line_to(xx, self._y) - svg += self._rline_to(-self._expand_x, 0) - svg += self._end_boolean() - self.margins[0] = int((self._radius + self._stroke_width + 0.5) * \ - self._scale) + if not notnot: + svg += self._rline_to(-self._expand_x, 0) + else: + svg += self._rline_to(-self._radius / 2.0 - self._expand_x, 0) + svg += self._end_boolean(notnot) + if notnot: + self.margins[0] = int((self._radius + self._stroke_width + 0.5) * \ + self._scale) + self.margins[2] = int((self._radius + self._stroke_width + 0.5) * \ + self._scale) + else: + self.margins[0] = int((self._stroke_width + 0.5) * self._scale) + self.margins[2] = int((self._stroke_width + 0.5) * self._scale) self.margins[1] = int(self._stroke_width * self._scale) - self.margins[2] = int((self._radius + self._stroke_width + 0.5) * \ - self._scale) self.margins[3] = int(self._stroke_width * self._scale) return self.header() + svg @@ -1106,8 +1123,11 @@ class SVG: svg = self._rarc_to(-1, 1, 90, 0, 0) + self._rarc_to(1, 1, 90, 0, 0) return svg - def _end_boolean(self): - svg = self._rline_to(-self._radius * 1.5, 0) + def _end_boolean(self, notnot=False): + if not notnot: + svg = self._rline_to(-self._radius * 1.5, 0) + else: + svg = '' svg += self._rline_to(0, -self._stroke_width) svg += self._rline_to(-self._stroke_width, 0) self._radius -= self._stroke_width |