|
|
|
|
@ -137,6 +137,7 @@ export interface ExcalidrawElementWithCanvas {
@@ -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 = (
@@ -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 = (
@@ -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 = (
@@ -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 = (
@@ -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; |
|
|
|
|
} |
|
|
|
|
|