Skip to content

Commit

Permalink
pin position of an opposit anchor point during resize with an edge mi…
Browse files Browse the repository at this point in the history
…ddle anchor point when rect has fixed ratio
  • Loading branch information
maxlk committed Nov 5, 2020
1 parent f49819a commit c98ee75
Showing 1 changed file with 11 additions and 31 deletions.
42 changes: 11 additions & 31 deletions src/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,11 @@ export const getNewStyle = (type, rect, deltaW, deltaH, ratio, minWidth, minHeig
width = widthAndDeltaW.width
deltaW = widthAndDeltaW.deltaW
if (ratio) {
deltaH = deltaW / ratio
height = width / ratio
// 左上角固定
centerX += deltaW / 2 * cos(rotateAngle) - deltaH / 2 * sin(rotateAngle)
centerY += deltaW / 2 * sin(rotateAngle) + deltaH / 2 * cos(rotateAngle)
} else {
// 左边固定
centerX += deltaW / 2 * cos(rotateAngle)
centerY += deltaW / 2 * sin(rotateAngle)
}
// 左边固定
centerX += deltaW / 2 * cos(rotateAngle)
centerY += deltaW / 2 * sin(rotateAngle)
break
}
case 'tr': {
Expand Down Expand Up @@ -104,16 +99,11 @@ export const getNewStyle = (type, rect, deltaW, deltaH, ratio, minWidth, minHeig
height = heightAndDeltaH.height
deltaH = heightAndDeltaH.deltaH
if (ratio) {
deltaW = deltaH * ratio
width = height * ratio
// 左上角固定
centerX += deltaW / 2 * cos(rotateAngle) - deltaH / 2 * sin(rotateAngle)
centerY += deltaW / 2 * sin(rotateAngle) + deltaH / 2 * cos(rotateAngle)
} else {
// 上边固定
centerX -= deltaH / 2 * sin(rotateAngle)
centerY += deltaH / 2 * cos(rotateAngle)
}
// 上边固定
centerX -= deltaH / 2 * sin(rotateAngle)
centerY += deltaH / 2 * cos(rotateAngle)
break
}
case 'bl': {
Expand Down Expand Up @@ -144,15 +134,10 @@ export const getNewStyle = (type, rect, deltaW, deltaH, ratio, minWidth, minHeig
deltaW = widthAndDeltaW.deltaW
if (ratio) {
height = width / ratio
deltaH = deltaW / ratio
// 右上角固定
centerX -= deltaW / 2 * cos(rotateAngle) + deltaH / 2 * sin(rotateAngle)
centerY -= deltaW / 2 * sin(rotateAngle) - deltaH / 2 * cos(rotateAngle)
} else {
// 右边固定
centerX -= deltaW / 2 * cos(rotateAngle)
centerY -= deltaW / 2 * sin(rotateAngle)
}
// 右边固定
centerX -= deltaW / 2 * cos(rotateAngle)
centerY -= deltaW / 2 * sin(rotateAngle)
break
}
case 'tl': {
Expand Down Expand Up @@ -184,14 +169,9 @@ export const getNewStyle = (type, rect, deltaW, deltaH, ratio, minWidth, minHeig
deltaH = heightAndDeltaH.deltaH
if (ratio) {
width = height * ratio
deltaW = deltaH * ratio
// 左下角固定
centerX += deltaW / 2 * cos(rotateAngle) + deltaH / 2 * sin(rotateAngle)
centerY += deltaW / 2 * sin(rotateAngle) - deltaH / 2 * cos(rotateAngle)
} else {
centerX += deltaH / 2 * sin(rotateAngle)
centerY -= deltaH / 2 * cos(rotateAngle)
}
centerX += deltaH / 2 * sin(rotateAngle)
centerY -= deltaH / 2 * cos(rotateAngle)
break
}
}
Expand Down

0 comments on commit c98ee75

Please sign in to comment.