# ps.py import aus scala=72/2.54; spessoreiniziale=0.2/scala abbreviazioni=''' /c {setrgbcolor} def /f {rectfill} def /g {setgray} def /r {grestore} def /rs {rectstroke} def /s {gsave} def ''' # Bisogna indicare o la larghezza o l'altezza in cm; # A deve essere un oggetto della classe immbase. def creaps (A,nomefile,larghezza=None,altezza=None): if altezza: larghezza=altezza*A.colonne/float(A.righe) else: altezza=larghezza*A.righe/float(A.colonne) aus.scrivifile(nomefile, postscript(larghezza,altezza,istruzioniimmagine(A,altezza))) # A deve essere un oggetto della classe immbase. def istruzioniimmagine (A,altezza): f=A.f; colonne=A.colonne; righe=A.righe; lps=[]; d=float(altezza)/righe for k in xrange(righe): y=altezza-(k+1)*d for j in xrange(colonne): lps.append(rettangolo([j*d,y],d,d,f(j,k))) return '\n'.join(lps) def postscript (larg,alt,istruzioni): return '\n'.join([preambolo(larg,alt),abbreviazioni,istruzioni,r'%%EOF','']) def preambolo (larg,alt): return '\n'.join([r'%!PS',r'%%BoundingBox: 0 0 '+'%d %d' %(larg*scala,alt*scala), r'%%Pages: 1',r'%%Page: 1 1', '\n%.2f %.2f scale %.2f setlinewidth' %(scala,scala,spessoreiniziale)]) def rettangolo (p,larg,alt,grigio): (x,y)=p return '%.3f g %.2f %.2f %.2f %.2f f' %(grigio,x,y,larg,alt)