123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- /**
- * krpano 1.20 全景hotspot统一schema
- *
- *
- * */
- // import config from '../config'
- import 'core-js/modules/es.array.at'
- import 'core-js/modules/web.structured-clone'
- console.log('支持-structuredClone', 'structuredClone' in globalThis)
- const initState = {
- id: "",
- title: "",
- type: 0, // 热点大类型
- ath: 0,
- atv: 0,
- link: "",
- icon: "",
- visible: true,
- size: 0,
- style: {
- fontSize: 12,
- position: "top",
- isHover: false,
- borderColor: "",
- fillColor: "",
- textColor: "",
- isShowLine: "",
- isTextWrap: "",
- lineDirection: "",
- textDirection: "",
- textNumPerLine: "",
- duration: 0,
- frameNumber: 0,
- frameWidth: 0,
- }
- }
- //基本样式汇总
- const convertBaseStyle = (dest, origin) => {
- if (dest) {
- // normal
- dest.style.fontSize = origin.fontSize
- dest.style.position = origin.titlePosition
- if (origin && origin.titleDisplayMode == "always") {
- dest.visible = 0
- }
- if (origin && origin.titleDisplayMode == "never") {
- dest.visible = 1
- }
- if (origin && origin.titleDisplayMode == "hover") {
- dest.visible = 2
- }
- if ('visible' in origin && typeof origin.visible == "boolean") {
- dest.visible = origin.visible ? 0 : 1
- dest.style.position = "top"
- }
- dest.style.borderColor = '';
- dest.style.fillColor = 'rgba(0,0,0,0.8)';
- dest.style.textColor = 'rgba(255,255,255,1)';
- }
- //custom
- if (origin && origin.hotspotIconType === 'serial_frame') {
- dest.style.duration = origin.serialFrameInfo.duration
- dest.style.frameNumber = origin.serialFrameInfo.frameNumber
- dest.style.frameWidth = origin.serialFrameInfo.frameWidth
- }
- //custom
- if (origin && origin.hotspotIconType === 'personalized_tag') {
- dest.style.borderColor = origin.personalizedTagInfo.borderColor;
- dest.style.fillColor = origin.personalizedTagInfo.fillColor
- dest.style.isTextWrap = origin.personalizedTagInfo.isTextWrap
- dest.style.lineDirection = origin.personalizedTagInfo.lineDirection
- dest.style.textColor = origin.personalizedTagInfo.textColor
- dest.style.textDirection = origin.personalizedTagInfo.textDirection
- dest.style.textNumPerLine = origin.personalizedTagInfo.textNumPerLine
- dest.style.isShowLine = origin.personalizedTagInfo.isShowLine
- }
- }
- const coverSystemIconPart = (origin) => {
- const duplicate = structuredClone(initState)
- duplicate.id = origin.name;
- duplicate.title = origin.hotspotTitle;
- duplicate.ath = origin.ath;
- duplicate.atv = origin.atv;
- duplicate.type = 0;
- duplicate.icon = origin.img || '';
- duplicate.link = origin.link || '';
- duplicate.size = origin.size;
- convertBaseStyle(duplicate, origin)
- return duplicate;
- }
- const coverImageconPart = (origin) => {
- // const defaultImage = config.getStaticResource('/panoassets/images/hotspot/image_place_holder.png');
- const duplicate = structuredClone(initState)
- duplicate.id = origin.name;
- duplicate.title = origin.hotspotTitle;
- duplicate.ath = origin.ath;
- duplicate.atv = origin.atv;
- duplicate.type = 1;
- duplicate.icon = origin.customIconInfo.img || '';
- duplicate.link = origin.link || '';
- duplicate.size = origin.size;
- convertBaseStyle(duplicate, origin)
- return duplicate;
- }
- const coverSerialFrame = (origin) => {
- const duplicate = structuredClone(initState);
- // const defaultImage = config.getStaticResource('/panoassets/images/hotspot/image_place_holder.png');
- // console.log('defaultImage', defaultImage);
- duplicate.id = origin.name;
- duplicate.title = origin.hotspotTitle;
- duplicate.ath = origin.ath;
- duplicate.atv = origin.atv;
- duplicate.type = 2;
- duplicate.icon = origin.serialFrameInfo.img || '';
- duplicate.link = origin.link || '';
- duplicate.size = origin.size;
- convertBaseStyle(duplicate, origin)
- return duplicate;
- }
- const coverpersonalizedTag = (origin) => {
- const duplicate = structuredClone(initState);
- duplicate.id = origin.name;
- duplicate.title = origin.hotspotTitle;
- duplicate.ath = origin.ath;
- duplicate.atv = origin.atv;
- duplicate.type = 3;
- duplicate.link = origin.link || '';
- duplicate.size = origin.size;
- convertBaseStyle(duplicate, origin)
- return duplicate;
- }
- export const convertJQHotspot = (origin) => {
- const type = origin.hotspotIconType
- switch (type) {
- case 'system_icon':
- return coverSystemIconPart(origin);
- case 'custom_image':
- return coverImageconPart(origin);
- case 'serial_frame':
- return coverSerialFrame(origin);
- case 'personalized_tag':
- return coverpersonalizedTag(origin);
- default:
- return coverSystemIconPart(origin);
- }
- }
|