|
<template> |
|
<div class="image-outline"> |
|
<ImageRectOutline |
|
v-if="clipShape.type === 'rect'" |
|
:width="elementInfo.width" |
|
:height="elementInfo.height" |
|
:radius="clipShape.radius" |
|
:outline="elementInfo.outline" |
|
/> |
|
<ImageEllipseOutline |
|
v-else-if="clipShape.type === 'ellipse'" |
|
:width="elementInfo.width" |
|
:height="elementInfo.height" |
|
:outline="elementInfo.outline" |
|
/> |
|
<ImagePolygonOutline |
|
v-else-if="clipShape.type === 'polygon'" |
|
:width="elementInfo.width" |
|
:height="elementInfo.height" |
|
:outline="elementInfo.outline" |
|
:createPath="clipShape.createPath!" |
|
/> |
|
</div> |
|
</template> |
|
|
|
<script lang="ts" setup> |
|
import { computed } from 'vue' |
|
import type { PPTImageElement } from '@/types/slides' |
|
import useClipImage from '../useClipImage' |
|
|
|
import ImageRectOutline from './ImageRectOutline.vue' |
|
import ImageEllipseOutline from './ImageEllipseOutline.vue' |
|
import ImagePolygonOutline from './ImagePolygonOutline.vue' |
|
|
|
const props = defineProps<{ |
|
elementInfo: PPTImageElement |
|
}>() |
|
|
|
const imageElement = computed(() => props.elementInfo) |
|
const { clipShape } = useClipImage(imageElement) |
|
</script> |