Commit dc6f1c9a2520d438a5c2c916465985f10c3a5cb0
1 parent
068c9bba
Exists in
master
and in
26 other branches
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 | 607 | return actors |
608 | 608 | |
609 | 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 | 627 | # def __del__(self): |
627 | 628 | # self.Remove() |
... | ... | @@ -840,25 +841,26 @@ class AngularMeasure(object): |
840 | 841 | return angle |
841 | 842 | |
842 | 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 | 865 | def SetRenderer(self, renderer): |
864 | 866 | if self.point_actor1: | ... | ... |
invesalius/data/viewer_slice.py
... | ... | @@ -154,7 +154,7 @@ class CanvasRendererCTX: |
154 | 154 | self.canvas_renderer = viewer.slice_data.canvas_renderer |
155 | 155 | self._size = self.canvas_renderer.GetSize() |
156 | 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 | 159 | def _init_canvas(self): |
160 | 160 | w, h = self._size |
... | ... | @@ -174,11 +174,11 @@ class CanvasRendererCTX: |
174 | 174 | |
175 | 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 | 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 | 183 | self._im = Image.frombuffer('RGBA', (h, w), self._array, "raw", "RGBA", 0, 1) |
184 | 184 | |
... | ... | @@ -188,11 +188,11 @@ class CanvasRendererCTX: |
188 | 188 | self.mapper.SetInputData(self._cv_image) |
189 | 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 | 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 | 197 | self._im = Image.frombuffer('RGBA', (h, w), self._array, "raw", "RGBA", 0, 1) |
198 | 198 | |
... | ... | @@ -216,31 +216,42 @@ class CanvasRendererCTX: |
216 | 216 | self._size = size |
217 | 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 | 223 | self.image.Clear() |
221 | 224 | gc = wx.GraphicsContext.Create(self.image) |
222 | 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 | 233 | brush = wx.Brush(wx.Colour(0, 255, 0, 128)) |
228 | 234 | gc.SetPen(pen) |
229 | 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 | 255 | gc.Destroy() |
245 | 256 | |
246 | 257 | self.bitmap = self.image.ConvertToBitmap() | ... | ... |