|
@@ -1,5 +1,3 @@
|
|
|
-import { withCustomMathRandom } from "../random";
|
|
|
-
|
|
|
import { ExcalidrawElement } from "../element/types";
|
|
|
import { isTextElement } from "../element/typeChecks";
|
|
|
import { getDiamondPoints, getArrowPoints } from "../element/bounds";
|
|
@@ -19,17 +17,16 @@ export function renderElement(
|
|
|
context.fillStyle = fillStyle;
|
|
|
} else if (element.type === "rectangle") {
|
|
|
if (!element.shape) {
|
|
|
- element.shape = withCustomMathRandom(element.seed, () => {
|
|
|
- return generator.rectangle(0, 0, element.width, element.height, {
|
|
|
- stroke: element.strokeColor,
|
|
|
- fill:
|
|
|
- element.backgroundColor === "transparent"
|
|
|
- ? undefined
|
|
|
- : element.backgroundColor,
|
|
|
- fillStyle: element.fillStyle,
|
|
|
- strokeWidth: element.strokeWidth,
|
|
|
- roughness: element.roughness
|
|
|
- });
|
|
|
+ element.shape = generator.rectangle(0, 0, element.width, element.height, {
|
|
|
+ stroke: element.strokeColor,
|
|
|
+ fill:
|
|
|
+ element.backgroundColor === "transparent"
|
|
|
+ ? undefined
|
|
|
+ : element.backgroundColor,
|
|
|
+ fillStyle: element.fillStyle,
|
|
|
+ strokeWidth: element.strokeWidth,
|
|
|
+ roughness: element.roughness,
|
|
|
+ seed: element.seed
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -38,36 +35,35 @@ export function renderElement(
|
|
|
context.globalAlpha = 1;
|
|
|
} else if (element.type === "diamond") {
|
|
|
if (!element.shape) {
|
|
|
- element.shape = withCustomMathRandom(element.seed, () => {
|
|
|
- const [
|
|
|
- topX,
|
|
|
- topY,
|
|
|
- rightX,
|
|
|
- rightY,
|
|
|
- bottomX,
|
|
|
- bottomY,
|
|
|
- leftX,
|
|
|
- leftY
|
|
|
- ] = getDiamondPoints(element);
|
|
|
- return generator.polygon(
|
|
|
- [
|
|
|
- [topX, topY],
|
|
|
- [rightX, rightY],
|
|
|
- [bottomX, bottomY],
|
|
|
- [leftX, leftY]
|
|
|
- ],
|
|
|
- {
|
|
|
- stroke: element.strokeColor,
|
|
|
- fill:
|
|
|
- element.backgroundColor === "transparent"
|
|
|
- ? undefined
|
|
|
- : element.backgroundColor,
|
|
|
- fillStyle: element.fillStyle,
|
|
|
- strokeWidth: element.strokeWidth,
|
|
|
- roughness: element.roughness
|
|
|
- }
|
|
|
- );
|
|
|
- });
|
|
|
+ const [
|
|
|
+ topX,
|
|
|
+ topY,
|
|
|
+ rightX,
|
|
|
+ rightY,
|
|
|
+ bottomX,
|
|
|
+ bottomY,
|
|
|
+ leftX,
|
|
|
+ leftY
|
|
|
+ ] = getDiamondPoints(element);
|
|
|
+ element.shape = generator.polygon(
|
|
|
+ [
|
|
|
+ [topX, topY],
|
|
|
+ [rightX, rightY],
|
|
|
+ [bottomX, bottomY],
|
|
|
+ [leftX, leftY]
|
|
|
+ ],
|
|
|
+ {
|
|
|
+ stroke: element.strokeColor,
|
|
|
+ fill:
|
|
|
+ element.backgroundColor === "transparent"
|
|
|
+ ? undefined
|
|
|
+ : element.backgroundColor,
|
|
|
+ fillStyle: element.fillStyle,
|
|
|
+ strokeWidth: element.strokeWidth,
|
|
|
+ roughness: element.roughness,
|
|
|
+ seed: element.seed
|
|
|
+ }
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
context.globalAlpha = element.opacity / 100;
|
|
@@ -75,23 +71,22 @@ export function renderElement(
|
|
|
context.globalAlpha = 1;
|
|
|
} else if (element.type === "ellipse") {
|
|
|
if (!element.shape) {
|
|
|
- element.shape = withCustomMathRandom(element.seed, () =>
|
|
|
- generator.ellipse(
|
|
|
- element.width / 2,
|
|
|
- element.height / 2,
|
|
|
- element.width,
|
|
|
- element.height,
|
|
|
- {
|
|
|
- stroke: element.strokeColor,
|
|
|
- fill:
|
|
|
- element.backgroundColor === "transparent"
|
|
|
- ? undefined
|
|
|
- : element.backgroundColor,
|
|
|
- fillStyle: element.fillStyle,
|
|
|
- strokeWidth: element.strokeWidth,
|
|
|
- roughness: element.roughness
|
|
|
- }
|
|
|
- )
|
|
|
+ element.shape = generator.ellipse(
|
|
|
+ element.width / 2,
|
|
|
+ element.height / 2,
|
|
|
+ element.width,
|
|
|
+ element.height,
|
|
|
+ {
|
|
|
+ stroke: element.strokeColor,
|
|
|
+ fill:
|
|
|
+ element.backgroundColor === "transparent"
|
|
|
+ ? undefined
|
|
|
+ : element.backgroundColor,
|
|
|
+ fillStyle: element.fillStyle,
|
|
|
+ strokeWidth: element.strokeWidth,
|
|
|
+ roughness: element.roughness,
|
|
|
+ seed: element.seed
|
|
|
+ }
|
|
|
);
|
|
|
}
|
|
|
|
|
@@ -103,18 +98,19 @@ export function renderElement(
|
|
|
const options = {
|
|
|
stroke: element.strokeColor,
|
|
|
strokeWidth: element.strokeWidth,
|
|
|
- roughness: element.roughness
|
|
|
+ roughness: element.roughness,
|
|
|
+ seed: element.seed
|
|
|
};
|
|
|
|
|
|
if (!element.shape) {
|
|
|
- element.shape = withCustomMathRandom(element.seed, () => [
|
|
|
+ element.shape = [
|
|
|
// \
|
|
|
generator.line(x3, y3, x2, y2, options),
|
|
|
// -----
|
|
|
generator.line(x1, y1, x2, y2, options),
|
|
|
// /
|
|
|
generator.line(x4, y4, x2, y2, options)
|
|
|
- ]);
|
|
|
+ ];
|
|
|
}
|
|
|
|
|
|
context.globalAlpha = element.opacity / 100;
|