Return `in_view: bool` from `Viz.update_graphics()`
Allows callers to know if they should care about a particular viz rendering call by immediately knowing if the graphics are in view. This turns out super useful particularly when doing dynamic y-ranging overlay calcs.multichartz
							parent
							
								
									5139a27327
								
							
						
					
					
						commit
						426ae9e2ca
					
				| 
						 | 
					@ -658,7 +658,11 @@ class Viz(msgspec.Struct):  # , frozen=True):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        **kwargs,
 | 
					        **kwargs,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ) -> pg.GraphicsObject:
 | 
					    ) -> tuple[
 | 
				
			||||||
 | 
					        bool,
 | 
				
			||||||
 | 
					        tuple[int, int],
 | 
				
			||||||
 | 
					        pg.GraphicsObject,
 | 
				
			||||||
 | 
					    ]:
 | 
				
			||||||
        '''
 | 
					        '''
 | 
				
			||||||
        Read latest datums from shm and render to (incrementally)
 | 
					        Read latest datums from shm and render to (incrementally)
 | 
				
			||||||
        render to graphics.
 | 
					        render to graphics.
 | 
				
			||||||
| 
						 | 
					@ -688,8 +692,9 @@ class Viz(msgspec.Struct):  # , frozen=True):
 | 
				
			||||||
            not in_view.size
 | 
					            not in_view.size
 | 
				
			||||||
            or not render
 | 
					            or not render
 | 
				
			||||||
        ):
 | 
					        ):
 | 
				
			||||||
            # print('exiting early')
 | 
					            # print(f'{self.name} not in view (exiting early)')
 | 
				
			||||||
            return (
 | 
					            return (
 | 
				
			||||||
 | 
					                False,
 | 
				
			||||||
                (ivl, ivr),
 | 
					                (ivl, ivr),
 | 
				
			||||||
                graphics,
 | 
					                graphics,
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
| 
						 | 
					@ -810,6 +815,7 @@ class Viz(msgspec.Struct):  # , frozen=True):
 | 
				
			||||||
        if not out:
 | 
					        if not out:
 | 
				
			||||||
            log.warning(f'{self.name} failed to render!?')
 | 
					            log.warning(f'{self.name} failed to render!?')
 | 
				
			||||||
            return (
 | 
					            return (
 | 
				
			||||||
 | 
					                False,
 | 
				
			||||||
                (ivl, ivr),
 | 
					                (ivl, ivr),
 | 
				
			||||||
                graphics,
 | 
					                graphics,
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
| 
						 | 
					@ -865,6 +871,7 @@ class Viz(msgspec.Struct):  # , frozen=True):
 | 
				
			||||||
        self._in_ds = r._in_ds
 | 
					        self._in_ds = r._in_ds
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return (
 | 
					        return (
 | 
				
			||||||
 | 
					            True,
 | 
				
			||||||
            (ivl, ivr),
 | 
					            (ivl, ivr),
 | 
				
			||||||
            graphics,
 | 
					            graphics,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
| 
						 | 
					@ -1053,7 +1060,9 @@ class Viz(msgspec.Struct):  # , frozen=True):
 | 
				
			||||||
                l_reset = r_reset - rl_diff
 | 
					                l_reset = r_reset - rl_diff
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                raise RuntimeError(f'Unknown view state {vl} -> {vr}')
 | 
					                log.warning(f'Unknown view state {vl} -> {vr}')
 | 
				
			||||||
 | 
					                # return
 | 
				
			||||||
 | 
					                # raise RuntimeError(f'Unknown view state {vl} -> {vr}')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            # maintain the l->r view distance
 | 
					            # maintain the l->r view distance
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -551,7 +551,7 @@ def graphics_update_cycle(
 | 
				
			||||||
        (liv and do_px_step)
 | 
					        (liv and do_px_step)
 | 
				
			||||||
        or trigger_all
 | 
					        or trigger_all
 | 
				
			||||||
    ):
 | 
					    ):
 | 
				
			||||||
        i_read_range, _ = main_viz.update_graphics()
 | 
					        _, i_read_range, _ = main_viz.update_graphics()
 | 
				
			||||||
        profiler('`Viz.update_graphics()` call')
 | 
					        profiler('`Viz.update_graphics()` call')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        (
 | 
					        (
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -707,7 +707,7 @@ async def open_vlm_displays(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        last_val_sticky.update_from_data(-1, value)
 | 
					        last_val_sticky.update_from_data(-1, value)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        _, vlm_curve = vlm_chart.update_graphics_from_flow(
 | 
					        _, _, vlm_curve = vlm_chart.update_graphics_from_flow(
 | 
				
			||||||
            'volume',
 | 
					            'volume',
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue