extract-wp.js 3.16 KB
previousGrayImageDataList = [];
getLocationForMatchedTermsInWholeBody = function (termList, maskCanvasData, coloredImageData, grayImageData, bodyRegionId, canvasId) {
    console.log('for bodyRegionId: ' + bodyRegionId + ', time: ' + new Date().toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1"))

    var masklen = maskCanvasData.data.length;
    var maskData = maskCanvasData.data;
    var nextStep=4;   
    var zero = "0";
    for (var z = 0; z < termList.length; z++) {
        var termnumber=termList[z]._TermNumber;
        if(termnumber.length<6)
        {
            continue;
        }
        if (previousGrayImageDataList[parseInt(bodyRegionId - 1)] != null) {
            grayImageData = previousGrayImageDataList[parseInt(bodyRegionId - 1)];

        }

        if (grayImageData != null) {
            var grayImageDataVar = grayImageData.data;
            var coloredImageDataVar = coloredImageData.data;

            for (var i = 0; i < masklen; i += nextStep) {
               
                var RED = maskData[i] - 9;
                if (RED <0) { continue; }
    
                var GREEN = maskData[i + 1] - 9;
                if (GREEN <0) { continue; }
    
                var BLUE = maskData[i + 2] - 9;
                if (BLUE <0) { continue; }
              
                 BLUE=BLUE.toString();
                if (BLUE.length !=2)
                {
                    BLUE = zero.concat(BLUE);
                }
                if(termnumber.startsWith(BLUE,4)) {
                    GREEN=GREEN.toString();
                    if (GREEN.length !=2)
                    {
                        GREEN = zero.concat(GREEN);
                    }                     
                    
                    if(termnumber.startsWith(GREEN,2)) {
                        RED=RED.toString();
                        if (RED.length !=2)
                        {
                            RED = zero.concat(RED);
                        }  
                        if(termnumber.startsWith(RED,0)) {
                            
                            var Icolor = (RED + GREEN + BLUE);
    
                            if (termnumber == Icolor) {
    
                                for (var index = i; index < i+nextStep; index += 1) {
                                                    
                                    grayImageDataVar[index]=coloredImageDataVar[index];
                                
                                    }
                                }
                            }
                            else{continue;}
        
                        }
                        else{continue;}
    
                }
                else{continue;}
            }
            //  debugger;
            previousGrayImageDataList[parseInt(bodyRegionId - 1)] = grayImageData;
           
        }
    }

    self.postMessage({
        'bodyRegionId': bodyRegionId,
        'value': grayImageData,
        'canvasId': canvasId

    });
}

self.onmessage = function (e) {
    getLocationForMatchedTermsInWholeBody(e.data.termList, e.data.maskCanvasData, e.data.coloredImageData,
        e.data.grayImageData, e.data.bodyRegionId, e.data.canvasId);

}