def _move_viewport(self, dx=0, dy=0, x=None, y=None, force_draw=False): if x is None: x = self._view_col0 + dx if y is None: y = self._view_row0 + dy ncol0 = clamp(x, 0, self._max_col0) nrow0 = clamp(y, 0, self._max_row0) if ncol0 != self._view_col0 or nrow0 != self._view_row0 or force_draw: self._view_col0 = ncol0 self._view_row0 = nrow0 self._draw()
def _fetch_data(self): """ Retrieve frame data within the current view window. This method will adjust the view window if it goes out-of-bounds. """ self._view_col0 = clamp(self._view_col0, 0, self._max_col0) self._view_row0 = clamp(self._view_row0, 0, self._max_row0) self._view_ncols = clamp(self._view_ncols, 0, self._frame_ncols - self._view_col0) self._view_nrows = clamp(self._view_nrows, 0, self._frame_nrows - self._view_row0) return self._data_callback(self._view_row0, self._view_row0 + self._view_nrows, self._view_col0, self._view_col0 + self._view_ncols)