Commit dc6f1c9a2520d438a5c2c916465985f10c3a5cb0
1 parent
068c9bba
Exists in
master
Testings
Showing
2 changed files
with
67 additions
and
54 deletions
Show diff stats
invesalius/data/measures.py
@@ -607,21 +607,22 @@ class LinearMeasure(object): | @@ -607,21 +607,22 @@ class LinearMeasure(object): | ||
607 | return actors | 607 | return actors |
608 | 608 | ||
609 | def Remove(self): | 609 | def Remove(self): |
610 | - if self.point_actor1: | ||
611 | - self.renderer.RemoveActor(self.point_actor1) | ||
612 | - del self.point_actor1 | 610 | + pass |
611 | + # if self.point_actor1: | ||
612 | + # self.renderer.RemoveActor(self.point_actor1) | ||
613 | + # del self.point_actor1 | ||
613 | 614 | ||
614 | - if self.point_actor2: | ||
615 | - self.renderer.RemoveActor(self.point_actor2) | ||
616 | - del self.point_actor2 | 615 | + # if self.point_actor2: |
616 | + # self.renderer.RemoveActor(self.point_actor2) | ||
617 | + # del self.point_actor2 | ||
617 | 618 | ||
618 | - if self.line_actor: | ||
619 | - self.renderer.RemoveActor(self.line_actor) | ||
620 | - del self.line_actor | 619 | + # if self.line_actor: |
620 | + # self.renderer.RemoveActor(self.line_actor) | ||
621 | + # del self.line_actor | ||
621 | 622 | ||
622 | - if self.text_actor: | ||
623 | - self.renderer.RemoveActor(self.text_actor) | ||
624 | - del self.text_actor | 623 | + # if self.text_actor: |
624 | + # self.renderer.RemoveActor(self.text_actor) | ||
625 | + # del self.text_actor | ||
625 | 626 | ||
626 | # def __del__(self): | 627 | # def __del__(self): |
627 | # self.Remove() | 628 | # self.Remove() |
@@ -840,25 +841,26 @@ class AngularMeasure(object): | @@ -840,25 +841,26 @@ class AngularMeasure(object): | ||
840 | return angle | 841 | return angle |
841 | 842 | ||
842 | def Remove(self): | 843 | def Remove(self): |
843 | - if self.point_actor1: | ||
844 | - self.renderer.RemoveActor(self.point_actor1) | ||
845 | - del self.point_actor1 | ||
846 | - | ||
847 | - if self.point_actor2: | ||
848 | - self.renderer.RemoveActor(self.point_actor2) | ||
849 | - del self.point_actor2 | ||
850 | - | ||
851 | - if self.point_actor3: | ||
852 | - self.renderer.RemoveActor(self.point_actor3) | ||
853 | - del self.point_actor3 | ||
854 | - | ||
855 | - if self.line_actor: | ||
856 | - self.renderer.RemoveActor(self.line_actor) | ||
857 | - del self.line_actor | ||
858 | - | ||
859 | - if self.text_actor: | ||
860 | - self.renderer.RemoveActor(self.text_actor) | ||
861 | - del self.text_actor | 844 | + pass |
845 | + # if self.point_actor1: | ||
846 | + # self.renderer.RemoveActor(self.point_actor1) | ||
847 | + # del self.point_actor1 | ||
848 | + | ||
849 | + # if self.point_actor2: | ||
850 | + # self.renderer.RemoveActor(self.point_actor2) | ||
851 | + # del self.point_actor2 | ||
852 | + | ||
853 | + # if self.point_actor3: | ||
854 | + # self.renderer.RemoveActor(self.point_actor3) | ||
855 | + # del self.point_actor3 | ||
856 | + | ||
857 | + # if self.line_actor: | ||
858 | + # self.renderer.RemoveActor(self.line_actor) | ||
859 | + # del self.line_actor | ||
860 | + | ||
861 | + # if self.text_actor: | ||
862 | + # self.renderer.RemoveActor(self.text_actor) | ||
863 | + # del self.text_actor | ||
862 | 864 | ||
863 | def SetRenderer(self, renderer): | 865 | def SetRenderer(self, renderer): |
864 | if self.point_actor1: | 866 | if self.point_actor1: |
invesalius/data/viewer_slice.py
@@ -154,7 +154,7 @@ class CanvasRendererCTX: | @@ -154,7 +154,7 @@ class CanvasRendererCTX: | ||
154 | self.canvas_renderer = viewer.slice_data.canvas_renderer | 154 | self.canvas_renderer = viewer.slice_data.canvas_renderer |
155 | self._size = self.canvas_renderer.GetSize() | 155 | self._size = self.canvas_renderer.GetSize() |
156 | self._init_canvas() | 156 | self._init_canvas() |
157 | - viewer.slice_data.renderer.AddObserver("StartEvent", self.OnPaint2) | 157 | + viewer.slice_data.renderer.AddObserver("StartEvent", self.OnPaint) |
158 | 158 | ||
159 | def _init_canvas(self): | 159 | def _init_canvas(self): |
160 | w, h = self._size | 160 | w, h = self._size |
@@ -174,11 +174,11 @@ class CanvasRendererCTX: | @@ -174,11 +174,11 @@ class CanvasRendererCTX: | ||
174 | 174 | ||
175 | self.canvas_renderer.AddActor2D(self.actor) | 175 | self.canvas_renderer.AddActor2D(self.actor) |
176 | 176 | ||
177 | - rgb = np.zeros((h, w, 3), dtype=np.uint8) | ||
178 | - alpha = np.zeros((h, w, 1), dtype=np.uint8) | 177 | + self.rgb = np.zeros((h, w, 3), dtype=np.uint8) |
178 | + self.alpha = np.zeros((h, w, 1), dtype=np.uint8) | ||
179 | 179 | ||
180 | self.bitmap = wx.EmptyBitmapRGBA(w, h) | 180 | self.bitmap = wx.EmptyBitmapRGBA(w, h) |
181 | - self.image = wx.ImageFromBuffer(w, h, rgb, alpha) | 181 | + self.image = wx.ImageFromBuffer(w, h, self.rgb, self.alpha) |
182 | 182 | ||
183 | self._im = Image.frombuffer('RGBA', (h, w), self._array, "raw", "RGBA", 0, 1) | 183 | self._im = Image.frombuffer('RGBA', (h, w), self._array, "raw", "RGBA", 0, 1) |
184 | 184 | ||
@@ -188,11 +188,11 @@ class CanvasRendererCTX: | @@ -188,11 +188,11 @@ class CanvasRendererCTX: | ||
188 | self.mapper.SetInputData(self._cv_image) | 188 | self.mapper.SetInputData(self._cv_image) |
189 | self.mapper.Update() | 189 | self.mapper.Update() |
190 | 190 | ||
191 | - rgb = np.zeros((h, w, 3), dtype=np.uint8) | ||
192 | - alpha = np.zeros((h, w, 1), dtype=np.uint8) | 191 | + self.rgb = np.zeros((h, w, 3), dtype=np.uint8) |
192 | + self.alpha = np.zeros((h, w, 1), dtype=np.uint8) | ||
193 | 193 | ||
194 | self.bitmap = wx.EmptyBitmapRGBA(w, h) | 194 | self.bitmap = wx.EmptyBitmapRGBA(w, h) |
195 | - self.image = wx.ImageFromBuffer(w, h, rgb, alpha) | 195 | + self.image = wx.ImageFromBuffer(w, h, self.rgb, self.alpha) |
196 | 196 | ||
197 | self._im = Image.frombuffer('RGBA', (h, w), self._array, "raw", "RGBA", 0, 1) | 197 | self._im = Image.frombuffer('RGBA', (h, w), self._array, "raw", "RGBA", 0, 1) |
198 | 198 | ||
@@ -216,31 +216,42 @@ class CanvasRendererCTX: | @@ -216,31 +216,42 @@ class CanvasRendererCTX: | ||
216 | self._size = size | 216 | self._size = size |
217 | self._resize_canvas(w, h) | 217 | self._resize_canvas(w, h) |
218 | 218 | ||
219 | + coord = vtk.vtkCoordinate() | ||
219 | 220 | ||
221 | + self.image.SetDataBuffer(self.rgb) | ||
222 | + self.image.SetAlphaBuffer(self.alpha) | ||
220 | self.image.Clear() | 223 | self.image.Clear() |
221 | gc = wx.GraphicsContext.Create(self.image) | 224 | gc = wx.GraphicsContext.Create(self.image) |
222 | gc.SetAntialiasMode(0) | 225 | gc.SetAntialiasMode(0) |
223 | - # memorydc = wx.MemoryDC(self.bitmap) | ||
224 | - # memorydc.SelectObject(self.bitmap) | ||
225 | 226 | ||
226 | - pen = wx.Pen(wx.Colour(255, 0, 0, 128), 1, wx.SOLID) | 227 | + font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) |
228 | + font.SetWeight(wx.BOLD) | ||
229 | + font = gc.CreateFont(font, (0, 0, 255)) | ||
230 | + gc.SetFont(font) | ||
231 | + | ||
232 | + pen = wx.Pen(wx.Colour(255, 0, 0, 128), 2, wx.SOLID) | ||
227 | brush = wx.Brush(wx.Colour(0, 255, 0, 128)) | 233 | brush = wx.Brush(wx.Colour(0, 255, 0, 128)) |
228 | gc.SetPen(pen) | 234 | gc.SetPen(pen) |
229 | gc.SetBrush(brush) | 235 | gc.SetBrush(brush) |
236 | + gc.Scale(1, -1) | ||
237 | + | ||
238 | + for (m, mr) in self.viewer.measures.get(self.viewer.orientation, self.viewer.slice_data.number): | ||
239 | + lines = [] | ||
240 | + for p in m.points: | ||
241 | + coord.SetValue(p) | ||
242 | + cx, cy = coord.GetComputedDisplayValue(self.viewer.slice_data.renderer) | ||
243 | + cy = -cy | ||
244 | + lines.append((cx, cy)) | ||
245 | + path = gc.CreatePath() | ||
246 | + path.AddArc(cx, cy, 5, 0, np.pi * 2) | ||
247 | + gc.StrokePath(path) | ||
248 | + gc.FillPath(path) | ||
249 | + | ||
250 | + if len(lines) > 1: | ||
251 | + gc.DrawLines(lines) | ||
252 | + txt = u"%.3f" % m.value | ||
253 | + gc.DrawText(txt, *lines[0]) | ||
230 | 254 | ||
231 | - | ||
232 | - path = gc.CreatePath() | ||
233 | - path.AddArc(w/2.0, h/2.0, self.viewer.slice_data.number, 0, np.pi * 2) | ||
234 | - gc.StrokePath(path) | ||
235 | - gc.FillPath(path) | ||
236 | - # self.memorydc.Clear() | ||
237 | - # self.memorydc.BeginDrawing() | ||
238 | - # gc.DrawCircle(100, 100, self.viewer.slice_data.number * 5) | ||
239 | - # memorydc.DrawCircle(500, 500, 500) | ||
240 | - # memorydc.DrawRectangle(0, 0, w, h) | ||
241 | - # # self.memorydc.EndDrawing() | ||
242 | - # memorydc.SelectObject(wx.NullBitmap) | ||
243 | - # # self.bitmap.CopyToBuffer(self._array, wx.BitmapBufferFormat_RGBA) | ||
244 | gc.Destroy() | 255 | gc.Destroy() |
245 | 256 | ||
246 | self.bitmap = self.image.ConvertToBitmap() | 257 | self.bitmap = self.image.ConvertToBitmap() |