深度画布功能
This commit is contained in:
40
src/components/Canvas/DepthCanvas/tools/canvasMethod.js
Normal file
40
src/components/Canvas/DepthCanvas/tools/canvasMethod.js
Normal file
@@ -0,0 +1,40 @@
|
||||
/** 克隆对象 */
|
||||
export async function cloneObjects(objects = []) {
|
||||
const arrs = []
|
||||
for (const obj of objects) {
|
||||
const clonedObj = await new Promise((resolve, reject) => {
|
||||
obj.clone((v) => {
|
||||
v.set({
|
||||
left: obj.left,
|
||||
top: obj.top,
|
||||
width: obj.width,
|
||||
height: obj.height,
|
||||
scaleX: obj.scaleX,
|
||||
scaleY: obj.scaleY,
|
||||
})
|
||||
resolve(v)
|
||||
})
|
||||
})
|
||||
arrs.push(clonedObj)
|
||||
}
|
||||
return arrs
|
||||
}
|
||||
|
||||
|
||||
/** 获取组合对象边界 */
|
||||
export async function getObjectsBoundingBox(objects = []) {
|
||||
const box1 = { x: Infinity, y: Infinity }
|
||||
const box2 = { x: -Infinity, y: -Infinity }
|
||||
objects.forEach(obj => {
|
||||
box1.x = Math.min(box1.x, obj.left)
|
||||
box1.y = Math.min(box1.y, obj.top)
|
||||
box2.x = Math.max(box2.x, obj.left + obj.width * obj.scaleX)
|
||||
box2.y = Math.max(box2.y, obj.top + obj.height * obj.scaleY)
|
||||
})
|
||||
return {
|
||||
left: box1.x,
|
||||
top: box1.y,
|
||||
width: box2.x - box1.x,
|
||||
height: box2.y - box1.y,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user