11import React , { useState } from "react" ;
22import { Niivue , DRAG_MODE , cmapper } from "@niivue/niivue" ;
33import BrowserOnly from "@docusaurus/BrowserOnly" ;
4+ import { useColorMode } from "@docusaurus/theme-common" ;
45
56const trackList = [
67 {
@@ -296,14 +297,19 @@ export const PathwaysNiivueCanvas = () => (
296297 const niivue_render = React . useRef ( null ) ;
297298 const niivue_slice = React . useRef ( null ) ;
298299
300+ const { colorMode } = useColorMode ( ) ;
301+ const isDark = colorMode === 'dark' ;
302+ const backColor = isDark ? [ 0 , 0 , 0 , 1 ] : [ 1 , 1 , 1 , 1 ] ;
303+ const imageColormap = isDark ? 'gray' : 'whiteBackgroundGray' ;
304+
299305 React . useEffect ( ( ) => {
300306 async function loadImages ( ) {
301307 niivue_slice . current = new Niivue ( { logLevel : 'debug' ,
302- backColor : [ 1 , 1 , 1 , 1 ] ,
308+ backColor : backColor ,
303309 crosshairWidth : 1 ,
304310 isColorbar : false } ) ;
305311 niivue_render . current = new Niivue ( { logLevel : 'debug' ,
306- backColor : [ 1 , 1 , 1 , 1 ] ,
312+ backColor : backColor ,
307313 show3Dcrosshair : false ,
308314 isColorbar : false ,
309315 isOrientCube : true } ) ;
@@ -325,7 +331,7 @@ export const PathwaysNiivueCanvas = () => (
325331 {
326332 url :"https://dandiarchive.s3.amazonaws.com/blobs/5df/2ec/5df2ec3d-ec43-4a33-aa38-49a141f8f05d" ,
327333 name : "sub-Hb1_sample-hemi_acq-highb_desc-mean+norm+brain.nii.gz" ,
328- colormap : "whiteBackgroundGray" ,
334+ colormap : imageColormap ,
329335 } ,
330336 ] ;
331337 const nucleiList = [
@@ -363,6 +369,20 @@ export const PathwaysNiivueCanvas = () => (
363369 loadImages ( ) ;
364370 } , [ ] ) ;
365371
372+ // React to light/dark toggles to update the background of both canvases and
373+ // the slice image colormap
374+ React . useEffect ( ( ) => {
375+ [ niivue_slice . current , niivue_render . current ] . forEach ( ( nv ) => {
376+ if ( ! nv ) return ;
377+ nv . opts . backColor = backColor ;
378+ nv . drawScene ( ) ;
379+ } ) ;
380+ if ( niivue_slice . current ?. volumes ?. length ) {
381+ niivue_slice . current . volumes [ 0 ] . colormap = imageColormap ;
382+ niivue_slice . current . updateGLVolume ( ) ;
383+ }
384+ } , [ colorMode ] ) ;
385+
366386 // Handlers for showing MRI, crosshair, and each tract
367387 const [ isMRI , setIsMRI ] = useState ( true ) ;
368388
@@ -572,20 +592,20 @@ export const PathwaysNiivueCanvas = () => (
572592 < table style = { { width : '100%' , fontSize : '0.9em' } } >
573593 < tbody >
574594 < tr style = { { border : 'none' } } >
575- < td style = { { padding : '6px' , borderTop : 'none' , borderBottom : 'none' , borderLeft : 'none' , borderRight : '1px solid #ddd ' , background : '#F7F8F9 ' } } > Scroll slices</ td >
576- < td style = { { padding : '6px' , borderTop : 'none' , borderBottom : 'none' , borderLeft : 'none' , borderRight : 'none' , background : '#F7F8F9 ' } } > Scroll wheel</ td >
595+ < td style = { { padding : '6px' , borderTop : 'none' , borderBottom : 'none' , borderLeft : 'none' , borderRight : '1px solid var(--ifm-color-emphasis-300) ' , background : 'var(--ifm-background-color) ' } } > Scroll slices</ td >
596+ < td style = { { padding : '6px' , borderTop : 'none' , borderBottom : 'none' , borderLeft : 'none' , borderRight : 'none' , background : 'var(--ifm-background-color) ' } } > Scroll wheel</ td >
577597 </ tr >
578598 < tr >
579- < td style = { { padding : '6px' , borderTop : 'none' , borderBottom : 'none' , borderLeft : 'none' , borderRight : '1px solid #ddd ' , background : '#F7F8F9 ' } } > Move crosshair</ td >
580- < td style = { { padding : '6px' , border : 'none' , background : '#F7F8F9 ' } } > Left click</ td >
599+ < td style = { { padding : '6px' , borderTop : 'none' , borderBottom : 'none' , borderLeft : 'none' , borderRight : '1px solid var(--ifm-color-emphasis-300) ' , background : 'var(--ifm-background-color) ' } } > Move crosshair</ td >
600+ < td style = { { padding : '6px' , border : 'none' , background : 'var(--ifm-background-color) ' } } > Left click</ td >
581601 </ tr >
582602 < tr >
583- < td style = { { padding : '6px' , borderTop : 'none' , borderBottom : 'none' , borderLeft : 'none' , borderRight : '1px solid #ddd ' , background : '#F7F8F9 ' } } > Pan</ td >
584- < td style = { { padding : '6px' , borderTop : 'none' , borderBottom : 'none' , borderLeft : 'none' , borderRight : 'none' , background : '#F7F8F9 ' } } > Middle click</ td >
603+ < td style = { { padding : '6px' , borderTop : 'none' , borderBottom : 'none' , borderLeft : 'none' , borderRight : '1px solid var(--ifm-color-emphasis-300) ' , background : 'var(--ifm-background-color) ' } } > Pan</ td >
604+ < td style = { { padding : '6px' , borderTop : 'none' , borderBottom : 'none' , borderLeft : 'none' , borderRight : 'none' , background : 'var(--ifm-background-color) ' } } > Middle click</ td >
585605 </ tr >
586606 < tr >
587- < td style = { { padding : '6px' , borderTop : 'none' , borderBottom : 'none' , borderLeft : 'none' , borderRight : '1px solid #ddd ' , background : '#F7F8F9 ' } } > Zoom</ td >
588- < td style = { { padding : '6px' , border : 'none' , background : '#F7F8F9 ' } } > Right click</ td >
607+ < td style = { { padding : '6px' , borderTop : 'none' , borderBottom : 'none' , borderLeft : 'none' , borderRight : '1px solid var(--ifm-color-emphasis-300) ' , background : 'var(--ifm-background-color) ' } } > Zoom</ td >
608+ < td style = { { padding : '6px' , border : 'none' , background : 'var(--ifm-background-color) ' } } > Right click</ td >
589609 </ tr >
590610 </ tbody >
591611 </ table >
0 commit comments