From 1e74d47a4f233dc72e7c9698b1ab3ed66d4d19fc Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Thu, 15 Nov 2012 23:30:30 +0000 Subject: add new block style: boolean-1arg-block-style --- (limited to 'TurtleArt') diff --git a/TurtleArt/tablock.py b/TurtleArt/tablock.py index 3f8863b..2e45ff9 100644 --- a/TurtleArt/tablock.py +++ b/TurtleArt/tablock.py @@ -180,6 +180,7 @@ class Block: 'boolean-style': self._make_boolean_style, 'not-style': self._make_not_style, 'boolean-block-style': self._make_boolean_block_style, + 'boolean-1arg-block-style': self._make_boolean_1arg_block_style, 'clamp-style': self._make_clamp_style, 'clamp-style-collapsible': self._make_clamp_style_collapsible, 'clamp-style-collapsed': self._make_clamp_style_collapsed, @@ -899,6 +900,15 @@ class Block: self.svg.docks[0][1]], ['unavailable', False, 0, 0]] + def _make_boolean_1arg_block_style(self, svg): + self.svg.expand(15 + self.dx + self.ex, self.ey) + self.svg.set_innie([True]) + self._make_block_graphics(svg, self.svg.boolean_not, arg=True) + self.docks = [['bool', True, self.svg.docks[0][0], + self.svg.docks[0][1]], + ['number', False, self.svg.docks[1][0], + self.svg.docks[1][1]]] + def _make_clamp_style(self, svg, extend_x=0, extend_y=4): self.svg.expand(self.dx + self.ex + extend_x, self.ey + extend_y) self.svg.set_slot(True) diff --git a/TurtleArt/tapalette.py b/TurtleArt/tapalette.py index d2ee6bb..cac6cfa 100644 --- a/TurtleArt/tapalette.py +++ b/TurtleArt/tapalette.py @@ -63,6 +63,7 @@ block_styles = {'basic-style': [], 'boolean-style': [], 'not-style': [], 'boolean-block-style': [], + 'boolean-1arg-block-style': [], 'flow-style-tail': [], 'clamp-style': [], 'clamp-style-collapsible': [], diff --git a/TurtleArt/tasprite_factory.py b/TurtleArt/tasprite_factory.py index 4ad377a..3291ccd 100755 --- a/TurtleArt/tasprite_factory.py +++ b/TurtleArt/tasprite_factory.py @@ -337,7 +337,11 @@ class SVG: def boolean_not(self, notnot): ''' Booleans are in a class of their own: not and not not ''' self.reset_min_max() - if not notnot: + if self._innie[0]: + svg = self._start_boolean( + self._stroke_width / 2.0, + self._radius * 1.25 + self._stroke_width / 2.0) + elif not notnot: svg = self._start_boolean( self._stroke_width / 2.0, self._radius * 2.0 + self._stroke_width / 2.0) @@ -345,19 +349,32 @@ class SVG: svg = self._start_boolean( self._stroke_width / 2.0, self._radius + self._stroke_width / 2.0) + svg += self._rline_to(0, -self._stroke_width) - if not notnot: + + if self._innie[0]: + svg += self._rline_to(0, -self._radius / 4.0) + elif not notnot: svg += self._rarc_to(1, -1) svg += self._rline_to(self._radius / 2.0 + self._expand_x, 0) xx = self._x - if not notnot: + + if self._innie[0]: + svg += self._rline_to(0, self._radius) + svg += self._do_innie() + svg += self._rline_to(0, self._radius) + elif 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) - if not notnot: + if self._innie[0]: + svg += self._rline_to(-self._radius / 2.0 - self._expand_x, 0) + svg += self._rline_to(0, -self._radius / 4.0) + elif not notnot: svg += self._rline_to(-self._expand_x, 0) else: svg += self._rline_to(-self._radius / 2.0 - self._expand_x, 0) @@ -1215,6 +1232,16 @@ def generator(datapath): close_file(f) svg = SVG() + f = open_file(datapath, "boolean-arg.svg") + svg.set_scale(2) + svg.expand(30, 0, 0, 0) + svg.set_innie([True]) + svg_str = svg.boolean_not(True) + f.write(svg_str) + close_file(f) + + ''' + svg = SVG() f = open_file(datapath, "basic.svg") svg.set_scale(2) svg.expand(30, 0, 0, 0) @@ -1438,7 +1465,7 @@ def generator(datapath): svg_str = svg.clamp() f.write(svg_str) close_file(f) - + ''' def main(): return 0 -- cgit v0.9.1