Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--TurtleArt/tablock.py10
-rw-r--r--TurtleArt/tapalette.py1
-rwxr-xr-xTurtleArt/tasprite_factory.py37
3 files changed, 43 insertions, 5 deletions
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