|
|
|
@ -137,6 +137,7 @@ export interface ExcalidrawElementWithCanvas {
|
|
|
|
|
canvasOffsetX: number;
|
|
|
|
|
canvasOffsetY: number;
|
|
|
|
|
boundTextElementVersion: number | null;
|
|
|
|
|
imageCrop: ExcalidrawImageElement["crop"] | null;
|
|
|
|
|
containingFrameOpacity: number;
|
|
|
|
|
boundTextCanvas: HTMLCanvasElement;
|
|
|
|
|
}
|
|
|
|
@ -334,6 +335,7 @@ const generateElementCanvas = (
|
|
|
|
|
getContainingFrame(element, elementsMap)?.opacity || 100,
|
|
|
|
|
boundTextCanvas,
|
|
|
|
|
angle: element.angle,
|
|
|
|
|
imageCrop: isImageElement(element) ? element.crop : null,
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -535,6 +537,7 @@ const generateElementWithCanvas = (
|
|
|
|
|
!appState?.shouldCacheIgnoreZoom;
|
|
|
|
|
const boundTextElement = getBoundTextElement(element, elementsMap);
|
|
|
|
|
const boundTextElementVersion = boundTextElement?.version || null;
|
|
|
|
|
const imageCrop = isImageElement(element) ? element.crop : null;
|
|
|
|
|
|
|
|
|
|
const containingFrameOpacity =
|
|
|
|
|
getContainingFrame(element, elementsMap)?.opacity || 100;
|
|
|
|
@ -544,6 +547,7 @@ const generateElementWithCanvas = (
|
|
|
|
|
shouldRegenerateBecauseZoom ||
|
|
|
|
|
prevElementWithCanvas.theme !== appState.theme ||
|
|
|
|
|
prevElementWithCanvas.boundTextElementVersion !== boundTextElementVersion ||
|
|
|
|
|
prevElementWithCanvas.imageCrop !== imageCrop ||
|
|
|
|
|
prevElementWithCanvas.containingFrameOpacity !== containingFrameOpacity ||
|
|
|
|
|
// since we rotate the canvas when copying from cached canvas, we don't
|
|
|
|
|
// regenerate the cached canvas. But we need to in case of labels which are
|
|
|
|
@ -966,24 +970,14 @@ export const renderElement = (
|
|
|
|
|
context.restore();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const _elementWithCanvas = generateElementCanvas(
|
|
|
|
|
elementWithCanvas.element,
|
|
|
|
|
allElementsMap,
|
|
|
|
|
appState.zoom,
|
|
|
|
|
drawElementFromCanvas(
|
|
|
|
|
elementWithCanvas,
|
|
|
|
|
context,
|
|
|
|
|
renderConfig,
|
|
|
|
|
appState,
|
|
|
|
|
allElementsMap,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (_elementWithCanvas) {
|
|
|
|
|
drawElementFromCanvas(
|
|
|
|
|
_elementWithCanvas,
|
|
|
|
|
context,
|
|
|
|
|
renderConfig,
|
|
|
|
|
appState,
|
|
|
|
|
allElementsMap,
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// reset
|
|
|
|
|
context.imageSmoothingEnabled = currentImageSmoothingStatus;
|
|
|
|
|
}
|
|
|
|
|