Skip to content

Commit 90a6526

Browse files
committed
Add image label to stretch and cuts
1 parent ede8b0c commit 90a6526

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

src/astro_image_display_api/dummy_viewer.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ class ViewportInfo:
2727
fov: float | Quantity | None = None
2828
wcs: WCS | None = None
2929
largest_dimension: int | None = None
30+
stretch: BaseStretch | None = None
31+
cuts: BaseInterval | tuple[numbers.Real, numbers.Real] | None = None
3032

3133
@dataclass
3234
class ImageViewer:
@@ -42,8 +44,6 @@ class ImageViewer:
4244
zoom_level: float = 1
4345
_cursor: str = ImageViewerInterface.ALLOWED_CURSOR_LOCATIONS[0]
4446
marker: Any = "marker"
45-
_cuts: BaseInterval | tuple[numbers.Real, numbers.Real] = AsymmetricPercentileInterval(upper_percentile=95)
46-
_stretch: BaseStretch = LinearStretch
4747
# viewer: Any
4848

4949
# Allowed locations for cursor display
@@ -70,24 +70,37 @@ def __post_init__(self):
7070
self._images[None].fov = None
7171
self._images[None].wcs = None
7272

73-
def get_stretch(self) -> BaseStretch:
74-
return self._stretch
73+
def get_stretch(self, image_label: str | None = None) -> BaseStretch:
74+
image_label = self._resolve_image_label(image_label)
75+
if image_label not in self._images:
76+
raise ValueError(f"Image label '{image_label}' not found. Please load an image first.")
77+
return self._images[image_label].stretch
7578

76-
def set_stretch(self, value: BaseStretch) -> None:
79+
def set_stretch(self, value: BaseStretch, image_label: str | None = None) -> None:
7780
if not isinstance(value, BaseStretch):
7881
raise ValueError(f"Stretch option {value} is not valid. Must be an Astropy.visualization Stretch object.")
79-
self._stretch = value
82+
image_label = self._resolve_image_label(image_label)
83+
if image_label not in self._images:
84+
raise ValueError(f"Image label '{image_label}' not found. Please load an image first.")
85+
self._images[image_label].stretch = value
8086

81-
def get_cuts(self) -> tuple:
82-
return self._cuts
87+
def get_cuts(self, image_label: str | None = None) -> tuple:
88+
image_label = self._resolve_image_label(image_label)
89+
if image_label not in self._images:
90+
raise ValueError(f"Image label '{image_label}' not found. Please load an image first.")
91+
return self._images[image_label].cuts
8392

84-
def set_cuts(self, value: tuple[numbers.Real, numbers.Real] | BaseInterval) -> None:
93+
def set_cuts(self, value: tuple[numbers.Real, numbers.Real] | BaseInterval, image_label: str | None = None) -> None:
8594
if isinstance(value, tuple) and len(value) == 2:
8695
self._cuts = ManualInterval(value[0], value[1])
8796
elif isinstance(value, BaseInterval):
8897
self._cuts = value
8998
else:
9099
raise ValueError("Cuts must be an Astropy.visualization Interval object or a tuple of two values.")
100+
image_label = self._resolve_image_label(image_label)
101+
if image_label not in self._images:
102+
raise ValueError(f"Image label '{image_label}' not found. Please load an image first.")
103+
self._images[image_label].cuts = self._cuts
91104

92105
@property
93106
def cursor(self) -> str:

0 commit comments

Comments
 (0)