Coverage for python/lsst/afw/display/virtualDevice.py : 87%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1#
2# LSST Data Management System
3# Copyright 2008, 2009, 2010, 2015 LSST Corporation.
4#
5# This product includes software developed by the
6# LSST Project (http://www.lsst.org/).
7#
8# This program is free software: you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation, either version 3 of the License, or
11# (at your option) any later version.
12#
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17#
18# You should have received a copy of the LSST License Statement and
19# the GNU General Public License along with this program. If not,
20# see <http://www.lsstcorp.org/LegalNotices/>.
21#
24class DisplayImpl:
25 """Back-end for display objects.
27 Parameters
28 ----------
29 display
30 The display object that we're providing the implementation for
31 verbose : `bool`
32 be chatty?
33 """
34 def __init__(self, display, verbose=False):
35 self.display = display
36 self.verbose = verbose
38 def __del__(self):
39 self._close()
41 def _close(self):
42 """Close the display, cleaning up any allocated resources
43 """
44 if hasattr(self, "verbose") and self.verbose and hasattr(self, "display"):
45 print("virtual[%s]._close()" % (self.frame))
47 def _buffer(self, enable=True):
48 """Enable or disable buffering of writes to the display
50 Parameters
51 ----------
52 enable : `bool`
53 `True` or `False`, as appropriate
54 """
55 if self.verbose: 55 ↛ exitline 55 didn't return from function '_buffer', because the condition on line 55 was never false
56 print("virtual[%s]._buffer(%s)" % (self.frame, enable))
58 def _dot(self, symb, c, r, size, ctype, *args, **kwargs):
59 """Draw a symbol at (c, r)
61 Parameters
62 ----------
63 symb
64 The desired symbol. See `dot` for details
65 c : `float`
66 (x) column position
67 r : `float`
68 (y) row position
69 size : `int`
70 Size of symbol, in pixels
71 ctype : `str`
72 The desired color, either e.g. `lsst.afw.display.RED` or a color name known to X11
73 *args
74 Extra arguments to backend
75 **kwargs
76 Extra keyword arguments to backend
77 """
78 if self.verbose:
79 print("virtual[%s]._dot('%s', %.2f, %.2f, size=%g, ctype=%s, %s, %s)" %
80 (self.frame, symb, c, r, size, ctype, args, kwargs))
82 def _drawLines(self, points, ctype):
83 """Draw line defined by the list points
85 Parameters
86 ----------
87 points : `list` of `tuple` of `float`
88 A list of 0-indexed positions [(x, y), (x, y), ...]
89 ctype : `str`
90 The desired color, either e.g. `lsst.afw.display.RED` or a color name known to X11
91 """
92 if self.verbose: 92 ↛ exitline 92 didn't return from function '_drawLines', because the condition on line 92 was never false
93 print("virtual[%s]._drawLines(%s, ctype=%s)" %
94 (self.frame, points, ctype))
96 def _erase(self):
97 """Erase all glyphs drawn on display
98 """
99 if self.verbose:
100 print("virtual[%s]._erase()" % (self.frame))
102 def _flush(self):
103 """Flush any I/O buffers
104 """
105 if self.verbose: 105 ↛ exitline 105 didn't return from function '_flush', because the condition on line 105 was never false
106 print("virtual[%s]._flush()" % self.frame)
108 def _setCallback(self, what, func):
109 if self.verbose > 1: 109 ↛ 110line 109 didn't jump to line 110, because the condition on line 109 was never true
110 print("setCallback %s -> %s" % (what, func))
112 def _getEvent(self):
113 """Return an event generated by a keypress or mouse click
114 """
115 from .interface import Event
116 ev = Event("q")
118 if self.verbose: 118 ↛ 121line 118 didn't jump to line 121, because the condition on line 118 was never false
119 print("virtual[%s]._getEvent() -> %s" % (self.frame, ev))
121 return ev
123 def _getMaskTransparency(self):
124 """Return the mask transparency for a display
125 """
126 if self.verbose:
127 print("virtual[%s]._getMaskTransparency()" % self.frame)
129 def _mtv(self, image, wcs=None, mask=None, title=""):
130 """Display an image and maybe a mask overlay on a display
132 Parameters
133 ----------
134 image : `lsst.afw.image.Image`
135 `~lsst.afw.image.Image` to display
136 mask : `lsst.afw.image.Mask`
137 `~lsst.afw.image.Mask` to display
138 wcs : `lsst.afw.geom.SkyWcs`
139 A Wcs to associate with data
140 title : `str`
141 Name to display with the data
142 """
143 if self.verbose:
144 print("virtual[%s]._mtv(image=%s, mask=%s, wcs=%s, title=\"%s\")" %
145 (self.frame, "Image" if image else None,
146 "Mask" if mask else None, "Wcs" if wcs else None, title))
148 def _setImageColormap(self, cmap):
149 """Set the desired colormap
151 Parameters
152 ----------
153 cmap : `str`
154 the name of a colormap (e.g. "gray") or a backend-specific object
155 """
156 if self.verbose:
157 print("virtual[%s]._setImageColormap(cmap=\"%s\")" % (self.frame, cmap))
159 def _setMaskTransparency(self, transparency, maskplane):
160 """Set the transparency of a maskplane
162 Parameters
163 ----------
164 transparency : `float`
165 The desired transparency, in the range [0, 100]
166 maskplane
167 The maskplane to set (None: all)
168 """
169 if self.verbose:
170 print("virtual[%s]._setMaskTransparency(%g, maskplane=\"%s\")" %
171 (self.frame, transparency, maskplane))
173 def _scale(self, algorithm, min, max, *args, unit=None, **kwargs):
174 """Set the scaling from DN to displayed pixels
176 Parameters
177 ----------
178 algorithm
179 Scaling algorithm (e.g. linear)
180 min
181 The minimum value of the stretch (or "zscale" or "minmax")
182 max
183 The maximum value of the stretch
184 unit
185 Units for min and max (e.g. Percent, Absolute, Sigma)
186 *args
187 Optional arguments to the backend
188 **kwargs
189 Optional keyword arguments to the backend
190 """
191 if self.verbose: 191 ↛ exitline 191 didn't return from function '_scale', because the condition on line 191 was never false
192 print("virtual[%s]._scale(%s, %s, %s, %s, %s, %s)" % (self.frame, algorithm,
193 min, max, unit, args, kwargs))
195 def _show(self):
196 """Show the requested display
197 """
198 if self.verbose: 198 ↛ exitline 198 didn't return from function '_show', because the condition on line 198 was never false
199 print("virtual[%s]._show()" % self.frame)
201 def _pan(self, r, c):
202 """Pan to a row and column
204 Parameters
205 ----------
206 c : `float`
207 Desired column (x) position
208 r : `float`
209 Desired row (y) position
210 """
211 if self.verbose:
212 print("virtual[%s]._pan(%.2f, %.2f)" % (self.frame, r, c))
214 def _zoom(self, zoomfac):
215 """Set the zoom
217 Parameters
218 ----------
219 zoomfac : `float`
220 Zoom factor to use
221 """
222 if self.verbose:
223 print("virtual[%s]._zoom(%g)" % (self.frame, zoomfac))