lugano更改

uat
caiyiling 2025-05-14 15:48:08 +08:00
parent 9ce6ff25b9
commit 0280dfb959
1 changed files with 99 additions and 72 deletions

View File

@ -247,11 +247,11 @@
</div>
<el-dialog v-if="customWwc.visible" :visible.sync="customWwc.visible" :close-on-click-modal="false"
:title="customWwc.title" width="400px" custom-class="base-dialog-wrapper">
<CustomWwwcForm :ww="activeCanvasWW" :wc="activeCanvasWC" @close="customWwc.visible = false" @setWwwc="setWwwc" />
<custom-wwwc-form :ww="activeCanvasWW" :wc="activeCanvasWC" @close="customWwc.visible = false" @setWwwc="setWwwc" />
</el-dialog>
<el-dialog :visible.sync="fusion.visible" :close-on-click-modal="false" :title="$t('trials:lugano:button:record')"
width="850px">
<FusionForm @close="fusion.visible = false" />
<fusion-form @close="fusion.visible = false" />
</el-dialog>
</div>
</template>
@ -352,6 +352,7 @@ const mipToolGroupUID = 'MIP_TOOLGROUP_ID'
var axialCameraPositionSynchronizer
var ctVoiSynchronizer
var ptVoiSynchronizer
var fusionVoiSynchronizer
const viewportIds = {
CT: { AXIAL: 'CT_AXIAL', SAGITTAL: 'CT_SAGITTAL', CORONAL: 'CT_CORONAL' },
PT: { AXIAL: 'PT_AXIAL', SAGITTAL: 'PT_SAGITTAL', CORONAL: 'PT_CORONAL' },
@ -376,6 +377,7 @@ var mipToolGroup
const axialCameraSynchronizerId = 'AXIAL_CAMERA_SYNCHRONIZER_ID'
const ctVoiSynchronizerId = 'CT_VOI_SYNCHRONIZER_ID'
const ptVoiSynchronizerId = 'PT_VOI_SYNCHRONIZER_ID'
const fusionVoiSynchronizerId = 'FUSION_VOI_SYNCHRONIZER_ID'
const timeout = 5 * 60 * 1000
let timerId
export default {
@ -1323,9 +1325,18 @@ export default {
axialCameraPositionSynchronizer = createCameraPositionSynchronizer(
axialCameraSynchronizerId
)
ctVoiSynchronizer = createVOISynchronizer(ctVoiSynchronizerId)
ptVoiSynchronizer = createVOISynchronizer(ptVoiSynchronizerId);
ctVoiSynchronizer = createVOISynchronizer(ctVoiSynchronizerId, {
syncInvertState: false,
syncColormap: false,
});
ptVoiSynchronizer = createVOISynchronizer(ptVoiSynchronizerId, {
syncInvertState: false,
syncColormap: false,
});
fusionVoiSynchronizer = createVOISynchronizer(fusionVoiSynchronizerId, {
syncInvertState: false,
syncColormap: false,
});
// Add viewports to camera synchronizers
[
viewportIds.CT.AXIAL,
@ -1348,25 +1359,41 @@ export default {
})
});
[
viewportIds.FUSION.AXIAL
].forEach((viewportId) => {
// In this example, the fusion viewports are only targets for CT VOI
// synchronization, not sources
ctVoiSynchronizer.addTarget({
renderingEngineId,
viewportId
})
});
[
viewportIds.PT.AXIAL,
viewportIds.FUSION.AXIAL,
viewportIds.PETMIP.CORONAL
// viewportIds.FUSION.AXIAL,
viewportIds.PETMIP.CORONAL,
viewportIds.PT.AXIAL
].forEach((viewportId) => {
ptVoiSynchronizer.add({
renderingEngineId,
viewportId
})
})
});
[
viewportIds.FUSION.AXIAL
].forEach((viewportId) => {
fusionVoiSynchronizer.add({
renderingEngineId,
viewportId,
})
ctVoiSynchronizer.addTarget({
renderingEngineId,
viewportId
})
ptVoiSynchronizer.addTarget({
renderingEngineId,
viewportId,
})
});
// [
// viewportIds.PT.AXIAL,
// viewportIds.FUSION.AXIAL,
// viewportIds.PETMIP.CORONAL
// ].forEach((viewportId) => {
// ptVoiSynchronizer.add({
// renderingEngineId,
// viewportId
// })
// });
},
async setUpDisplay() {
@ -1415,7 +1442,7 @@ export default {
// Set the volumes to load
this.ptVolume.load()
this.ctVolume.load()
console.log(this.ctVolume.cornerstoneImageMetaData)
// console.log(this.ctVolume.cornerstoneImageMetaData)
// const windowCenter = this.ctVolume.cornerstoneImageMetaData.windowCenter[0]
// const windowWidth = this.ctVolume.cornerstoneImageMetaData.windowWidth[0]
// setCtMappingRange(windowWidth, windowCenter)
@ -1654,38 +1681,55 @@ export default {
: { lower: voiRange[0], upper: voiRange[1] }
},
voiChange(v) {
const viewportId = viewportIds.FUSION.AXIAL
const volumeId = ptVolumeId
const voiRange = { lower: 0, upper: v }
const viewport = (
renderingEngine.getViewport(viewportId)
)
if (!viewport) return
const viewportsContainingVolumeUID = csUtils.getViewportsWithVolumeId(
volumeId,
viewport.renderingEngineId
)
let viewportIds = ['FUSION_AXIAL', 'PT_AXIAL', 'PET_MIP_CORONAL']
viewportIds.map(viewportId=>{
const volumeId = ptVolumeId
const voiRange = { lower: 0, upper: v }
const viewport = (
renderingEngine.getViewport(viewportId)
)
if (!viewport) return
const viewportsContainingVolumeUID = csUtils.getViewportsWithVolumeId(
volumeId,
viewport.renderingEngineId
)
viewport.setProperties({ voiRange }, volumeId)
viewportsContainingVolumeUID.forEach((vp) => {
vp.render()
this.$refs[vp.id].setWwWc()
viewport.setProperties({ voiRange }, volumeId)
viewportsContainingVolumeUID.forEach((vp) => {
vp.render()
this.$refs[vp.id].setWwWc()
})
})
},
async setColorMap(rgbPresetName) {
this.rgbPresetName = rgbPresetName
this.$refs['FUSION_AXIAL'].setPreset(this.rgbPresetName)
this.$refs['FUSION_AXIAL'].renderColorBar(this.rgbPresetName)
this.createColorBar(this.rgbPresetName, 'colorBarCanvas', 256, 15)
const renderingEngine = getRenderingEngine(renderingEngineId)
let viewports = ['FUSION_AXIAL', 'PT_AXIAL', 'PET_MIP_CORONAL']
viewports.map(v=>{
this.$refs[v].setPreset(this.rgbPresetName)
this.$refs[v].renderColorBar(this.rgbPresetName)
this.createColorBar(this.rgbPresetName, 'colorBarCanvas', 256, 15)
const renderingEngine = getRenderingEngine(renderingEngineId)
const viewport = (
renderingEngine.getViewport(viewportIds.FUSION.AXIAL)
)
const viewport = (
renderingEngine.getViewport(v)
)
viewport.setProperties({ colormap: { name: rgbPresetName } }, ptVolumeId)
// viewport.setProperties({ colormap: { name: rgbPresetName }}, ctVolumeId)
viewport.render()
viewport.setProperties({ colormap: { name: rgbPresetName } }, ptVolumeId)
viewport.render()
})
// this.$refs['FUSION_AXIAL'].setPreset(this.rgbPresetName)
// this.$refs['FUSION_AXIAL'].renderColorBar(this.rgbPresetName)
// this.createColorBar(this.rgbPresetName, 'colorBarCanvas', 256, 15)
// const renderingEngine = getRenderingEngine(renderingEngineId)
// const viewport = (
// renderingEngine.getViewport(viewportIds.FUSION.AXIAL)
// )
// viewport.setProperties({ colormap: { name: rgbPresetName } }, ptVolumeId)
// // viewport.setProperties({ colormap: { name: rgbPresetName }}, ctVolumeId)
// viewport.render()
// document.onselectstart = function() { return false }//
// document.ondragstart = function() { return false }
},
@ -1775,33 +1819,16 @@ export default {
this.setToolMode('passive', this.activeTool)
this.activeTool = ''
}
const viewports = [
{ viewportId: 'CT_AXIAL', volumeId: ctVolumeId },
{ viewportId: 'PT_AXIAL', volumeId: ptVolumeId }
// { viewportId: 'FUSION_AXIAL', volumeId: ptVolumeId }
]
viewports.map(v => {
const { viewportId, volumeId } = v
const renderingEngine = getRenderingEngine(renderingEngineId)
// Get the volume viewport
const viewport = (
renderingEngine.getViewport(viewportId)
)
// Get the volume actor from the viewport
const actorEntry = viewport.getActor(volumeId)
const volumeActor = actorEntry.actor
const rgbTransferFunction = volumeActor
.getProperty()
.getRGBTransferFunction(0)
// Todo: implement invert in setProperties
csUtils.invertRgbTransferFunction(rgbTransferFunction)
viewport.render()
})
let viewporId = this.activeIndex === 1 ? 'CT_AXIAL' : this.activeIndex === 2 ? 'PT_AXIAL' : this.activeIndex === 3 ? 'FUSION_AXIAL' : 'PET_MIP_CORONAL'
let volumeId = this.activeIndex === 1 ? ctVolumeId : ptVolumeId
const renderingEngine = getRenderingEngine(renderingEngineId)
const viewport = renderingEngine.getViewport(viewporId)
const { invert } = viewport.getProperties()
if ( this.isFusion ) {
viewport.setProperties({ invert: !invert }, volumeId )
}
viewport.setProperties({ invert: !invert })
viewport.render()
},
showPanel(e) {
e.currentTarget.firstChild.lastChild.style.display = 'block'