POC try using yrange mxmn from m4 when downsampling
							parent
							
								
									4ad7b073c3
								
							
						
					
					
						commit
						191b94b67c
					
				|  | @ -337,6 +337,7 @@ class Flow(msgspec.Struct):  # , frozen=True): | |||
|     name: str | ||||
|     plot: pg.PlotItem | ||||
|     graphics: Union[Curve, BarItems] | ||||
|     yrange: tuple[float, float] = None | ||||
| 
 | ||||
|     # in some cases a flow may want to change its | ||||
|     # graphical "type" or, "form" when downsampling, | ||||
|  | @ -416,7 +417,13 @@ class Flow(msgspec.Struct):  # , frozen=True): | |||
|             if not slice_view.size: | ||||
|                 mxmn = None | ||||
| 
 | ||||
|             elif self.yrange: | ||||
|                 # print(f'{self.name} using yrange: {self.yrange}') | ||||
|                 mxmn = self.yrange | ||||
| 
 | ||||
|             else: | ||||
|                 print(f'{self.name} MANUAL MAXMIN') | ||||
|                 # return 0, 0 | ||||
|                 if self.is_ohlc: | ||||
|                     ylow = np.min(slice_view['low']) | ||||
|                     yhigh = np.max(slice_view['high']) | ||||
|  | @ -628,10 +635,13 @@ class Flow(msgspec.Struct):  # , frozen=True): | |||
|             # source data so we clear our path data in prep | ||||
|             # to generate a new one from original source data. | ||||
|             new_sample_rate = True | ||||
|             showing_src_data = True | ||||
|             should_ds = False | ||||
|             should_redraw = True | ||||
| 
 | ||||
|             showing_src_data = True | ||||
|             # reset yrange to be computed from source data | ||||
|             self.yrange = None | ||||
| 
 | ||||
|         # MAIN RENDER LOGIC: | ||||
|         # - determine in view data and redraw on range change | ||||
|         # - determine downsampling ops if needed | ||||
|  | @ -657,6 +667,10 @@ class Flow(msgspec.Struct):  # , frozen=True): | |||
| 
 | ||||
|             **rkwargs, | ||||
|         ) | ||||
|         if showing_src_data: | ||||
|             print(f"{self.name} SHOWING SOURCE") | ||||
|             # reset yrange to be computed from source data | ||||
|             self.yrange = None | ||||
| 
 | ||||
|         if not out: | ||||
|             log.warning(f'{self.name} failed to render!?') | ||||
|  | @ -664,6 +678,9 @@ class Flow(msgspec.Struct):  # , frozen=True): | |||
| 
 | ||||
|         path, data, reset = out | ||||
| 
 | ||||
|         # if self.yrange: | ||||
|         #     print(f'flow {self.name} yrange from m4: {self.yrange}') | ||||
| 
 | ||||
|         # XXX: SUPER UGGGHHH... without this we get stale cache | ||||
|         # graphics that don't update until you downsampler again.. | ||||
|         if reset: | ||||
|  | @ -1144,11 +1161,14 @@ class Renderer(msgspec.Struct): | |||
| 
 | ||||
|             elif should_ds and uppx > 1: | ||||
| 
 | ||||
|                 x_out, y_out = xy_downsample( | ||||
|                 x_out, y_out, ymn, ymx = xy_downsample( | ||||
|                     x_out, | ||||
|                     y_out, | ||||
|                     uppx, | ||||
|                 ) | ||||
|                 self.flow.yrange = ymn, ymx | ||||
|                 # print(f'{self.flow.name} post ds: ymn, ymx: {ymn},{ymx}') | ||||
| 
 | ||||
|                 reset = True | ||||
|                 profiler(f'FULL PATH downsample redraw={should_ds}') | ||||
|                 self._in_ds = True | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue