group object 좌표 재계산 로직 수정
This commit is contained in:
parent
97a444bccd
commit
53a1f4ed00
@ -29,22 +29,39 @@ fabric.Rect.prototype.getCurrentPoints = function () {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* fabric.Group에 getCurrentPoints 메서드를 추가 (도머 그룹용)
|
* fabric.Group에 getCurrentPoints 메서드를 추가 (도머 그룹용)
|
||||||
* 그룹의 groupPoints를 다시 계산하여 반환
|
* 그룹 내 객체들의 점들을 수집하여 현재 월드 좌표를 반환
|
||||||
*/
|
*/
|
||||||
fabric.Group.prototype.getCurrentPoints = function () {
|
fabric.Group.prototype.getCurrentPoints = function () {
|
||||||
// groupPoints를 다시 계산
|
// 그룹 내 객체들로부터 실시간으로 점들을 계산
|
||||||
|
if (this._objects && this._objects.length > 0) {
|
||||||
|
let allPoints = []
|
||||||
|
|
||||||
// 그룹에 groupPoints가 있으면 해당 점들을 사용 (도머의 경우)
|
// 그룹 내 모든 객체의 점들을 수집
|
||||||
if (this.groupPoints && Array.isArray(this.groupPoints)) {
|
this._objects.forEach(function (obj) {
|
||||||
const matrix = this.calcTransformMatrix()
|
if (obj.getCurrentPoints && typeof obj.getCurrentPoints === 'function') {
|
||||||
console.log('this.groupPoints', this.groupPoints)
|
const objPoints = obj.getCurrentPoints()
|
||||||
return this.groupPoints.map(function (p) {
|
allPoints = allPoints.concat(objPoints)
|
||||||
const point = new fabric.Point(p.x, p.y)
|
} else if (obj.points && Array.isArray(obj.points)) {
|
||||||
return fabric.util.transformPoint(point, matrix)
|
const pathOffset = obj.pathOffset || { x: 0, y: 0 }
|
||||||
|
const matrix = obj.calcTransformMatrix()
|
||||||
|
const transformedPoints = obj.points
|
||||||
|
.map(function (p) {
|
||||||
|
return new fabric.Point(p.x - pathOffset.x, p.y - pathOffset.y)
|
||||||
|
})
|
||||||
|
.map(function (p) {
|
||||||
|
return fabric.util.transformPoint(p, matrix)
|
||||||
|
})
|
||||||
|
allPoints = allPoints.concat(transformedPoints)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if (allPoints.length > 0) {
|
||||||
|
// Convex Hull 알고리즘을 사용하여 외곽 점들만 반환
|
||||||
|
return this.getConvexHull(allPoints)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// groupPoints가 없으면 바운딩 박스를 사용
|
// 객체가 없으면 바운딩 박스를 사용
|
||||||
const bounds = this.getBoundingRect()
|
const bounds = this.getBoundingRect()
|
||||||
const points = [
|
const points = [
|
||||||
{ x: bounds.left, y: bounds.top },
|
{ x: bounds.left, y: bounds.top },
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user