1
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
b971235164
commit
3b5ebfcba1
|
|
@ -0,0 +1,116 @@
|
|||
<template>
|
||||
<div class="ContourViewport" ref="ContourViewport" id="ContourViewport"></div>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
getRenderingEngine,
|
||||
CONSTANTS,
|
||||
setVolumesForViewports,
|
||||
eventTarget,
|
||||
Enums,
|
||||
utilities,
|
||||
} from '@cornerstonejs/core'
|
||||
import * as cornerstoneTools from '@cornerstonejs/tools'
|
||||
import setCtTransferFunctionForVolumeActor from '@/views/trials/trials-panel/reading/dicoms/components/Fusion/js/setCtTransferFunctionForVolumeActor'
|
||||
import DicomEvent from '@/views/trials/trials-panel/reading/dicoms/components/DicomEvent'
|
||||
const {
|
||||
Enums: csToolsEnums,
|
||||
segmentation,
|
||||
TrackballRotateTool,
|
||||
ToolGroupManager
|
||||
} = cornerstoneTools
|
||||
const { MouseBindings, Events: toolsEvents } = csToolsEnums
|
||||
export default {
|
||||
name: "ContourViewport",
|
||||
props: {
|
||||
renderingEngineId: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
viewportId: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
visitInfo: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
},
|
||||
// visible: {
|
||||
// type: Boolean,
|
||||
// default: false
|
||||
// },
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
volumeId: null,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
eventTarget.addEventListener(Enums.Events.WEB_WORKER_PROGRESS, (evt) => {
|
||||
const { progress } = evt.detail;
|
||||
console.log(progress, 'countour_progress')
|
||||
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
async setSeriesInfo(obj) {
|
||||
try {
|
||||
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||
const viewport = renderingEngine.getViewport(this.viewportId)
|
||||
let { volumeId, segmentationId } = obj
|
||||
this.volumeId = volumeId
|
||||
await setVolumesForViewports(
|
||||
renderingEngine,
|
||||
[{ volumeId, callback: setCtTransferFunctionForVolumeActor }],
|
||||
[this.viewportId]
|
||||
);
|
||||
// const volumeActor = viewport.getDefaultActor()
|
||||
// .actor;
|
||||
// utilities.applyPreset(
|
||||
// volumeActor,
|
||||
// CONSTANTS.VIEWPORT_PRESETS.find((preset) => preset.name === 'CT-Bone')
|
||||
// );
|
||||
// volumeActor.setVisibility(false);
|
||||
viewport.render();
|
||||
const toolGroup = ToolGroupManager.getToolGroup(this.viewportId)
|
||||
toolGroup.setToolActive(TrackballRotateTool.toolName, {
|
||||
bindings: [
|
||||
{
|
||||
mouseButton: MouseBindings.Primary,
|
||||
},
|
||||
],
|
||||
});
|
||||
let s = segmentation.getActiveSegmentation(this.viewportId)
|
||||
if (s) {
|
||||
await segmentation.removeSegmentationRepresentation(this.viewportId, {
|
||||
segmentationId: s.segmentationId,
|
||||
type: csToolsEnums.SegmentationRepresentations.Surface,
|
||||
})
|
||||
}
|
||||
console.log("ContourLoading...")
|
||||
await segmentation.addSegmentationRepresentations(this.viewportId, [
|
||||
{
|
||||
segmentationId,
|
||||
type: csToolsEnums.SegmentationRepresentations.Contour,
|
||||
},
|
||||
]);
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
#ContourViewport {
|
||||
width: 450px;
|
||||
height: 300px;
|
||||
position: fixed;
|
||||
top: 100px;
|
||||
z-index: -9999;
|
||||
left: 100px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,144 @@
|
|||
<template>
|
||||
<div class="SurfaceViewport" ref="SurfaceViewport" v-show="visible" id="SurfaceViewport"></div>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
getRenderingEngine,
|
||||
CONSTANTS,
|
||||
setVolumesForViewports,
|
||||
eventTarget,
|
||||
Enums,
|
||||
utilities,
|
||||
} from '@cornerstonejs/core'
|
||||
import * as cornerstoneTools from '@cornerstonejs/tools'
|
||||
import setCtTransferFunctionForVolumeActor from '@/views/trials/trials-panel/reading/dicoms/components/Fusion/js/setCtTransferFunctionForVolumeActor'
|
||||
const {
|
||||
Enums: csToolsEnums,
|
||||
segmentation,
|
||||
TrackballRotateTool,
|
||||
ToolGroupManager
|
||||
} = cornerstoneTools
|
||||
const { MouseBindings, Events: toolsEvents } = csToolsEnums
|
||||
export default {
|
||||
name: "SurfaceViewport",
|
||||
props: {
|
||||
renderingEngineId: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
viewportId: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
visitInfo: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
},
|
||||
visible: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
volumeId: null,
|
||||
info: null
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
eventTarget.addEventListener(Enums.Events.WEB_WORKER_PROGRESS, (evt) => {
|
||||
const { progress } = evt.detail;
|
||||
console.log(progress, 'progress')
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
async setSeriesInfo(obj) {
|
||||
try {
|
||||
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||
const viewport = renderingEngine.getViewport(this.viewportId)
|
||||
let { volumeId } = obj
|
||||
this.info = obj
|
||||
this.volumeId = volumeId
|
||||
await setVolumesForViewports(
|
||||
renderingEngine,
|
||||
[{ volumeId, callback: setCtTransferFunctionForVolumeActor }],
|
||||
[this.viewportId]
|
||||
);
|
||||
const volumeActor = viewport.getDefaultActor()
|
||||
.actor;
|
||||
utilities.applyPreset(
|
||||
volumeActor,
|
||||
CONSTANTS.VIEWPORT_PRESETS.find((preset) => preset.name === 'CT-Bone')
|
||||
);
|
||||
volumeActor.setVisibility(false);
|
||||
viewport.render();
|
||||
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
},
|
||||
async setSurface() {
|
||||
let { segmentationId, segmentations } = this.info
|
||||
const toolGroup = ToolGroupManager.getToolGroup(this.viewportId)
|
||||
toolGroup.setToolActive(TrackballRotateTool.toolName, {
|
||||
bindings: [
|
||||
{
|
||||
mouseButton: MouseBindings.Primary,
|
||||
},
|
||||
],
|
||||
});
|
||||
let s = segmentation.getActiveSegmentation(this.viewportId)
|
||||
console.log(s)
|
||||
if (s) {
|
||||
await segmentation.removeSegmentationRepresentation(this.viewportId, {
|
||||
segmentationId: s.segmentationId,
|
||||
type: csToolsEnums.SegmentationRepresentations.Surface,
|
||||
})
|
||||
}
|
||||
await segmentation.addSegmentationRepresentations(this.viewportId, [
|
||||
{
|
||||
segmentationId,
|
||||
type: csToolsEnums.SegmentationRepresentations.Contour,
|
||||
},
|
||||
]);
|
||||
console.log("loading...")
|
||||
this.$nextTick(async () => {
|
||||
await segmentation.addSegmentationRepresentations(this.viewportId, [
|
||||
{
|
||||
segmentationId,
|
||||
type: csToolsEnums.SegmentationRepresentations.Surface,
|
||||
},
|
||||
]);
|
||||
segmentations.segments.forEach(item => {
|
||||
segmentation.config.color.setSegmentIndexColor(this.viewportId, item.segmentationId, item.segmentIndex, this.hex2Rgb(item.color))
|
||||
})
|
||||
})
|
||||
},
|
||||
hex2Rgb(hexValue, alpha = 1) {
|
||||
const rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
|
||||
const hex = hexValue.replace(rgx, (m, r, g, b) => r + r + g + g + b + b);
|
||||
const rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
||||
if (!rgb) {
|
||||
return hexValue;
|
||||
}
|
||||
const r = parseInt(rgb[1], 16),
|
||||
g = parseInt(rgb[2], 16),
|
||||
b = parseInt(rgb[3], 16);
|
||||
return [r, g, b, alpha * 255];
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
#SurfaceViewport {
|
||||
width: 450px;
|
||||
height: 300px;
|
||||
position: fixed;
|
||||
top: 100px;
|
||||
z-index: 9999;
|
||||
left: 100px;
|
||||
}
|
||||
</style>
|
||||
Loading…
Reference in New Issue