def __init__(self, mc, config, key=None, **kwargs): super().__init__(mc=mc, config=config, key=key) self.source = self.mc.displays[self.config['source_display']] stencil = StencilView(size_hint=(None, None), size=(self.source.config['width'], self.source.config['height'])) # Add the effects to make this look like a DMD effect_list = list() if 'luminosity' in self.config: effect_list.append(Monochrome(r=self.config['luminosity'][0], g=self.config['luminosity'][1], b=self.config['luminosity'][2])) if self.config['shades']: effect_list.append(Reduce(shades=self.config['shades'])) if self.config['pixel_color']: effect_list.append(Colorize(r=self.config['pixel_color'][0], g=self.config['pixel_color'][1], b=self.config['pixel_color'][2])) if self.config['gain'] != 1.0: effect_list.append(Gain(gain=self.config['gain'])) effect = EffectWidget() effect.effects = effect_list stencil.add_widget(effect) self.add_widget(stencil) try: effect.add_widget(self.source) except WidgetException: self.source.parent = None effect.add_widget(self.source) effect.size = (self.config['width'], self.config['height']) effect.texture.mag_filter = 'nearest' effect.texture.min_filter = 'nearest' self.scale = min(self.width / self.source.width, self.height / self.source.height) self.pos = (0, 0)
def _setup_fbo(self, element, settings): """Setup FBO for a display.""" source = self.machine.displays[element] # put the widget canvas on a Fbo texture = Texture.create(size=source.size, colorfmt='rgb') fbo = Fbo(size=source.size, texture=texture) effect_widget = EffectWidget() effect_list = list() effect_widget.effects = effect_list effect_widget.size = source.size fbo.add(effect_widget.canvas) return [fbo, effect_widget, source, settings, True]
def _setup_fbo(self, element, settings): """Setup FBO for a display.""" if element not in self.machine.displays: raise AssertionError( "Display {} not found. Please create it to use display_light_player." .format(element)) source = self.machine.displays[element] # put the widget canvas on a Fbo texture = Texture.create(size=source.size, colorfmt='rgb') fbo = Fbo(size=source.size, texture=texture) effect_widget = EffectWidget() effect_list = list() effect_widget.effects = effect_list effect_widget.size = source.size fbo.add(effect_widget.canvas) return [fbo, effect_widget, source, settings, True]