Commit 5cc84dd2df654ff86432b3e142c4ab52fdedfcbb

Authored by Thiago Franco de Moraes
1 parent 1e33187c
Exists in ff_mask

Split the the fill and remove in 2 interaction styles

invesalius/constants.py
... ... @@ -501,6 +501,7 @@ SLICE_STATE_EDITOR = 3008
501 501 SLICE_STATE_WATERSHED = 3009
502 502 SLICE_STATE_REORIENT = 3010
503 503 SLICE_STATE_MASK_FFILL = 3011
  504 +SLICE_STATE_REMOVE_MASK_PARTS = 3012
504 505  
505 506 VOLUME_STATE_SEED = 2001
506 507 # STATE_LINEAR_MEASURE = 3001
... ... @@ -519,6 +520,7 @@ SLICE_STYLES.append(STATE_DEFAULT)
519 520 SLICE_STYLES.append(SLICE_STATE_EDITOR)
520 521 SLICE_STYLES.append(SLICE_STATE_WATERSHED)
521 522 SLICE_STYLES.append(SLICE_STATE_MASK_FFILL)
  523 +SLICE_STYLES.append(SLICE_STATE_REMOVE_MASK_PARTS)
522 524  
523 525 VOLUME_STYLES = TOOL_STATES + [VOLUME_STATE_SEED, STATE_MEASURE_DISTANCE,
524 526 STATE_MEASURE_ANGLE]
... ... @@ -528,6 +530,7 @@ VOLUME_STYLES.append(STATE_DEFAULT)
528 530 STYLE_LEVEL = {SLICE_STATE_EDITOR: 1,
529 531 SLICE_STATE_WATERSHED: 1,
530 532 SLICE_STATE_MASK_FFILL: 2,
  533 + SLICE_STATE_REMOVE_MASK_PARTS: 2,
531 534 SLICE_STATE_CROSS: 2,
532 535 SLICE_STATE_SCROLL: 2,
533 536 SLICE_STATE_REORIENT: 2,
... ...
invesalius/data/styles.py
... ... @@ -1774,6 +1774,10 @@ class FloodFillMaskInteractorStyle(DefaultInteractorStyle):
1774 1774 self.config = FFillConfig()
1775 1775 self.dlg_ffill = None
1776 1776  
  1777 + self.t0 = 0
  1778 + self.t1 = 1
  1779 + self.fill_value = 254
  1780 +
1777 1781 self.AddObserver("LeftButtonPressEvent", self.OnFFClick)
1778 1782  
1779 1783 def SetUp(self):
... ... @@ -1831,16 +1835,7 @@ class FloodFillMaskInteractorStyle(DefaultInteractorStyle):
1831 1835 mask = self.viewer.slice_.current_mask.matrix[1:, 1:, 1:]
1832 1836 cp_mask = mask
1833 1837  
1834   - if iren.GetControlKey():
1835   - t0 = 254
1836   - t1 = 255
1837   - fill = 1
1838   - else:
1839   - t0 = 0
1840   - t1 = 1
1841   - fill = 254
1842   -
1843   - floodfill.floodfill_threshold(cp_mask, [[x, y, z]], t0, t1, fill, bstruct, mask)
  1838 + floodfill.floodfill_threshold(cp_mask, [[x, y, z]], self.t0, self.t1, self.fill_value, bstruct, mask)
1844 1839  
1845 1840 self.viewer.slice_.buffer_slices['AXIAL'].discard_mask()
1846 1841 self.viewer.slice_.buffer_slices['CORONAL'].discard_mask()
... ... @@ -1891,6 +1886,14 @@ class FloodFillMaskInteractorStyle(DefaultInteractorStyle):
1891 1886 return sagital, coronal, axial
1892 1887  
1893 1888  
  1889 +class RemoveMaskPartsInteractorStyle(FloodFillMaskInteractorStyle):
  1890 + def __init__(self, viewer):
  1891 + FloodFillMaskInteractorStyle.__init__(self, viewer)
  1892 + self.t0 = 254
  1893 + self.t1 = 255
  1894 + self.fill_value = 1
  1895 +
  1896 +
1894 1897 def get_style(style):
1895 1898 STYLES = {
1896 1899 const.STATE_DEFAULT: DefaultInteractorStyle,
... ... @@ -1907,6 +1910,7 @@ def get_style(style):
1907 1910 const.SLICE_STATE_WATERSHED: WaterShedInteractorStyle,
1908 1911 const.SLICE_STATE_REORIENT: ReorientImageInteractorStyle,
1909 1912 const.SLICE_STATE_MASK_FFILL: FloodFillMaskInteractorStyle,
  1913 + const.SLICE_STATE_REMOVE_MASK_PARTS: RemoveMaskPartsInteractorStyle,
1910 1914 }
1911 1915 return STYLES[style]
1912 1916  
... ...
invesalius/gui/frame.py
... ... @@ -569,7 +569,7 @@ class Frame(wx.Frame):
569 569 Publisher.sendMessage('Enable style', const.SLICE_STATE_MASK_FFILL)
570 570  
571 571 def OnRemoveMaskParts(self):
572   - Publisher.sendMessage('Enable style', const.SLICE_STATE_MASK_FFILL)
  572 + Publisher.sendMessage('Enable style', const.SLICE_STATE_REMOVE_MASK_PARTS)
573 573  
574 574 # ------------------------------------------------------------------
575 575 # ------------------------------------------------------------------
... ...