class OurCanvas(Canvas): def __init__(self): Canvas.__init__(self, 300, 250) self.img = CanvasImage('media/splash%20screen.png', self) self.screen = 1 self.addMouseListener(self) def onMouseDown(self, sender, x, y): images = ['instructions%20screen.png', 'titlecard.png', 'scene 1.png', 'scene 1 click.png', 'scene 2 .png', 'scene 2 cl1.png', 'scene 2 cl2.png', 'scene 3.png', 'scene 3.png', 'scene 3 cl.png', 'end.png' ] self.img = CanvasImage("media/" + images[self.screen], self) # if self.screen == 1: # self.img = CanvasImage('media/instructions%20screen.png', self) # #RootPanel().add(HTML("mouse down instuctions")) # #RootPanel().add(HTML(self.screen)) # # if self.screen == 2: # self.img = CanvasImage('media/bkg.png', self) # #self.context.globalCompositeOperation('source-over') # self.alien = CanvasImage('media/reddit alien.png', self) # #self.loader = ImageLoadListener() # #self.loader.add(self.alien) # self.context.drawImage(self.alien.getElement(), 0, Alien_ypos) # #self.screen = self.screen + 1 # #RootPanel().add(HTML("mouse down bkg")) self.screen = self.screen + 1 def onMouseEnter(self, sender): #RootPanel().add(HTML("mouseenter: setting focus (keyboard input accepted)")) self.setFocus(True) def onMouseLeave(self, sender): #RootPanel().add(HTML("mouseleave: clearing focus (keyboard input not accepted)")) self.setFocus(False) def onMouseMove(self, sender, x, y): #RootPanel().add(HTML("move: x %d " % x + "y %d" % y)) # move_alien(y) pass def onMouseUp(self, sender, x, y): pass def onLoad(self, sender=None): if sender==self.img: self.draw() def onError(self): pass def draw(self): ptrn = self.context.createPattern(self.img.getElement(), 'repeat') self.context.fillStyle = ptrn self.context.fillRect(0,0,300,250)
class PatternCanvas(Canvas): def __init__(self): Canvas.__init__(self, 150, 150) self.img = CanvasImage('images/wallpaper.png', self) def onLoad(self, sender=None): if sender == self.img: self.draw() def onError(self): pass def draw(self): ptrn = self.context.createPattern(self.img.getElement(), 'repeat') self.context.fillStyle = ptrn self.context.fillRect(0, 0, 200, 200)
class PatternCanvas(Canvas): def __init__(self): Canvas.__init__(self, 150, 150) self.img = CanvasImage('images/wallpaper.png', self) def onLoad(self, sender=None): if sender==self.img: self.draw() def onError(self): pass def draw(self): ptrn = self.context.createPattern(self.img.getElement(), 'repeat') self.context.fillStyle = ptrn self.context.fillRect(0,0,200,200)
class SolarCanvas(Canvas): def __init__(self): Canvas.__init__(self, 300, 300) self.sun = CanvasImage('images/sun.png') self.moon = CanvasImage('images/moon.png') self.earth = CanvasImage('images/earth.png') self.loader = ImageLoadListener() self.loader.add(self.sun) self.loader.add(self.moon) self.loader.add(self.earth) self.isActive = True self.onTimer() def onTimer(self, t=None): if not self.isActive: return Timer(100, self) self.draw() def getTimeSeconds(self): return time.time() % 60 def getTimeMilliseconds(self): return (time.time() * 1000.0) % 1.0 def draw(self): pi = 3.14159265358979323 if not self.loader.isLoaded(): return self.context.globalCompositeOperation = 'destination-over' # clear canvas self.context.clearRect(0, 0, 300, 300) self.context.save() self.context.fillStyle = 'rgba(0,0,0,0.4)' self.context.strokeStyle = 'rgba(0,153,255,0.4)' self.context.translate(150, 150) # Earth self.context.rotate(((2 * pi) / 60) * self.getTimeSeconds() + ((2 * pi) / 60000) * self.getTimeMilliseconds()) self.context.translate(105, 0) self.context.fillRect(0, -12, 50, 24) # Shadow self.context.drawImage(self.earth.getElement(), -12, -12) # Moon self.context.save() self.context.rotate(((2 * pi) / 6) * self.getTimeSeconds() + ((2 * pi) / 6000) * self.getTimeMilliseconds()) self.context.translate(0, 28.5) self.context.drawImage(self.moon.getElement(), -3.5, -3.5) self.context.restore() self.context.restore() self.context.beginPath() self.context.arc(150, 150, 105, 0, pi * 2, False) # Earth orbit self.context.stroke() self.context.drawImage(self.sun.getElement(), 0, 0)
class SolarCanvas(Canvas): def __init__(self): Canvas.__init__(self, 300, 300) self.sun = CanvasImage('images/sun.png') self.moon = CanvasImage('images/moon.png') self.earth = CanvasImage('images/earth.png') self.loader = ImageLoadListener() self.loader.add(self.sun) self.loader.add(self.moon) self.loader.add(self.earth) self.isActive = True self.onTimer() def onTimer(self, t=None): if not self.isActive: return Timer(100, self) self.draw() def getTimeSeconds(self): return time.time() % 60 def getTimeMilliseconds(self): return (time.time() * 1000.0) % 1.0 def draw(self): pi = 3.14159265358979323 if not self.loader.isLoaded(): return self.context.globalCompositeOperation = 'destination-over' # clear canvas self.context.clearRect(0,0,300,300) self.context.save() self.context.fillStyle = 'rgba(0,0,0,0.4)' self.context.strokeStyle = 'rgba(0,153,255,0.4)' self.context.translate(150,150) # Earth self.context.rotate( ((2*pi)/60)*self.getTimeSeconds() + ((2*pi)/60000)*self.getTimeMilliseconds() ) self.context.translate(105,0) self.context.fillRect(0,-12,50,24) # Shadow self.context.drawImage(self.earth.getElement() ,-12,-12) # Moon self.context.save() self.context.rotate( ((2*pi)/6)*self.getTimeSeconds() + ((2*pi)/6000)*self.getTimeMilliseconds() ) self.context.translate(0,28.5) self.context.drawImage(self.moon.getElement(),-3.5,-3.5) self.context.restore() self.context.restore() self.context.beginPath() self.context.arc(150,150,105,0,pi*2,False) # Earth orbit self.context.stroke() self.context.drawImage(self.sun.getElement(),0,0)
class ClockCanvas(Canvas): def __init__(self, img_url): Canvas.__init__(self, 200, 200) self.img_url = img_url self.clock = CanvasImage(self.img_url) self.width = 200 self.height = 200 self.plusGMT = 0 #Time would be GMT+plusGMT self.loader = ImageLoadListener(self) self.loader.add(self.clock) self.isActive = True self.onTimer() def onError(self, sender): Window.alert("error of some kind (probably missing image at url)") def onTimer(self, sender=None): if not self.isActive: return Timer(1000, self) self.draw() def getTimeSeconds(self): return time.time() % 60.0 def getTimeMilliseconds(self): return (time.time() * 1000.0) % 1.0 def getTimeMinutes(self): return (time.time() / 60) % 60.0 def getTimeHours(self): return ((time.time() + self.plusGMT * 3600) / 3600) % 12.0 def draw(self): pi = 3.14159265358979323 if not self.loader.isLoaded(): return self.context.globalCompositeOperation = 'destination-over' # clear canvas self.context.clearRect(0,0,self.width,self.height) self.context.save() self.context.fillStyle = 'rgba(0,0,0,0.4)' self.context.strokeStyle = 'rgba(0,153,255,0.4)' self.context.translate(self.width/2,self.height/2) secs = self.getTimeSeconds() mins = self.getTimeMinutes() hours = self.getTimeHours() # Seconds self.context.save() self.context.fillStyle = 'rgba(255,0,0,0.4)' self.context.rotate( ((2*pi)/60)*secs + pi) self.context.fillRect(-1,-(self.width * 0.04),2, self.width * 0.38) self.context.restore() # Minutes self.context.save() self.context.rotate( ((2*pi)/60)*mins + pi) self.context.fillRect(-1,-1,3,self.width * 0.35) self.context.restore() # Hours self.context.save() self.context.rotate( ((2*pi)/12)*hours + pi) self.context.fillRect(-2,-2,4,self.width * 0.2) self.context.restore() self.context.restore() self.context.drawImage(self.clock.getElement(),0,0)
class SolarCanvas(Canvas): def __init__(self, img_url): Canvas.__init__(self, 300, 300) self.clock = CanvasImage(img_url) self.width = 150 self.height = 150 self.loader = ImageLoadListener(self) self.loader.add(self.clock) self.isActive = True self.onTimer() def onLoad(self, sender=None): el = self.clock.getElement() self.width = DOM.getIntAttribute(el, "width") self.height = DOM.getIntAttribute(el, "height") self.setWidth("%dpx" % self.width) self.setHeight("%dpx" % self.height) def onError(self, sender): Window.alert("error of some kind (probably missing image at url)") def onTimer(self, sender=None): if not self.isActive: return Timer(1000, self) self.draw() def getTimeSeconds(self): return time.time() % 60.0 def getTimeMilliseconds(self): return (time.time() * 1000.0) % 1.0 def getTimeMinutes(self): return (time.time() / 60) % 60.0 def getTimeHours(self): return (time.time() / 3600) % 12.0 def draw(self): pi = 3.14159265358979323 if not self.loader.isLoaded(): return self.context.globalCompositeOperation = 'destination-over' # clear canvas self.context.clearRect(0,0,self.width,self.height) self.context.save() self.context.fillStyle = 'rgba(0,0,0,0.4)' self.context.strokeStyle = 'rgba(0,153,255,0.4)' self.context.translate(self.width/2,self.height/2) secs = self.getTimeSeconds() mins = self.getTimeMinutes() + secs / 60.0 hours = self.getTimeHours() + mins / 60.0 # Seconds self.context.save() self.context.fillStyle = 'rgba(255,0,0,0.4)' self.context.rotate( ((2*pi)/60)*secs + pi) self.context.fillRect(-1,-(self.width * 0.04),2, self.width * 0.38) self.context.restore() # Minutes self.context.save() self.context.rotate( ((2*pi)/60)*mins + pi) self.context.fillRect(-1,-1,3,self.width * 0.35) self.context.restore() # Hours self.context.save() self.context.rotate( ((2*pi)/12)*hours + pi) self.context.fillRect(-2,-2,4,self.width * 0.2) self.context.restore() self.context.restore() self.context.drawImage(self.clock.getElement(),0,0)