Merge pull request #11079 from Snuffleupagus/textLayer-memory

[TextLayer] Only cache the current `textDiv` style when `enhanceTextSelection` is enabled and use template strings in `expandTextDivs``
This commit is contained in:
Tim van der Meij 2019-08-20 22:48:10 +02:00 committed by GitHub
commit 52c6b3c138
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -90,8 +90,7 @@ var renderTextLayer = (function renderTextLayerClosure() {
fontAscent = (1 + style.descent) * fontAscent;
}
var left;
var top;
let left, top;
if (angle === 0) {
left = tx[4];
top = tx[5] - fontAscent;
@ -103,8 +102,12 @@ var renderTextLayer = (function renderTextLayerClosure() {
styleBuf[3] = top;
styleBuf[5] = fontHeight;
styleBuf[7] = style.fontFamily;
textDivProperties.style = styleBuf.join('');
textDiv.setAttribute('style', textDivProperties.style);
const styleStr = styleBuf.join('');
if (task._enhanceTextSelection) {
textDivProperties.style = styleStr;
}
textDiv.setAttribute('style', styleStr);
textDiv.textContent = geom.str;
// `fontName` is only used by the FontInspector, and we only use `dataset`
@ -625,49 +628,48 @@ var renderTextLayer = (function renderTextLayerClosure() {
}
for (var i = 0, ii = this._textDivs.length; i < ii; i++) {
var div = this._textDivs[i];
var divProperties = this._textDivProperties.get(div);
const div = this._textDivs[i];
const divProps = this._textDivProperties.get(div);
if (divProperties.isWhitespace) {
if (divProps.isWhitespace) {
continue;
}
if (expandDivs) {
var transform = '', padding = '';
let transform = '', padding = '';
if (divProperties.scale !== 1) {
transform = 'scaleX(' + divProperties.scale + ')';
if (divProps.scale !== 1) {
transform = `scaleX(${divProps.scale})`;
}
if (divProperties.angle !== 0) {
transform = 'rotate(' + divProperties.angle + 'deg) ' + transform;
if (divProps.angle !== 0) {
transform = `rotate(${divProps.angle}deg) ${transform}`;
}
if (divProperties.paddingLeft !== 0) {
padding += ' padding-left: ' +
(divProperties.paddingLeft / divProperties.scale) + 'px;';
transform += ' translateX(' +
(-divProperties.paddingLeft / divProperties.scale) + 'px)';
if (divProps.paddingLeft !== 0) {
padding +=
` padding-left: ${divProps.paddingLeft / divProps.scale}px;`;
transform +=
` translateX(${-divProps.paddingLeft / divProps.scale}px)`;
}
if (divProperties.paddingTop !== 0) {
padding += ' padding-top: ' + divProperties.paddingTop + 'px;';
transform += ' translateY(' + (-divProperties.paddingTop) + 'px)';
if (divProps.paddingTop !== 0) {
padding += ` padding-top: ${divProps.paddingTop}px;`;
transform += ` translateY(${-divProps.paddingTop}px)`;
}
if (divProperties.paddingRight !== 0) {
padding += ' padding-right: ' +
(divProperties.paddingRight / divProperties.scale) + 'px;';
if (divProps.paddingRight !== 0) {
padding +=
` padding-right: ${divProps.paddingRight / divProps.scale}px;`;
}
if (divProperties.paddingBottom !== 0) {
padding += ' padding-bottom: ' +
divProperties.paddingBottom + 'px;';
if (divProps.paddingBottom !== 0) {
padding += ` padding-bottom: ${divProps.paddingBottom}px;`;
}
if (padding !== '') {
div.setAttribute('style', divProperties.style + padding);
div.setAttribute('style', divProps.style + padding);
}
if (transform !== '') {
div.style.transform = transform;
}
} else {
div.style.padding = 0;
div.style.transform = divProperties.originalTransform || '';
div.style.transform = divProps.originalTransform || '';
}
}
},