Stop PlotDataItem from always sending full style information to PlotCurveItem / ScatterPlotItem (#1619)
* skip unneded style updates in PlotDataItem * removed unwanted file * obliviated stray debug statement
This commit is contained in:
parent
5fa3901c00
commit
574c2d24f2
@ -167,6 +167,8 @@ class PlotDataItem(GraphicsObject):
|
|||||||
self.scatter.sigHovered.connect(self.scatterHovered)
|
self.scatter.sigHovered.connect(self.scatterHovered)
|
||||||
|
|
||||||
self._viewRangeWasChanged = False
|
self._viewRangeWasChanged = False
|
||||||
|
self._styleWasChanged = True # force initial update
|
||||||
|
|
||||||
self._dataRect = None
|
self._dataRect = None
|
||||||
self._drlLastClip = (0.0, 0.0) # holds last clipping points of dynamic range limiter
|
self._drlLastClip = (0.0, 0.0) # holds last clipping points of dynamic range limiter
|
||||||
#self.clear()
|
#self.clear()
|
||||||
@ -522,13 +524,16 @@ class PlotDataItem(GraphicsObject):
|
|||||||
|
|
||||||
if 'name' in kargs:
|
if 'name' in kargs:
|
||||||
self.opts['name'] = kargs['name']
|
self.opts['name'] = kargs['name']
|
||||||
|
self._styleWasChanged = True
|
||||||
|
|
||||||
if 'connect' in kargs:
|
if 'connect' in kargs:
|
||||||
self.opts['connect'] = kargs['connect']
|
self.opts['connect'] = kargs['connect']
|
||||||
|
self._styleWasChanged = True
|
||||||
|
|
||||||
## if symbol pen/brush are given with no symbol, then assume symbol is 'o'
|
## if symbol pen/brush are given with no previously set symbol, then assume symbol is 'o'
|
||||||
|
|
||||||
if 'symbol' not in kargs and ('symbolPen' in kargs or 'symbolBrush' in kargs or 'symbolSize' in kargs):
|
if 'symbol' not in kargs and ('symbolPen' in kargs or 'symbolBrush' in kargs or 'symbolSize' in kargs):
|
||||||
kargs['symbol'] = 'o'
|
if self.opts['symbol'] is None:
|
||||||
|
kargs['symbol'] = 'o'
|
||||||
|
|
||||||
if 'brush' in kargs:
|
if 'brush' in kargs:
|
||||||
kargs['fillBrush'] = kargs['brush']
|
kargs['fillBrush'] = kargs['brush']
|
||||||
@ -536,6 +541,7 @@ class PlotDataItem(GraphicsObject):
|
|||||||
for k in list(self.opts.keys()):
|
for k in list(self.opts.keys()):
|
||||||
if k in kargs:
|
if k in kargs:
|
||||||
self.opts[k] = kargs[k]
|
self.opts[k] = kargs[k]
|
||||||
|
self._styleWasChanged = True
|
||||||
|
|
||||||
#curveArgs = {}
|
#curveArgs = {}
|
||||||
#for k in ['pen', 'shadowPen', 'fillLevel', 'brush']:
|
#for k in ['pen', 'shadowPen', 'fillLevel', 'brush']:
|
||||||
@ -569,7 +575,8 @@ class PlotDataItem(GraphicsObject):
|
|||||||
self.yDisp = None
|
self.yDisp = None
|
||||||
profiler('set data')
|
profiler('set data')
|
||||||
|
|
||||||
self.updateItems()
|
self.updateItems( update_style = self._styleWasChanged )
|
||||||
|
self._styleWasChanged = False # items have been updated
|
||||||
profiler('update items')
|
profiler('update items')
|
||||||
|
|
||||||
self.informViewBoundsChanged()
|
self.informViewBoundsChanged()
|
||||||
@ -580,33 +587,34 @@ class PlotDataItem(GraphicsObject):
|
|||||||
self.sigPlotChanged.emit(self)
|
self.sigPlotChanged.emit(self)
|
||||||
profiler('emit')
|
profiler('emit')
|
||||||
|
|
||||||
def updateItems(self):
|
def updateItems(self, update_style=False):
|
||||||
curveArgs = {}
|
curveArgs = {}
|
||||||
for k,v in [('pen','pen'), ('shadowPen','shadowPen'), ('fillLevel','fillLevel'), ('fillOutline', 'fillOutline'), ('fillBrush', 'brush'), ('antialias', 'antialias'), ('connect', 'connect'), ('stepMode', 'stepMode')]:
|
|
||||||
curveArgs[v] = self.opts[k]
|
|
||||||
|
|
||||||
scatterArgs = {}
|
scatterArgs = {}
|
||||||
for k,v in [('symbolPen','pen'), ('symbolBrush','brush'), ('symbol','symbol'), ('symbolSize', 'size'), ('data', 'data'), ('pxMode', 'pxMode'), ('antialias', 'antialias')]:
|
if update_style: # repeat style arguments only when changed
|
||||||
if k in self.opts:
|
for k,v in [('pen','pen'), ('shadowPen','shadowPen'), ('fillLevel','fillLevel'), ('fillOutline', 'fillOutline'), ('fillBrush', 'brush'), ('antialias', 'antialias'), ('connect', 'connect'), ('stepMode', 'stepMode')]:
|
||||||
scatterArgs[v] = self.opts[k]
|
if k in self.opts:
|
||||||
|
curveArgs[v] = self.opts[k]
|
||||||
|
|
||||||
|
for k,v in [('symbolPen','pen'), ('symbolBrush','brush'), ('symbol','symbol'), ('symbolSize', 'size'), ('data', 'data'), ('pxMode', 'pxMode'), ('antialias', 'antialias')]:
|
||||||
|
if k in self.opts:
|
||||||
|
scatterArgs[v] = self.opts[k]
|
||||||
|
|
||||||
x,y = self.getData()
|
x,y = self.getData()
|
||||||
#scatterArgs['mask'] = self.dataMask
|
#scatterArgs['mask'] = self.dataMask
|
||||||
|
|
||||||
if curveArgs['pen'] is not None or (curveArgs['brush'] is not None and curveArgs['fillLevel'] is not None):
|
if self.opts['pen'] is not None or (self.opts['fillBrush'] is not None and self.opts['fillLevel'] is not None): # draw if visible...
|
||||||
self.curve.setData(x=x, y=y, **curveArgs)
|
self.curve.setData(x=x, y=y, **curveArgs)
|
||||||
self.curve.show()
|
self.curve.show()
|
||||||
else:
|
else: # ...hide if not.
|
||||||
self.curve.hide()
|
self.curve.hide()
|
||||||
|
|
||||||
if scatterArgs['symbol'] is not None:
|
if self.opts['symbol'] is not None: # draw if visible...
|
||||||
|
|
||||||
## check against `True` too for backwards compatibility
|
## check against `True` too for backwards compatibility
|
||||||
if self.opts.get('stepMode', False) in ("center", True):
|
if self.opts.get('stepMode', False) in ("center", True):
|
||||||
x = 0.5 * (x[:-1] + x[1:])
|
x = 0.5 * (x[:-1] + x[1:])
|
||||||
self.scatter.setData(x=x, y=y, **scatterArgs)
|
self.scatter.setData(x=x, y=y, **scatterArgs)
|
||||||
self.scatter.show()
|
self.scatter.show()
|
||||||
else:
|
else: # ...hide if not.
|
||||||
self.scatter.hide()
|
self.scatter.hide()
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user