Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/TurtleArt/tasprite_factory.py
diff options
context:
space:
mode:
Diffstat (limited to 'TurtleArt/tasprite_factory.py')
-rwxr-xr-xTurtleArt/tasprite_factory.py86
1 files changed, 78 insertions, 8 deletions
diff --git a/TurtleArt/tasprite_factory.py b/TurtleArt/tasprite_factory.py
index 2bd8993..7f9494c 100755
--- a/TurtleArt/tasprite_factory.py
+++ b/TurtleArt/tasprite_factory.py
@@ -609,6 +609,61 @@ stroke-width="3.5" fill="%s" stroke="none" />\n' % (self._stroke)
svg += self.footer()
return self.header() + svg
+ def clamp_until(self):
+ ''' Until block is like clamp but docks are flipped '''
+ self.reset_min_max()
+ x = self._stroke_width / 2.0
+ y = self._stroke_width / 2.0 + self._radius
+ self.margins[0] = int((x + self._stroke_width + 0.5) * self._scale)
+ self.margins[1] = int((self._stroke_width + 0.5) * self._scale)
+ self.margins[2] = 0
+ self.margins[3] = 0
+ svg = self.new_path(x, y)
+ svg += self._corner(1, -1)
+ svg += self._do_slot()
+ svg += self._rline_to(self._radius + self._stroke_width, 0)
+ svg += self._rline_to(self._expand_x, 0)
+ xx = self._x
+ svg += self._corner(1, 1, skip=True)
+ svg += self._corner(-1, 1, skip=True)
+ svg += self.line_to(xx, self._y)
+ svg += self._rline_to(-self._expand_x, 0)
+ svg += self._do_tab()
+ svg += self._inverse_corner(-1, 1, 90, 0, 0)
+ svg += self._rline_to(0, self._expand_y)
+ svg += self._inverse_corner(1, 1, 90, 0, 0)
+ svg += self._do_slot()
+ svg += self._rline_to(self._radius, 0)
+ if self._second_clamp:
+ svg += self._corner(-1, 1)
+ svg += self.line_to(xx, self._y)
+ svg += self._rline_to(-self._expand_x, 0)
+ svg += self._do_tab()
+ svg += self._inverse_corner(-1, 1, 90, 0, 0)
+ svg += self._rline_to(0, self._expand_y2)
+ svg += self._inverse_corner(1, 1, 90, 0, 0)
+ svg += self._do_slot()
+ svg += self._rline_to(self._radius, 0)
+ if self._innie[0] is True:
+ svg += self._do_innie()
+ else:
+ self.margins[2] = \
+ int((self._x - self._stroke_width + 0.5) * self._scale)
+ svg += self._rline_to(0, self._radius * 3)
+ if self._bool is True:
+ svg += self._do_boolean()
+ svg += self._corner(-1, 1)
+ svg += self._rline_to(-self._radius - self._stroke_width, 0)
+ svg += self._do_tab()
+ svg += self._corner(-1, -1)
+ svg += self._close_path()
+ self.calc_w_h()
+ svg += self.style()
+ if self._collapsible:
+ svg += self._hide_dot()
+ svg += self.footer()
+ return self.header() + svg
+
def status_block(self, graphic=None):
''' Generate a status block '''
self.reset_min_max()
@@ -950,7 +1005,8 @@ stroke-width="3.5" fill="%s" stroke="none" />\n' % (self._stroke)
0)
return svg_str
- def _corner(self, sign_x, sign_y, a=90, l=0, s=1, start=True, end=True):
+ def _corner(self, sign_x, sign_y, a=90, l=0, s=1, start=True, end=True,
+ skip=False):
svg_str = ""
if sign_x == 1 and sign_y == -1: # Upper-left corner
self._hide_x = self._x + self._radius + self._stroke_width
@@ -970,7 +1026,7 @@ stroke-width="3.5" fill="%s" stroke="none" />\n' % (self._stroke)
if start:
if sign_x * sign_y == 1:
svg_str += self._rline_to(sign_x * r2, 0)
- else:
+ elif not skip:
svg_str += self._rline_to(0, sign_y * r2)
x = self._x + sign_x * r2
y = self._y + sign_y * r2
@@ -978,7 +1034,7 @@ stroke-width="3.5" fill="%s" stroke="none" />\n' % (self._stroke)
if end:
if sign_x * sign_y == 1:
svg_str += self._rline_to(0, sign_y * r2)
- else:
+ elif not skip:
svg_str += self._rline_to(sign_x * r2, 0)
return svg_str
@@ -1237,6 +1293,7 @@ def close_file(f):
def generator(datapath):
+ '''
svg = SVG()
f = open_file(datapath, "turtle.svg")
svg.set_scale(2)
@@ -1471,29 +1528,42 @@ def generator(datapath):
close_file(f)
svg = SVG()
- f = open_file(datapath, "clampb.svg")
+ f = open_file(datapath, "clampe.svg")
svg.set_scale(2)
svg.expand(30, 0, 0, 0)
svg.set_slot(True)
svg.set_tab(True)
svg.set_boolean(True)
- svg.second_clamp(False)
+ svg.second_clamp(True)
svg_str = svg.clamp()
f.write(svg_str)
close_file(f)
+ '''
svg = SVG()
- f = open_file(datapath, "clampe.svg")
+ f = open_file(datapath, "clampb.svg")
svg.set_scale(2)
- svg.expand(30, 0, 0, 0)
+ svg.expand(0, 30, 0, 0)
svg.set_slot(True)
svg.set_tab(True)
svg.set_boolean(True)
- svg.second_clamp(True)
+ svg.second_clamp(False)
svg_str = svg.clamp()
f.write(svg_str)
close_file(f)
+ svg = SVG()
+ f = open_file(datapath, "clampu.svg")
+ svg.set_scale(2)
+ svg.expand(0, 30, 0, 0)
+ svg.set_slot(True)
+ svg.set_tab(True)
+ svg.set_boolean(True)
+ svg.second_clamp(False)
+ svg_str = svg.clamp_until()
+ f.write(svg_str)
+ close_file(f)
+
def main():
return 0