Erase Brush Tool Data From Canvas using Cornerstone.js

852 Views Asked by At

Hi I am using cornerstone.js for image annotation but didn't able to find any example for erasing brush tool data from the canvas. I am able to remove other tools data on the button click but brush data remain on the canvas. Below is the code I am using to remove the tools data from canvas.

     var element = document.querySelector('.cornerstone-element');

     var manager = cornerstoneTools.getElementToolStateManager(element);
    
        var toolName = ["ArrowAnnotate", "Angle", "TextMarker", "Brush"];
    
        for (var tool = 0; tool < toolName.length; tool++) {
    
            var toolData = manager.get(element, toolName[tool]);
    
            if (toolData) { toolData.data = []; };
    
        }
    
        cornerstoneTools.external.cornerstone.updateImage(element);
1

There are 1 best solutions below

0
On

After lot of analysis I found a method in the cornerstone library that deletes the data of the brush tool but though few changes has to be made in the library after that it work perfectly fine for me.

Before that hold the brush state data in the global variable in the below method

function createNewBitmapAndQueueRenderOfSegmentation(evt, toolData, segIndex) {

var eventData = evt.detail;
  var element = eventData.element;
  var enabledElement = _externalModules2.default.cornerstone.getEnabledElement(element);

  var pixelData = toolData.data[segIndex].pixelData;

  var colormapId = brushState.getters.colorMapId();
  var colormap = _externalModules2.default.cornerstone.colors.getColormap(colormapId);
  var colorLutTable = [[0, 0, 0, 0], colormap.getColor(segIndex)];

    **brushData = brushState;**
}

After that do the changes accordingly on the below method.

function clearImageIdSpecificToolStateManager(element) {

      var enabledImage = _externalModules2.default.cornerstone.getEnabledElement(element);

        var imageData = new ImageData(800, 600);

    if (!enabledImage.image || toolState.hasOwnProperty(enabledImage.image.imageId) === false) {
      return;
      }

         delete toolState[enabledImage.image.imageId];

--Add this below code 

        window.createImageBitmap(imageData).then(function (newImageBitmap) {
            brushData.mutations.SET_ELEMENT_IMAGE_BITMAP_CACHE(enabledImage.uuid, 0, newImageBitmap);

            _externalModules2.default.cornerstone.updateImage(element);
        });

 
  }

You can call the clearImageIdSpecificToolStateManager() from your java script file from the below code

function reset() {

    var element = document.querySelector('.cornerstone-element');

    var toolStateManager = cornerstoneTools.getElementToolStateManager(element);

    toolStateManager.clear(element);

    cornerstoneTools.external.cornerstone.updateImage(element);
}