예제 #1
0
    def _on_view_rendered(self, img):
        web.update_frame(img)
        try:
            if self._config['ui']['display']['video']['on_frame'] != '':
                os.system(self._config['ui']['display']['video']['on_frame'])
        except Exception as e:
            logging.error("%s" % e)

        if self._enabled:
            self._canvas = (img if self._rotation == 0 else img.rotate(self._rotation))
            if self._implementation is not None:
                self._canvas_next = self._canvas
                self._canvas_next_event.set()
예제 #2
0
파일: view.py 프로젝트: epantke/pwnagotchi
    def update(self, force=False, new_data={}, with_lock=True):
        for key, val in new_data.items():
            self.set(key, val)

        maybe_lock = self._lock if with_lock else nullcontext()

        with maybe_lock:
            if self._frozen:
                return

            state = self._state
            changes = state.changes(ignore=self._ignore_changes)
            min_changes = 2 if self._config['ui']['fps'] == 0.0 else 0
            if force or len(changes) > min_changes:
                logging.debug(
                    "Update screen because %s",
                    'it was forced.' if force else f"{changes} triggered it.")
                self._canvas = Image.new('1', (self._width, self._height),
                                         WHITE)
                drawer = ImageDraw.Draw(self._canvas)

                plugins.on('ui_update', self)

                for key, lv in list(state.items()):
                    lv.draw(self._canvas, drawer)

                if self._config['ui']['web']['dark']:
                    print(self._canvas.mode)
                    self._canvas = ImageOps.invert(
                        self._canvas.convert('L')).convert('1')

                web.update_frame(self._canvas)

                for cb in self._render_cbs:
                    cb(self._canvas)

                self._state.reset()