def menufadeout(newslide): #print "== menufadeout ==" #print "FROM ", newslide.getrealname() # Prepare OpenGL globals.prepare2DViewport() glEnable(GL_COLOR_MATERIAL) #glEnable(GL_BLEND) #glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) #Fade new image into old image, from alpha = 1 to alpha = 255 with a configured step for i in range(1, 255, parameters.getfadevelocity()): #Pause configurable delay pygame.time.delay(parameters.getdelay()) glClear(GL_COLOR_BUFFER_BIT) glColor4f((255 - i)/255.0, (255 - i)/255.0, (255 - i)/255.0, 1.0) newslide.render() pygame.display.flip() glColor4f(1.0, 1.0, 1.0, 1.0) #glDisable(GL_BLEND) #Show the cursor globals.curcursor._show()
def upscroll(newslide, oldslide): #Create a tempsurface twice the height of the slide tempsurface = pygame.Surface((globals.screenrect.width, globals.screenrect.height * 2)) #Blit new image to the top and old image to the bottom tempsurface.blit(newslide._getbuffersurface(), (0,0)) tempsurface.blit(globals.slidesurface, (0,globals.screenrect.height)) globals.slidesurface.blit(newslide._getbuffersurface(), (0,0)) #Create a floating frame to specify the location from the tempsurface to copy, currently set on the old surface copyrect = pygame.Rect((0,globals.screenrect.height),globals.screenrect.size) dirtyrects = [] #Slide copyrect across the temp surface from start of old image to start of new image #with a configurable step for i in range(0, globals.screenrect.height + 1, parameters.getscrollvelocity()): #Move copyrect down by step copyrect.top = globals.screenrect.height - i #Hide cursor and add it to the list of updated areas dirtyrects.append(globals.curcursor._hide()) #Blit the area under copyrect to from the tempsurface to the screen globals.screensurface.blit(tempsurface, globals.screenrect, copyrect) globals.screensurface.blit(globals.uhasurface, globals.screenrect, globals.screenrect) #If there are any mouse movements pending if pygame.event.peek(pygame.MOUSEMOTION): #Update cursor with the last one, and remove all of them from the queue globals.curcursor._handlemousemove(pygame.event.get(pygame.MOUSEMOTION)[-1]) #Show the cursor dirtyrects.append(globals.curcursor._show()) #Add the slides area to the list dirtyrects.append(globals.screenrect) #Update the screen pygame.display.update(dirtyrects) #Pause configurable delay pygame.time.delay(parameters.getdelay()) #Clear the list of updated screen areas dirtyrects = [] #Move copyrect to start of new image copyrect.top = 0 #Hide cursor and add it to the list of updated areas dirtyrects.append(globals.curcursor._hide()) #Blit the area under copyrect to from the tempsurface to the screen globals.screensurface.blit(tempsurface, globals.screenrect, copyrect) globals.screensurface.blit(globals.uhasurface, globals.screenrect, globals.screenrect) #If there are any mouse movements pending if pygame.event.peek(pygame.MOUSEMOTION): #Update cursor with the last one, and remove all of them from the queue globals.curcursor._handlemousemove(pygame.event.get(pygame.MOUSEMOTION)[-1]) #Show the cursor dirtyrects.append(globals.curcursor._show()) #Add the slides area to the list dirtyrects.append(globals.screenrect) #Update the screen pygame.display.update(dirtyrects)
def initfade(newslide): # FIXME: not ported to OpenGL, but what does this do? #Create a temp surface and blit the Ui, Std or Object slide, and uhasurface to it (the new image) tempsurface = pygame.Surface(globals.screenrect.size) tempsurface.blit(newslide._getbuffersurface(), (0,0)) tempsurface.blit(globals.slidesurface, globals.screenrect) tempsurface.blit(globals.uhabuffer, (0,0)) #Set surface to be transparent tempsurface.set_alpha(0) #Copy over the buffered items globals.uhasurface.blit(globals.uhabuffer, (0,0)) globals.screenbuffer.blit(newslide._getbuffersurface(), (0,0)) #Fade into first scene, from alpha = 1 to alpha = 255 with a configured step for i in range(1,255,parameters.getfadevelocity()): #Pause configurable delay pygame.time.delay(parameters.getdelay()) #Update the surface with new alpha value tempsurface.set_alpha(i) #Hide cursor globals.curcursor._hide() #Blit updated image to screen globals.screensurface.blit(tempsurface, (0,0)) #If there are any mouse movements pending if pygame.event.peek(pygame.MOUSEMOTION): #Update cursor with the last one, and remove all of them from the queue globals.curcursor._handlemousemove(pygame.event.get(pygame.MOUSEMOTION)[-1]) #Show the cursor globals.curcursor._show() #Update the screen pygame.display.update() #Set alpha to 255 (opaque) tempsurface.set_alpha(255) #Hide cursor and add it to the list of updated areas globals.curcursor._hide() #Blit updated image to screen globals.screensurface.blit(tempsurface, (0,0)) #If there are any mouse movements pending if pygame.event.peek(pygame.MOUSEMOTION): #Update cursor with the last one, and remove all of them from the queue globals.curcursor._handlemousemove(pygame.event.get(pygame.MOUSEMOTION)[-1]) #Show the cursor globals.curcursor._show() #Update the screen pygame.display.update()
def rightscroll(newslide, oldslide): # Prepare OpenGL globals.prepare2DViewport() previous_time = pygame.time.get_ticks() #Fade new image into old image, from alpha = 1 to alpha = 255 with a configured step for i in range(1, 255, parameters.getfadevelocity()): #Pause configurable delay if i > 1: new_time = pygame.time.get_ticks() already_elapsed_time = new_time - previous_time time_to_wait = parameters.getdelay() - already_elapsed_time if time_to_wait > 0: pygame.time.delay(time_to_wait) previous_time = new_time oldslide.render(-(i/255.0)*parameters.getscreensize()[0], 0) newslide.render(-(i/255.0)*parameters.getscreensize()[0] + parameters.getscreensize()[0], 0) pygame.display.flip()
def menufadein(newslide): #print "== menufadein ==" #print "TO ", newslide.getrealname() # Prepare OpenGL globals.prepare2DViewport() #glEnable(GL_BLEND) glEnable(GL_COLOR_MATERIAL) #glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) previous_time = pygame.time.get_ticks() #Fade new image into old image, from alpha = 1 to alpha = 255 with a configured step for i in range(1, 255, parameters.getfadevelocity()): #Pause configurable delay if i > 1: new_time = pygame.time.get_ticks() already_elapsed_time = new_time - previous_time time_to_wait = parameters.getdelay() - already_elapsed_time if time_to_wait > 0: pygame.time.delay(time_to_wait) previous_time = new_time pygame.event.get() glClear(GL_COLOR_BUFFER_BIT) glColor4f(i/255.0, i/255.0, i/255.0, 1.0) newslide.render() pygame.display.flip() glColor4f(1.0, 1.0, 1.0, 1.0) #glDisable(GL_BLEND) #Show the cursor globals.curcursor._show()
def fade(newslide, oldslide): #print "== fade ==" #print "From ", "None" if oldslide is None else oldslide.getrealname() #print "To ", newslide.getrealname() #import traceback #traceback.print_stack() # Don't fade to yourself if oldslide is not None and oldslide.getname() == newslide.getname(): return # FIXME: what use is this for?? #If this is a UI slide, call the special trans for UI #if newslide._type == 'ui' and len(SlideManager._slide_stack) >= 2 and SlideManager._slide_stack[-2].gettype() == 'menu': # menufadeout(newslide) # return #If this is a menu slide, call the special trans for menu #elif oldslide is None or newslide._type == 'menu': # menufadein(newslide) # return if oldslide is None: menufadein(newslide) return #Object and Std slides need to be slide size and slide area only bothSimilar = (oldslide.is3D() == newslide.is3D()) # Prepare OpenGL if bothSimilar: if oldslide.is3D(): globals.prepare3DViewport() else: globals.prepare2DViewport() previous_time = pygame.time.get_ticks() #Fade new image into old image, from alpha = 1 to alpha = 255 with a configured step for i in range(1, 255, parameters.getfadevelocity()): #Pause configurable delay if i > 1: new_time = pygame.time.get_ticks() already_elapsed_time = new_time - previous_time time_to_wait = parameters.getdelay() - already_elapsed_time if time_to_wait > 0: pygame.time.delay(time_to_wait) previous_time = new_time if not bothSimilar: if oldslide.is3D(): globals.prepare3DViewport() else: globals.prepare2DViewport() if oldslide.is3D(): glPushMatrix() glRotatef(oldslide.pitch_angle, 1, 0, 0) glRotatef(oldslide.yaw_angle, 0, 1, 0) oldslide.render() if oldslide.is3D(): glPopMatrix() glColor4f(1.0, 1.0, 1.0, i/255.0) if not bothSimilar: if newslide.is3D(): globals.prepare3DViewport() else: globals.prepare2DViewport() if newslide.is3D(): glPushMatrix() glRotatef(newslide.pitch_angle, 1, 0, 0) glRotatef(newslide.yaw_angle, 0, 1, 0) newslide.render() if newslide.is3D(): glPopMatrix() glColor4f(1.0, 1.0, 1.0, 1.0) pygame.display.flip() #Show the cursor globals.curcursor._show()