Skip to content

Commit 705356f

Browse files
committed
Addressing comments by @vingtetun
1 parent 5e1d78e commit 705356f

File tree

1 file changed

+37
-32
lines changed

1 file changed

+37
-32
lines changed

src/canvas.js

Lines changed: 37 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -275,37 +275,38 @@ var CanvasGraphics = (function canvasGraphics() {
275275
},
276276

277277
endDrawing: function canvasGraphicsEndDrawing() {
278-
var self = this;
279278
this.ctx.restore();
280279

281280
var textLayer = this.textLayer;
282-
if (textLayer) {
283-
var renderTextLayer = function canvasRenderTextLayer() {
284-
var textDivs = self.textDivs;
285-
for (var i = 0, length = textDivs.length; i < length; ++i) {
286-
if (textDivs[i].dataset.textLength > 1) { // avoid div by zero
287-
textLayer.appendChild(textDivs[i]);
288-
// Adjust div width (via letterSpacing) to match canvas text
289-
// Due to the .offsetWidth calls, this is slow
290-
textDivs[i].style.letterSpacing =
291-
((textDivs[i].dataset.canvasWidth - textDivs[i].offsetWidth) /
292-
(textDivs[i].dataset.textLength - 1)) + 'px';
293-
}
281+
if (!textLayer)
282+
return;
283+
284+
var self = this;
285+
var renderTextLayer = function canvasRenderTextLayer() {
286+
var textDivs = self.textDivs;
287+
for (var i = 0, length = textDivs.length; i < length; ++i) {
288+
if (textDivs[i].dataset.textLength > 1) { // avoid div by zero
289+
textLayer.appendChild(textDivs[i]);
290+
// Adjust div width (via letterSpacing) to match canvas text
291+
// Due to the .offsetWidth calls, this is slow
292+
textDivs[i].style.letterSpacing =
293+
((textDivs[i].dataset.canvasWidth - textDivs[i].offsetWidth) /
294+
(textDivs[i].dataset.textLength - 1)) + 'px';
294295
}
295296
}
296-
var textLayerQueue = self.textLayerQueue;
297-
textLayerQueue.push(renderTextLayer);
298-
299-
// Lazy textLayer rendering (to prevent UI hangs)
300-
// Only render queue if activity has stopped, where "no activity" ==
301-
// "no beginDrawing() calls in the last N ms"
302-
self.textLayerTimer = setTimeout(function renderTextLayerQueue() {
303-
// Render most recent (==most relevant) layers first
304-
for (var i = textLayerQueue.length - 1; i >= 0; i--) {
305-
textLayerQueue.pop().call();
306-
}
307-
}, 500);
308297
}
298+
var textLayerQueue = this.textLayerQueue;
299+
textLayerQueue.push(renderTextLayer);
300+
301+
// Lazy textLayer rendering (to prevent UI hangs)
302+
// Only render queue if activity has stopped, where "no activity" ==
303+
// "no beginDrawing() calls in the last N ms"
304+
this.textLayerTimer = setTimeout(function renderTextLayerQueue() {
305+
// Render most recent (==most relevant) layers first
306+
for (var i = textLayerQueue.length - 1; i >= 0; i--) {
307+
textLayerQueue.pop().call();
308+
}
309+
}, 500);
309310
},
310311

311312
// Graphics state
@@ -577,28 +578,32 @@ var CanvasGraphics = (function canvasGraphics() {
577578
ctx.scale(1 / textHScale, 1);
578579
},
579580
getTextGeometry: function canvasGetTextGeometry() {
580-
var geom = {};
581+
var geometry = {};
581582
var ctx = this.ctx;
582583
var font = this.current.font;
583584
var ctxMatrix = ctx.mozCurrentTransform;
584585
if (ctxMatrix) {
585586
var bl = Util.applyTransform([0, 0], ctxMatrix);
586587
var tr = Util.applyTransform([1, 1], ctxMatrix);
587-
geom.x = bl[0];
588-
geom.y = bl[1];
589-
geom.hScale = tr[0] - bl[0];
590-
geom.vScale = tr[1] - bl[1];
588+
geometry.x = bl[0];
589+
geometry.y = bl[1];
590+
geometry.hScale = tr[0] - bl[0];
591+
geometry.vScale = tr[1] - bl[1];
591592
}
592593
var spaceGlyph = font.charsToGlyphs(' ');
594+
593595
// Hack (sometimes space is not encoded)
594596
if (spaceGlyph.length === 0 || spaceGlyph[0].width === 0)
595597
spaceGlyph = font.charsToGlyphs('i');
598+
596599
// Fallback
597600
if (spaceGlyph.length === 0 || spaceGlyph[0].width === 0)
598601
spaceGlyph = [{width: 0}];
599-
geom.spaceWidth = spaceGlyph[0].width;
600-
return geom;
602+
603+
geometry.spaceWidth = spaceGlyph[0].width;
604+
return geometry;
601605
},
606+
602607
pushTextDivs: function canvasGraphicsPushTextDivs(text) {
603608
var div = document.createElement('div');
604609
var fontSize = this.current.fontSize;

0 commit comments

Comments
 (0)