|
|
|
@ -82,7 +82,6 @@ export const useDeviceObject = () => {
|
|
|
|
|
top
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
// 获取图片对象尺寸
|
|
|
|
|
|
|
|
|
|
// 可操作区域的各点位相对坐标【限定可操作区域边界】
|
|
|
|
|
function fetchViewsBoundaries(viewObj, activeObj) {
|
|
|
|
@ -119,7 +118,7 @@ export const useDeviceObject = () => {
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 判断设备是否在可视区域内
|
|
|
|
|
// 操作区判断设备是否在可视区域内
|
|
|
|
|
function isInViewBoundaries(viewObj, deviceObj): boolean {
|
|
|
|
|
const { x_min, x_max, y_min, y_max } = fetchViewsBoundaries(
|
|
|
|
|
viewObj,
|
|
|
|
@ -142,6 +141,63 @@ export const useDeviceObject = () => {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 预览判断当前的图片图层内
|
|
|
|
|
function isInCurrViewBoundaries(viewObj, deviceObj): boolean {
|
|
|
|
|
const objLeft = deviceObj.left;
|
|
|
|
|
const objTop = deviceObj.top;
|
|
|
|
|
const canvasObject = viewObj;
|
|
|
|
|
const { backgroundImage } = canvasObject; // backgroundImage 背景图片
|
|
|
|
|
const currIconWidth = deviceObj?.width * deviceObj?.scaleX;
|
|
|
|
|
const currIconHeight = deviceObj?.height * deviceObj?.scaleY;
|
|
|
|
|
const y_mistake = -8 * deviceObj?.scaleY; // 上下边界误差
|
|
|
|
|
const x_mistake = 1; // 左右边界误差
|
|
|
|
|
const startLeft =
|
|
|
|
|
(canvasObject.width - backgroundImage.width * backgroundImage.scaleX) /
|
|
|
|
|
2 -
|
|
|
|
|
currIconWidth / 2;
|
|
|
|
|
const startTop =
|
|
|
|
|
(canvasObject.height - backgroundImage.height * backgroundImage.scaleY) /
|
|
|
|
|
2 -
|
|
|
|
|
currIconHeight -
|
|
|
|
|
y_mistake;
|
|
|
|
|
const endLeft = startLeft + backgroundImage.width * backgroundImage.scaleX;
|
|
|
|
|
const endTop = startTop + backgroundImage.height * backgroundImage.scaleY;
|
|
|
|
|
|
|
|
|
|
console.log(
|
|
|
|
|
backgroundImage.getBoundingClientRect(),
|
|
|
|
|
canvasObject.width,
|
|
|
|
|
canvasObject.scaleX,
|
|
|
|
|
backgroundImage.width,
|
|
|
|
|
backgroundImage.scaleX,
|
|
|
|
|
currIconWidth,
|
|
|
|
|
"isInCurrViewBoundaries",
|
|
|
|
|
backgroundImage.scaleX,
|
|
|
|
|
deviceObj,
|
|
|
|
|
"startLeft",
|
|
|
|
|
startLeft,
|
|
|
|
|
"startTop",
|
|
|
|
|
startTop,
|
|
|
|
|
"endLeft",
|
|
|
|
|
endLeft,
|
|
|
|
|
"endTop",
|
|
|
|
|
endTop
|
|
|
|
|
);
|
|
|
|
|
if (
|
|
|
|
|
objLeft < startLeft - x_mistake ||
|
|
|
|
|
objTop < startTop ||
|
|
|
|
|
objLeft > endLeft + x_mistake ||
|
|
|
|
|
objTop > endTop
|
|
|
|
|
) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isInView() {
|
|
|
|
|
// TODO 用三角函数判断
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 设备对象是否移动
|
|
|
|
|
function isMoveDevice(activeObject, viewObj) {
|
|
|
|
|
const x_ordinate_history = activeObject.get(deviceInfoKey)?.x_ordinate;
|
|
|
|
@ -179,10 +235,6 @@ export const useDeviceObject = () => {
|
|
|
|
|
return x_move || y_move;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// function fetchDeviceObjectBySeemKey(targetDeviceItem, viewObj) {
|
|
|
|
|
// console.log(targetDeviceItem, viewObj, "fetchDeviceObjectBySeemKey");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// 初始化设备对象
|
|
|
|
|
const initDeviceGroupObjects: Record<string, any> = (
|
|
|
|
|
record,
|
|
|
|
@ -213,6 +265,7 @@ export const useDeviceObject = () => {
|
|
|
|
|
bgDeviceImage = device_video_bg;
|
|
|
|
|
}
|
|
|
|
|
return {
|
|
|
|
|
name: "device",
|
|
|
|
|
id: uuid(),
|
|
|
|
|
deviceInfo: record, // 设备信息
|
|
|
|
|
left: record?.left ? Number(record?.left) : 0,
|
|
|
|
@ -228,7 +281,7 @@ export const useDeviceObject = () => {
|
|
|
|
|
originX: "left",
|
|
|
|
|
originY: "top",
|
|
|
|
|
width: 132,
|
|
|
|
|
height: 66,
|
|
|
|
|
height: 62,
|
|
|
|
|
fill: "rgb(0,0,0)",
|
|
|
|
|
stroke: null,
|
|
|
|
|
strokeWidth: 0,
|
|
|
|
@ -437,7 +490,7 @@ export const useDeviceObject = () => {
|
|
|
|
|
isMoveDevice,
|
|
|
|
|
fetchViewsBoundaries,
|
|
|
|
|
fetchOrdinateByView,
|
|
|
|
|
fetchMoveDeviceObjectOrdinate
|
|
|
|
|
// fetchDeviceObjectBySeemKey
|
|
|
|
|
fetchMoveDeviceObjectOrdinate,
|
|
|
|
|
isInCurrViewBoundaries
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|