User:Dave Young/Thematic Project 1: Bits and Pieces

From XPUB & Lens-Based wiki

Computata Miscellanea

Places for homeless code snippets from the thematic project seminars and workshops.

Script for Literal Draw/SVGs etc

Places pixels based on an ascii grid template - an 'X' = a pixel relative to that point on the canvas, any other text character leaves a blank space. The script expects a grid.txt argument, an x and y argument, and an outputfile_name.txt.

Frog in a Boat
--------------------------------------------------------------
----------------------------XXXX------------------------------
--------------------------XXXX-XX-----------------------------
------------------------XXXXXXXXX-----------------------------
-----------------------XXXXXXXXXXXX----XX---------------------
----------------------XXXXXXXXXXXXXXXXXX----------------------
XXX------------------XXXXXXXXXXX----XX---------------------XXX
XXXX----------------XXXXXXXXXXXX---XX---------------------XXXX
XXXXXXXXXXX---------XXXXXXXXXXXX--XX---------------XXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
----XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX----
--------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------
-------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-------------
----------------------------XX--------------------------------
---------------------------XX---------------------------------
-------------------------XXXX---------------------------------
Frog at a Bar
-----------------------------------------------
-----------------------------------------------
-----------------XX----XX----------------------
-----------------X-XXXX-XX---------------------
-----------------XXXXXXXXXXX-------------------
----------------XXXXXXXXXXXXXX-----------------
X--------------XXX-XXXXXXXX-XXX-------------XXX
XX-------------XX--XXXXXXXX---XXX----------XXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
------------------XX------XX-------------------
------------------XX------XX-------------------
------------------XX------XX-------------------
------------------XX------XX-------------------
-----------------XXX------XXX------------------
-----------------------------------------------
Frog 'Avin a Laugh
-------------------------------------------------------------
-------------------------------------------------------------
-------------------------------------------------------------
-------------------------------------------------------------
------------------XXXXX----------------XXXXX-----------------
----------------XXX--XXX--------------XXX--XX----------------
X--------------XXXX--XXXXXXXXXXXXXXXXXXXX--XXX--------------X
XX------------XXXXX--XXXXXXXXXXXXXXXXXXXX--XXXX------------XX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XX------------XXXXXX--XXXXXXXXXXXXXXXXXX--XXXXX------------XX
X--------------XXXXX----------------------XXXX--------------X
----------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXX----------------
------------------XXXXXXXXXXXXXXXXXXXXXXXXX------------------
--------------------XXX---------------XXX--------------------
--------------------XXX---------------XXX--------------------
--------------------XXX---------------XXX--------------------
------------------XXXXXXX-----------XXXXXXX------------------
#!/usr/bin/python
#automates grid-based transformations
#Args: gridfile | commandfile | columnwidth | rowheight
#


import sys

thegrid = open(sys.argv[1]) #grid template - X = draw commands
output = open(sys.argv[2], "w") #the outputted text to paste into 

x = int(sys.argv[3]) #starting x point
y = int(sys.argv[4]) #starting y point
ox = x
oy = y
sz = int(sys.argv[5]) #the size of the rectangle

def commands(x, y, sz):
	cmd = "move {0} {1} \n line {2} {3} \n line {4} {5} \n line {6} {7} \n close\n\n".format(x, y, x+sz, y, x+sz, y+sz, x, y+sz)  #a rectangle!
	output.write(cmd)

for line in thegrid:
	ret=0
	for char in line:
		x+=sz
		if char == str('X'):
			commands(x, y, sz)
	x=ox
	y+=sz

thegrid.close()
output.close()