Fix `Viz.draw_last()` to divide by `.flat_index_ratio` for uppx index lookback

multichartz
Tyler Goodlet 2023-01-19 11:41:49 -05:00
parent b24d5b61cc
commit 1f11f7e4bf
1 changed files with 17 additions and 22 deletions

View File

@ -819,6 +819,7 @@ class Viz(msgspec.Struct): # , frozen=True):
# XXX: SUPER UGGGHHH... without this we get stale cache # XXX: SUPER UGGGHHH... without this we get stale cache
# graphics that "smear" across the view horizontally # graphics that "smear" across the view horizontally
# when panning and the first datum is out of view.. # when panning and the first datum is out of view..
reset_cache = False
if ( if (
reset_cache reset_cache
): ):
@ -895,7 +896,8 @@ class Viz(msgspec.Struct): # , frozen=True):
# worth of data since that's all the screen # worth of data since that's all the screen
# can represent on the last column where # can represent on the last column where
# the most recent datum is being drawn. # the most recent datum is being drawn.
uppx = ceil(self._last_uppx) uppx = ceil(gfx.x_uppx())
if ( if (
(self._in_ds or only_last_uppx) (self._in_ds or only_last_uppx)
and uppx > 0 and uppx > 0
@ -903,37 +905,30 @@ class Viz(msgspec.Struct): # , frozen=True):
alt_renderer = self._alt_r alt_renderer = self._alt_r
if alt_renderer: if alt_renderer:
renderer, gfx = alt_renderer renderer, gfx = alt_renderer
fmtr = renderer.fmtr
x = fmtr.x_1d
y = fmtr.y_1d
else: else:
renderer = self._src_r renderer = self._src_r
fmtr = renderer.fmtr fmtr = renderer.fmtr
x = fmtr.x_1d x = fmtr.x_1d
y = fmtr.y_1d y = fmtr.y_1d
iuppx = ceil(uppx)
if alt_renderer: if alt_renderer:
uppx *= fmtr.flat_index_ratio iuppx = ceil(uppx / fmtr.flat_index_ratio)
y = y[-uppx:] y = y[-iuppx:]
ymn, ymx = y.min(), y.max() ymn, ymx = y.min(), y.max()
try: try:
iuppx = x[-uppx] x_start = x[-iuppx]
except IndexError: except IndexError:
# we're less then an x-px wide so just grab the start # we're less then an x-px wide so just grab the start
# datum index. # datum index.
iuppx = x[0] x_start = x[0]
gfx._last_line = QLineF( gfx._last_line = QLineF(
iuppx, ymn, x_start, ymn,
x[-1], ymx, x[-1], ymx,
) )
# if self.is_ohlc:
# times = self.shm.array['time']
# time_step = times[-1] - times[-2]
# # if 'hist' in self.shm.token['shm_name']
# # if self.index_step() == 1:
# # breakpoint()
# print( # print(
# f'updating DS curve {self.name}@{time_step}s\n' # f'updating DS curve {self.name}@{time_step}s\n'
# f'drawing uppx={uppx} mxmn line: {ymn}, {ymx}' # f'drawing uppx={uppx} mxmn line: {ymn}, {ymx}'