Merge pull request #13976 from Snuffleupagus/_textDivProperties-cleanup
Reduce the size of `TextLayerRenderTask._textDivProperties` in "regular" text-selection mode
This commit is contained in:
commit
d95f680d66
@ -118,18 +118,25 @@ function getAscent(fontFamily, ctx) {
|
|||||||
function appendText(task, geom, styles, ctx) {
|
function appendText(task, geom, styles, ctx) {
|
||||||
// Initialize all used properties to keep the caches monomorphic.
|
// Initialize all used properties to keep the caches monomorphic.
|
||||||
const textDiv = document.createElement("span");
|
const textDiv = document.createElement("span");
|
||||||
const textDivProperties = {
|
const textDivProperties = task._enhanceTextSelection
|
||||||
angle: 0,
|
? {
|
||||||
canvasWidth: 0,
|
angle: 0,
|
||||||
hasText: geom.str !== "",
|
canvasWidth: 0,
|
||||||
hasEOL: geom.hasEOL,
|
hasText: geom.str !== "",
|
||||||
originalTransform: null,
|
hasEOL: geom.hasEOL,
|
||||||
paddingBottom: 0,
|
originalTransform: null,
|
||||||
paddingLeft: 0,
|
paddingBottom: 0,
|
||||||
paddingRight: 0,
|
paddingLeft: 0,
|
||||||
paddingTop: 0,
|
paddingRight: 0,
|
||||||
scale: 1,
|
paddingTop: 0,
|
||||||
};
|
scale: 1,
|
||||||
|
}
|
||||||
|
: {
|
||||||
|
angle: 0,
|
||||||
|
canvasWidth: 0,
|
||||||
|
hasText: geom.str !== "",
|
||||||
|
hasEOL: geom.hasEOL,
|
||||||
|
};
|
||||||
|
|
||||||
task._textDivs.push(textDiv);
|
task._textDivs.push(textDiv);
|
||||||
|
|
||||||
@ -588,6 +595,11 @@ class TextLayerRenderTask {
|
|||||||
// Always clean-up the temporary canvas once rendering is no longer pending.
|
// Always clean-up the temporary canvas once rendering is no longer pending.
|
||||||
this._capability.promise
|
this._capability.promise
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
|
if (!this._enhanceTextSelection) {
|
||||||
|
// The `textDiv` properties are no longer needed.
|
||||||
|
this._textDivProperties = null;
|
||||||
|
}
|
||||||
|
|
||||||
if (this._layoutTextCtx) {
|
if (this._layoutTextCtx) {
|
||||||
// Zeroing the width and height cause Firefox to release graphics
|
// Zeroing the width and height cause Firefox to release graphics
|
||||||
// resources immediately, which can greatly reduce memory consumption.
|
// resources immediately, which can greatly reduce memory consumption.
|
||||||
@ -679,8 +691,11 @@ class TextLayerRenderTask {
|
|||||||
const { width } = this._layoutTextCtx.measureText(textDiv.textContent);
|
const { width } = this._layoutTextCtx.measureText(textDiv.textContent);
|
||||||
|
|
||||||
if (width > 0) {
|
if (width > 0) {
|
||||||
textDivProperties.scale = textDivProperties.canvasWidth / width;
|
const scale = textDivProperties.canvasWidth / width;
|
||||||
transform = `scaleX(${textDivProperties.scale})`;
|
if (this._enhanceTextSelection) {
|
||||||
|
textDivProperties.scale = scale;
|
||||||
|
}
|
||||||
|
transform = `scaleX(${scale})`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (textDivProperties.angle !== 0) {
|
if (textDivProperties.angle !== 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user