2 |
from util import * |
from util import * |
3 |
from gfx.util.misc import * |
from gfx.util.misc import * |
4 |
import re |
import re |
|
|
|
|
class Scene: |
|
|
"""Shows a single unique background texture at a time. |
|
|
|
|
|
""" |
|
|
def __init__(self): |
|
|
self.bgcolor = (0.7, 0.8, 0.6) |
|
|
|
|
|
self.seed = 0 |
|
|
self.pq = None |
|
|
|
|
|
self.optimized = ["not", "opt", "both"] |
|
|
|
|
|
print "Paper2scene, keys = ",keys |
|
|
self.key = KeyPresses(self, |
|
|
Action("Choose random seed", "v", self.randomize, noAnimation=1), |
|
|
Action("Edit seed number", re.compile("[0-9]|Back[sS]pace"), |
|
|
self.__class__.editSeed, noAnimation=1), |
|
|
*keys |
|
|
) |
|
|
|
|
|
def randomize(self, *args): |
|
|
self.seed = rng.nextInt(2000000000) |
|
|
self.initpaper() |
|
|
|
|
|
def editSeed(self,k): |
|
|
if k >= "0" and k <= "9": self.seed = self.seed * 10 + int(k) |
|
|
if k == "BackSpace" or k == "Backspace": self.seed = self.seed / 10 |
|
|
self.initpaper() |
|
|
|
|
|
def initpaper(self): |
|
|
self.pq = getpaper(self.seed) |
|
|
self.opq = getpaper(self.seed, optimized = 1) |
|
|
|
|
|
def OLDkey(self, k): |
|
|
oldseed = self.seed |
|
|
if k == 'o': |
|
|
rotatelist(self.optimized) |
|
|
|
|
|
if oldseed != self.seed: |
|
|
self.pq = None |
|
|
AbstractUpdateManager.setNoAnimation() |
|
|
AbstractUpdateManager.chg() |
|
|
|
|
|
|
|
|
def scene(self, vs): |
|
|
size = vs.getSize() |
|
|
|
|
|
if not self.pq: self.initpaper() |
|
|
putnoc(vs, background(self.bgcolor)) |
|
|
|
|
|
cs1 = vs.coords.affineCoordsys(0, 10, 0, 0, |
|
|
size.width, 0, |
|
|
0, size.height) |
|
|
scale = float(self.zoom) |
|
|
print "Scene: ",self.zoom,scale |
|
|
cs2 = vs.coords.affineCoordsys(0, 0, 0, 0, |
|
|
scale / size.width, 0, |
|
|
0, scale / size.height) |
|
|
|
|
|
cs1left = vs.coords.ortho(cs1, 0, 0, 0, .5, 1) |
|
|
cs1right = vs.coords.ortho(cs1, 0, .5, 0, .5, 1) |
|
|
|
|
|
cs2left = vs.coords.ortho(0, 0, 0, 0, |
|
|
scale / size.width * 2, |
|
|
scale / size.height) |
|
|
cs2right = vs.coords.ortho(0, 0, -1, 0, |
|
|
scale / size.width * 2, |
|
|
scale / size.height) |
|
|
|
|
|
vs.matcher.add(cs1, "1") |
|
|
vs.matcher.add(cs2, "2") |
|
|
|
|
|
vs.matcher.add(cs1left, "1l") |
|
|
vs.matcher.add(cs2left, "2l") |
|
|
|
|
|
vs.matcher.add(cs1right, "1r") |
|
|
vs.matcher.add(cs2right, "2r") |
|
|
|
|
|
pscale = self.zoom |
|
|
|
|
|
|
|
|
#print "Seed: ",self.seed," pq ",self.pq |
|
|
if self.optimized[0] == "not": |
|
|
print "NOT" |
|
|
vs.map.put(self.pq, cs1, cs2) |
|
|
elif self.optimized[0] == "opt": |
|
|
print "OPT" |
|
|
vs.map.put(self.opq, cs1, cs2) |
|
|
elif self.optimized[0] == "both": |
|
|
print "BOTH" |
|
|
vs.map.put(self.pq, cs1left, cs2left) |
|
|
vs.map.put(self.opq, cs1right, cs2right) |
|
|
else: |
|
|
print "ARGH ",self.optimized |
|
|
|
|
|
cs3 = vs.coords.affineCoordsys(0, 0, 0, 0, |
|
|
size.height/2, 0, |
|
|
0, size.height/2) |
|
|
vs.matcher.add(cs3, "txt") |
|
|
|
|
|
putText(vs, cs3, str(self.seed), color=(0,0,0), x=0, y=.12, h=.2) |
|
|
|
|
|
|
|
|
|
|