resize elements from center point (#1225)

* add hint & support multi-line hints

* resize from center point using the new resize maths

* resize with origin element when lifting alt key

* add readonly to elementOriginPosition

* add setResizeWithCenterKeyLifted

* isResizeFromCenter logic

* offsetX and offsetY

* simplify equations

* creating element from center point

* lint

* lint

* lint

* remove revert on key up logic

Co-authored-by: dwelle <luzar.david@gmail.com>
Co-authored-by: daishi <daishi@axlight.com>
This commit is contained in:
José Quinto 2020-04-22 16:57:17 +01:00 committed by GitHub
parent 8c49770e3b
commit ed6fb60337
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 69 additions and 22 deletions

View file

@ -63,26 +63,43 @@ const adjustXYWithRotation = (
angle: number,
deltaX: number,
deltaY: number,
isResizeFromCenter: boolean,
) => {
const cos = Math.cos(angle);
const sin = Math.sin(angle);
deltaX /= 2;
deltaY /= 2;
if (side === "e" || side === "ne" || side === "se") {
x += deltaX * (1 - cos);
y += deltaX * -sin;
if (isResizeFromCenter) {
x += deltaX;
} else {
x += deltaX * (1 - cos);
y += deltaX * -sin;
}
}
if (side === "s" || side === "sw" || side === "se") {
x += deltaY * sin;
y += deltaY * (1 - cos);
if (isResizeFromCenter) {
y += deltaY;
} else {
x += deltaY * sin;
y += deltaY * (1 - cos);
}
}
if (side === "w" || side === "nw" || side === "sw") {
x += deltaX * (1 + cos);
y += deltaX * sin;
if (isResizeFromCenter) {
x += deltaX;
} else {
x += deltaX * (1 + cos);
y += deltaX * sin;
}
}
if (side === "n" || side === "nw" || side === "ne") {
x += deltaY * -sin;
y += deltaY * (1 + cos);
if (isResizeFromCenter) {
y += deltaY;
} else {
x += deltaY * -sin;
y += deltaY * (1 + cos);
}
}
return { x, y };
};
@ -100,6 +117,7 @@ export const resizeXYWidthHightWithRotation = (
yPointer: number,
offsetPointer: number,
sidesWithSameLength: boolean,
isResizeFromCenter: boolean,
) => {
// center point for rotation
const cx = x + width / 2;
@ -139,6 +157,7 @@ export const resizeXYWidthHightWithRotation = (
angle,
width - nextWidth,
height - nextHeight,
isResizeFromCenter,
),
};
};