This commit is contained in:
Leonardo Campos 2017-02-08 21:10:01 -02:00
parent 2752228c7f
commit e8d8608002

View File

@ -7,7 +7,7 @@ export class StackImagePositionOffsetSynchronizer {
constructor() { constructor() {
this.active = false; this.active = false;
this.syncedViewports = []; this.syncedViewports = [];
this.synchronizer = new cornerstoneTools.Synchronizer('CornerstoneNewImage', cornerstoneTools.stackImagePositionOffsetSynchronizer) this.synchronizer = new cornerstoneTools.Synchronizer('CornerstoneNewImage', cornerstoneTools.stackImagePositionOffsetSynchronizer);
} }
static get ELEMENT_DISABLED_EVENT() { static get ELEMENT_DISABLED_EVENT() {
@ -29,11 +29,11 @@ export class StackImagePositionOffsetSynchronizer {
} }
deactivate() { deactivate() {
if(!this.isActive()) { if (!this.isActive()) {
return; return;
} }
while(this.syncedViewports.length) { while (this.syncedViewports.length) {
const viewport = this.syncedViewports[0]; const viewport = this.syncedViewports[0];
this.removeViewport(viewport); this.removeViewport(viewport);
} }
@ -43,13 +43,13 @@ export class StackImagePositionOffsetSynchronizer {
} }
update() { update() {
if(!this.isActive()) { if (!this.isActive()) {
return; return;
} }
const activeViewportElement = this.getActiveViewportElement(); const activeViewportElement = this.getActiveViewportElement();
if(this.isViewportSynced(activeViewportElement)) { if (this.isViewportSynced(activeViewportElement)) {
return; return;
} }
@ -60,14 +60,14 @@ export class StackImagePositionOffsetSynchronizer {
syncViewports(viewports) { syncViewports(viewports) {
const viewportIndexes = []; const viewportIndexes = [];
if(this.isActive() || (viewports.length <= 1)) { if (this.isActive() || (viewports.length <= 1)) {
return; return;
} }
viewports.forEach((viewport, index) => { viewports.forEach((viewport, index) => {
this.synchronizer.add(viewport.element); this.synchronizer.add(viewport.element);
this.syncedViewports.push(viewport); this.syncedViewports.push(viewport);
viewportIndexes.push(viewport.index) viewportIndexes.push(viewport.index);
$(viewport.element).on(StackImagePositionOffsetSynchronizer.ELEMENT_DISABLED_EVENT, this.elementDisabledHandler(this)); $(viewport.element).on(StackImagePositionOffsetSynchronizer.ELEMENT_DISABLED_EVENT, this.elementDisabledHandler(this));
}); });
@ -75,7 +75,6 @@ export class StackImagePositionOffsetSynchronizer {
this.active = true; this.active = true;
toolManager.activateCommandButton('linkStackScroll'); toolManager.activateCommandButton('linkStackScroll');
Session.set('StackImagePositionOffsetSynchronizerLinkedViewports', viewportIndexes); Session.set('StackImagePositionOffsetSynchronizerLinkedViewports', viewportIndexes);
} }
isViewportSynced(viewportElement) { isViewportSynced(viewportElement) {
@ -90,7 +89,7 @@ export class StackImagePositionOffsetSynchronizer {
removeViewport(viewport) { removeViewport(viewport) {
const index = this.syncedViewports.indexOf(viewport); const index = this.syncedViewports.indexOf(viewport);
if(index === -1) { if (index === -1) {
return; return;
} }
@ -103,10 +102,10 @@ export class StackImagePositionOffsetSynchronizer {
getViewportByElement(viewportElement) { getViewportByElement(viewportElement) {
const length = this.syncedViewports.length; const length = this.syncedViewports.length;
for(let i = 0; i < length; i++) { for (let i = 0; i < length; i++) {
const viewport = this.syncedViewports[i]; const viewport = this.syncedViewports[i];
if(viewport.element === viewportElement) { if (viewport.element === viewportElement) {
return viewport; return viewport;
} }
} }
@ -115,7 +114,7 @@ export class StackImagePositionOffsetSynchronizer {
removeViewportByElement(viewportElement) { removeViewportByElement(viewportElement) {
let viewport = this.getViewportByElement(viewportElement); let viewport = this.getViewportByElement(viewportElement);
if(viewport) { if (viewport) {
this.removeViewport(viewport); this.removeViewport(viewport);
} }
} }
@ -124,7 +123,7 @@ export class StackImagePositionOffsetSynchronizer {
const linkedViewports = Session.get('StackImagePositionOffsetSynchronizerLinkedViewports'); const linkedViewports = Session.get('StackImagePositionOffsetSynchronizerLinkedViewports');
const index = linkedViewports.indexOf(viewport.index); const index = linkedViewports.indexOf(viewport.index);
if(index !== -1) { if (index !== -1) {
linkedViewports.splice(index, 1); linkedViewports.splice(index, 1);
Session.set('StackImagePositionOffsetSynchronizerLinkedViewports', linkedViewports); Session.set('StackImagePositionOffsetSynchronizerLinkedViewports', linkedViewports);
} }
@ -133,17 +132,17 @@ export class StackImagePositionOffsetSynchronizer {
elementDisabledHandler(context) { elementDisabledHandler(context) {
return (e, eventData) => { return (e, eventData) => {
context.removeViewportByElement(eventData.element); context.removeViewportByElement(eventData.element);
} };
} }
getViewportByIndexes(viewportIndexes) { getViewportByIndexes(viewportIndexes) {
const viewports = []; const viewports = [];
const viewportElements = $('.imageViewerViewport'); const $viewportElements = $('.imageViewerViewport');
viewportIndexes.forEach(index => { viewportIndexes.forEach(index => {
const element = viewportElements.get(index); const element = $viewportElements.get(index);
if(!element) { if (!element) {
return; return;
} }
@ -164,7 +163,7 @@ export class StackImagePositionOffsetSynchronizer {
$('.imageViewerViewport').each((index, viewportElement) => { $('.imageViewerViewport').each((index, viewportElement) => {
const viewportImageNormal = this.getViewportImageNormal(viewportElement); const viewportImageNormal = this.getViewportImageNormal(viewportElement);
if(activeViewportImageNormal && viewportImageNormal) { if (activeViewportImageNormal && viewportImageNormal) {
const angleInRadians = viewportImageNormal.angleTo(activeViewportImageNormal); const angleInRadians = viewportImageNormal.angleTo(activeViewportImageNormal);
// Pi / 12 radians = 15 degrees // Pi / 12 radians = 15 degrees
@ -182,7 +181,7 @@ export class StackImagePositionOffsetSynchronizer {
} }
getViewportImageNormal(element) { getViewportImageNormal(element) {
if(!element) { if (!element) {
return; return;
} }
@ -191,14 +190,14 @@ export class StackImagePositionOffsetSynchronizer {
try { try {
const enabledElement = cornerstone.getEnabledElement(element); const enabledElement = cornerstone.getEnabledElement(element);
if(!enabledElement.image) { if (!enabledElement.image) {
return; return;
} }
const imageId = enabledElement.image.imageId; const imageId = enabledElement.image.imageId;
const imagePlane = cornerstoneTools.metaData.get('imagePlane', imageId); const imagePlane = cornerstoneTools.metaData.get('imagePlane', imageId);
if(!imagePlane || !imagePlane.rowCosines || !imagePlane.columnCosines) { if (!imagePlane || !imagePlane.rowCosines || !imagePlane.columnCosines) {
return; return;
} }