fix(invert): allows volume viewport to invert and sync their invert status (#3514)

This commit is contained in:
Alireza 2023-07-06 12:09:34 -04:00 committed by GitHub
parent f3a4f861b4
commit 4a184d0be7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 59 additions and 64 deletions

View File

@ -44,9 +44,9 @@
}, },
"dependencies": { "dependencies": {
"@babel/runtime": "^7.20.13", "@babel/runtime": "^7.20.13",
"@cornerstonejs/adapters": "^1.2.8", "@cornerstonejs/adapters": "^1.4.1",
"@cornerstonejs/core": "^1.2.8", "@cornerstonejs/core": "^1.4.1",
"@cornerstonejs/tools": "^1.2.8", "@cornerstonejs/tools": "^1.4.1",
"classnames": "^2.3.2" "classnames": "^2.3.2"
} }
} }

View File

@ -36,7 +36,7 @@
"@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
"@cornerstonejs/codec-openjpeg": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.2",
"@cornerstonejs/codec-openjph": "^2.4.2", "@cornerstonejs/codec-openjph": "^2.4.2",
"@cornerstonejs/dicom-image-loader": "^1.2.8", "@cornerstonejs/dicom-image-loader": "^1.4.1",
"@ohif/core": "3.7.0-beta.26", "@ohif/core": "3.7.0-beta.26",
"@ohif/ui": "3.7.0-beta.26", "@ohif/ui": "3.7.0-beta.26",
"dcmjs": "^0.29.6", "dcmjs": "^0.29.6",
@ -52,10 +52,10 @@
}, },
"dependencies": { "dependencies": {
"@babel/runtime": "^7.20.13", "@babel/runtime": "^7.20.13",
"@cornerstonejs/adapters": "^1.2.8", "@cornerstonejs/adapters": "^1.4.1",
"@cornerstonejs/core": "^1.2.8", "@cornerstonejs/core": "^1.4.1",
"@cornerstonejs/streaming-image-volume-loader": "^1.2.8", "@cornerstonejs/streaming-image-volume-loader": "^1.4.1",
"@cornerstonejs/tools": "^1.2.8", "@cornerstonejs/tools": "^1.4.1",
"@kitware/vtk.js": "27.3.1", "@kitware/vtk.js": "27.3.1",
"html2canvas": "^1.4.1", "html2canvas": "^1.4.1",
"lodash.debounce": "4.0.8", "lodash.debounce": "4.0.8",

View File

@ -457,11 +457,9 @@ function commandsModule({
const { viewport } = enabledElement; const { viewport } = enabledElement;
if (viewport instanceof StackViewport) {
const { invert } = viewport.getProperties(); const { invert } = viewport.getProperties();
viewport.setProperties({ invert: !invert }); viewport.setProperties({ invert: !invert });
viewport.render(); viewport.render();
}
}, },
resetViewport: () => { resetViewport: () => {
const enabledElement = _getActiveViewportEnabledElement(); const enabledElement = _getActiveViewportEnabledElement();

View File

@ -26,6 +26,7 @@ import nthLoader from './utils/nthLoader';
import interleaveTopToBottom from './utils/interleaveTopToBottom'; import interleaveTopToBottom from './utils/interleaveTopToBottom';
import initContextMenu from './initContextMenu'; import initContextMenu from './initContextMenu';
import initDoubleClick from './initDoubleClick'; import initDoubleClick from './initDoubleClick';
import { CornerstoneServices } from './types';
// TODO: Cypress tests are currently grabbing this from the window? // TODO: Cypress tests are currently grabbing this from the window?
window.cornerstone = cornerstone; window.cornerstone = cornerstone;
@ -69,10 +70,7 @@ export default async function init({
const { const {
userAuthenticationService, userAuthenticationService,
measurementService,
customizationService, customizationService,
displaySetService,
uiDialogService,
uiModalService, uiModalService,
uiNotificationService, uiNotificationService,
cineService, cineService,
@ -81,7 +79,7 @@ export default async function init({
toolGroupService, toolGroupService,
viewportGridService, viewportGridService,
stateSyncService, stateSyncService,
} = servicesManager.services; } = servicesManager.services as CornerstoneServices;
window.services = servicesManager.services; window.services = servicesManager.services;
window.extensionManager = extensionManager; window.extensionManager = extensionManager;

View File

@ -15,7 +15,7 @@ const EVENTS = {
* sync group declared. * sync group declared.
*/ */
export type SyncCreator = ( export type SyncCreator = (
type: string, id: string,
options?: Record<string, unknown> options?: Record<string, unknown>
) => Synchronizer; ) => Synchronizer;
@ -83,7 +83,7 @@ export default class SyncGroupService {
* @param type is the type of the synchronizer to create * @param type is the type of the synchronizer to create
* @param creator * @param creator
*/ */
public setSynchronizer(type: string, creator: SyncCreator): void { public addSynchronizerType(type: string, creator: SyncCreator): void {
this.synchronizerCreators[type.toLowerCase()] = creator; this.synchronizerCreators[type.toLowerCase()] = creator;
} }

View File

@ -1,9 +1,9 @@
import { Types } from '@ohif/core'; import { Types } from '@ohif/core';
import ToolGroupService from './services/ToolGroupService'; import ToolGroupService from '../services/ToolGroupService';
import SyncGroupService from './services/SyncGroupService'; import SyncGroupService from '../services/SyncGroupService';
import SegmentationService from './services/SegmentationService'; import SegmentationService from '../services/SegmentationService';
import CornerstoneCacheService from './services/CornerstoneCacheService'; import CornerstoneCacheService from '../services/CornerstoneCacheService';
import CornerstoneViewportService from './services/ViewportService/CornerstoneViewportService'; import CornerstoneViewportService from '../services/ViewportService/CornerstoneViewportService';
interface CornerstoneServices extends Types.Services { interface CornerstoneServices extends Types.Services {
cornerstoneViewportService: CornerstoneViewportService; cornerstoneViewportService: CornerstoneViewportService;

View File

@ -30,8 +30,8 @@
"start": "yarn run dev" "start": "yarn run dev"
}, },
"peerDependencies": { "peerDependencies": {
"@cornerstonejs/core": "^1.2.8", "@cornerstonejs/core": "^1.4.1",
"@cornerstonejs/tools": "^1.2.8", "@cornerstonejs/tools": "^1.4.1",
"@ohif/core": "3.7.0-beta.26", "@ohif/core": "3.7.0-beta.26",
"@ohif/extension-cornerstone-dicom-sr": "3.7.0-beta.26", "@ohif/extension-cornerstone-dicom-sr": "3.7.0-beta.26",
"@ohif/ui": "3.7.0-beta.26", "@ohif/ui": "3.7.0-beta.26",

View File

@ -149,7 +149,6 @@
] ]
}, },
"resolutions": { "resolutions": {
"@cornerstonejs/core": "^1.2.8",
"**/@babel/runtime": "^7.20.13", "**/@babel/runtime": "^7.20.13",
"commander": "8.3.0", "commander": "8.3.0",
"nth-check": "^2.1.1", "nth-check": "^2.1.1",

View File

@ -51,7 +51,7 @@
"@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
"@cornerstonejs/codec-openjpeg": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.2",
"@cornerstonejs/codec-openjph": "^2.4.2", "@cornerstonejs/codec-openjph": "^2.4.2",
"@cornerstonejs/dicom-image-loader": "^1.2.8", "@cornerstonejs/dicom-image-loader": "^1.4.1",
"@ohif/core": "3.7.0-beta.26", "@ohif/core": "3.7.0-beta.26",
"@ohif/extension-cornerstone": "3.7.0-beta.26", "@ohif/extension-cornerstone": "3.7.0-beta.26",
"@ohif/extension-cornerstone-dicom-rt": "3.7.0-beta.26", "@ohif/extension-cornerstone-dicom-rt": "3.7.0-beta.26",

View File

@ -35,7 +35,7 @@
"@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
"@cornerstonejs/codec-openjpeg": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.2",
"@cornerstonejs/codec-openjph": "^2.4.2", "@cornerstonejs/codec-openjph": "^2.4.2",
"@cornerstonejs/dicom-image-loader": "^1.2.8", "@cornerstonejs/dicom-image-loader": "^1.4.1",
"@ohif/ui": "3.7.0-beta.26", "@ohif/ui": "3.7.0-beta.26",
"cornerstone-math": "0.1.9", "cornerstone-math": "0.1.9",
"dicom-parser": "^1.8.21" "dicom-parser": "^1.8.21"

View File

@ -14,23 +14,23 @@ import {
* The interface for the services object * The interface for the services object
*/ */
export default interface Services { export default interface Services {
userAuthenticationService?: Record<string, unknown>;
hangingProtocolService?: HangingProtocolService; hangingProtocolService?: HangingProtocolService;
customizationService?: CustomizationService; customizationService?: CustomizationService;
measurementService?: MeasurementService; measurementService?: MeasurementService;
displaySetService?: DisplaySetService; displaySetService?: DisplaySetService;
cineService?: Record<string, unknown>;
toolbarService?: ToolbarService; toolbarService?: ToolbarService;
cornerstoneViewportService?: Record<string, unknown>;
uiDialogService?: Record<string, unknown>;
toolGroupService?: Record<string, unknown>;
uiNotificationService?: UINotificationService;
uiModalService?: UIModalService;
uiViewportDialogService?: Record<string, unknown>;
viewportGridService?: ViewportGridService; viewportGridService?: ViewportGridService;
syncGroupService?: Record<string, unknown>; uiModalService?: UIModalService;
cornerstoneCacheService?: Record<string, unknown>; uiNotificationService?: UINotificationService;
segmentationService?: Record<string, unknown>;
stateSyncService?: StateSyncService; stateSyncService?: StateSyncService;
panelService?: Record<string, unknown>; cineService?: unknown;
userAuthenticationService?: unknown;
cornerstoneViewportService?: unknown;
uiDialogService?: unknown;
toolGroupService?: unknown;
uiViewportDialogService?: unknown;
syncGroupService?: unknown;
cornerstoneCacheService?: unknown;
segmentationService?: unknown;
panelService?: unknown;
} }

View File

@ -1589,10 +1589,10 @@
resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9"
integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
"@cornerstonejs/adapters@^1.2.8": "@cornerstonejs/adapters@^1.4.1":
version "1.2.8" version "1.4.1"
resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-1.2.8.tgz#26e584971b917dd099a73511abde32f236655915" resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-1.4.1.tgz#48ca911cb76c2c6dfaab3c7c1119bf0fb400bb71"
integrity sha512-W1PD+XJ69nUEM5D1wZMyJxRNsKTxWSwtJ6gZ1LH19f7uLSIt1OdKq3PoUZ0KyUiDeP585+NPChquGO14vn8eQA== integrity sha512-w/5c8/m7GKTGFw33vJh5IK3aJNOq9gBeQu0BSAczCBh6DfVY4JWw+ZNUZk2qRYsIcs5rIWSY0/Ykwsq3ziAblA==
dependencies: dependencies:
"@babel/runtime-corejs2" "^7.17.8" "@babel/runtime-corejs2" "^7.17.8"
dcmjs "^0.29.5" dcmjs "^0.29.5"
@ -1640,43 +1640,43 @@
resolved "https://registry.yarnpkg.com/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.2.tgz#e96721d56f6ec96f7f95c16321d88cc8467d8d81" resolved "https://registry.yarnpkg.com/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.2.tgz#e96721d56f6ec96f7f95c16321d88cc8467d8d81"
integrity sha512-lgdvBvvNezleY+4pIe2ceUsJzlZe/0PipdeubQ3vZZOz3xxtHHMR1XFCl4fgd8gosR8COHuD7h6q+MwgrwBsng== integrity sha512-lgdvBvvNezleY+4pIe2ceUsJzlZe/0PipdeubQ3vZZOz3xxtHHMR1XFCl4fgd8gosR8COHuD7h6q+MwgrwBsng==
"@cornerstonejs/core@^1.2.8": "@cornerstonejs/core@^1.4.1":
version "1.2.8" version "1.4.1"
resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-1.2.8.tgz#e84ecf74cba66085f342a03965f3d73111bb4948" resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-1.4.1.tgz#e7a2de14160545382771a8dbaf64935f9c654904"
integrity sha512-7RPIxXiMt9Ud5PWZ3+fVYJRhCzObbb4emaQvQ3dPo30xLyU7EcNDEyLjIezJfJHAMOHKQo9SnsoUQz+8YmdXSQ== integrity sha512-0pDTy4QZdaXISfs1SW04XitUmv5rn874P0M4XiEwNvP05AEr/Ib6yV95yvQD+xaq35JyEjDS0xCSEL4w9W7TmQ==
dependencies: dependencies:
"@kitware/vtk.js" "27.3.1" "@kitware/vtk.js" "27.3.1"
detect-gpu "^5.0.22" detect-gpu "^5.0.22"
gl-matrix "^3.4.3" gl-matrix "^3.4.3"
lodash.clonedeep "4.5.0" lodash.clonedeep "4.5.0"
"@cornerstonejs/dicom-image-loader@^1.2.8": "@cornerstonejs/dicom-image-loader@^1.4.1":
version "1.2.8" version "1.4.1"
resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-1.2.8.tgz#61cd310310f1cd8d0837135240928e18f5d63c0f" resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-1.4.1.tgz#41ba4531e87827b83684e9de939ef5025eb53db2"
integrity sha512-w/JrforcHUvVPXEmxT015cGb/IT+py2rTKXk5udqyX/dLoI1q8FaqHFq8z/pN+9AXsUrdQ2d7gmXTpDihS8b4Q== integrity sha512-J47sWG8iEISc+mSsn8iw4Fi1GL4mGuHUD+UegcGl7SgTVA6xmtEoVJJJ7lcfmPxsLJfzRv3x3Okc25GdugE8Bw==
dependencies: dependencies:
"@cornerstonejs/codec-charls" "^1.2.3" "@cornerstonejs/codec-charls" "^1.2.3"
"@cornerstonejs/codec-libjpeg-turbo-8bit" "^1.2.2" "@cornerstonejs/codec-libjpeg-turbo-8bit" "^1.2.2"
"@cornerstonejs/codec-openjpeg" "^1.2.2" "@cornerstonejs/codec-openjpeg" "^1.2.2"
"@cornerstonejs/codec-openjph" "^2.4.2" "@cornerstonejs/codec-openjph" "^2.4.2"
"@cornerstonejs/core" "^1.2.8" "@cornerstonejs/core" "^1.4.1"
dicom-parser "^1.8.9" dicom-parser "^1.8.9"
pako "^2.0.4" pako "^2.0.4"
uuid "^9.0.0" uuid "^9.0.0"
"@cornerstonejs/streaming-image-volume-loader@^1.2.8": "@cornerstonejs/streaming-image-volume-loader@^1.4.1":
version "1.2.8" version "1.4.1"
resolved "https://registry.yarnpkg.com/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-1.2.8.tgz#fcbc6de46c45968e7806f8e322f0605cac4a4b85" resolved "https://registry.yarnpkg.com/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-1.4.1.tgz#7377add2ee2567793dadc4cce74012b95a201eed"
integrity sha512-/FWbWglSNIKgV0ZUDQrkCQkg+Dzf85ReH+svqg8sBhCiCKSdKSAQXEaDG471O+nmVdNg7VW8DE8PwA/yVe/3yA== integrity sha512-dwW1IrunYoSo+UM55zpY+KIcC573YOKgCJrcy/AL6kwIJnuglmFMSzeJLM+xxdprbod2QP3LMWwpz0ikfGy67w==
dependencies: dependencies:
"@cornerstonejs/core" "^1.2.8" "@cornerstonejs/core" "^1.4.1"
"@cornerstonejs/tools@^1.2.8": "@cornerstonejs/tools@^1.4.1":
version "1.2.8" version "1.4.1"
resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-1.2.8.tgz#8979a40cf53a4a2a648ef8c0fc24ef15603a0f9a" resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-1.4.1.tgz#2ea8ab701ecf93ed9d02dcd5b95ea810bcfa98a8"
integrity sha512-E3+UOgl/DRNvvxTJziMoEa6uudKSGr/JFL5k9HvjU2HtGm4kdpYNo9lGnsTqeuUZ2xrPnUZFLYHVwF1WVegoEw== integrity sha512-UfwWzmJT3aKu2gvlWQZ3ZLmof8krRYyk0L/HTsTglS2izzbjIPuMAPfh5+FrTIhLE1RQmGwujCp7UZRIEa9s/w==
dependencies: dependencies:
"@cornerstonejs/core" "^1.2.8" "@cornerstonejs/core" "^1.4.1"
lodash.clonedeep "4.5.0" lodash.clonedeep "4.5.0"
lodash.get "^4.4.2" lodash.get "^4.4.2"