diff options
Diffstat (limited to 'silx/gui/plot/items/image.py')
-rw-r--r-- | silx/gui/plot/items/image.py | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/silx/gui/plot/items/image.py b/silx/gui/plot/items/image.py index d74f4d3..44cb70f 100644 --- a/silx/gui/plot/items/image.py +++ b/silx/gui/plot/items/image.py @@ -42,6 +42,7 @@ import numpy from ....utils.proxy import docstring from .core import (Item, LabelsMixIn, DraggableMixIn, ColormapMixIn, AlphaMixIn, ItemChangedType) +from ._pick import PickingResult _logger = logging.getLogger(__name__) @@ -142,6 +143,25 @@ class ImageBase(Item, LabelsMixIn, DraggableMixIn, AlphaMixIn): plot._invalidateDataRange() super(ImageBase, self).setVisible(visible) + @docstring(Item) + def pick(self, x, y): + if super(ImageBase, self).pick(x, y) is not None: + plot = self.getPlot() + if plot is None: + return None + + dataPos = plot.pixelToData(x, y) + if dataPos is None: + return None + + origin = self.getOrigin() + scale = self.getScale() + column = int((dataPos[0] - origin[0]) / float(scale[0])) + row = int((dataPos[1] - origin[1]) / float(scale[1])) + return PickingResult(self, ([row], [column])) + + return None + def _isPlotLinear(self, plot): """Return True if plot only uses linear scale for both of x and y axes.""" @@ -282,12 +302,9 @@ class ImageData(ImageBase, ColormapMixIn): return None # No data to display return backend.addImage(dataToUse, - legend=self.getLegend(), origin=self.getOrigin(), scale=self.getScale(), z=self.getZValue(), - selectable=self.isSelectable(), - draggable=self.isDraggable(), colormap=self.getColormap(), alpha=self.getAlpha()) @@ -415,12 +432,9 @@ class ImageRgba(ImageBase): return None # No data to display return backend.addImage(data, - legend=self.getLegend(), origin=self.getOrigin(), scale=self.getScale(), z=self.getZValue(), - selectable=self.isSelectable(), - draggable=self.isDraggable(), colormap=None, alpha=self.getAlpha()) |