From 42c938fb4408e9b727c3cb24b26d87fdaea42c4a Mon Sep 17 00:00:00 2001 From: "Emanuel F. Oliveira" Date: Fri, 11 Nov 2016 22:22:57 -0200 Subject: [PATCH] LT-307 Reducing the amount of image redraws on tool activation from 52 to 44 (15% improvement) --- Packages/ohif-lesiontracker/client/tools.js | 27 ++++++++++++++------- Packages/ohif-viewerbase/lib/toolManager.js | 16 ++++++------ 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/Packages/ohif-lesiontracker/client/tools.js b/Packages/ohif-lesiontracker/client/tools.js index e015546a5..0ddaf1ac3 100644 --- a/Packages/ohif-lesiontracker/client/tools.js +++ b/Packages/ohif-lesiontracker/client/tools.js @@ -34,14 +34,23 @@ Meteor.startup(function() { touch: cornerstoneTools.exToolTouch }); - let states = toolManager.getToolDefaultStates(); - states.deactivate.push('bidirectional'); - states.deactivate.push('nonTarget'); - states.deactivate.push('length'); - states.deactivate.push('crTool'); - states.deactivate.push('unTool'); - states.deactivate.push('exTool'); + // Update default state for tools making sure each tool is only inserted once + let currentDefaultStates = toolManager.getToolDefaultStates(); + let newDefaultStates = { + deactivate: ['bidirectional', 'nonTarget', 'length', 'crTool', 'unTool', 'exTool'], + activate: ['deleteLesionKeyboardTool'] + }; + + for (let state in newDefaultStates) { + newDefaultStates[state].forEach(function(tool) { + let tools = currentDefaultStates[state]; + // make sure each tool is only inserted once + if (tools && tools.indexOf(tool) < 0) { + tools.push(tool); + } + }); + } + + toolManager.setToolDefaultStates(currentDefaultStates); - states.activate.push('deleteLesionKeyboardTool'); - toolManager.setToolDefaultStates(states); }); \ No newline at end of file diff --git a/Packages/ohif-viewerbase/lib/toolManager.js b/Packages/ohif-viewerbase/lib/toolManager.js index 38280ad2e..dcf22adc3 100644 --- a/Packages/ohif-viewerbase/lib/toolManager.js +++ b/Packages/ohif-viewerbase/lib/toolManager.js @@ -171,7 +171,7 @@ toolManager = { // First, deactivate the current active tool tools[activeTool].mouse.deactivate(element, 1); - +  if (tools[activeTool].touch) { tools[activeTool].touch.deactivate(element); } @@ -182,15 +182,15 @@ toolManager = { if (!relevantTools || !relevantTools.length || action === 'disabledToolButtons') { return; } - relevantTools.forEach(function(toolType) { - if ((action === 'activate') || - (action === 'deactivate')) { - tools[toolType].mouse[action](element, 1); - } else { - tools[toolType].mouse[action](element); + // the currently active tool has already been deactivated and can be skipped + if (action === 'deactivate' && toolType === activeTool) { + return; } - + tools[toolType].mouse[action]( + element, + (action === 'activate' || action === 'deactivate' ? 1 : void 0) + ); tools[toolType].touch[action](element); }); });