@@ -6,7 +6,7 @@ import { useDebounce } from "react-use"
66
77import MMGC_INIT from "mmgc1-cpp"
88
9- export default ( {
9+ export const ImageMask = ( {
1010 classPoints,
1111 regionClsList,
1212 imageSrc,
@@ -51,23 +51,34 @@ export default ({
5151 if ( ! sampleImageData ) return
5252 if ( classPoints . filter ( ( cp ) => cp . cls ) . length < 3 ) return
5353 if ( ! mmgc . setImageSize ) return
54- // NEEDS DEBOUNCE
5554 const context = canvasRef . getContext ( "2d" )
5655
5756 if ( ! superPixelsGenerated . current ) {
5857 superPixelsGenerated . current = "processing"
58+ mmgc . setMaxClusters ( 10000 )
5959 mmgc . setImageSize ( sampleImageData . width , sampleImageData . height )
60+ mmgc . setClassColor ( 0 , 0 )
61+ for ( let i = 0 ; i < colorInts . length ; i ++ ) {
62+ mmgc . setClassColor ( i + 1 , colorInts [ i ] )
63+ }
6064 const imageAddress = mmgc . getImageAddr ( )
6165 mmgc . HEAPU8 . set ( sampleImageData . data , imageAddress )
6266 mmgc . computeSuperPixels ( )
63- for ( let i = 0 ; i < colorInts . length ; i ++ ) {
64- mmgc . setClassColor ( i , colorInts [ i ] )
65- }
6667 superPixelsGenerated . current = "done"
6768 }
6869 if ( superPixelsGenerated . current !== "done" ) return
6970
7071 // mmgc.setVerboseMode(true)
72+ if (
73+ ! [ "bg" , "background" , "nothing" ] . includes (
74+ regionClsList [ 0 ] . toLowerCase ( )
75+ )
76+ ) {
77+ console . log (
78+ `first region cls must be "bg" or "background" or "nothing"`
79+ )
80+ return
81+ }
7182 mmgc . clearClassPoints ( )
7283 for ( const classPoint of classPoints ) {
7384 if ( ! classPoint . cls ) continue
@@ -100,17 +111,10 @@ export default ({
100111 )
101112
102113 context . clearRect ( 0 , 0 , sampleImageData . width , sampleImageData . height )
103- context . globalAlpha = 0.25
104114 context . putImageData ( maskImageData , 0 , 0 )
105- context . globalAlpha = 1
106115 } ,
107116 1000 ,
108- [
109- canvasRef ,
110- sampleImageData ,
111- JSON . stringify ( classPoints . map ( ( c ) => [ c . x , c . y , c . cls ] ) ) ,
112- hide ,
113- ]
117+ [ canvasRef , sampleImageData , classPoints , hide ]
114118 )
115119
116120 const style = useMemo ( ( ) => {
@@ -146,3 +150,5 @@ export default ({
146150 />
147151 )
148152}
153+
154+ export default ImageMask
0 commit comments