Only trigger downsampling on manual changes, add a uppx method
							parent
							
								
									d56d1fc4c1
								
							
						
					
					
						commit
						3da081c67a
					
				| 
						 | 
					@ -363,7 +363,6 @@ class ChartView(ViewBox):
 | 
				
			||||||
            # defaultPadding=0.,
 | 
					            # defaultPadding=0.,
 | 
				
			||||||
            **kwargs
 | 
					            **kwargs
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					 | 
				
			||||||
        # for "known y-range style"
 | 
					        # for "known y-range style"
 | 
				
			||||||
        self._static_yrange = static_yrange
 | 
					        self._static_yrange = static_yrange
 | 
				
			||||||
        self._maxmin = None
 | 
					        self._maxmin = None
 | 
				
			||||||
| 
						 | 
					@ -430,7 +429,6 @@ class ChartView(ViewBox):
 | 
				
			||||||
    def maxmin(self, callback: Callable) -> None:
 | 
					    def maxmin(self, callback: Callable) -> None:
 | 
				
			||||||
        self._maxmin = callback
 | 
					        self._maxmin = callback
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    def maybe_downsample_graphics(self):
 | 
					    def maybe_downsample_graphics(self):
 | 
				
			||||||
        for graphic in self._chart._graphics.values():
 | 
					        for graphic in self._chart._graphics.values():
 | 
				
			||||||
            if isinstance(graphic, BarItems):
 | 
					            if isinstance(graphic, BarItems):
 | 
				
			||||||
| 
						 | 
					@ -442,7 +440,8 @@ class ChartView(ViewBox):
 | 
				
			||||||
        axis=None,
 | 
					        axis=None,
 | 
				
			||||||
        relayed_from: ChartView = None,
 | 
					        relayed_from: ChartView = None,
 | 
				
			||||||
    ):
 | 
					    ):
 | 
				
			||||||
        '''Override "center-point" location for scrolling.
 | 
					        '''
 | 
				
			||||||
 | 
					        Override "center-point" location for scrolling.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        This is an override of the ``ViewBox`` method simply changing
 | 
					        This is an override of the ``ViewBox`` method simply changing
 | 
				
			||||||
        the center of the zoom to be the y-axis.
 | 
					        the center of the zoom to be the y-axis.
 | 
				
			||||||
| 
						 | 
					@ -789,7 +788,7 @@ class ChartView(ViewBox):
 | 
				
			||||||
        #   iterate those.
 | 
					        #   iterate those.
 | 
				
			||||||
        # - only register this when certain downsampleable graphics are
 | 
					        # - only register this when certain downsampleable graphics are
 | 
				
			||||||
        #   "added to scene".
 | 
					        #   "added to scene".
 | 
				
			||||||
        vb.sigXRangeChanged.connect(vb.maybe_downsample_graphics)
 | 
					        vb.sigRangeChangedManually.connect(vb.maybe_downsample_graphics)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # mouse wheel doesn't emit XRangeChanged
 | 
					        # mouse wheel doesn't emit XRangeChanged
 | 
				
			||||||
        vb.sigRangeChangedManually.connect(vb._set_yrange)
 | 
					        vb.sigRangeChangedManually.connect(vb._set_yrange)
 | 
				
			||||||
| 
						 | 
					@ -800,3 +799,19 @@ class ChartView(ViewBox):
 | 
				
			||||||
    ) -> None:
 | 
					    ) -> None:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._chart._static_yrange = 'axis'
 | 
					        self._chart._static_yrange = 'axis'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def xs_in_px(self) -> float:
 | 
				
			||||||
 | 
					        '''
 | 
				
			||||||
 | 
					        Return the "number of x units" within a single
 | 
				
			||||||
 | 
					        pixel currently being displayed for relevant
 | 
				
			||||||
 | 
					        graphics items which are our children.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        '''
 | 
				
			||||||
 | 
					        for graphic in self._chart._graphics.values():
 | 
				
			||||||
 | 
					            # if isinstance(graphic, BarItems):
 | 
				
			||||||
 | 
					            xpx = graphic.pixelVectors()[0].x()
 | 
				
			||||||
 | 
					            if xpx:
 | 
				
			||||||
 | 
					                return xpx
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                continue
 | 
				
			||||||
 | 
					        return 1.0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue