Browse Source

fix not always generating shape on render (#1741)

vanilla_orig
David Luzar 5 years ago
parent
commit
dadf054ea2
No account linked to committer's email address
1 changed files with 11 additions and 6 deletions
  1. 11
    6
      src/renderer/renderElement.ts

+ 11
- 6
src/renderer/renderElement.ts View File

@@ -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) => {

Loading…
Cancel
Save