阅片页面图标更改;适应图像逻辑更改;petct工具更改
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
1e57777d3b
commit
73e8f24c3d
|
|
@ -1 +1 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1609205172733" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2919" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M320 640v256H256v-192H64v-64h256z m640 0v64h-192v192h-64v-256h256zM512 384a128 128 0 1 1 0 256 128 128 0 0 1 0-256zM320 128v256H64V320h192V128h64z m448 0v192h192v64h-256V128h64z" p-id="2920"></path></svg>
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1777426164195" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5541" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M316 672h60c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8zM512 622c22.1 0 40-17.9 40-39 0-23.1-17.9-41-40-41s-40 17.9-40 41c0 21.1 17.9 39 40 39zM512 482c22.1 0 40-17.9 40-39 0-23.1-17.9-41-40-41s-40 17.9-40 41c0 21.1 17.9 39 40 39z" p-id="5542"></path><path d="M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H184V184h656v656z" p-id="5543"></path><path d="M648 672h60c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8z" p-id="5544"></path></svg>
|
||||
|
Before Width: | Height: | Size: 581 B After Width: | Height: | Size: 908 B |
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1777432778355" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2607" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M954.026667 913.6128H600.746667a35.908267 35.908267 0 0 1-35.771734-35.771733V116.736a35.703467 35.703467 0 0 1 68.266667-15.018667l353.143467 761.0368a35.566933 35.566933 0 0 1-2.2528 34.269867 35.362133 35.362133 0 0 1-30.173867 16.5888z" fill="#FFFFFF" p-id="2608"></path><path d="M465.373867 913.544533H112.162133a35.6352 35.6352 0 0 1-32.494933-50.722133L432.878933 101.717333a35.6352 35.6352 0 0 1 40.277334-19.8656 35.566933 35.566933 0 0 1 27.989333 34.952534V877.909333a35.771733 35.771733 0 0 1-35.771733 35.6352z" fill="#FFFFFF" fill-opacity=".4" p-id="2609"></path></svg>
|
||||
|
After Width: | Height: | Size: 916 B |
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1777426622063" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8288" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M667.69962 294.974152l0 589.688383 316.384787 0L667.69962 294.974152zM632.522446 884.662535 632.522446 572.426231 34.882973 884.662535 632.522446 884.662535zM510.16777 357.862457l-137.677663-31.323403c0 0 97.523127-217.392192 349.512279-98.842169 0 0-196.516746-248.618381-487.190965 67.571978l-137.677663-31.273261 158.803819 250.082732L510.16777 357.862457z" p-id="8289"></path></svg>
|
||||
|
After Width: | Height: | Size: 719 B |
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1777426691300" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2490" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M34.884 883.64h316.385V293.95L34.884 883.64z m949.201 0L386.446 571.402v312.236h597.64zM763.03 513.053l158.805-250.083-137.678 31.274c-290.674-316.19-487.191-67.572-487.191-67.572 251.99-118.55 349.512 98.842 349.512 98.842l-137.677 31.323L763.03 513.054z" fill="" p-id="2491"></path></svg>
|
||||
|
After Width: | Height: | Size: 623 B |
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1777432945307" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4263" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M106.496 928.426667V575.2832c0-19.729067 16.042667-35.771733 35.771733-35.771733h761.0368a35.703467 35.703467 0 0 1 15.086934 68.266666L157.354667 960.9216a35.566933 35.566933 0 0 1-34.269867-2.321067 35.362133 35.362133 0 0 1-16.5888-30.173866z" fill="#FFFFFF" p-id="4264"></path><path d="M106.496 439.842133V86.6304a35.6352 35.6352 0 0 1 50.7904-32.494933l761.0368 353.211733a35.6352 35.6352 0 0 1 19.933867 40.209067 35.566933 35.566933 0 0 1-34.952534 27.989333H142.199467a35.771733 35.771733 0 0 1-35.703467-35.703467z" fill="#FFFFFF" fill-opacity=".4" p-id="4265"></path></svg>
|
||||
|
After Width: | Height: | Size: 916 B |
|
|
@ -259,6 +259,7 @@ import CustomWwwcForm from './../CustomWwwcForm'
|
|||
import FusionForm from './FusionForm.vue'
|
||||
import { getTableAnswerRowInfoList, getDicomSeriesInfo } from '@/api/trials'
|
||||
import FusionEvent from './FusionEvent'
|
||||
import FusionJumpToPointTool from '../../../dicoms3D/components/tools/FusionJumpToPointTool'
|
||||
// import { ColorMaps } from '@kitware/vtk.js/Common/Core/ColorMaps'
|
||||
import vtkColorMaps from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps'
|
||||
import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction'
|
||||
|
|
@ -282,7 +283,6 @@ const {
|
|||
// StackScrollMouseWheelTool,
|
||||
StackScrollTool,
|
||||
synchronizers,
|
||||
MIPJumpToClickTool,
|
||||
// VolumeRotateMouseWheelTool,
|
||||
VolumeRotateTool,
|
||||
OrientationMarkerTool,
|
||||
|
|
@ -425,7 +425,12 @@ export default {
|
|||
fusion: { visible: false }, // 历史记录融合调窗
|
||||
screenshotWindow: null,
|
||||
hasVoiChanged: false,
|
||||
lastUpper: null
|
||||
lastUpper: null,
|
||||
fusionCrosshairStyle: {
|
||||
lineWidth: 2,
|
||||
lineLength: 20,
|
||||
centerHoleSize: 20,
|
||||
}
|
||||
// initFirstAnnotation:false
|
||||
}
|
||||
},
|
||||
|
|
@ -623,6 +628,7 @@ export default {
|
|||
this.setUpToolGroups()
|
||||
|
||||
this.setUpSynchronizers()
|
||||
this.dispatchFusionCenterPoint()
|
||||
// this.$refs['CT_AXIAL'].scroll(0)
|
||||
// this.$refs['PT_AXIAL'].scroll(0)
|
||||
// this.$refs['FUSION_AXIAL'].scroll(0)
|
||||
|
|
@ -974,7 +980,7 @@ export default {
|
|||
cornerstoneTools.addTool(WindowLevelTool)
|
||||
cornerstoneTools.addTool(ZoomTool)
|
||||
cornerstoneTools.addTool(StackScrollTool)
|
||||
cornerstoneTools.addTool(MIPJumpToClickTool)
|
||||
cornerstoneTools.addTool(FusionJumpToPointTool)
|
||||
cornerstoneTools.addTool(VolumeRotateTool)
|
||||
cornerstoneTools.addTool(EllipticalROITool)
|
||||
cornerstoneTools.addTool(CircleROITool)
|
||||
|
|
@ -1006,6 +1012,7 @@ export default {
|
|||
toolGroup.addTool(ProbeTool.toolName)
|
||||
toolGroup.addTool(ScaleOverlayTool.toolName)
|
||||
toolGroup.addTool(OrientationMarkerTool.toolName)
|
||||
toolGroup.addTool(FusionJumpToPointTool.toolName, this.getFusionJumpToolConfiguration())
|
||||
})
|
||||
|
||||
fusionToolGroup.addTool(PanTool.toolName)
|
||||
|
|
@ -1021,6 +1028,7 @@ export default {
|
|||
fusionToolGroup.addTool(ProbeTool.toolName)
|
||||
fusionToolGroup.addTool(ScaleOverlayTool.toolName)
|
||||
fusionToolGroup.addTool(OrientationMarkerTool.toolName)
|
||||
fusionToolGroup.addTool(FusionJumpToPointTool.toolName, this.getFusionJumpToolConfiguration())
|
||||
// Here is the difference in the toolGroups used, that we need to specify the
|
||||
// volume to use for the WindowLevelTool for the fusion viewports
|
||||
|
||||
|
|
@ -1072,6 +1080,13 @@ export default {
|
|||
true // overwrite
|
||||
)
|
||||
toolGroup.setToolEnabled(ScaleOverlayTool.toolName)
|
||||
toolGroup.setToolActive(FusionJumpToPointTool.toolName, {
|
||||
bindings: [
|
||||
{
|
||||
mouseButton: MouseBindings.Primary // Left Click
|
||||
}
|
||||
]
|
||||
})
|
||||
// toolGroup.setToolConfiguration(OrientationMarkerTool.toolName, {
|
||||
// orientationWidget: {
|
||||
// enabled: true,
|
||||
|
|
@ -1123,14 +1138,11 @@ export default {
|
|||
mipToolGroup.setToolActive(VolumeRotateTool.toolName, {
|
||||
bindings: [{ mouseButton: MouseBindings.Wheel }],
|
||||
});
|
||||
mipToolGroup.addTool('MIPJumpToClickTool', {
|
||||
//
|
||||
toolGroupId: ptToolGroupId
|
||||
})
|
||||
mipToolGroup.addTool(FusionJumpToPointTool.toolName, this.getFusionJumpToolConfiguration())
|
||||
|
||||
// Set the initial state of the tools, here we set one tool active on left click.
|
||||
// This means left click will draw that tool.
|
||||
mipToolGroup.setToolActive('MIPJumpToClickTool', {
|
||||
mipToolGroup.setToolActive(FusionJumpToPointTool.toolName, {
|
||||
bindings: [
|
||||
{
|
||||
mouseButton: MouseBindings.Primary // Left ClickR
|
||||
|
|
@ -1144,6 +1156,81 @@ export default {
|
|||
// mipToolGroup.setToolActive(OrientationMarkerTool.toolName)
|
||||
mipToolGroup.addViewport(viewportIds.PETMIP.CORONAL, renderingEngineId)
|
||||
},
|
||||
getFusionJumpToolConfiguration() {
|
||||
return {
|
||||
targetViewportIds: [
|
||||
viewportIds.CT.AXIAL,
|
||||
viewportIds.PT.AXIAL,
|
||||
viewportIds.FUSION.AXIAL,
|
||||
viewportIds.PETMIP.CORONAL
|
||||
],
|
||||
useBrightestPoint: true,
|
||||
jumpToTargetViewports: true,
|
||||
dispatchEventName: 'fusion-mip-point-selected',
|
||||
getReferenceLineColor: this.setFusionCrosshairsToolLineColor,
|
||||
style: this.fusionCrosshairStyle,
|
||||
referenceLinesCenterGapRadius: this.fusionCrosshairStyle.centerHoleSize,
|
||||
minimal: {
|
||||
enabled: true,
|
||||
lineLengthInPx: this.fusionCrosshairStyle.lineLength,
|
||||
},
|
||||
mipViewportIds: [viewportIds.PETMIP.CORONAL]
|
||||
}
|
||||
},
|
||||
setFusionCrosshairsToolLineColor(viewportId) {
|
||||
const colors = {
|
||||
[viewportIds.CT.AXIAL]: '#0000ff',
|
||||
[viewportIds.PT.AXIAL]: '#0000ff',
|
||||
[viewportIds.FUSION.AXIAL]: '#0000ff',
|
||||
[viewportIds.PETMIP.CORONAL]: '#ff0000'
|
||||
}
|
||||
return colors[viewportId] || '#0000ff'
|
||||
},
|
||||
dispatchFusionCenterPoint(retryCount = 0) {
|
||||
const renderEngine = getRenderingEngine(renderingEngineId)
|
||||
if (!renderEngine) return
|
||||
const toolGroupCandidates = [fusionToolGroupId, mipToolGroupUID, ptToolGroupId, ctToolGroupId]
|
||||
let instance = null
|
||||
for (const toolGroupId of toolGroupCandidates) {
|
||||
const toolGroup = ToolGroupManager.getToolGroup(toolGroupId)
|
||||
instance = toolGroup?.getToolInstance?.(FusionJumpToPointTool.toolName)
|
||||
if (instance?.setPoint) break
|
||||
}
|
||||
if (!instance?.setPoint) {
|
||||
if (retryCount < 10) {
|
||||
setTimeout(() => {
|
||||
this.dispatchFusionCenterPoint(retryCount + 1)
|
||||
}, 120)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
const candidates = [viewportIds.FUSION.AXIAL, viewportIds.PT.AXIAL, viewportIds.CT.AXIAL]
|
||||
for (const viewportId of candidates) {
|
||||
const viewport = renderEngine.getViewport(viewportId)
|
||||
if (!viewport) continue
|
||||
const width = viewport.element?.clientWidth
|
||||
const height = viewport.element?.clientHeight
|
||||
let worldPoint = null
|
||||
if (width && height && viewport.canvasToWorld) {
|
||||
worldPoint = viewport.canvasToWorld([width / 2, height / 2])
|
||||
}
|
||||
if ((!worldPoint || worldPoint.length < 3) && viewport.getCamera) {
|
||||
worldPoint = viewport.getCamera()?.focalPoint
|
||||
}
|
||||
if (!worldPoint || worldPoint.length < 3) continue
|
||||
instance.setPoint(worldPoint, viewportId, renderEngine.id, {
|
||||
jumpToTargetViewports: true,
|
||||
dispatchEvent: false,
|
||||
})
|
||||
return
|
||||
}
|
||||
if (retryCount < 10) {
|
||||
setTimeout(() => {
|
||||
this.dispatchFusionCenterPoint(retryCount + 1)
|
||||
}, 120)
|
||||
}
|
||||
},
|
||||
getTextLines(data, targetId) {
|
||||
const cachedVolumeStats = data.cachedStats[targetId]
|
||||
const {
|
||||
|
|
|
|||
|
|
@ -561,16 +561,37 @@ export default {
|
|||
viewport.render()
|
||||
},
|
||||
resize(forceFitToWindow) {
|
||||
console.log('resize: ', forceFitToWindow)
|
||||
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||
const viewport = renderingEngine.getViewport(this.viewportId)
|
||||
if (!forceFitToWindow) {
|
||||
viewport.setZoom(0.5)
|
||||
viewport.render()
|
||||
} else {
|
||||
viewport.setZoom(1)
|
||||
if (!viewport) return
|
||||
|
||||
if (forceFitToWindow) {
|
||||
viewport.resetCamera({ resetPan: true, resetZoom: true, resetToCenter: true })
|
||||
viewport.render()
|
||||
return
|
||||
}
|
||||
|
||||
viewport.resetCamera({ resetPan: true, resetZoom: true, resetToCenter: true })
|
||||
const canvas = viewport.getCanvas() || this.element.querySelector('canvas')
|
||||
const imageData = viewport.getImageData()?.imageData
|
||||
const dimensions = imageData?.getDimensions?.()
|
||||
const imageWidth = dimensions?.[0]
|
||||
const imageHeight = dimensions?.[1]
|
||||
const canvasWidth = canvas?.clientWidth
|
||||
const canvasHeight = canvas?.clientHeight
|
||||
|
||||
if (!imageWidth || !imageHeight || !canvasWidth || !canvasHeight) {
|
||||
viewport.render()
|
||||
return
|
||||
}
|
||||
|
||||
const fitScale = Math.min(canvasWidth / imageWidth, canvasHeight / imageHeight)
|
||||
if (fitScale > 0) {
|
||||
// zoom=1 通常是 fit-to-window,这里换算为图像接近 1:1 像素显示
|
||||
viewport.setZoom(1 / fitScale)
|
||||
}
|
||||
|
||||
viewport.render()
|
||||
},
|
||||
voiChange(v) {
|
||||
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||
|
|
@ -1024,4 +1045,4 @@ export default {
|
|||
cursor: move
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -415,16 +415,42 @@ export default {
|
|||
viewport.render()
|
||||
},
|
||||
resize(forceFitToWindow) {
|
||||
console.log('resize: ', forceFitToWindow)
|
||||
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||
const viewport = renderingEngine.getViewport(this.viewportId)
|
||||
if (!forceFitToWindow) {
|
||||
viewport.setZoom(0.5)
|
||||
viewport.render()
|
||||
} else {
|
||||
viewport.setZoom(1)
|
||||
if (!viewport) return
|
||||
|
||||
if (this.isMip) {
|
||||
viewport.resetCamera({ resetPan: true, resetZoom: true, resetToCenter: true })
|
||||
viewport.render()
|
||||
return
|
||||
}
|
||||
|
||||
if (forceFitToWindow) {
|
||||
viewport.resetCamera({ resetPan: true, resetZoom: true, resetToCenter: true })
|
||||
viewport.render()
|
||||
return
|
||||
}
|
||||
|
||||
viewport.resetCamera({ resetPan: true, resetZoom: true, resetToCenter: true })
|
||||
const canvas = viewport.getCanvas() || this.element.querySelector('canvas')
|
||||
const imageData = viewport.getImageData()?.imageData
|
||||
const dimensions = imageData?.getDimensions?.()
|
||||
const imageWidth = dimensions?.[0]
|
||||
const imageHeight = dimensions?.[1]
|
||||
const canvasWidth = canvas?.clientWidth
|
||||
const canvasHeight = canvas?.clientHeight
|
||||
|
||||
if (!imageWidth || !imageHeight || !canvasWidth || !canvasHeight) {
|
||||
viewport.render()
|
||||
return
|
||||
}
|
||||
|
||||
const fitScale = Math.min(canvasWidth / imageWidth, canvasHeight / imageHeight)
|
||||
if (fitScale > 0) {
|
||||
viewport.setZoom(1 / fitScale)
|
||||
}
|
||||
|
||||
viewport.render()
|
||||
},
|
||||
voiChange(v) {
|
||||
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||
|
|
|
|||
|
|
@ -143,9 +143,10 @@
|
|||
<i class="el-icon-arrow-down" style="color:#fff;" />
|
||||
</div>
|
||||
<div class="dropdown-content">
|
||||
<ul style="width:100px;">
|
||||
<ul style="width:110px;">
|
||||
<li v-for="rotate in rotateOptions" :key="rotate.label" style="text-align:left;">
|
||||
<span @click.prevent="setViewportRotate(rotate.val)">
|
||||
<svg-icon v-if="rotate.icon" :icon-class="rotate.icon" class="svg-icon" />
|
||||
{{ rotate.label }}
|
||||
</span>
|
||||
</li>
|
||||
|
|
@ -707,11 +708,11 @@ export default {
|
|||
criterionType: null,
|
||||
tools: [],
|
||||
rotateOptions: [
|
||||
{ label: this.$t('trials:reading:button:rotateDefault'), val: 1 },
|
||||
{ label: this.$t('trials:reading:button:rotateVertical'), val: 2 },
|
||||
{ label: this.$t('trials:reading:button:rotateHorizontal'), val: 3 },
|
||||
{ label: this.$t('trials:reading:button:rotateTurnLeft'), val: 4 },
|
||||
{ label: this.$t('trials:reading:button:rotateTurnRight'), val: 5 }
|
||||
{ label: this.$t('trials:reading:button:rotateDefault'), val: 1, icon: ''},
|
||||
{ label: this.$t('trials:reading:button:rotateVertical'), val: 2, icon: 'rotateVertical' },
|
||||
{ label: this.$t('trials:reading:button:rotateHorizontal'), val: 3, icon: 'rotateHorizontal' },
|
||||
{ label: this.$t('trials:reading:button:rotateTurnLeft'), val: 4, icon: 'rotateTurnLeft' },
|
||||
{ label: this.$t('trials:reading:button:rotateTurnRight'), val: 5, icon: 'rotateTurnRight' }
|
||||
],
|
||||
defaultWwwc: [
|
||||
{ label: this.$t('trials:reading:button:wwwcDefault'), val: -1, ww: null, wc: null }, // 默认值
|
||||
|
|
|
|||
|
|
@ -343,16 +343,36 @@ export default {
|
|||
viewport.render()
|
||||
},
|
||||
resize(forceFitToWindow) {
|
||||
console.log('resize: ', forceFitToWindow)
|
||||
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||
const viewport = renderingEngine.getViewport(this.viewportId)
|
||||
if (!forceFitToWindow) {
|
||||
viewport.setZoom(0.5)
|
||||
viewport.render()
|
||||
} else {
|
||||
viewport.setZoom(1)
|
||||
if (!viewport) return
|
||||
|
||||
if (forceFitToWindow) {
|
||||
viewport.resetCamera({ resetPan: true, resetZoom: true, resetToCenter: true })
|
||||
viewport.render()
|
||||
return
|
||||
}
|
||||
|
||||
viewport.resetCamera({ resetPan: true, resetZoom: true, resetToCenter: true })
|
||||
const canvas = viewport.getCanvas() || this.element.querySelector('canvas')
|
||||
const imageData = viewport.getImageData()?.imageData
|
||||
const dimensions = imageData?.getDimensions()
|
||||
const imageWidth = dimensions?.[0]
|
||||
const imageHeight = dimensions?.[1]
|
||||
const canvasWidth = canvas?.clientWidth
|
||||
const canvasHeight = canvas?.clientHeight
|
||||
|
||||
if (!imageWidth || !imageHeight || !canvasWidth || !canvasHeight) {
|
||||
viewport.render()
|
||||
return
|
||||
}
|
||||
|
||||
const fitScale = Math.min(canvasWidth / imageWidth, canvasHeight / imageHeight)
|
||||
if (fitScale > 0) {
|
||||
viewport.setZoom(1 / fitScale)
|
||||
}
|
||||
|
||||
viewport.render()
|
||||
},
|
||||
async prefetchMetadataInformation(imageIdsToPrefetch, modality) {
|
||||
let taskPromises = []
|
||||
|
|
|
|||
|
|
@ -592,16 +592,36 @@ export default {
|
|||
viewport.render()
|
||||
},
|
||||
resize(forceFitToWindow) {
|
||||
console.log('resize: ', forceFitToWindow)
|
||||
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||
const viewport = renderingEngine.getViewport(this.viewportId)
|
||||
if (!forceFitToWindow) {
|
||||
viewport.setZoom(0.5)
|
||||
viewport.render()
|
||||
} else {
|
||||
viewport.setZoom(1)
|
||||
if (!viewport) return
|
||||
|
||||
if (forceFitToWindow) {
|
||||
viewport.resetCamera({ resetPan: true, resetZoom: true, resetToCenter: true })
|
||||
viewport.render()
|
||||
return
|
||||
}
|
||||
|
||||
viewport.resetCamera({ resetPan: true, resetZoom: true, resetToCenter: true })
|
||||
const canvas = viewport.getCanvas() || this.element.querySelector('canvas')
|
||||
const imageData = viewport.getImageData()?.imageData
|
||||
const dimensions = imageData?.getDimensions()
|
||||
const imageWidth = dimensions?.[0]
|
||||
const imageHeight = dimensions?.[1]
|
||||
const canvasWidth = canvas?.clientWidth
|
||||
const canvasHeight = canvas?.clientHeight
|
||||
|
||||
if (!imageWidth || !imageHeight || !canvasWidth || !canvasHeight) {
|
||||
viewport.render()
|
||||
return
|
||||
}
|
||||
|
||||
const fitScale = Math.min(canvasWidth / imageWidth, canvasHeight / imageHeight)
|
||||
if (fitScale > 0) {
|
||||
viewport.setZoom(1 / fitScale)
|
||||
}
|
||||
|
||||
viewport.render()
|
||||
},
|
||||
voiChange(v) {
|
||||
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||
|
|
@ -1058,4 +1078,4 @@ export default {
|
|||
cursor: move
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
|
|
|||
Loading…
Reference in New Issue