Avoid more allocations in bidi().

This commit is contained in:
Nicholas Nethercote 2014-03-12 20:17:57 -07:00
parent 2e93a0cc98
commit 3759c11f42
2 changed files with 9 additions and 11 deletions

View File

@ -140,9 +140,11 @@ var bidi = PDFJS.bidi = (function bidiClosure() {
}
}
function BidiResult(str, isLTR, vertical) {
this.str = str;
this.dir = (vertical ? 'ttb' : (isLTR ? 'ltr' : 'rtl'));
function createBidiText(str, isLTR, vertical) {
return {
str: str,
dir: (vertical ? 'ttb' : (isLTR ? 'ltr' : 'rtl'))
};
}
// These are used in bidi(), which is called frequently. We re-use them on
@ -154,7 +156,7 @@ var bidi = PDFJS.bidi = (function bidiClosure() {
var isLTR = true;
var strLength = str.length;
if (strLength === 0 || vertical) {
return new BidiResult(str, isLTR, vertical);
return createBidiText(str, isLTR, vertical);
}
// Get types and fill arrays
@ -188,7 +190,7 @@ var bidi = PDFJS.bidi = (function bidiClosure() {
// - If more than 30% chars are rtl then string is primarily rtl
if (numBidi === 0) {
isLTR = true;
return new BidiResult(str, isLTR);
return createBidiText(str, isLTR);
}
if (startLevel == -1) {
@ -453,7 +455,7 @@ var bidi = PDFJS.bidi = (function bidiClosure() {
result += ch;
}
}
return new BidiResult(result, isLTR);
return createBidiText(result, isLTR);
}
return bidi;

View File

@ -812,11 +812,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
if (chunkBuf.length > 0) {
var chunk = chunkBuf.join('');
var bidiResult = PDFJS.bidi(chunk, -1, font.vertical);
var bidiText = {
str: bidiResult.str,
dir: bidiResult.dir
};
var bidiText = PDFJS.bidi(chunk, -1, font.vertical);
var renderParams = textState.calcRenderParams(preprocessor.ctm);
var fontHeight = textState.fontSize * renderParams.vScale;
var fontAscent = font.ascent ? font.ascent * fontHeight :