Compare commits
No commits in common. "2a8b41a0bf16e10c68ec551364d320d3c4ae9753" and "2ee27ad11de0e9bf3247f0d177fddc2338cad2e9" have entirely different histories.
2a8b41a0bf
...
2ee27ad11d
@ -250,7 +250,7 @@ export function useRoofFn() {
|
|||||||
|
|
||||||
const allRoofObject = canvas
|
const allRoofObject = canvas
|
||||||
.getObjects()
|
.getObjects()
|
||||||
.filter((obj) => obj !== roof && (obj.attributes?.roofId === roof.id || obj.parentId === roof.id || (wall && obj.parentId === wall.id)))
|
.filter((obj) => obj !== roof && (obj.attributes?.roofId === roof.id || obj.parentId === roof.id || obj.parentId === wall.id))
|
||||||
|
|
||||||
/** 지붕이 움직인 만큼의 delta를 구한다. */
|
/** 지붕이 움직인 만큼의 delta를 구한다. */
|
||||||
const originalRoofLeft = roof.left
|
const originalRoofLeft = roof.left
|
||||||
@ -276,23 +276,6 @@ export function useRoofFn() {
|
|||||||
// Move all related objects by the delta
|
// Move all related objects by the delta
|
||||||
allRoofObject.forEach((obj) => {
|
allRoofObject.forEach((obj) => {
|
||||||
if (obj.points !== undefined) {
|
if (obj.points !== undefined) {
|
||||||
if (obj.name === 'arrow') {
|
|
||||||
// arrow 는 originX='left' 기본값이며 polygonMoved 가 left=pathOffset(중심) 으로
|
|
||||||
// 리셋하면 origin 불일치로 위치가 밀리므로, 단순 점 이동만 수행.
|
|
||||||
obj.points = obj.points.map((p) => ({ x: p.x + deltaX, y: p.y + deltaY }))
|
|
||||||
const dim = obj._calcDimensions({})
|
|
||||||
obj.set({
|
|
||||||
left: dim.left + dim.width / 2,
|
|
||||||
top: dim.top + dim.height / 2,
|
|
||||||
width: dim.width,
|
|
||||||
height: dim.height,
|
|
||||||
pathOffset: { x: dim.left + dim.width / 2, y: dim.top + dim.height / 2 },
|
|
||||||
originX: 'center',
|
|
||||||
originY: 'center',
|
|
||||||
objectCaching: false,
|
|
||||||
})
|
|
||||||
obj.setCoords()
|
|
||||||
} else {
|
|
||||||
obj.set({
|
obj.set({
|
||||||
left: obj.left + deltaX,
|
left: obj.left + deltaX,
|
||||||
top: obj.top + deltaY,
|
top: obj.top + deltaY,
|
||||||
@ -302,7 +285,6 @@ export function useRoofFn() {
|
|||||||
})
|
})
|
||||||
obj.fire('polygonMoved')
|
obj.fire('polygonMoved')
|
||||||
obj.fire('modified')
|
obj.fire('modified')
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
obj.set({
|
obj.set({
|
||||||
left: obj.left + deltaX,
|
left: obj.left + deltaX,
|
||||||
|
|||||||
@ -84,25 +84,15 @@ export function useImgLoader() {
|
|||||||
const originalBg = canvas.backgroundColor
|
const originalBg = canvas.backgroundColor
|
||||||
canvas.backgroundColor = '#ffffff'
|
canvas.backgroundColor = '#ffffff'
|
||||||
|
|
||||||
// CORS 대응: 이미지 오브젝트에 crossOrigin 설정 (로드 완료 대기)
|
// CORS 대응: 이미지 오브젝트에 crossOrigin 설정
|
||||||
const imageObjects = canvas.getObjects('image').filter((obj) => obj.getSrc)
|
canvas.getObjects('image').forEach((obj) => {
|
||||||
await Promise.all(
|
if (obj.getSrc) {
|
||||||
imageObjects.map(
|
|
||||||
(obj) =>
|
|
||||||
new Promise((resolve) => {
|
|
||||||
const img = new Image()
|
const img = new Image()
|
||||||
img.crossOrigin = 'anonymous'
|
img.crossOrigin = 'anonymous'
|
||||||
img.onload = () => {
|
|
||||||
obj.setElement(img)
|
|
||||||
resolve()
|
|
||||||
}
|
|
||||||
img.onerror = () => {
|
|
||||||
resolve()
|
|
||||||
}
|
|
||||||
img.src = obj.getSrc()
|
img.src = obj.getSrc()
|
||||||
}),
|
obj.setElement(img)
|
||||||
),
|
}
|
||||||
)
|
})
|
||||||
|
|
||||||
canvas.renderAll()
|
canvas.renderAll()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user