From ebbaf1f427c01334106add9a11802381e170d7ce Mon Sep 17 00:00:00 2001 From: U-BRIAN-X60\Brian Silverman Date: Thu, 30 Aug 2007 21:48:32 +0000 Subject: added journal awareness --- diff --git a/MANIFEST b/MANIFEST index 6c8bd89..78d97d0 100755 --- a/MANIFEST +++ b/MANIFEST @@ -3,10 +3,12 @@ logo.py masknumber.gif sprites.py status.gif +setup.py ta.py TurtleArtActivity.py turtle.py turtlesetup.py +icons/stock-open.svg flow/flowgroup.gif flow/flowmask.gif flow/forever.gif diff --git a/TurtleArtActivity.py b/TurtleArtActivity.py index 3c40d89..6fc4b50 100755 --- a/TurtleArtActivity.py +++ b/TurtleArtActivity.py @@ -3,32 +3,134 @@ import pygtk pygtk.require('2.0') import gtk +from socket import * +import sys +import gobject + +serverHost = '192.168.1.101' +serverPort = 5647 + +import sugar from sugar.activity import activity +from sugar.activity import registry +from sugar.graphics.toolbutton import ToolButton +from sugar.datastore import datastore +from sugar import profile +from gettext import gettext as _ + class TurtleArtActivity(activity.Activity): def __init__(self, handle): super(TurtleArtActivity,self).__init__(handle) - +# self.debug_init() + self.gamename = 'turtleart' self.set_title("TurtleArt") - toolbar = activity.ActivityToolbar(self) - toolbar.show() - self.set_toolbox(toolbar) + + toolbox = activity.ActivityToolbox(self) + self.set_toolbox(toolbox) + self.projectToolbar = ProjectToolbar(self) + toolbox.add_toolbar( ('Project'), self.projectToolbar ) + toolbox.show() + + toolbox._activity_toolbar.keep.connect('clicked', self._keep_clicked_cb) # patch self.connect('destroy', self._cleanup_cb) -# self.connect('focus_in_event', self._focus_in) -# self.connect('focus_out_event', self._focus_out) - + canvas = gtk.EventBox() - self.set_canvas(canvas) + + sugar.graphics.window.Window.set_canvas(self, canvas) + ta.init(canvas, activity.get_bundle_path(),self) - + + if self._jobject and self._jobject.file_path: + self.read_file(self._jobject.file_path) def _cleanup_cb(self, data=None): return - def _focus_in(self, event, data=None): - return + def _keep_clicked_cb(self, button): + self.jobject_new_patch() + + def write_file(self, file_path): + print "Writing file %s" % file_path + self.metadata['mime_type'] = 'application/x-tar' + import tarfile,os,tempfile + tar_fd = tarfile.open(file_path, 'w') + pngfd, pngfile = tempfile.mkstemp(".png") + tafd, tafile = tempfile.mkstemp(".ta") + del pngfd, tafd + + try: + ta.save_data(tafile) + ta.save_pict(pngfile) + tar_fd.add(tafile, "ta_code.ta") + tar_fd.add(pngfile, "ta_image.png") + + finally: + tar_fd.close() + os.remove(pngfile) + os.remove(tafile) + + def read_file(self, file_path): + # Better be a tar file. + import tarfile,os,tempfile,shutil + + print "Reading file %s" % file_path + tar_fd = tarfile.open(file_path, 'r') + tmpdir = tempfile.mkdtemp() + + try: + # We'll get 'ta_code.ta' and 'ta_image.png' + tar_fd.extractall(tmpdir) + ta.load_files(os.path.join(tmpdir, 'ta_code.ta'), os.path.join(tmpdir, 'ta_image.png')) + + finally: + shutil.rmtree(tmpdir) + tar_fd.close() + + def debug_init(self): + s = socket(AF_INET, SOCK_STREAM) # create a TCP socket + s.connect((serverHost, serverPort)) # connect to server on the port + sys.stdout = s.makefile() + sys.stderr = sys.stdout + gobject.timeout_add(100, self.debug_tick) + + def debug_tick(self): + sys.stdout.flush() + return True + + def jobject_new_patch(self): + oldj = self._jobject + self._jobject = datastore.create() + self._jobject.metadata['title'] = oldj.metadata['title'] + self._jobject.metadata['title_set_by_user'] = oldj.metadata['title_set_by_user'] + self._jobject.metadata['activity'] = self.get_service_name() + self._jobject.metadata['activity_id'] = self.get_id() + self._jobject.metadata['keep'] = '0' + #self._jobject.metadata['buddies'] = '' + self._jobject.metadata['preview'] = '' + self._jobject.metadata['icon-color'] = profile.get_color().to_string() + self._jobject.file_path = '' + datastore.write(self._jobject, + reply_handler=self._internal_jobject_create_cb, + error_handler=self._internal_jobject_error_cb) + + +class ProjectToolbar(gtk.Toolbar): + def __init__(self, pc): + gtk.Toolbar.__init__(self) + self.activity = pc + + self.sampb = ToolButton( "stock-open" ) + self.sampb.set_tooltip("samples") + self.sampb.props.sensitive = True + self.sampb.connect('clicked', self.do_samples) + self.insert(self.sampb, -1) + self.sampb.show() + + + def do_samples(self, button): + ta.load_file() +# self.activity.jobject_new_patch() - def _focus_out(self, event, data=None): - return diff --git a/activity/activity.info b/activity/activity.info index 545c414..657c942 100755 --- a/activity/activity.info +++ b/activity/activity.info @@ -3,5 +3,5 @@ name = TurtleArt service_name = org.laptop.TurtleArtActivity class = TurtleArtActivity.TurtleArtActivity icon = activity-turtleart -activity_version = 3 +activity_version = 4 show_launcher = yes diff --git a/samples/birds.png b/samples/birds.png index fbb44bb..55b23f1 100755 --- a/samples/birds.png +++ b/samples/birds.png Binary files differ diff --git a/samples/birds.ta b/samples/birds.ta index fd73c16..4144a07 100755 --- a/samples/birds.ta +++ b/samples/birds.ta @@ -2,309 +2,309 @@ (I0 S'hat1' p1 -I330 -I306 +I668 +I127 (lp2 -NaI4 +NaI1 atp3 a(I1 -S'clean' +S'setxy' p4 -I866 -I149 +I680 +I177 (lp5 -NaI2 +I0 +aI2 +aI5 +aI8 atp6 a(I2 -S'repeat' +S'random' p7 -I866 -I188 +I754 +I167 (lp8 I1 -aI31 aI3 +aI4 aNatp9 a(I3 -S'stack1' +(S'number' p10 -I961 -I237 -(lp11 +S'-600' +p11 +tp12 +I782 +I186 +(lp13 I2 -aNatp12 +aNatp14 a(I4 -S'setxy' -p13 -I342 -I356 -(lp14 -I0 -aI5 -aI8 -aI11 -atp15 -a(I5 -S'random' -p16 -I416 -I346 +(g10 +S'600' +p15 +tp16 +I904 +I186 (lp17 -I4 +I2 +aNatp18 +a(I5 +g7 +I754 +I204 +(lp19 +I1 aI6 aI7 -aNatp18 +aNatp20 a(I6 -(S'number' -p19 -S'-600' -p20 -tp21 -I444 -I365 -(lp22 +(g10 +S'-450' +p21 +tp22 +I782 +I223 +(lp23 I5 -aNatp23 +aNatp24 a(I7 -(g19 -S'600' -p24 -tp25 -I566 -I365 -(lp26 +(g10 +S'450' +p25 +tp26 +I904 +I223 +(lp27 I5 -aNatp27 +aNatp28 a(I8 -g16 -I416 -I383 -(lp28 -I4 +S'setpensize' +p29 +I680 +I253 +(lp30 +I1 aI9 aI10 -aNatp29 +atp31 a(I9 -(g19 -S'-450' -p30 -tp31 -I444 -I402 -(lp32 +(g10 +S'10' +p32 +tp33 +I754 +I270 +(lp34 I8 -aNatp33 +aNatp35 a(I10 -(g19 -S'450' -p34 -tp35 -I566 -I402 -(lp36 +S'repeat' +p36 +I680 +I307 +(lp37 I8 -aNatp37 -a(I11 -S'setpensize' -p38 -I342 -I432 -(lp39 -I4 +aI11 aI12 -aI13 -atp40 +aNatp38 +a(I11 +(g10 +S'720' +p39 +tp40 +I766 +I316 +(lp41 +I10 +aNatp42 a(I12 -(g19 -S'10' -p41 -tp42 -I416 -I449 -(lp43 -I11 -aNatp44 -a(I13 -g7 -I342 -I486 -(lp45 -I11 +S'forward' +p43 +I775 +I356 +(lp44 +I10 +aI13 aI14 -aI15 -aNatp46 +atp45 +a(I13 +(g10 +S'200' +p46 +tp47 +I849 +I365 +(lp48 +I12 +aNatp49 a(I14 -(g19 -S'720' -p47 -tp48 -I428 -I495 -(lp49 -I13 -aNatp50 +S'setcolor' +p50 +I775 +I395 +(lp51 +I12 +aI15 +aI18 +atp52 a(I15 -S'forward' -p51 -I437 -I535 -(lp52 -I13 +S'xcor' +p53 +I849 +I412 +(lp54 +I14 aI16 -aI17 -atp53 +atp55 a(I16 -(g19 -S'200' -p54 -tp55 -I511 -I544 -(lp56 +S'division' +p56 +I942 +I404 +(lp57 I15 -aNatp57 +aI17 +atp58 a(I17 -S'setcolor' -p58 -I437 -I574 -(lp59 -I15 -aI18 -aI21 -atp60 +(g10 +S'5' +p59 +tp60 +I981 +I412 +(lp61 +I16 +aNatp62 a(I18 -S'xcor' -p61 -I511 -I591 -(lp62 -I17 +S'setshade' +p63 +I775 +I449 +(lp64 +I14 aI19 -atp63 +aI20 +atp65 a(I19 -S'division' -p64 -I604 -I583 -(lp65 +S'heading' +p66 +I849 +I466 +(lp67 I18 -aI20 -atp66 +aNatp68 a(I20 -(g19 -S'5' -p67 -tp68 -I643 -I591 -(lp69 -I19 -aNatp70 -a(I21 -S'setshade' -p71 -I437 -I628 -(lp72 -I17 +S'back' +p69 +I775 +I503 +(lp70 +I18 +aI21 aI22 -aI23 -atp73 +atp71 +a(I21 +(g10 +S'400' +p72 +tp73 +I849 +I512 +(lp74 +I20 +aNatp75 a(I22 -S'heading' -p74 -I511 -I645 -(lp75 -I21 -aNatp76 +g43 +I775 +I542 +(lp76 +I20 +aI23 +aI26 +atp77 a(I23 -S'back' -p77 -I437 -I682 +g7 +I849 +I532 (lp78 -I21 +I22 aI24 aI25 -atp79 +aNatp79 a(I24 -(g19 -S'400' +(g10 +S'190' p80 tp81 -I511 -I691 +I877 +I551 (lp82 I23 aNatp83 a(I25 -g51 -I437 -I721 -(lp84 +(g10 +S'210' +p84 +tp85 +I999 +I551 +(lp86 I23 -aI26 -aI29 -atp85 +aNatp87 a(I26 -g16 -I511 -I711 -(lp86 -I25 +S'left' +p88 +I775 +I581 +(lp89 +I22 aI27 -aI28 -aNatp87 +aNatp90 a(I27 -(g19 -S'190' -p88 -tp89 -I539 -I730 -(lp90 +(g10 +S'1' +p91 +tp92 +I849 +I590 +(lp93 I26 -aNatp91 +aNatp94 a(I28 -(g19 -S'210' -p92 -tp93 -I661 -I730 -(lp94 -I26 -aNatp95 +S'clean' +p95 +I150 +I122 +(lp96 +NaI29 +atp97 a(I29 -S'left' -p96 -I437 -I760 -(lp97 -I25 +g36 +I150 +I161 +(lp98 +I28 aI30 -aNatp98 +aI31 +aNatp99 a(I30 -(g19 -S'1' -p99 -tp100 -I511 -I769 -(lp101 +(g10 +S'30' +p100 +tp101 +I236 +I170 +(lp102 I29 -aNatp102 +aNatp103 a(I31 -(g19 -S'30' -p103 -tp104 -I952 -I197 +S'stack1' +p104 +I245 +I210 (lp105 -I2 +I29 aNatp106 a(I-1 S'turtle' diff --git a/samples/bubbles.png b/samples/bubbles.png index 2f296b9..bccbd84 100755 --- a/samples/bubbles.png +++ b/samples/bubbles.png Binary files differ diff --git a/samples/bubbles.ta b/samples/bubbles.ta index 93dfe7f..2583b7a 100755 --- a/samples/bubbles.ta +++ b/samples/bubbles.ta @@ -2,8 +2,8 @@ (I0 S'setcolor' p1 -I737 -I246 +I128 +I60 (lp2 NaI1 aI2 @@ -14,16 +14,16 @@ p4 S'60' p5 tp6 -I811 -I263 +I202 +I77 (lp7 I0 aNatp8 a(I2 S'repeat' p9 -I737 -I300 +I128 +I114 (lp10 I0 aI3 @@ -34,16 +34,16 @@ a(I3 S'5000' p12 tp13 -I823 -I309 +I214 +I123 (lp14 I2 aNatp15 a(I4 S'setxy' p16 -I832 -I349 +I223 +I163 (lp17 I2 aI5 @@ -53,8 +53,8 @@ atp18 a(I5 S'random' p19 -I906 -I339 +I297 +I153 (lp20 I4 aI6 @@ -65,8 +65,8 @@ a(I6 S'-600' p22 tp23 -I934 -I358 +I325 +I172 (lp24 I5 aNatp25 @@ -75,15 +75,15 @@ a(I7 S'600' p26 tp27 -I1056 -I358 +I447 +I172 (lp28 I5 aNatp29 a(I8 g19 -I906 -I376 +I297 +I190 (lp30 I4 aI9 @@ -94,8 +94,8 @@ a(I9 S'-450' p32 tp33 -I934 -I395 +I325 +I209 (lp34 I8 aNatp35 @@ -104,16 +104,16 @@ a(I10 S'450' p36 tp37 -I1056 -I395 +I447 +I209 (lp38 I8 aNatp39 a(I11 S'storeinbox1' p40 -I832 -I425 +I223 +I239 (lp41 I4 aI12 @@ -122,8 +122,8 @@ atp42 a(I12 S'ycor' p43 -I906 -I442 +I297 +I256 (lp44 I11 aI13 @@ -131,8 +131,8 @@ atp45 a(I13 S'plus' p46 -I999 -I434 +I390 +I248 (lp47 I12 aI14 @@ -142,16 +142,16 @@ a(I14 S'900' p49 tp50 -I1038 -I442 +I429 +I256 (lp51 I13 aNatp52 a(I15 S'setpensize' p53 -I832 -I479 +I223 +I293 (lp54 I11 aI16 @@ -160,8 +160,8 @@ atp55 a(I16 S'box1' p56 -I906 -I496 +I297 +I310 (lp57 I15 aI17 @@ -169,8 +169,8 @@ atp58 a(I17 S'division' p59 -I999 -I488 +I390 +I302 (lp60 I16 aI18 @@ -180,16 +180,16 @@ a(I18 S'9' p62 tp63 -I1038 -I496 +I429 +I310 (lp64 I17 aNatp65 a(I19 S'setshade' p66 -I832 -I533 +I223 +I347 (lp67 I15 aI20 @@ -197,16 +197,16 @@ aI23 atp68 a(I20 g56 -I906 -I550 +I297 +I364 (lp69 I19 aI21 atp70 a(I21 g59 -I999 -I542 +I390 +I356 (lp71 I20 aI22 @@ -216,16 +216,16 @@ a(I22 S'12' p73 tp74 -I1038 -I550 +I429 +I364 (lp75 I21 aNatp76 a(I23 S'forward' p77 -I832 -I587 +I223 +I401 (lp78 I19 aI24 @@ -235,8 +235,8 @@ a(I24 S'1' p80 tp81 -I906 -I596 +I297 +I410 (lp82 I23 aNatp83 diff --git a/samples/candyvortex.png b/samples/candyvortex.png index 908b90e..22f41b0 100755 --- a/samples/candyvortex.png +++ b/samples/candyvortex.png Binary files differ diff --git a/samples/candyvortex.ta b/samples/candyvortex.ta index 1f7748e..9060fef 100755 --- a/samples/candyvortex.ta +++ b/samples/candyvortex.ta @@ -2,8 +2,8 @@ (I0 S'repeat' p1 -I777 -I164 +I212 +I116 (lp2 NaI1 aI2 @@ -13,16 +13,16 @@ a(I1 p4 I350 tp5 -I863 -I173 +I298 +I125 (lp6 I0 aNatp7 a(I2 S'setpensize' p8 -I872 -I213 +I307 +I165 (lp9 I0 aI3 @@ -31,16 +31,16 @@ atp10 a(I3 S'heading' p11 -I946 -I230 +I381 +I182 (lp12 I2 aNatp13 a(I4 S'forward' p14 -I872 -I267 +I307 +I219 (lp15 I2 aI5 @@ -51,16 +51,16 @@ a(I5 S'1000' p17 tp18 -I946 -I276 +I381 +I228 (lp19 I4 aNatp20 a(I6 S'setcolor' p21 -I872 -I306 +I307 +I258 (lp22 I4 aI7 @@ -69,16 +69,16 @@ atp23 a(I7 S'xcor' p24 -I946 -I323 +I381 +I275 (lp25 I6 aNatp26 a(I8 S'setshade' p27 -I872 -I360 +I307 +I312 (lp28 I6 aI9 @@ -87,16 +87,16 @@ atp29 a(I9 S'ycor' p30 -I946 -I377 +I381 +I329 (lp31 I8 aNatp32 a(I10 S'back' p33 -I872 -I414 +I307 +I366 (lp34 I8 aI11 @@ -107,16 +107,16 @@ a(I11 S'1000' p36 tp37 -I946 -I423 +I381 +I375 (lp38 I10 aNatp39 a(I12 S'left' p40 -I872 -I453 +I307 +I405 (lp41 I10 aI13 @@ -125,8 +125,8 @@ a(I13 (g4 I1 tp43 -I946 -I462 +I381 +I414 (lp44 I12 aNatp45 diff --git a/samples/colors.png b/samples/colors.png index 0cb4cf6..b23b7dd 100755 --- a/samples/colors.png +++ b/samples/colors.png Binary files differ diff --git a/samples/colors.ta b/samples/colors.ta index cedbb95..5819d26 100755 --- a/samples/colors.ta +++ b/samples/colors.ta @@ -2,8 +2,8 @@ (I0 S'setpensize' p1 -I460 -I86 +I202 +I114 (lp2 NaI1 aI2 @@ -14,16 +14,16 @@ p4 S'15' p5 tp6 -I534 -I103 +I276 +I131 (lp7 I0 aNatp8 a(I2 S'repeat' p9 -I460 -I140 +I202 +I168 (lp10 I0 aI3 @@ -33,16 +33,16 @@ a(I3 (g4 I360 tp12 -I546 -I149 +I288 +I177 (lp13 I2 aNatp14 a(I4 S'setcolor' p15 -I555 -I189 +I297 +I217 (lp16 I2 aI5 @@ -51,16 +51,16 @@ atp17 a(I5 S'heading' p18 -I629 -I206 +I371 +I234 (lp19 I4 aNatp20 a(I6 S'forward' p21 -I555 -I243 +I297 +I271 (lp22 I4 aI7 @@ -70,16 +70,16 @@ a(I7 (g4 I1000 tp24 -I629 -I252 +I371 +I280 (lp25 I6 aNatp26 a(I8 S'back' p27 -I555 -I282 +I297 +I310 (lp28 I6 aI9 @@ -89,16 +89,16 @@ a(I9 (g4 I1000 tp30 -I629 -I291 +I371 +I319 (lp31 I8 aNatp32 a(I10 S'right' p33 -I555 -I321 +I297 +I349 (lp34 I8 aI11 @@ -107,8 +107,8 @@ a(I11 (g4 I1 tp36 -I629 -I330 +I371 +I358 (lp37 I10 aNatp38 diff --git a/samples/csquiral.png b/samples/csquiral.png index 41b309a..3d08a9b 100755 --- a/samples/csquiral.png +++ b/samples/csquiral.png Binary files differ diff --git a/samples/csquiral.ta b/samples/csquiral.ta index c84cd54..6682f0d 100755 --- a/samples/csquiral.ta +++ b/samples/csquiral.ta @@ -2,8 +2,8 @@ (I0 S'setpensize' p1 -I690 -I180 +I163 +I114 (lp2 NaI1 aI2 @@ -14,16 +14,16 @@ p4 S'25' p5 tp6 -I764 -I197 +I237 +I131 (lp7 I0 aNatp8 a(I2 S'storeinbox1' p9 -I690 -I234 +I163 +I168 (lp10 I0 aI3 @@ -34,16 +34,16 @@ a(I3 S'0' p12 tp13 -I764 -I251 +I237 +I185 (lp14 I2 aNatp15 a(I4 S'repeat' p16 -I690 -I288 +I163 +I222 (lp17 I2 aI5 @@ -54,16 +54,16 @@ a(I5 S'1300' p19 tp20 -I776 -I297 +I249 +I231 (lp21 I4 aNatp22 a(I6 S'setcolor' p23 -I785 -I337 +I258 +I271 (lp24 I4 aI7 @@ -72,8 +72,8 @@ atp25 a(I7 S'xcor' p26 -I859 -I354 +I332 +I288 (lp27 I6 aI8 @@ -81,8 +81,8 @@ atp28 a(I8 S'division' p29 -I952 -I346 +I425 +I280 (lp30 I7 aI9 @@ -92,16 +92,16 @@ a(I9 S'6' p32 tp33 -I991 -I354 +I464 +I288 (lp34 I8 aNatp35 a(I10 S'setshade' p36 -I785 -I391 +I258 +I325 (lp37 I6 aI11 @@ -110,16 +110,16 @@ atp38 a(I11 S'heading' p39 -I859 -I408 +I332 +I342 (lp40 I10 aNatp41 a(I12 S'forward' p42 -I785 -I445 +I258 +I379 (lp43 I10 aI13 @@ -128,16 +128,16 @@ atp44 a(I13 S'box1' p45 -I859 -I454 +I332 +I388 (lp46 I12 aNatp47 a(I14 S'right' p48 -I785 -I484 +I258 +I418 (lp49 I12 aI15 @@ -148,23 +148,23 @@ a(I15 S'91' p51 tp52 -I859 -I493 +I332 +I427 (lp53 I14 aNatp54 a(I16 g9 -I785 -I523 +I258 +I457 (lp55 I14 aI17 aNatp56 a(I17 g45 -I859 -I540 +I332 +I474 (lp57 I16 aI18 @@ -172,8 +172,8 @@ atp58 a(I18 S'plus' p59 -I952 -I532 +I425 +I466 (lp60 I17 aI19 @@ -183,8 +183,8 @@ a(I19 S'1' p62 tp63 -I991 -I540 +I464 +I474 (lp64 I18 aNatp65 @@ -194,8 +194,8 @@ p66 F906.80942086435073 F86.478356202884811 F220.0 -F16.117197178042431 -F70.0 +F-17.117197178042431 +F129.0 F25.0 tp67 a. \ No newline at end of file diff --git a/samples/curlygates.png b/samples/curlygates.png index c28e608..15ca901 100755 --- a/samples/curlygates.png +++ b/samples/curlygates.png Binary files differ diff --git a/samples/curlygates.ta b/samples/curlygates.ta index a28e8fa..53b1c6f 100755 --- a/samples/curlygates.ta +++ b/samples/curlygates.ta @@ -1,460 +1,460 @@ (lp0 (I0 -S'hat2' +S'fillscreen' p1 -I689 -I380 +I137 +I130 (lp2 NaI1 +aI2 +aI3 atp3 a(I1 -S'setcolor' +(S'number' p4 -I701 -I430 -(lp5 +S'50' +p5 +tp6 +I211 +I139 +(lp7 I0 -aI2 -aI3 -atp6 +aNatp8 a(I2 -(S'number' -p7 -S'20' -p8 -tp9 -I775 -I447 -(lp10 -I1 -aNatp11 +(g4 +S'30' +p9 +tp10 +I211 +I176 +(lp11 +I0 +aNatp12 a(I3 -S'setshade' -p12 -I701 -I484 -(lp13 -I1 +S'repeat' +p13 +I137 +I206 +(lp14 +I0 aI4 aI5 -atp14 +aNatp15 a(I4 -(g7 -S'60' -p15 -tp16 -I775 -I501 -(lp17 +(g4 +S'20' +p16 +tp17 +I223 +I215 +(lp18 I3 -aNatp18 +aNatp19 a(I5 -S'setpensize' -p19 -I701 -I538 -(lp20 +S'setxy' +p20 +I232 +I255 +(lp21 I3 aI6 -aI7 -atp21 +aI9 +aI12 +atp22 a(I6 -(g7 -S'20' -p22 -tp23 -I775 -I555 +S'random' +p23 +I306 +I245 (lp24 I5 +aI7 +aI8 aNatp25 a(I7 -S'stack1' +(g4 +S'-570' p26 -I701 -I592 -(lp27 -I5 -aI8 -atp28 +tp27 +I334 +I264 +(lp28 +I6 +aNatp29 a(I8 -g4 -I701 -I631 -(lp29 -I7 -aI9 -aI10 -atp30 +(g4 +S'570' +p30 +tp31 +I456 +I264 +(lp32 +I6 +aNatp33 a(I9 -(g7 -S'0' -p31 -tp32 -I775 -I648 -(lp33 -I8 -aNatp34 -a(I10 -g12 -I701 -I685 -(lp35 -I8 +g23 +I306 +I282 +(lp34 +I5 +aI10 aI11 -aI14 -atp36 -a(I11 -S'random' -p37 -I775 -I683 +aNatp35 +a(I10 +(g4 +S'-440' +p36 +tp37 +I334 +I301 (lp38 -I10 -aI12 -aI13 +I9 aNatp39 -a(I12 -(g7 -S'60' +a(I11 +(g4 +S'440' p40 tp41 -I803 -I702 +I456 +I301 (lp42 -I11 +I9 aNatp43 -a(I13 -(g7 -S'80' +a(I12 +S'seth' p44 -tp45 -I925 -I702 -(lp46 -I11 -aNatp47 -a(I14 -g19 -I701 -I739 -(lp48 -I10 -aI15 +I232 +I331 +(lp45 +I5 +aI13 aI16 -atp49 +atp46 +a(I13 +g23 +I306 +I321 +(lp47 +I12 +aI14 +aI15 +aNatp48 +a(I14 +(g4 +S'0' +p49 +tp50 +I334 +I340 +(lp51 +I13 +aNatp52 a(I15 -(g7 -S'12' -p50 -tp51 -I775 -I756 -(lp52 -I14 -aNatp53 +(g4 +S'360' +p53 +tp54 +I456 +I340 +(lp55 +I13 +aNatp56 a(I16 -g26 -I701 -I793 -(lp54 -I14 -aNatp55 +S'stack2' +p57 +I232 +I370 +(lp58 +I12 +aNatp59 a(I17 -S'hat1' -p56 -I660 -I90 -(lp57 +S'hat2' +p60 +I647 +I304 +(lp61 NaI18 -atp58 +atp62 a(I18 -S'repeat' -p59 -I672 -I140 -(lp60 +S'setcolor' +p63 +I659 +I354 +(lp64 I17 aI19 aI20 -aNatp61 +atp65 a(I19 -(g7 -S'3' -p62 -tp63 -I758 -I149 -(lp64 +(g4 +S'20' +p66 +tp67 +I733 +I371 +(lp68 I18 -aNatp65 +aNatp69 a(I20 -S'storeinbox1' -p66 -I767 -I189 -(lp67 +S'setshade' +p70 +I659 +I408 +(lp71 I18 aI21 aI22 -atp68 +atp72 a(I21 -(g7 -S'200' -p69 -tp70 -I841 -I206 -(lp71 +(g4 +S'60' +p73 +tp74 +I733 +I425 +(lp75 I20 -aNatp72 +aNatp76 a(I22 -g59 -I767 -I243 -(lp73 +S'setpensize' +p77 +I659 +I462 +(lp78 I20 aI23 aI24 -aNatp74 +atp79 a(I23 -(g7 +(g4 S'20' -p75 -tp76 -I853 -I252 -(lp77 +p80 +tp81 +I733 +I479 +(lp82 I22 -aNatp78 +aNatp83 a(I24 -S'arc' -p79 -I862 -I292 -(lp80 +S'stack1' +p84 +I659 +I516 +(lp85 I22 aI25 -aI26 -aI27 -atp81 +atp86 a(I25 -(g7 -S'30' -p82 -tp83 -I936 -I301 -(lp84 -I24 -aNatp85 -a(I26 -S'box1' -p86 -I936 -I338 +g63 +I659 +I555 (lp87 I24 -aNatp88 +aI26 +aI27 +atp88 +a(I26 +(g4 +g49 +tp89 +I733 +I572 +(lp90 +I25 +aNatp91 a(I27 -g66 -I862 -I368 -(lp89 -I24 +g70 +I659 +I609 +(lp92 +I25 aI28 -aNatp90 +aI31 +atp93 a(I28 -g86 -I936 -I385 -(lp91 +g23 +I733 +I607 +(lp94 I27 aI29 -atp92 -a(I29 -S'division' -p93 -I1029 -I377 -(lp94 -I28 aI30 -atp95 -a(I30 -(g7 -S'1.2' +aNatp95 +a(I29 +(g4 +S'60' p96 tp97 -I1068 -I385 +I761 +I626 (lp98 -I29 +I28 aNatp99 -a(I31 -S'fillscreen' +a(I30 +(g4 +S'80' p100 -I216 -I375 -(lp101 -NaI32 +tp101 +I883 +I626 +(lp102 +I28 +aNatp103 +a(I31 +g77 +I659 +I663 +(lp104 +I27 +aI32 aI33 -aI34 -atp102 +atp105 a(I32 -(g7 -S'50' -p103 -tp104 -I290 -I384 -(lp105 +(g4 +S'12' +p106 +tp107 +I733 +I680 +(lp108 I31 -aNatp106 +aNatp109 a(I33 -(g7 -S'30' -p107 -tp108 -I290 -I421 -(lp109 +g84 +I659 +I717 +(lp110 I31 -aNatp110 +aNatp111 a(I34 -g59 -I216 -I451 -(lp111 -I31 -aI35 -aI36 -aNatp112 +S'hat1' +p112 +I670 +I65 +(lp113 +NaI35 +atp114 a(I35 -(g7 -S'20' -p113 -tp114 -I302 -I460 +g13 +I682 +I115 (lp115 I34 +aI36 +aI37 aNatp116 a(I36 -S'setxy' +(g4 +S'3' p117 -I311 -I500 -(lp118 -I34 -aI37 -aI40 -aI43 -atp119 +tp118 +I768 +I124 +(lp119 +I35 +aNatp120 a(I37 -g37 -I385 -I490 -(lp120 -I36 +S'storeinbox1' +p121 +I777 +I164 +(lp122 +I35 aI38 aI39 -aNatp121 +atp123 a(I38 -(g7 -S'-570' -p122 -tp123 -I413 -I509 -(lp124 +(g4 +S'200' +p124 +tp125 +I851 +I181 +(lp126 I37 -aNatp125 +aNatp127 a(I39 -(g7 -S'570' -p126 -tp127 -I535 -I509 +g13 +I777 +I218 (lp128 I37 +aI40 +aI41 aNatp129 a(I40 -g37 -I385 -I527 -(lp130 -I36 -aI41 -aI42 -aNatp131 +(g4 +S'20' +p130 +tp131 +I863 +I227 +(lp132 +I39 +aNatp133 a(I41 -(g7 -S'-440' -p132 -tp133 -I413 -I546 -(lp134 -I40 -aNatp135 +S'arc' +p134 +I872 +I267 +(lp135 +I39 +aI42 +aI43 +aI44 +atp136 a(I42 -(g7 -S'440' -p136 -tp137 -I535 -I546 -(lp138 -I40 -aNatp139 +(g4 +S'30' +p137 +tp138 +I946 +I276 +(lp139 +I41 +aNatp140 a(I43 -S'seth' -p140 -I311 -I576 -(lp141 -I36 -aI44 -aI47 -atp142 +S'box1' +p141 +I946 +I313 +(lp142 +I41 +aNatp143 a(I44 -g37 -I385 -I566 -(lp143 -I43 +g121 +I872 +I343 +(lp144 +I41 aI45 -aI46 -aNatp144 +aNatp145 a(I45 -(g7 -g31 -tp145 -I413 -I585 +g141 +I946 +I360 (lp146 I44 -aNatp147 +aI46 +atp147 a(I46 -(g7 -S'360' +S'division' p148 -tp149 -I535 -I585 -(lp150 -I44 -aNatp151 +I1039 +I352 +(lp149 +I45 +aI47 +atp150 a(I47 -S'stack2' -p152 -I311 -I615 +(g4 +S'1.2' +p151 +tp152 +I1078 +I360 (lp153 -I43 +I46 aNatp154 a(I-1 S'turtle' diff --git a/samples/dots.png b/samples/dots.png index dd95036..20ff59c 100755 --- a/samples/dots.png +++ b/samples/dots.png Binary files differ diff --git a/samples/dots.ta b/samples/dots.ta index a228722..c5abca9 100755 --- a/samples/dots.ta +++ b/samples/dots.ta @@ -2,8 +2,8 @@ (I0 S'setcolor' p1 -I322 -I195 +I241 +I101 (lp2 NaI1 aI2 @@ -14,16 +14,16 @@ p4 S'0' p5 tp6 -I396 -I212 +I315 +I118 (lp7 I0 aNatp8 a(I2 S'clean' p9 -I322 -I249 +I241 +I155 (lp10 I0 aI3 @@ -31,186 +31,186 @@ atp11 a(I3 S'setpensize' p12 -I322 -I288 +I241 +I194 (lp13 I2 -aI22 aI4 +aI5 atp14 a(I4 -S'storeinbox1' +(g4 +S'20' p15 -I322 -I342 -(lp16 +tp16 +I315 +I211 +(lp17 I3 -aI5 -aI6 -atp17 +aNatp18 a(I5 +S'storeinbox1' +p19 +I241 +I248 +(lp20 +I3 +aI6 +aI7 +atp21 +a(I6 (g4 g5 -tp18 -I396 -I359 -(lp19 -I4 -aNatp20 -a(I6 -S'repeat' -p21 -I322 -I396 -(lp22 -I4 -aI7 -aI8 -aNatp23 +tp22 +I315 +I265 +(lp23 +I5 +aNatp24 a(I7 -(g4 -S'1000' -p24 -tp25 -I408 -I405 +S'repeat' +p25 +I241 +I302 (lp26 -I6 +I5 +aI8 +aI9 aNatp27 a(I8 -S'pendown' +(g4 +S'1000' p28 -I417 -I445 -(lp29 -I6 -aI9 -atp30 +tp29 +I327 +I311 +(lp30 +I7 +aNatp31 a(I9 -S'forward' -p31 -I417 -I484 -(lp32 -I8 +S'pendown' +p32 +I336 +I351 +(lp33 +I7 aI10 -aI11 -atp33 +atp34 a(I10 -(g4 -S'1' -p34 -tp35 -I491 -I493 +S'forward' +p35 +I336 +I390 (lp36 I9 -aNatp37 +aI11 +aI12 +atp37 a(I11 -S'penup' +(g4 +S'1' p38 -I417 -I523 -(lp39 -I9 -aI12 -atp40 +tp39 +I410 +I399 +(lp40 +I10 +aNatp41 a(I12 -g31 -I417 -I562 -(lp41 -I11 +S'penup' +p42 +I336 +I429 +(lp43 +I10 aI13 -aI14 -atp42 +atp44 a(I13 -S'box1' -p43 -I491 -I571 -(lp44 +g35 +I336 +I468 +(lp45 I12 -aNatp45 +aI14 +aI15 +atp46 a(I14 +S'box1' +p47 +I410 +I477 +(lp48 +I13 +aNatp49 +a(I15 S'right' -p46 -I417 -I601 -(lp47 -I12 -aI15 +p50 +I336 +I507 +(lp51 +I13 aI16 -atp48 -a(I15 +aI17 +atp52 +a(I16 (g4 S'93' -p49 -tp50 -I491 -I610 -(lp51 -I14 -aNatp52 -a(I16 -g15 -I417 -I640 -(lp53 -I14 -aI17 -aI20 -atp54 -a(I17 -g43 -I491 -I657 +p53 +tp54 +I410 +I516 (lp55 -I16 +I15 +aNatp56 +a(I17 +g19 +I336 +I546 +(lp57 +I15 aI18 -atp56 +aI21 +atp58 a(I18 -S'plus' -p57 -I584 -I649 -(lp58 +g47 +I410 +I563 +(lp59 I17 aI19 -atp59 +atp60 a(I19 -(g4 -g34 -tp60 -I623 -I657 -(lp61 +S'plus' +p61 +I503 +I555 +(lp62 I18 -aNatp62 +aI20 +atp63 a(I20 -g1 -I417 -I694 -(lp63 -I16 -aI21 -aNatp64 -a(I21 -g43 -I491 -I711 +(g4 +g38 +tp64 +I542 +I563 (lp65 -I20 +I19 aNatp66 +a(I21 +g1 +I336 +I600 +(lp67 +I17 +aI22 +aNatp68 a(I22 -(g4 -S'20' -p67 -tp68 -I396 -I305 +g47 +I410 +I617 (lp69 -I3 +I21 aNatp70 a(I-1 S'turtle' @@ -218,8 +218,8 @@ p71 F-195.08137186354315 F661.36192458837445 F120.0 -F0.0 +F1000.0 I50 -F15.0 +F20.0 tp72 a. \ No newline at end of file diff --git a/samples/flower.png b/samples/flower.png index f8dfd33..4e68d8a 100755 --- a/samples/flower.png +++ b/samples/flower.png Binary files differ diff --git a/samples/flower.ta b/samples/flower.ta index fd9d2d1..1f45e42 100755 --- a/samples/flower.ta +++ b/samples/flower.ta @@ -122,8 +122,8 @@ aNatp42 a(I13 S'storeinbox1' p43 -I407 -I105 +I206 +I69 (lp44 NaI14 aI15 @@ -133,15 +133,15 @@ a(I14 S'0' p46 tp47 -I481 -I122 +I280 +I86 (lp48 I13 aNatp49 a(I15 g4 -I407 -I159 +I206 +I123 (lp50 I13 aI16 @@ -152,16 +152,16 @@ a(I16 S'300' p52 tp53 -I493 -I168 +I292 +I132 (lp54 I15 aNatp55 a(I17 S'setshade' p56 -I502 -I208 +I301 +I172 (lp57 I15 aI18 @@ -172,8 +172,8 @@ a(I18 S'100' p59 tp60 -I576 -I225 +I375 +I189 (lp61 I17 aI19 @@ -181,24 +181,24 @@ atp62 a(I19 S'minus' p63 -I669 -I217 +I468 +I181 (lp64 I18 aI20 atp65 a(I20 g15 -I708 -I225 +I507 +I189 (lp66 I19 aNatp67 a(I21 S'setcolor' p68 -I502 -I262 +I301 +I226 (lp69 I17 aI22 @@ -206,8 +206,8 @@ aI25 atp70 a(I22 g15 -I576 -I279 +I375 +I243 (lp71 I21 aI23 @@ -215,8 +215,8 @@ atp72 a(I23 S'division' p73 -I669 -I271 +I468 +I235 (lp74 I22 aI24 @@ -226,32 +226,32 @@ a(I24 S'3' p76 tp77 -I708 -I279 +I507 +I243 (lp78 I23 aNatp79 a(I25 S'stack2' p80 -I502 -I316 +I301 +I280 (lp81 I21 aI26 atp82 a(I26 g43 -I502 -I355 +I301 +I319 (lp83 I25 aI27 aNatp84 a(I27 g15 -I576 -I372 +I375 +I336 (lp85 I26 aI28 @@ -259,8 +259,8 @@ atp86 a(I28 S'plus' p87 -I669 -I364 +I468 +I328 (lp88 I27 aI29 @@ -270,8 +270,8 @@ a(I29 S'1' p90 tp91 -I708 -I372 +I507 +I336 (lp92 I28 aNatp93 diff --git a/samples/fountain.png b/samples/fountain.png index df84227..6f4d424 100755 --- a/samples/fountain.png +++ b/samples/fountain.png Binary files differ diff --git a/samples/fountain.ta b/samples/fountain.ta index 8ed05ac..00a9626 100755 --- a/samples/fountain.ta +++ b/samples/fountain.ta @@ -2,16 +2,16 @@ (I0 S'hat1' p1 -I699 -I215 +I632 +I54 (lp2 NaI1 atp3 a(I1 S'repeat' p4 -I711 -I265 +I644 +I104 (lp5 I0 aI2 @@ -23,16 +23,16 @@ p7 S'400' p8 tp9 -I797 -I274 +I730 +I113 (lp10 I1 aNatp11 a(I3 S'storeinbox1' p12 -I806 -I314 +I739 +I153 (lp13 I1 aI4 @@ -41,8 +41,8 @@ atp14 a(I4 S'heading' p15 -I880 -I331 +I813 +I170 (lp16 I3 aI5 @@ -50,8 +50,8 @@ atp17 a(I5 S'division' p18 -I973 -I323 +I906 +I162 (lp19 I4 aI6 @@ -60,16 +60,16 @@ a(I6 (g7 I2 tp21 -I1012 -I331 +I945 +I170 (lp22 I5 aNatp23 a(I7 S'storeinbox2' p24 -I806 -I368 +I739 +I207 (lp25 I3 aI8 @@ -78,8 +78,8 @@ atp26 a(I8 S'box1' p27 -I880 -I385 +I813 +I224 (lp28 I7 aI9 @@ -87,8 +87,8 @@ atp29 a(I9 S'plus' p30 -I973 -I377 +I906 +I216 (lp31 I8 aI10 @@ -97,16 +97,16 @@ a(I10 (g7 I5 tp33 -I1012 -I385 +I945 +I224 (lp34 I9 aNatp35 a(I11 S'setcolor' p36 -I806 -I422 +I739 +I261 (lp37 I7 aI12 @@ -115,8 +115,8 @@ atp38 a(I12 S'random' p39 -I880 -I420 +I813 +I259 (lp40 I11 aI13 @@ -124,24 +124,24 @@ aI14 aNatp41 a(I13 g27 -I908 -I439 +I841 +I278 (lp42 I12 aNatp43 a(I14 S'box2' p44 -I1030 -I439 +I963 +I278 (lp45 I12 aNatp46 a(I15 S'arc' p47 -I806 -I476 +I739 +I315 (lp48 I11 aI16 @@ -152,8 +152,8 @@ a(I16 (g7 I-40 tp50 -I880 -I485 +I813 +I324 (lp51 I15 aNatp52 @@ -161,15 +161,15 @@ a(I17 (g7 I3000 tp53 -I880 -I522 +I813 +I361 (lp54 I15 aNatp55 a(I18 g47 -I806 -I552 +I739 +I391 (lp56 I15 aI19 @@ -180,8 +180,8 @@ a(I19 (g7 I-40 tp58 -I880 -I561 +I813 +I400 (lp59 I18 aNatp60 @@ -189,16 +189,16 @@ a(I20 (g7 I-3000 tp61 -I880 -I598 +I813 +I437 (lp62 I18 aNatp63 a(I21 S'right' p64 -I806 -I628 +I739 +I467 (lp65 I18 aI22 @@ -208,16 +208,16 @@ a(I22 S'.1' p67 tp68 -I880 -I637 +I813 +I476 (lp69 I21 aNatp70 a(I23 S'fillscreen' p71 -I377 -I213 +I214 +I46 (lp72 NaI24 aI25 @@ -228,8 +228,8 @@ a(I24 S'10' p74 tp75 -I451 -I222 +I288 +I55 (lp76 I23 aNatp77 @@ -238,16 +238,16 @@ a(I25 S'30' p78 tp79 -I451 -I259 +I288 +I92 (lp80 I23 aNatp81 a(I26 S'setshade' p82 -I377 -I289 +I214 +I122 (lp83 I23 aI27 @@ -258,16 +258,16 @@ a(I27 S'85' p85 tp86 -I451 -I306 +I288 +I139 (lp87 I26 aNatp88 a(I28 S'setxy' p89 -I377 -I343 +I214 +I176 (lp90 I26 aI29 @@ -279,26 +279,26 @@ a(I29 S'-590' p92 tp93 -I451 -I352 +I288 +I185 (lp94 I28 aNatp95 a(I30 (g7 -S'-500' +S'-450' p96 tp97 -I451 -I389 +I288 +I222 (lp98 I28 aNatp99 a(I31 S'setpensize' p100 -I377 -I419 +I214 +I252 (lp101 I28 aI32 @@ -309,15 +309,15 @@ a(I32 S'3' p103 tp104 -I451 -I436 +I288 +I269 (lp105 I31 aNatp106 a(I33 g4 -I377 -I473 +I214 +I306 (lp107 I31 aI34 @@ -328,16 +328,16 @@ a(I34 S'6' p109 tp110 -I463 -I482 +I300 +I315 (lp111 I33 aNatp112 a(I35 S'seth' p113 -I472 -I522 +I309 +I355 (lp114 I33 aI36 @@ -348,24 +348,24 @@ a(I36 S'0' p116 tp117 -I546 -I531 +I383 +I364 (lp118 I35 aNatp119 a(I37 S'stack1' p120 -I472 -I561 +I309 +I394 (lp121 I35 aI38 atp122 a(I38 g89 -I472 -I600 +I309 +I433 (lp123 I37 aI39 @@ -374,16 +374,16 @@ aNatp124 a(I39 S'xcor' p125 -I546 -I609 +I383 +I442 (lp126 I38 aI40 atp127 a(I40 g30 -I639 -I601 +I476 +I434 (lp128 I39 aI41 @@ -393,16 +393,16 @@ a(I41 S'200' p130 tp131 -I678 -I609 +I515 +I442 (lp132 I40 aNatp133 a(I42 S'ycor' p134 -I546 -I646 +I383 +I479 (lp135 I38 aNatp136 @@ -410,9 +410,9 @@ a(I-1 S'turtle' p137 F609.99999999906686 -F-500.00000000254568 +F-450.00000000254568 F40.000000000009074 -I22 +I21 F85.0 F3.0 tp138 diff --git a/samples/rainbow.png b/samples/rainbow.png index 4abea6a..4f9a85c 100755 --- a/samples/rainbow.png +++ b/samples/rainbow.png Binary files differ diff --git a/samples/rainbow.ta b/samples/rainbow.ta index 26d635e..bf36d27 100755 --- a/samples/rainbow.ta +++ b/samples/rainbow.ta @@ -2,16 +2,16 @@ (I0 S'clean' p1 -I350 -I334 +I191 +I35 (lp2 NaI1 atp3 a(I1 S'setcolor' p4 -I350 -I373 +I191 +I74 (lp5 I0 aI2 @@ -23,16 +23,16 @@ p7 S'50' p8 tp9 -I424 -I390 +I265 +I91 (lp10 I1 aNatp11 a(I3 S'setpensize' p12 -I350 -I427 +I191 +I128 (lp13 I1 aI4 @@ -43,16 +43,16 @@ a(I4 S'15' p15 tp16 -I424 -I444 +I265 +I145 (lp17 I3 aNatp18 a(I5 S'repeat' p19 -I350 -I481 +I191 +I182 (lp20 I3 aI6 @@ -62,15 +62,15 @@ a(I6 (g7 I360 tp22 -I436 -I490 +I277 +I191 (lp23 I5 aNatp24 a(I7 g4 -I445 -I530 +I286 +I231 (lp25 I5 aI8 @@ -79,8 +79,8 @@ atp26 a(I8 S'heading' p27 -I519 -I547 +I360 +I248 (lp28 I7 aI9 @@ -88,8 +88,8 @@ atp29 a(I9 S'product' p30 -I612 -I539 +I453 +I240 (lp31 I8 aI10 @@ -99,8 +99,8 @@ a(I10 S'100' p33 tp34 -I651 -I547 +I492 +I248 (lp35 I9 aI11 @@ -108,8 +108,8 @@ atp36 a(I11 S'division' p37 -I744 -I539 +I585 +I240 (lp38 I10 aI12 @@ -118,16 +118,16 @@ a(I12 (g7 I360 tp40 -I783 -I547 +I624 +I248 (lp41 I11 aNatp42 a(I13 S'forward' p43 -I445 -I584 +I286 +I285 (lp44 I7 aI14 @@ -138,16 +138,16 @@ a(I14 S'1000' p46 tp47 -I519 -I593 +I360 +I294 (lp48 I13 aNatp49 a(I15 S'back' p50 -I445 -I623 +I286 +I324 (lp51 I13 aI16 @@ -158,16 +158,16 @@ a(I16 S'1000' p53 tp54 -I519 -I632 +I360 +I333 (lp55 I15 aNatp56 a(I17 S'right' p57 -I445 -I662 +I286 +I363 (lp58 I15 aI18 @@ -176,8 +176,8 @@ a(I18 (g7 I1 tp60 -I519 -I671 +I360 +I372 (lp61 I17 aNatp62 diff --git a/samples/redwisp.png b/samples/redwisp.png index efd6aa6..efc1dcf 100755 --- a/samples/redwisp.png +++ b/samples/redwisp.png Binary files differ diff --git a/samples/redwisp.ta b/samples/redwisp.ta index 63667c7..3158a7d 100755 --- a/samples/redwisp.ta +++ b/samples/redwisp.ta @@ -2,16 +2,16 @@ (I0 S'hat1' p1 -I870 -I142 +I750 +I100 (lp2 NaI1 atp3 a(I1 S'repeat' p4 -I882 -I192 +I762 +I150 (lp5 I0 aI2 @@ -24,16 +24,16 @@ p7 S'4' p8 tp9 -I968 -I201 +I848 +I159 (lp10 I1 aNatp11 a(I3 S'arc' p12 -I977 -I241 +I857 +I199 (lp13 I1 aI4 @@ -45,8 +45,8 @@ a(I4 S'180' p15 tp16 -I1051 -I250 +I931 +I208 (lp17 I3 aNatp18 @@ -55,15 +55,15 @@ a(I5 S'75' p19 tp20 -I1051 -I287 +I931 +I245 (lp21 I3 aNatp22 a(I6 g12 -I977 -I317 +I857 +I275 (lp23 I3 aI7 @@ -74,8 +74,8 @@ a(I7 S'-180' p25 tp26 -I1051 -I326 +I931 +I284 (lp27 I6 aNatp28 @@ -84,32 +84,32 @@ a(I8 S'75' p29 tp30 -I1051 -I363 +I931 +I321 (lp31 I6 aNatp32 a(I9 S'vspace' p33 -I882 -I282 +I762 +I240 (lp34 I1 aI10 atp35 a(I10 g33 -I882 -I351 +I762 +I309 (lp36 I9 aI11 atp37 a(I11 g4 -I882 -I420 +I762 +I378 (lp38 I10 aI12 @@ -120,15 +120,15 @@ a(I12 (g7 g8 tp40 -I968 -I429 +I848 +I387 (lp41 I11 aNatp42 a(I13 g12 -I977 -I469 +I857 +I427 (lp43 I11 aI14 @@ -140,8 +140,8 @@ a(I14 S'-180' p45 tp46 -I1051 -I478 +I931 +I436 (lp47 I13 aNatp48 @@ -150,15 +150,15 @@ a(I15 S'-75' p49 tp50 -I1051 -I515 +I931 +I473 (lp51 I13 aNatp52 a(I16 g12 -I977 -I545 +I857 +I503 (lp53 I13 aI17 @@ -169,8 +169,8 @@ a(I17 S'180' p55 tp56 -I1051 -I554 +I931 +I512 (lp57 I16 aNatp58 @@ -179,23 +179,23 @@ a(I18 S'-75' p59 tp60 -I1051 -I591 +I931 +I549 (lp61 I16 aNatp62 a(I19 g33 -I882 -I510 +I762 +I468 (lp63 I11 aI20 atp64 a(I20 g33 -I882 -I579 +I762 +I537 (lp65 I19 aI21 @@ -203,8 +203,8 @@ atp66 a(I21 S'right' p67 -I882 -I648 +I762 +I606 (lp68 I20 aI22 @@ -214,16 +214,16 @@ a(I22 S'1' p70 tp71 -I956 -I657 +I836 +I615 (lp72 I21 aNatp73 a(I23 S'setpensize' p74 -I351 -I344 +I162 +I124 (lp75 NaI24 aI25 @@ -233,15 +233,15 @@ a(I24 S'15' p77 tp78 -I425 -I361 +I236 +I141 (lp79 I23 aNatp80 a(I25 g4 -I351 -I398 +I162 +I178 (lp81 I23 aI26 @@ -252,16 +252,16 @@ a(I26 S'360' p83 tp84 -I437 -I407 +I248 +I187 (lp85 I25 aNatp86 a(I27 S'storeinbox1' p87 -I446 -I447 +I257 +I227 (lp88 I25 aI28 @@ -270,8 +270,8 @@ atp89 a(I28 S'heading' p90 -I520 -I464 +I331 +I244 (lp91 I27 aI29 @@ -279,8 +279,8 @@ atp92 a(I29 S'product' p93 -I613 -I456 +I424 +I236 (lp94 I28 aI30 @@ -290,16 +290,16 @@ a(I30 S'600' p96 tp97 -I652 -I464 +I463 +I244 (lp98 I29 aNatp99 a(I31 S'setshade' p100 -I446 -I501 +I257 +I281 (lp101 I27 aI32 @@ -308,8 +308,8 @@ atp102 a(I32 S'box1' p103 -I520 -I518 +I331 +I298 (lp104 I31 aI33 @@ -317,8 +317,8 @@ atp105 a(I33 S'division' p106 -I613 -I510 +I424 +I290 (lp107 I32 aI34 @@ -328,27 +328,27 @@ a(I34 S'360' p109 tp110 -I652 -I518 +I463 +I298 (lp111 I33 aNatp112 a(I35 S'stack1' p113 -I446 -I555 +I257 +I335 (lp114 I31 aNatp115 a(I-1 S'turtle' p116 -I557 -I373 +I-552 +I376 F0.0 I0 -F0.66666666666662877 +F598.33333333333337 F15.0 tp117 a. \ No newline at end of file diff --git a/samples/reflections.png b/samples/reflections.png index 9bf48a4..ddb3aa7 100755 --- a/samples/reflections.png +++ b/samples/reflections.png Binary files differ diff --git a/samples/reflections.ta b/samples/reflections.ta index a009075..e112aa3 100755 --- a/samples/reflections.ta +++ b/samples/reflections.ta @@ -2,16 +2,16 @@ (I0 S'clean' p1 -I689 -I106 +I119 +I61 (lp2 NaI1 atp3 a(I1 S'setpensize' p4 -I689 -I145 +I119 +I100 (lp5 I0 aI2 @@ -23,16 +23,16 @@ p7 S'15' p8 tp9 -I763 -I162 +I193 +I117 (lp10 I1 aNatp11 a(I3 S'storeinbox1' p12 -I689 -I199 +I119 +I154 (lp13 I1 aI4 @@ -43,16 +43,16 @@ a(I4 S'6200' p15 tp16 -I763 -I216 +I193 +I171 (lp17 I3 aNatp18 a(I5 S'repeat' p19 -I689 -I253 +I119 +I208 (lp20 I3 aI6 @@ -63,16 +63,16 @@ a(I6 S'6200' p22 tp23 -I775 -I262 +I205 +I217 (lp24 I5 aNatp25 a(I7 S'storeinbox2' p26 -I784 -I302 +I214 +I257 (lp27 I5 aI8 @@ -81,8 +81,8 @@ atp28 a(I8 S'box1' p29 -I858 -I319 +I288 +I274 (lp30 I7 aI9 @@ -90,8 +90,8 @@ atp31 a(I9 S'division' p32 -I951 -I311 +I381 +I266 (lp33 I8 aI10 @@ -101,16 +101,16 @@ a(I10 S'50' p35 tp36 -I990 -I319 +I420 +I274 (lp37 I9 aNatp38 a(I11 S'setshade' p39 -I784 -I356 +I214 +I311 (lp40 I7 aI12 @@ -121,8 +121,8 @@ a(I12 S'100' p42 tp43 -I858 -I373 +I288 +I328 (lp44 I11 aI13 @@ -130,8 +130,8 @@ atp45 a(I13 S'minus' p46 -I951 -I365 +I381 +I320 (lp47 I12 aI14 @@ -139,16 +139,16 @@ atp48 a(I14 S'box2' p49 -I990 -I373 +I420 +I328 (lp50 I13 aNatp51 a(I15 S'forward' p52 -I784 -I410 +I214 +I365 (lp53 I11 aI16 @@ -156,16 +156,16 @@ aI19 atp54 a(I16 g29 -I858 -I419 +I288 +I374 (lp55 I15 aI17 atp56 a(I17 g32 -I951 -I411 +I381 +I366 (lp57 I16 aI18 @@ -175,16 +175,16 @@ a(I18 S'8' p59 tp60 -I990 -I419 +I420 +I374 (lp61 I17 aNatp62 a(I19 S'back' p63 -I784 -I449 +I214 +I404 (lp64 I15 aI20 @@ -192,16 +192,16 @@ aI23 atp65 a(I20 g29 -I858 -I458 +I288 +I413 (lp66 I19 aI21 atp67 a(I21 g32 -I951 -I450 +I381 +I405 (lp68 I20 aI22 @@ -210,16 +210,16 @@ a(I22 (g7 g59 tp70 -I990 -I458 +I420 +I413 (lp71 I21 aNatp72 a(I23 S'right' p73 -I784 -I488 +I214 +I443 (lp74 I19 aI24 @@ -230,15 +230,15 @@ a(I24 S'1' p76 tp77 -I858 -I497 +I288 +I452 (lp78 I23 aNatp79 a(I25 g12 -I784 -I527 +I214 +I482 (lp80 I23 aI26 @@ -246,16 +246,16 @@ aI29 atp81 a(I26 g29 -I858 -I544 +I288 +I499 (lp82 I25 aI27 atp83 a(I27 g46 -I951 -I536 +I381 +I491 (lp84 I26 aI28 @@ -264,35 +264,35 @@ a(I28 (g7 g76 tp86 -I990 -I544 +I420 +I499 (lp87 I27 aNatp88 a(I29 S'setcolor' p89 -I784 -I581 +I214 +I536 (lp90 I25 aI30 aNatp91 a(I30 g29 -I858 -I598 +I288 +I553 (lp92 I29 aNatp93 a(I-1 S'turtle' p94 -I-584 -I-436 -I0 +I-521 +I371 +F80.0 F0.0 -F99.019999999999996 +F99.980000000000004 F15.0 tp95 a. \ No newline at end of file diff --git a/samples/shades.png b/samples/shades.png index ca59fce..912c38a 100755 --- a/samples/shades.png +++ b/samples/shades.png Binary files differ diff --git a/samples/shades.ta b/samples/shades.ta index c6e6790..c9c9919 100755 --- a/samples/shades.ta +++ b/samples/shades.ta @@ -2,16 +2,16 @@ (I0 S'clean' p1 -I410 -I108 +I241 +I77 (lp2 NaI1 atp3 a(I1 S'setcolor' p4 -I410 -I147 +I241 +I116 (lp5 I0 aI2 @@ -23,16 +23,16 @@ p7 S'50' p8 tp9 -I484 -I164 +I315 +I133 (lp10 I1 aNatp11 a(I3 S'setpensize' p12 -I410 -I201 +I241 +I170 (lp13 I1 aI4 @@ -43,16 +43,16 @@ a(I4 S'15' p15 tp16 -I484 -I218 +I315 +I187 (lp17 I3 aNatp18 a(I5 S'repeat' p19 -I410 -I255 +I241 +I224 (lp20 I3 aI6 @@ -62,16 +62,16 @@ a(I6 (g7 I360 tp22 -I496 -I264 +I327 +I233 (lp23 I5 aNatp24 a(I7 S'setshade' p25 -I505 -I304 +I336 +I273 (lp26 I5 aI8 @@ -80,8 +80,8 @@ atp27 a(I8 S'heading' p28 -I579 -I321 +I410 +I290 (lp29 I7 aI9 @@ -89,8 +89,8 @@ atp30 a(I9 S'product' p31 -I672 -I313 +I503 +I282 (lp32 I8 aI10 @@ -99,8 +99,8 @@ a(I10 (g7 I200 tp34 -I711 -I321 +I542 +I290 (lp35 I9 aI11 @@ -108,8 +108,8 @@ atp36 a(I11 S'division' p37 -I804 -I313 +I635 +I282 (lp38 I10 aI12 @@ -118,16 +118,16 @@ a(I12 (g7 I360 tp40 -I843 -I321 +I674 +I290 (lp41 I11 aNatp42 a(I13 S'forward' p43 -I505 -I358 +I336 +I327 (lp44 I7 aI14 @@ -138,16 +138,16 @@ a(I14 S'1000' p46 tp47 -I579 -I367 +I410 +I336 (lp48 I13 aNatp49 a(I15 S'back' p50 -I505 -I397 +I336 +I366 (lp51 I13 aI16 @@ -158,16 +158,16 @@ a(I16 S'1000' p53 tp54 -I579 -I406 +I410 +I375 (lp55 I15 aNatp56 a(I17 S'right' p57 -I505 -I436 +I336 +I405 (lp58 I15 aI18 @@ -176,8 +176,8 @@ a(I18 (g7 I1 tp60 -I579 -I445 +I410 +I414 (lp61 I17 aNatp62 diff --git a/samples/smoothcandy.png b/samples/smoothcandy.png index 8929d50..542c258 100755 --- a/samples/smoothcandy.png +++ b/samples/smoothcandy.png Binary files differ diff --git a/samples/smoothcandy.ta b/samples/smoothcandy.ta index 5b424e6..c65a175 100755 --- a/samples/smoothcandy.ta +++ b/samples/smoothcandy.ta @@ -2,16 +2,16 @@ (I0 S'clean' p1 -I181 -I407 +I212 +I39 (lp2 NaI1 atp3 a(I1 S'repeat' p4 -I181 -I446 +I212 +I78 (lp5 I0 aI2 @@ -22,16 +22,16 @@ a(I2 p7 I350 tp8 -I267 -I455 +I298 +I87 (lp9 I1 aNatp10 a(I3 S'setpensize' p11 -I276 -I495 +I307 +I127 (lp12 I1 aI4 @@ -40,8 +40,8 @@ atp13 a(I4 S'heading' p14 -I350 -I512 +I381 +I144 (lp15 I3 aI5 @@ -49,8 +49,8 @@ atp16 a(I5 S'plus' p17 -I443 -I504 +I474 +I136 (lp18 I4 aI6 @@ -59,16 +59,16 @@ a(I6 (g7 I4 tp20 -I482 -I512 +I513 +I144 (lp21 I5 aNatp22 a(I7 S'forward' p23 -I276 -I549 +I307 +I181 (lp24 I3 aI8 @@ -79,16 +79,16 @@ a(I8 S'1000' p26 tp27 -I350 -I558 +I381 +I190 (lp28 I7 aNatp29 a(I9 S'setcolor' p30 -I276 -I588 +I307 +I220 (lp31 I7 aI10 @@ -96,8 +96,8 @@ aI13 atp32 a(I10 g14 -I350 -I605 +I381 +I237 (lp33 I9 aI11 @@ -105,8 +105,8 @@ atp34 a(I11 S'division' p35 -I443 -I597 +I474 +I229 (lp36 I10 aI12 @@ -115,16 +115,16 @@ a(I12 (g7 I3 tp38 -I482 -I605 +I513 +I237 (lp39 I11 aNatp40 a(I13 S'storeinbox1' p41 -I276 -I642 +I307 +I274 (lp42 I9 aI14 @@ -132,16 +132,16 @@ aI17 atp43 a(I14 g14 -I350 -I659 +I381 +I291 (lp44 I13 aI15 atp45 a(I15 g35 -I443 -I651 +I474 +I283 (lp46 I14 aI16 @@ -150,16 +150,16 @@ a(I16 (g7 I2 tp48 -I482 -I659 +I513 +I291 (lp49 I15 aNatp50 a(I17 S'setshade' p51 -I276 -I696 +I307 +I328 (lp52 I13 aI18 @@ -169,8 +169,8 @@ a(I18 (g7 I100 tp54 -I350 -I713 +I381 +I345 (lp55 I17 aI19 @@ -178,8 +178,8 @@ atp56 a(I19 S'minus' p57 -I443 -I705 +I474 +I337 (lp58 I18 aI20 @@ -187,16 +187,16 @@ atp59 a(I20 S'box1' p60 -I482 -I713 +I513 +I345 (lp61 I19 aNatp62 a(I21 S'back' p63 -I276 -I750 +I307 +I382 (lp64 I17 aI22 @@ -207,16 +207,16 @@ a(I22 S'1000' p66 tp67 -I350 -I759 +I381 +I391 (lp68 I21 aNatp69 a(I23 S'left' p70 -I276 -I789 +I307 +I421 (lp71 I21 aI24 @@ -225,16 +225,16 @@ a(I24 (g7 I1 tp73 -I350 -I798 +I381 +I430 (lp74 I23 aNatp75 a(I-1 S'turtle' p76 -F0.0 -F0.0 +I-558 +I383 F10.0 F3.6666666666666665 F94.5 diff --git a/samples/square.png b/samples/square.png index 848de15..7f582f7 100755 --- a/samples/square.png +++ b/samples/square.png Binary files differ diff --git a/samples/squares.png b/samples/squares.png index ca854d0..7535c24 100755 --- a/samples/squares.png +++ b/samples/squares.png Binary files differ diff --git a/samples/squares.ta b/samples/squares.ta index e309231..4886245 100755 --- a/samples/squares.ta +++ b/samples/squares.ta @@ -2,8 +2,8 @@ (I0 S'repeat' p1 -I762 -I95 +I765 +I94 (lp2 NaI1 aI2 @@ -13,15 +13,15 @@ a(I1 p4 I36 tp5 -I848 -I104 +I851 +I103 (lp6 I0 aNatp7 a(I2 g1 -I857 -I144 +I860 +I143 (lp8 I0 aI3 @@ -32,16 +32,16 @@ a(I3 (g4 I4 tp10 -I943 -I153 +I946 +I152 (lp11 I2 aNatp12 a(I4 S'forward' p13 -I952 -I193 +I955 +I192 (lp14 I2 aI5 @@ -52,16 +52,16 @@ a(I5 S'300' p16 tp17 -I1026 -I202 +I1029 +I201 (lp18 I4 aNatp19 a(I6 S'right' p20 -I952 -I232 +I955 +I231 (lp21 I4 aI7 @@ -70,24 +70,24 @@ a(I7 (g4 I90 tp23 -I1026 -I241 +I1029 +I240 (lp24 I6 aNatp25 a(I8 S'vspace' p26 -I857 -I234 +I860 +I233 (lp27 I2 aI9 atp28 a(I9 g20 -I857 -I303 +I860 +I302 (lp29 I8 aI10 @@ -96,8 +96,8 @@ a(I10 (g4 I10 tp31 -I931 -I312 +I934 +I311 (lp32 I9 aNatp33 diff --git a/samples/squiral.png b/samples/squiral.png index 899b2ac..8e6ffd5 100755 --- a/samples/squiral.png +++ b/samples/squiral.png Binary files differ diff --git a/samples/xo-man.png b/samples/xo-man.png index a75f159..1780933 100755 --- a/samples/xo-man.png +++ b/samples/xo-man.png Binary files differ diff --git a/samples/xo-man.ta b/samples/xo-man.ta index 7ecff69..967bf24 100755 --- a/samples/xo-man.ta +++ b/samples/xo-man.ta @@ -1,602 +1,595 @@ (lp0 (I0 -S'hat1' +S'hat2' p1 -I837 -I133 +I66 +I315 (lp2 NaI1 atp3 a(I1 -S'left' +S'setcolor' p4 -I849 -I183 +I78 +I365 (lp5 I0 aI2 -aI3 +aI7 atp6 a(I2 (S'number' p7 -S'45' +S'0' p8 tp9 -I923 -I192 +I152 +I382 (lp10 I1 -aNatp11 +aI3 +atp11 a(I3 -S'repeat' +S'plus' p12 -I849 -I222 +I245 +I374 (lp13 -I1 +I2 aI4 -aI5 -aI9 atp14 a(I4 -(g7 -S'4' +S'random' p15 -tp16 -I935 -I231 -(lp17 -I3 -aNatp18 -a(I5 -S'forward' -p19 -I944 -I271 -(lp20 +I284 +I363 +(lp16 I3 -aI48 +aI5 aI6 -atp21 +aNatp17 +a(I5 +(g7 +g8 +tp18 +I312 +I382 +(lp19 +I4 +aNatp20 a(I6 -S'back' -p22 -I944 -I310 +(g7 +S'100' +p21 +tp22 +I434 +I382 (lp23 -I5 -aI49 -aI7 -atp24 +I4 +aNatp24 a(I7 -g4 -I944 -I349 -(lp25 -I6 +S'setpensize' +p25 +I78 +I419 +(lp26 +I1 aI8 -aNatp26 +aI9 +atp27 a(I8 (g7 -S'90' -p27 -tp28 -I1018 -I358 -(lp29 +S'40' +p28 +tp29 +I152 +I436 +(lp30 I7 -aNatp30 +aNatp31 a(I9 -S'vspace' -p31 -I849 -I312 -(lp32 -I3 +S'stack1' +p32 +I78 +I473 +(lp33 +I7 aI10 -atp33 +atp34 a(I10 -S'right' -p34 -I849 -I381 +g4 +I78 +I512 (lp35 I9 aI11 -aI12 +aI14 atp36 a(I11 -(g7 -S'45' +S'color' p37 -tp38 -I923 -I390 -(lp39 +I152 +I529 +(lp38 I10 -aNatp40 +aI12 +atp39 a(I12 -S'penup' -p41 -I849 -I420 -(lp42 -I10 +g12 +I245 +I521 +(lp40 +I11 aI13 -atp43 +atp41 a(I13 -g19 -I849 -I459 +(g7 +S'10' +p42 +tp43 +I284 +I529 (lp44 I12 -aI50 -aI14 -atp45 +aNatp45 a(I14 -S'pendown' -p46 -I849 -I498 -(lp47 -I13 +g25 +I78 +I566 +(lp46 +I10 aI15 -atp48 +aI18 +atp47 a(I15 -S'setpensize' -p49 -I849 -I537 -(lp50 +S'pensize' +p48 +I152 +I583 +(lp49 I14 aI16 -aI19 -atp51 +atp50 a(I16 -S'pensize' -p52 -I923 -I554 -(lp53 +S'minus' +p51 +I245 +I575 +(lp52 I15 aI17 -atp54 +atp53 a(I17 -S'plus' -p55 -I1016 -I546 +(g7 +S'25' +p54 +tp55 +I284 +I583 (lp56 I16 -aI18 -atp57 +aNatp57 a(I18 -(g7 -S'35' -p58 -tp59 -I1055 -I554 -(lp60 -I17 -aNatp61 +g32 +I78 +I620 +(lp58 +I14 +aNatp59 a(I19 -g19 -I849 -I591 -(lp62 -I15 -aI20 -aI21 -atp63 +S'hat1' +p60 +I768 +I28 +(lp61 +NaI20 +atp62 a(I20 -(g7 -S'1' -p64 -tp65 -I923 -I600 -(lp66 +S'left' +p63 +I780 +I78 +(lp64 I19 -aNatp67 +aI21 +aI22 +atp65 a(I21 -g41 -I849 -I630 +(g7 +S'45' +p66 +tp67 +I854 +I87 (lp68 -I19 -aI22 -atp69 +I20 +aNatp69 a(I22 -g22 -I849 -I669 -(lp70 -I21 -aI51 +S'repeat' +p70 +I780 +I117 +(lp71 +I20 aI23 -atp71 +aI24 +aI30 +atp72 a(I23 -g46 -I849 -I708 -(lp72 +(g7 +S'4' +p73 +tp74 +I866 +I126 +(lp75 I22 -aI24 -atp73 +aNatp76 a(I24 -g49 -I849 -I747 -(lp74 -I23 +S'forward' +p77 +I875 +I166 +(lp78 +I22 aI25 -aNatp75 +aI26 +atp79 a(I25 -g52 -I923 -I764 -(lp76 +(g7 +S'75' +p80 +tp81 +I949 +I175 +(lp82 I24 -aI26 -atp77 +aNatp83 a(I26 -S'minus' -p78 -I1016 -I756 -(lp79 -I25 +S'back' +p84 +I875 +I205 +(lp85 +I24 aI27 -atp80 +aI28 +atp86 a(I27 (g7 -S'35' -p81 -tp82 -I1055 -I764 -(lp83 +S'75' +p87 +tp88 +I949 +I214 +(lp89 I26 -aNatp84 +aNatp90 a(I28 -S'setcolor' -p85 -I87 -I546 -(lp86 -I46 +g63 +I875 +I244 +(lp91 +I26 aI29 -aI34 -atp87 +aNatp92 a(I29 (g7 -S'0' -p88 -tp89 -I161 -I563 -(lp90 +S'90' +p93 +tp94 +I949 +I253 +(lp95 I28 -aI30 -atp91 +aNatp96 a(I30 -g55 -I254 -I555 -(lp92 -I29 +S'vspace' +p97 +I780 +I207 +(lp98 +I22 aI31 -atp93 +atp99 a(I31 -S'random' -p94 -I293 -I544 -(lp95 +S'right' +p100 +I780 +I276 +(lp101 I30 aI32 aI33 -aNatp96 +atp102 a(I32 (g7 -g88 -tp97 -I321 -I563 -(lp98 +S'45' +p103 +tp104 +I854 +I285 +(lp105 I31 -aNatp99 +aNatp106 a(I33 -(g7 -S'100' -p100 -tp101 -I443 -I563 -(lp102 +S'penup' +p107 +I780 +I315 +(lp108 I31 -aNatp103 +aI34 +atp109 a(I34 -g49 -I87 -I600 -(lp104 -I28 +g77 +I780 +I354 +(lp110 +I33 aI35 aI36 -atp105 +atp111 a(I35 (g7 -S'40' -p106 -tp107 -I161 -I617 -(lp108 +S'90' +p112 +tp113 +I854 +I363 +(lp114 I34 -aNatp109 +aNatp115 a(I36 -S'stack1' -p110 -I87 -I654 -(lp111 +S'pendown' +p116 +I780 +I393 +(lp117 I34 aI37 -atp112 +atp118 a(I37 -g85 -I87 -I693 -(lp113 +g25 +I780 +I432 +(lp119 I36 aI38 aI41 -atp114 +atp120 a(I38 -S'color' -p115 -I161 -I710 -(lp116 +g48 +I854 +I449 +(lp121 I37 aI39 -atp117 +atp122 a(I39 -g55 -I254 -I702 -(lp118 +g12 +I947 +I441 +(lp123 I38 aI40 -atp119 +atp124 a(I40 (g7 -S'10' -p120 -tp121 -I293 -I710 -(lp122 +S'35' +p125 +tp126 +I986 +I449 +(lp127 I39 -aNatp123 +aNatp128 a(I41 -g49 -I87 -I747 -(lp124 +g77 +I780 +I486 +(lp129 I37 aI42 -aI45 -atp125 +aI43 +atp130 a(I42 -g52 -I161 -I764 -(lp126 +(g7 +S'1' +p131 +tp132 +I854 +I495 +(lp133 I41 -aI43 -atp127 +aNatp134 a(I43 -g78 -I254 -I756 -(lp128 -I42 +g107 +I780 +I525 +(lp135 +I41 aI44 -atp129 +atp136 a(I44 -(g7 -S'25' -p130 -tp131 -I293 -I764 -(lp132 +g84 +I780 +I564 +(lp137 I43 -aNatp133 +aI45 +aI46 +atp138 a(I45 -g110 -I87 -I801 -(lp134 -I41 -aNatp135 +(g7 +S'91' +p139 +tp140 +I854 +I573 +(lp141 +I44 +aNatp142 a(I46 -S'hat2' -p136 -I75 -I496 -(lp137 -NaI28 -atp138 +g116 +I780 +I603 +(lp143 +I44 +aI47 +atp144 a(I47 -S'xcor' -p139 -I316 -I329 -(lp140 -NaNatp141 +g25 +I780 +I642 +(lp145 +I46 +aI48 +aNatp146 a(I48 -(g7 -S'75' -p142 -tp143 -I1018 -I280 -(lp144 -I5 -aNatp145 +g48 +I854 +I659 +(lp147 +I47 +aI49 +atp148 a(I49 -(g7 -S'75' -p146 -tp147 -I1018 -I319 -(lp148 -I6 -aNatp149 +g51 +I947 +I651 +(lp149 +I48 +aI50 +atp150 a(I50 (g7 -S'90' -p150 -tp151 -I923 -I468 -(lp152 -I13 -aNatp153 +S'35' +p151 +tp152 +I986 +I659 +(lp153 +I49 +aNatp154 a(I51 -(g7 -S'91' -p154 -tp155 -I923 -I678 +S'clean' +p155 +I192 +I25 (lp156 -I22 -aNatp157 +NaI52 +atp157 a(I52 -S'clean' +S'forever' p158 -I305 -I33 +I192 +I64 (lp159 -NaI53 -atp160 +I51 +aI53 +aNatp160 a(I53 -S'forever' -p161 -I305 -I72 -(lp162 +g107 +I273 +I78 +(lp161 I52 aI54 -aNatp163 +atp162 a(I54 -g41 -I386 -I86 +S'setxy' +p163 +I273 +I117 (lp164 I53 aI55 +aI58 +aI61 atp165 a(I55 -S'setxy' -p166 -I386 -I125 -(lp167 +g15 +I347 +I107 +(lp166 I54 aI56 -aI59 -aI62 -atp168 -a(I56 -g94 -I460 -I115 -(lp169 -I55 aI57 -aI58 -aNatp170 -a(I57 +aNatp167 +a(I56 (g7 S'-600' -p171 -tp172 -I488 -I134 -(lp173 -I56 -aNatp174 -a(I58 +p168 +tp169 +I375 +I126 +(lp170 +I55 +aNatp171 +a(I57 (g7 S'600' -p175 -tp176 -I610 -I134 -(lp177 -I56 -aNatp178 -a(I59 -g94 -I460 -I152 -(lp179 +p172 +tp173 +I497 +I126 +(lp174 I55 +aNatp175 +a(I58 +g15 +I347 +I144 +(lp176 +I54 +aI59 aI60 -aI61 -aNatp180 -a(I60 +aNatp177 +a(I59 (g7 S'-450' -p181 -tp182 -I488 -I171 -(lp183 -I59 -aNatp184 -a(I61 +p178 +tp179 +I375 +I163 +(lp180 +I58 +aNatp181 +a(I60 (g7 S'450' -p185 -tp186 -I610 -I171 -(lp187 -I59 -aNatp188 +p182 +tp183 +I497 +I163 +(lp184 +I58 +aNatp185 +a(I61 +g116 +I273 +I193 +(lp186 +I54 +aI62 +atp187 a(I62 -g46 -I386 -I201 -(lp189 -I55 -aI63 -atp190 -a(I63 S'stack2' -p191 -I386 -I240 -(lp192 -I62 -aNatp193 +p188 +I273 +I232 +(lp189 +I61 +aNatp190 a(I-1 S'turtle' -p194 -F71.033008588991066 -F309.03300858899104 -F45.0 -F99.0 +p191 +I-544 +I405 +F225.0 +F25.0 I50 F15.0 -tp195 +tp192 a. \ No newline at end of file diff --git a/ta.py b/ta.py index b95abf1..c7de44a 100755 --- a/ta.py +++ b/ta.py @@ -6,19 +6,23 @@ import os import os.path import pickle from math import atan2, pi +import sys from sprites import * from turtlesetup import * import logo import turtle +from sugar.datastore import datastore + WIDTH=1200 -HEIGHT=825 +HEIGHT=780 DEGTOR = 2*pi/360 gc = None area = None +window = None draggroup = None dragpos = (0,0) current_category = None @@ -33,7 +37,6 @@ status_spr = None turtle_spr = None hidden_palette_icon = None selbuttons = None -project_flap = None load_save_folder = None save_file_name = None @@ -44,6 +47,7 @@ save_file_name = None def buttonpress_cb(win, event): global draggroup, dragpos, block_operation, selected_block + window.grab_focus() block_operation = 'click' if selected_block!=None: unselect() status_spr.setlayer(400) @@ -61,8 +65,6 @@ def buttonpress_cb(win, event): block_pressed(event,x,y,spr) elif spr.type == 'turtle': turtle_pressed(x,y) - elif spr.type == 'project_flap': - project_flap_pressed(spr,x,y) return True def block_pressed(event,x,y,spr): @@ -248,12 +250,10 @@ def keypress_cb(area, event): keyname = gtk.gdk.keyval_name(event.keyval) # print keyname if (event.get_state()>k.gdk.CONTROL_MASK): - if keyname=="n": new_project() - elif keyname=="o": load_file() - elif keyname=="s": save_file() - elif keyname=="c": turtle.clearscreen() + if keyname=="s": save_file() + if keyname=="k": clear_journal() return True - if selected_block==None: return True + if selected_block==None: return False keyname = gtk.gdk.keyval_name(event.keyval) if keyname in ['minus', 'period']: keyname = {'minus': '-', 'period': '.'}[keyname] if len(keyname)>1: return True @@ -285,18 +285,28 @@ def new_project(): save_file_name = None def load_file(): + '''Pop a load file dialog to allow the user to pick a .ta file to load. Guess that a .png file with the same name resides in the same directory and try to load that too.''' global save_file_name fname = get_load_name() if fname==None: return if fname[-3:]=='.ta': fname=fname[0:-3] - f = open(fname+'.ta',"rU") + load_files(fname+'.ta', fname+'.png') + save_file_name = os.path.basename(fname) + +def load_files(ta_file, png_file=''): + '''Load the given TA code file and optional starting image as png file into a new project.''' + f = open(ta_file, "r") data = pickle.load(f) f.close() new_project() read_data(data) - if os.access(fname+'.png', os.F_OK): load_pict(fname+'.png') + try: + load_pict(png_file) + except: + '''the picture not loading is OK''' + print "load_files: picture didn't load" + pass turtlecanvas.inval() - save_file_name = os.path.basename(fname) def get_load_name(): dialog = gtk.FileChooserDialog("Load...", None, @@ -341,12 +351,13 @@ def load_pict(fname): turtlecanvas.image.draw_pixbuf(gc, pict, 0, 0, 0, 0) def save_file(): + '''Pop a save file dialog to allow the user to pick a filename to save their project. Also saves the current art as a .png file with the same name.''' global save_file_name fname = get_save_name() if fname==None: return if fname[-3:]=='.ta': fname=fname[0:-3] - save_data(fname) - save_pict(fname) + save_data(fname+".ta") + save_pict(fname+".png") save_file_name = os.path.basename(fname) def get_save_name(): @@ -358,7 +369,8 @@ def get_save_name(): return do_dialog(dialog) def save_data(fname): - f = file(fname+".ta", "w") + '''Writes the TurtleArt code to the given filename.''' + f = file(fname, "w") bs = blocks() data = [] for i in range(len(bs)): bs[i].id=i @@ -374,10 +386,11 @@ def save_data(fname): f.close() def save_pict(fname): + '''Writes the current art to the given filename.''' tc = turtlecanvas pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, tc.width, tc.height) pixbuf.get_from_drawable(tc.image, tc.image.get_colormap(), 0, 0, 0, 0, tc.width, tc.height) - pixbuf.save(fname+'.png', 'png') + pixbuf.save(fname, 'png') def get_id(x): if x==None: return None @@ -398,6 +411,13 @@ def do_dialog(dialog): dialog.destroy() return result +def clear_journal(): + jobjects, total_count = datastore.find({'activity': 'org.laptop.TurtleArtActivity'}) + print 'found', total_count, 'entries' + for jobject in jobjects[:-1]: + print jobject.object_id + datastore.delete(jobject.object_id) + # # Block utilities @@ -439,10 +459,7 @@ def blocks(): return [spr for spr in spritelist() if spr.type == 'block'] # def tooldispatch(spr): - if spr.blocktype == 'new': runtool(spr,new_project) - elif spr.blocktype == 'open': runtool(spr,load_file) - elif spr.blocktype == 'save': runtool(spr,save_file) - elif spr.blocktype == 'hideshow': hideshow_blocks(spr) + if spr.blocktype == 'hideshow': hideshow_blocks(spr) elif spr.blocktype == 'eraser': runtool(spr,turtle.clearscreen) elif spr.blocktype == 'stopit': logo.step = just_stop() @@ -463,26 +480,14 @@ def hideshow_blocks(spr): turtlecanvas.inval() -def project_flap_pressed(spr,x,y): - if spr.image==project_flap['closed']: spr.setshape(project_flap['open']) - else: - dx,dy = x-spr.x, y-spr.y, - pixel = getpixel(project_flap['mask'],dx,dy) - index = ((pixel%256)>>3)-1 - if index==0: spr.setshape(project_flap['closed']) - elif index==1: new_project() - elif index==2: load_file() - elif index==3: save_file() - - # # Startup # def init(top_window, path, parentwindow=None): global gc, area, category_spr, bgcolor,turtlecanvas, select_mask - global status_spr, turtle_spr, selbuttons, hidden_palette_icon, project_flap - global base_path, load_save_folder + global status_spr, turtle_spr, selbuttons, hidden_palette_icon + global base_path, load_save_folder, window window = top_window base_path = path if parentwindow is None: @@ -498,12 +503,12 @@ def init(top_window, path, parentwindow=None): window.add_events(gtk.gdk.BUTTON_PRESS_MASK) window.add_events(gtk.gdk.BUTTON_RELEASE_MASK) window.add_events(gtk.gdk.POINTER_MOTION_MASK) - parentwindow.add_events(gtk.gdk.KEY_PRESS_MASK) + window.add_events(gtk.gdk.KEY_PRESS_MASK) window.connect("expose-event", expose_cb) window.connect("button-press-event", buttonpress_cb) window.connect("button-release-event", buttonrelease_cb) window.connect("motion-notify-event", move_cb) - parentwindow.connect("key_press_event", keypress_cb) + window.connect("key_press_event", keypress_cb) window.show() parentwindow.show_all() area = window.window @@ -541,7 +546,6 @@ def init(top_window, path, parentwindow=None): for i in selbuttons: i.hide() category_spr.setshape(hidden_palette_icon) setup_toolbar() - project_flap = setup_project_flap() logo.turtle = turtle logo.turtle_spr = turtle_spr logo.stopsign = toolsprite('stopit') diff --git a/turtlesetup.py b/turtlesetup.py index be38afa..8106820 100755 --- a/turtlesetup.py +++ b/turtlesetup.py @@ -66,7 +66,7 @@ selectors = ( toolbaritems = ( # ('new',0,20),('open',70,20), ('save',70,20), - ('hideshow',700, 775),('eraser',54,775), ('stopit',54,775)) + ('hideshow',700, 725),('eraser',54,725), ('stopit',54,725)) # ('hideshow',200, 2),('eraser',54,3), ('stopit',54,2)) dockdetails = { @@ -162,17 +162,6 @@ def setup_tool(x,y,name): who.blocktype = name toolsprs[name] = who -def setup_project_flap(): - project_flap = { - 'closed': gtk.gdk.pixbuf_new_from_file(os.path.join(base_path, 'toolbar','project-.gif')), - 'open': gtk.gdk.pixbuf_new_from_file(os.path.join(base_path, 'toolbar','project.gif')), - 'mask': gtk.gdk.pixbuf_new_from_file(os.path.join(base_path, 'toolbar','projectmask.gif'))} -# who = Sprite(720,0,project_flap['closed']) - who = Sprite(888,0,project_flap['closed']) - who.type = 'project_flap' - who.setlayer(800) - return project_flap - def blockproto(name): return protodict[name] def toolsprite(name): return toolsprs[name] -- cgit v0.9.1