|
@@ -230,10 +230,9 @@ export const generateRoughOptions = (element: ExcalidrawElement): Options => {
|
230
|
230
|
}
|
231
|
231
|
};
|
232
|
232
|
|
233
|
|
-const generateElement = (
|
|
233
|
+const generateElementShape = (
|
234
|
234
|
element: NonDeletedExcalidrawElement,
|
235
|
235
|
generator: RoughGenerator,
|
236
|
|
- sceneState?: SceneState,
|
237
|
236
|
) => {
|
238
|
237
|
let shape = shapeCache.get(element) || null;
|
239
|
238
|
if (!shape) {
|
|
@@ -321,6 +320,12 @@ const generateElement = (
|
321
|
320
|
}
|
322
|
321
|
shapeCache.set(element, shape);
|
323
|
322
|
}
|
|
323
|
+};
|
|
324
|
+
|
|
325
|
+const generateElementWithCanvas = (
|
|
326
|
+ element: NonDeletedExcalidrawElement,
|
|
327
|
+ sceneState?: SceneState,
|
|
328
|
+) => {
|
324
|
329
|
const zoom = sceneState ? sceneState.zoom : 1;
|
325
|
330
|
const prevElementWithCanvas = elementWithCanvasCache.get(element);
|
326
|
331
|
const shouldRegenerateBecauseZoom =
|
|
@@ -395,10 +400,10 @@ export const renderElement = (
|
395
|
400
|
case "draw":
|
396
|
401
|
case "arrow":
|
397
|
402
|
case "text": {
|
|
403
|
+ generateElementShape(element, generator);
|
398
|
404
|
if (renderOptimizations) {
|
399
|
|
- const elementWithCanvas = generateElement(
|
|
405
|
+ const elementWithCanvas = generateElementWithCanvas(
|
400
|
406
|
element,
|
401
|
|
- generator,
|
402
|
407
|
sceneState,
|
403
|
408
|
);
|
404
|
409
|
drawElementFromCanvas(elementWithCanvas, rc, context, sceneState);
|
|
@@ -446,7 +451,7 @@ export const renderElementToSvg = (
|
446
|
451
|
case "rectangle":
|
447
|
452
|
case "diamond":
|
448
|
453
|
case "ellipse": {
|
449
|
|
- generateElement(element, generator);
|
|
454
|
+ generateElementShape(element, generator);
|
450
|
455
|
const node = rsvg.draw(getShapeForElement(element) as Drawable);
|
451
|
456
|
const opacity = element.opacity / 100;
|
452
|
457
|
if (opacity !== 1) {
|
|
@@ -465,7 +470,7 @@ export const renderElementToSvg = (
|
465
|
470
|
case "line":
|
466
|
471
|
case "draw":
|
467
|
472
|
case "arrow": {
|
468
|
|
- generateElement(element, generator);
|
|
473
|
+ generateElementShape(element, generator);
|
469
|
474
|
const group = svgRoot.ownerDocument!.createElementNS(SVG_NS, "g");
|
470
|
475
|
const opacity = element.opacity / 100;
|
471
|
476
|
(getShapeForElement(element) as Drawable[]).forEach((shape) => {
|