From 4d2b5c8f86ac4ea220d51ed78d5201358552954c Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Wed, 7 Dec 2022 17:06:01 -0500 Subject: [PATCH] Use `Curve.x_last()` for zoom focal point --- piker/ui/_interaction.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/piker/ui/_interaction.py b/piker/ui/_interaction.py index ab192209..5c4749f5 100644 --- a/piker/ui/_interaction.py +++ b/piker/ui/_interaction.py @@ -35,7 +35,7 @@ import trio from ..log import get_logger from .._profile import Profiler from .._profile import pg_profile_enabled, ms_slower_then -# from ._style import _min_points_to_show +from ._style import _min_points_to_show from ._editors import SelectRect from . import _event @@ -492,18 +492,20 @@ class ChartView(ViewBox): chart = self.linked.chart # don't zoom more then the min points setting - out = l, lbar, rbar, r = chart.get_viz(chart.name).bars_range() - # vl = r - l + viz = chart.get_viz(chart.name) + vl, lbar, rbar, vr = viz.bars_range() + rl = vr - vl - # if ev.delta() > 0 and vl <= _min_points_to_show: - # log.debug("Max zoom bruh...") + # TODO: max/min zoom limits incorporating time step size. + # if ev.delta() > 0 and rl <= _min_points_to_show: + # log.warning("Max zoom bruh...") # return # if ( # ev.delta() < 0 - # and vl >= len(chart._vizs[chart.name].shm.array) + 666 + # and rl >= len(chart._vizs[chart.name].shm.array) + 666 # ): - # log.debug("Min zoom bruh...") + # log.warning("Min zoom bruh...") # return # actual scaling factor @@ -552,8 +554,7 @@ class ChartView(ViewBox): # This seems like the most "intuitive option, a hybrid of # tws and tv styles - last_bar = pg.Point(int(rbar)) + 1 - + # last_bar = pg.Point(int(rbar)) + 1 ryaxis = chart.getAxis('right') r_axis_x = ryaxis.pos().x() @@ -561,21 +562,21 @@ class ChartView(ViewBox): round( chart.cv.mapToView( pg.Point(r_axis_x - chart._max_l1_line_len) - # QPointF(chart._max_l1_line_len, 0) ).x() ) - ) # .x() + ).x() # self.state['viewRange'][0][1] = end_of_l1 # focal = pg.Point((last_bar.x() + end_of_l1)/2) - - focal = min( - last_bar, - end_of_l1, - key=lambda p: p.x() - ) # focal = pg.Point(last_bar.x() + end_of_l1) + # use right-most point of current curve graphic + xl = viz.graphics.x_last() + focal = min( + xl, + end_of_l1, + ) + self._resetTarget() self.scaleBy(s, focal)