From 85537e3f8557a76b8b2ad89edc41848c29622c24 Mon Sep 17 00:00:00 2001 From: blink1073 Date: Sat, 8 Feb 2014 22:12:01 -0600 Subject: [PATCH 1/2] Update the paint tool shape with the viewer image changes --- skimage/viewer/plugins/labelplugin.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/skimage/viewer/plugins/labelplugin.py b/skimage/viewer/plugins/labelplugin.py index b3c289f1..06ba2dd9 100644 --- a/skimage/viewer/plugins/labelplugin.py +++ b/skimage/viewer/plugins/labelplugin.py @@ -43,6 +43,10 @@ class LabelPainter(Plugin): self.paint_tool.label = self._label_widget.index = 1 self.artists.append(self.paint_tool) + def _on_new_image(self, image): + """Update plugin for new images.""" + self.paint_tool.shape = image.shape + def on_enter(self, overlay): pass From c70040c2368125f99c5701861f954c6a1c8e5960 Mon Sep 17 00:00:00 2001 From: blink1073 Date: Sat, 8 Feb 2014 22:12:38 -0600 Subject: [PATCH 2/2] Add a shape property that gracefully accomodates a new image size --- skimage/viewer/canvastools/painttool.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/skimage/viewer/canvastools/painttool.py b/skimage/viewer/canvastools/painttool.py index 7e7dd33a..cc5f9705 100644 --- a/skimage/viewer/canvastools/painttool.py +++ b/skimage/viewer/canvastools/painttool.py @@ -50,8 +50,7 @@ class PaintTool(CanvasToolBase): self.alpha = alpha self.cmap = LABELS_CMAP self._overlay_plot = None - self._shape = overlay_shape - self.overlay = np.zeros(overlay_shape, dtype='uint8') + self.shape = overlay_shape self._cursor = plt.Rectangle((0, 0), 0, 0, **props) self._cursor.set_visible(False) @@ -109,6 +108,19 @@ class PaintTool(CanvasToolBase): self._overlay_plot.set_data(image) self.redraw() + @property + def shape(self): + return self._shape + + @shape.setter + def shape(self, shape): + self._shape = shape + if not self._overlay_plot is None: + self._overlay_plot.set_extent((-0.5, shape[1] + 0.5, + shape[0] + 0.5, -0.5)) + self.radius = self._radius + self.overlay = np.zeros(shape, dtype='uint8') + def _on_key_press(self, event): if event.key == 'enter': self.callback_on_enter(self.geometry)