@@ -827,6 +827,11 @@ class VolumeImageViewer {
827827 this . _onBulkAnnotationsFeaturesLoadEnd = this . _onBulkAnnotationsFeaturesLoadEnd . bind ( this )
828828 this . _onBulkAnnotationsFeaturesLoadError = this . _onBulkAnnotationsFeaturesLoadError . bind ( this )
829829
830+ this . segmentOverlay = new Overlay ( {
831+ element : document . createElement ( 'div' ) ,
832+ offset : [ 7 , 5 ]
833+ } )
834+
830835 if ( this [ _options ] . client ) {
831836 this [ _clients ] . default = this [ _options ] . client
832837 } else {
@@ -4497,6 +4502,8 @@ class VolumeImageViewer {
44974502 } )
44984503 }
44994504
4505+ this . paletteColorLookupTable = defaultSegmentStyle . paletteColorLookupTable
4506+
45004507 const segment = {
45014508 segment : new Segment ( {
45024509 uid : segmentUID ,
@@ -4515,10 +4522,6 @@ class VolumeImageViewer {
45154522 pyramid,
45164523 style : { ...defaultSegmentStyle } ,
45174524 defaultStyle : defaultSegmentStyle ,
4518- overlay : new Overlay ( {
4519- element : document . createElement ( 'div' ) ,
4520- offset : [ 5 + 5 * index + 2 , 5 ]
4521- } ) ,
45224525 minStoredValue,
45234526 maxStoredValue,
45244527 minZoomLevel,
@@ -4596,8 +4599,12 @@ class VolumeImageViewer {
45964599 const segment = this [ _segments ] [ segmentUID ]
45974600 this [ _map ] . removeLayer ( segment . layer )
45984601 disposeLayer ( segment . layer )
4599- this [ _map ] . removeOverlay ( segment . overlay )
46004602 delete this [ _segments ] [ segmentUID ]
4603+
4604+ const shouldRemoveOverlay = Object . values ( this [ _segments ] ) . length === 0
4605+ if ( shouldRemoveOverlay ) {
4606+ this [ _map ] . removeOverlay ( this . segmentOverlay )
4607+ }
46014608 }
46024609
46034610 /**
@@ -4672,7 +4679,13 @@ class VolumeImageViewer {
46724679 const segment = this [ _segments ] [ segmentUID ]
46734680 console . info ( `hide segment ${ segmentUID } ` )
46744681 segment . layer . setVisible ( false )
4675- this [ _map ] . removeOverlay ( segment . overlay )
4682+
4683+ const shouldRemoveOverlay = Object . values ( this [ _segments ] ) . every ( seg => {
4684+ return ! seg . layer . isVisible ( )
4685+ } )
4686+ if ( shouldRemoveOverlay ) {
4687+ this [ _map ] . removeOverlay ( this . segmentOverlay )
4688+ }
46764689 }
46774690
46784691 /**
@@ -4700,13 +4713,14 @@ class VolumeImageViewer {
47004713 *
47014714 * @param {Object } segment - The segment for which to show the overlay
47024715 */
4703- addSegmentOverlay ( segment ) {
4704- let title = segment . segment . propertyType . CodeMeaning
4716+ addSegmentOverlay ( ) {
4717+ let title = 'Fractional Segments'
47054718 const padding = Math . round ( ( 16 - title . length ) / 2 )
47064719 title = title . padStart ( title . length + padding )
47074720 title = title . padEnd ( title . length + 2 * padding )
47084721
4709- const overlayElement = segment . overlay . getElement ( )
4722+ const overlayElement = this . segmentOverlay . getElement ( )
4723+
47104724 overlayElement . innerHTML = title
47114725 overlayElement . style = { }
47124726 overlayElement . style . display = 'flex'
@@ -4723,12 +4737,12 @@ class VolumeImageViewer {
47234737
47244738 const canvas = document . createElement ( 'canvas' )
47254739 const context = canvas . getContext ( '2d' )
4726- const height = 30
4740+ const height = 120
47274741 const width = 15
47284742 context . canvas . height = height
47294743 context . canvas . width = width
47304744
4731- const colors = segment . style . paletteColorLookupTable . data
4745+ const colors = this . paletteColorLookupTable . data
47324746 for ( let j = 0 ; j < colors . length ; j ++ ) {
47334747 const color = colors [ colors . length - j - 1 ]
47344748 const r = color [ 0 ]
@@ -4738,20 +4752,25 @@ class VolumeImageViewer {
47384752 context . fillRect ( 0 , height / colors . length * j , width , 1 )
47394753 }
47404754
4741- const upperBound = document . createElement ( 'span ' )
4755+ const upperBound = document . createElement ( 'div ' )
47424756 upperBound . innerHTML = '255'
47434757
4744- const lowerBound = document . createElement ( 'span ' )
4758+ const lowerBound = document . createElement ( 'div ' )
47454759 lowerBound . innerHTML = '0'
47464760
4747- overlayElement . appendChild ( upperBound )
4748- overlayElement . appendChild ( canvas )
4749- overlayElement . appendChild ( lowerBound )
4750-
47514761 const parentElement = overlayElement . parentNode
4752- parentElement . style . display = 'inline'
4762+ parentElement . style . display = 'block'
4763+ parentElement . style . paddingLeft = '5px'
4764+
4765+ while ( parentElement . children . length > 1 ) {
4766+ parentElement . lastChild . remove ( )
4767+ }
4768+
4769+ parentElement . appendChild ( upperBound )
4770+ parentElement . appendChild ( canvas )
4771+ parentElement . appendChild ( lowerBound )
47534772
4754- this [ _map ] . addOverlay ( segment . overlay )
4773+ this [ _map ] . addOverlay ( this . segmentOverlay )
47554774 }
47564775
47574776 /**
@@ -4778,7 +4797,7 @@ class VolumeImageViewer {
47784797 }
47794798
47804799 if ( segment . segmentationType === 'FRACTIONAL' ) {
4781- this . addSegmentOverlay ( segment )
4800+ this . addSegmentOverlay ( )
47824801 }
47834802 }
47844803
0 commit comments