Example #1
0
class Renderer:
    """
    Renders the currently active layers and manages transitions between layer lists.
    Also applies a gamma correction layer after everything else is rendered.
    At the moment, this class does one of two things: 
    -Calls render on a fade object if one exists
    -Otherwise, renders a list of active layers directly
    """
    def __init__(self, layers=None, gamma=2.2):
        self.activeLayers = layers
        self.fade = None
        self.gammaLayer = GammaLayer(gamma)
        
    def render(self, model, params, frame):
        if self.fade:
            self.fade.render(model, params, frame)
            # if the fade is finished, grab its end layers and just render those
            if self.fade.done:
                self.activeLayers = self.fade.endLayers
                self.fade = None
        elif self.activeLayers:
            for layer in self.activeLayers:
                layer.render(model, params, frame)
        self.gammaLayer.render(model, params, frame)
        
    def setFade(self, duration, nextLayers1, nextLayers2=None):
        # TODO check for wonky behavior when one fade is set while another is still in progress
        if nextLayers2:
            self.fade = TwoStepLinearFade(self.activeLayers, nextLayers1, nextLayers2, duration)
        else:
            self.fade = LinearFade(self.activeLayers, nextLayers1, duration)
Example #2
0
 def __init__(self, layers=None, gamma=2.2):
     self.activeLayers = layers
     self.fade = None
     self.gammaLayer = GammaLayer(gamma)