fix not always generating shape on render (#1741)
This commit is contained in:
parent
6b87278a0f
commit
dadf054ea2
@ -230,10 +230,9 @@ export const generateRoughOptions = (element: ExcalidrawElement): Options => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const generateElement = (
|
const generateElementShape = (
|
||||||
element: NonDeletedExcalidrawElement,
|
element: NonDeletedExcalidrawElement,
|
||||||
generator: RoughGenerator,
|
generator: RoughGenerator,
|
||||||
sceneState?: SceneState,
|
|
||||||
) => {
|
) => {
|
||||||
let shape = shapeCache.get(element) || null;
|
let shape = shapeCache.get(element) || null;
|
||||||
if (!shape) {
|
if (!shape) {
|
||||||
@ -321,6 +320,12 @@ const generateElement = (
|
|||||||
}
|
}
|
||||||
shapeCache.set(element, shape);
|
shapeCache.set(element, shape);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const generateElementWithCanvas = (
|
||||||
|
element: NonDeletedExcalidrawElement,
|
||||||
|
sceneState?: SceneState,
|
||||||
|
) => {
|
||||||
const zoom = sceneState ? sceneState.zoom : 1;
|
const zoom = sceneState ? sceneState.zoom : 1;
|
||||||
const prevElementWithCanvas = elementWithCanvasCache.get(element);
|
const prevElementWithCanvas = elementWithCanvasCache.get(element);
|
||||||
const shouldRegenerateBecauseZoom =
|
const shouldRegenerateBecauseZoom =
|
||||||
@ -395,10 +400,10 @@ export const renderElement = (
|
|||||||
case "draw":
|
case "draw":
|
||||||
case "arrow":
|
case "arrow":
|
||||||
case "text": {
|
case "text": {
|
||||||
|
generateElementShape(element, generator);
|
||||||
if (renderOptimizations) {
|
if (renderOptimizations) {
|
||||||
const elementWithCanvas = generateElement(
|
const elementWithCanvas = generateElementWithCanvas(
|
||||||
element,
|
element,
|
||||||
generator,
|
|
||||||
sceneState,
|
sceneState,
|
||||||
);
|
);
|
||||||
drawElementFromCanvas(elementWithCanvas, rc, context, sceneState);
|
drawElementFromCanvas(elementWithCanvas, rc, context, sceneState);
|
||||||
@ -446,7 +451,7 @@ export const renderElementToSvg = (
|
|||||||
case "rectangle":
|
case "rectangle":
|
||||||
case "diamond":
|
case "diamond":
|
||||||
case "ellipse": {
|
case "ellipse": {
|
||||||
generateElement(element, generator);
|
generateElementShape(element, generator);
|
||||||
const node = rsvg.draw(getShapeForElement(element) as Drawable);
|
const node = rsvg.draw(getShapeForElement(element) as Drawable);
|
||||||
const opacity = element.opacity / 100;
|
const opacity = element.opacity / 100;
|
||||||
if (opacity !== 1) {
|
if (opacity !== 1) {
|
||||||
@ -465,7 +470,7 @@ export const renderElementToSvg = (
|
|||||||
case "line":
|
case "line":
|
||||||
case "draw":
|
case "draw":
|
||||||
case "arrow": {
|
case "arrow": {
|
||||||
generateElement(element, generator);
|
generateElementShape(element, generator);
|
||||||
const group = svgRoot.ownerDocument!.createElementNS(SVG_NS, "g");
|
const group = svgRoot.ownerDocument!.createElementNS(SVG_NS, "g");
|
||||||
const opacity = element.opacity / 100;
|
const opacity = element.opacity / 100;
|
||||||
(getShapeForElement(element) as Drawable[]).forEach((shape) => {
|
(getShapeForElement(element) as Drawable[]).forEach((shape) => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user