1
+ from typing import Tuple
2
+
1
3
from qtpy import QtWidgets , QtCore , QtGui
2
- from . import dicom_data
4
+
5
+ from pydiq .dicom_data import DicomData , AXIAL , ALLOWED_PLANES
3
6
4
7
5
8
class TrackingLabel (QtWidgets .QLabel ):
@@ -70,7 +73,7 @@ def __init__(self, parent, **kwargs):
70
73
self ._scaled_image = None
71
74
self ._low_hu = kwargs .get ("low_hu" , - 1000 )
72
75
self ._high_hu = kwargs .get ("high_hu" , 3000 )
73
- self ._plane = kwargs .get ("plane" , dicom_data . AXIAL )
76
+ self ._plane = kwargs .get ("plane" , AXIAL )
74
77
self ._slice = kwargs .get ("slice" , 0 )
75
78
self ._color_table = kwargs .get ("color_table" , [QtGui .qRgb (i , i , i ) for i in range (256 )])
76
79
@@ -106,35 +109,24 @@ def mouse_xyz(self):
106
109
def mouse_ij (self ):
107
110
pass
108
111
109
- def get_coordinates (self , i , j ):
110
- """
111
-
112
- :type i: float
113
- :type j: float
114
- :return: tuple(float)
115
- """
112
+ def get_coordinates (self , i : float , j : float ) -> Tuple [float , float , float ]:
116
113
x = self .data .image_position [0 ] + self .pixel_spacing [0 ] * i
117
114
y = self .image_position [1 ] + self .pixel_spacing [1 ] * j
118
115
z = self .image_position [2 ]
119
116
return x , y , z
120
117
121
118
@property
122
- def zoom_level (self ):
119
+ def zoom_level (self ) -> int :
123
120
"""Zoom level.
124
121
125
- :rtype: int
126
-
127
122
An integer value useful for the GUI
128
123
0 = 1:1, positive values = zoom in, negative values = zoom out
129
124
"""
130
125
return self ._zoom_level
131
126
132
127
@property
133
- def zoom_factor (self ):
134
- """Real size of data voxel in screen pixels.
135
-
136
- :rtype: float
137
- """
128
+ def zoom_factor (self ) -> float :
129
+ """Real size of data voxel in screen pixels."""
138
130
if self ._zoom_level > 0 :
139
131
return self ._zoom_level + 1
140
132
else :
@@ -204,26 +196,17 @@ def update_pixmap(self):
204
196
self .setText ("No image." )
205
197
206
198
@property
207
- def data (self ):
208
- """
209
- :rtype: dicom_data.DicomData
210
- """
199
+ def data (self ) -> DicomData :
211
200
return self ._data
212
201
213
202
@data .setter
214
- def data (self , d ):
215
- """
216
- :type d: dicom_data.DicomData
217
- """
203
+ def data (self , d : DicomData ):
218
204
if self ._data != d :
219
205
self ._data = d
220
206
self .data_changed .emit ()
221
207
222
208
@property
223
- def window_center (self ):
224
- """
225
- :rtype: float
226
- """
209
+ def window_center (self ) -> float :
227
210
return (self ._high_hu + self ._low_hu ) / 2
228
211
229
212
@window_center .setter
@@ -235,14 +218,11 @@ def window_center(self, value):
235
218
self .calibration_changed .emit ()
236
219
237
220
@property
238
- def window_width (self ):
239
- """
240
- :rtype: float
241
- """
221
+ def window_width (self ) -> float :
242
222
return self ._high_hu - self ._low_hu
243
223
244
224
@window_width .setter
245
- def window_width (self , value ):
225
+ def window_width (self , value : float ):
246
226
if value < 0 :
247
227
value = 0
248
228
original = self .window_width
@@ -252,31 +232,31 @@ def window_width(self, value):
252
232
self .calibration_changed .emit ()
253
233
254
234
@property
255
- def plane (self ):
235
+ def plane (self ) -> int :
256
236
return self ._plane
257
237
258
238
@plane .setter
259
- def plane (self , value ):
239
+ def plane (self , value : int ):
260
240
if value != self ._plane :
261
- if value not in [dicom_data . ALLOWED_PLANES ]:
241
+ if value not in [ALLOWED_PLANES ]:
262
242
raise ValueError ("Invalid plane identificator" )
263
243
self ._plane = value
264
244
self .plane_changed .emit ()
265
245
self .data_selection_changed .emit ()
266
246
267
247
@property
268
- def slice (self ):
248
+ def slice (self ) -> int :
269
249
return self ._slice
270
250
271
251
@slice .setter
272
- def slice (self , n ):
252
+ def slice (self , n : int ):
273
253
if n != self ._slice :
274
254
self ._slice = n
275
255
self .slice_changed .emit ()
276
256
self .data_selection_changed .emit ()
277
257
278
258
@property
279
- def slice_count (self ):
259
+ def slice_count (self ) -> int :
280
260
if not self ._data :
281
261
return 0
282
262
else :
0 commit comments