Dateien hochladen nach „output_module“

main
ohjian 11 months ago
parent 6505d04cc5
commit 3be3070829

@ -0,0 +1,144 @@
import re # libary to search and replace strings in the postscript file
from dictionary import font_index
from random import choice
from generate_postscript import generate_postscript
# function with three arguments
def future_relics(previous_module, current_module, module):
shape = module[1]
rotation = module[2]
x = module[3]
y = module[4]
graytone = module[5]
spike = ['spike1', 'spike2', 'spike3']
bubble = ['bubble1', 'bubble2', 'bubble3']
square = ['square1', 'square2', 'square3']
fraction = ['fraction1', 'fraction2', 'fraction3']
text = ""
font = ""
fontsize = ""
linewidth = ""
if shape == "spike":
form = choice(spike)
if form == 'spike1':
text = "f/yk"
font = "Helvetica-BoldOblique"
fontsize = "60"
linewidth = "100"
elif form == 'spike2':
text = "f/yk"
font = "Helvetica-BoldOblique"
fontsize = "30"
linewidth = "100"
elif form == 'spike3':
text = "xxx"
font = "Helvetica-BoldOblique"
fontsize = "100"
linewidth = "100"
elif shape == "bubble":
form = choice(bubble)
if form == 'bubble1':
text = "gooo"
font = "Courier"
fontsize = "160"
linewidth = "80"
elif form == 'bubble2':
text = "dP"
font = "Courier"
fontsize = "160"
linewidth = "80"
elif form == 'bubble3':
text = "oOgOö"
font = "Courier"
fontsize = "250"
linewidth = "80"
elif shape == "square":
form = choice(square)
if form == 'square1':
text = "FRICTION"
font = "Helvetica-BoldOblique"
fontsize = "2"
linewidth = "300"
elif form == 'square2':
text = "LLL"
font = "Helvetica-BoldOblique"
fontsize = "100"
linewidth = "300"
elif form == 'square3':
text = "|||"
font = "Courier"
fontsize = "100"
linewidth = "200"
elif shape == "fraction":
form = choice(fraction)
if form == 'fraction1':
text = ""
font = "Courier"
fontsize = "100"
linewidth = "600"
elif form == 'fraction2':
text = "%?"
font = "Courier"
fontsize = "100"
linewidth = "200"
elif form == 'fraction3':
text = "WM"
font = "Courier"
fontsize = "100"
linewidth = "200"
script = """
newpath
% FUTURE RELICS
/"""+font+"""
% fontname
"""+fontsize+""" selectfont
% fontsize in points, establishes the font as the current one
"""+x+""" """+y+""" moveto
% x and y coordinates in px (origin is the lower-left corner of the page)
"""+rotation+""" rotate
% degree of rotation, counter clockwise around the given position
("""+text+""") true charpath
% normally text works with "show", but to use the characters in the string as a path that can be stroked and filled use "true charpath"
gsave
% save the current path to apply stroke first and then go back to the saved path to apply fill (Both drawing commands destroy the current path)
"""+linewidth+""" setlinewidth
% linewidth for the outline of the text
"""+graytone+""" setgray
% graytone for the outline (0 = black, 1 = white)
stroke
% stroke (outline) the text in parentheses
-"""+rotation+""" rotate
% set rotation back to zero
showpage
% print all on a page
"""
generate_postscript(previous_module, current_module, script) # call function

@ -0,0 +1,42 @@
import re # libary to search and replace strings in the postscript file
import os
def generate_postscript(previous_module, current_module, script):
if previous_module == "" or previous_module == "dynamic_glyph":
print("use empty.ps and write to current_module.ps")
#input file
fileInput = open("empty.ps", "rt") # rt = read text mode
#output file to write the result to
fileOutput = open(current_module + ".ps", "wt") # wt = write text mode
# read the input file, search for a patterns, replace it with new patterns (that take the values from the input sensor)
# uses regular expressions library (re)
content = fileInput.read()
content = re.sub(r"% empty file\n\nshowpage\n% print all on a page", (script), content)
# write the new text to the output file
fileOutput.write(content)
#close input and output files
fileInput.close()
fileOutput.close()
# time.sleep(5)
else:
print("use previous_module.ps and write to current_module.ps")
#input file
fileInput = open(previous_module + ".ps", "rt") # a+ = read text mode and write (append) to end of file
fileOutput = open(current_module + ".ps", "wt") # wt = write text mode
# read the input file, search for a patterns, replace it with new patterns (that take the values from the input sensor)
# uses regular expressions library (re)
content = fileInput.read()
content = re.sub(r"showpage\n% print all on a page", (script), content)
# write the new text to the output file
fileOutput.write(content)
#close input and output files
fileInput.close()
fileOutput.close()
# time.sleep(5)

@ -0,0 +1,19 @@
# button setup (connect to GND and board Pin 19)
import RPi.GPIO as GPIO # GPIO pins
#import time
def preview_button():
GPIO.setmode(GPIO.BOARD) #Use the physical board number (not GPIO numbering)
GPIO.setup(19, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Change pin if necessary #preview button
GPIO.setwarnings(False) #Ignore warnings
preview_button_pressed = False
if GPIO.input(19) == GPIO.LOW:
#time.sleep(1)
preview_button_pressed = True
GPIO.cleanup() #GPIO clean up
return preview_button_pressed

@ -0,0 +1,19 @@
# button setup (connect to GND and board Pin 21)
import RPi.GPIO as GPIO # GPIO pins
#import time
def print_button():
GPIO.setmode(GPIO.BOARD) #Use the physical board number (not GPIO numbering)
GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Change pin if necessary #print button
GPIO.setwarnings(False) #Ignore warnings
print_button_pressed = False
if GPIO.input(21) == GPIO.LOW:
#time.sleep(1)
print_button_pressed = True
GPIO.cleanup() #GPIO clean up
return print_button_pressed

@ -0,0 +1,56 @@
import time
import os # library to use bash commands
import keyboard
def preview_output(preview_button_count, last_module):
#open last_module.ps, read its content and save it as print.ps
fileInput = open(last_module + ".ps", "rt") # rt = read text mode
#output file to write the result to
fileOutput = open("print.ps", "wt") # wt = write text mode
# read the input file, search for a patterns, replace it with new patterns (that take the values from the input sensor)
# uses regular expressions library (re)
content = fileInput.read()
# write the new text to the output file
fileOutput.write(content)
#close input and output files
fileInput.close()
fileOutput.close()
#on first button press: open preview
if preview_button_count == 1:
print("start preview of print.ps")
os.system("gv -fullscreen print.ps &") # open file in ghostscript viewer in fullscreen mode
#on additional button press: refresh preview
elif preview_button_count >= 2:
print("refresh preview of print.ps")
keyboard.send(".") # refresh file that is open in ghostscript viewer
def print_output(last_module):
#open last_module.ps, read its content and save it as print.ps
fileInput = open(last_module + ".ps", "rt") # rt = read text mode
#output file to write the result to
fileOutput = open("print.ps", "wt") # wt = write text mode
# read the input file, search for a patterns, replace it with new patterns (that take the values from the input sensor)
# uses regular expressions library (re)
content = fileInput.read()
# write the new text to the output file
fileOutput.write(content)
#close input and output files
fileInput.close()
fileOutput.close()
#on button press: send to printer
print("send print.ps to printer")
os.system("lp print.ps") # lp is the bash print command
Loading…
Cancel
Save