@@ -275,37 +275,38 @@ var CanvasGraphics = (function canvasGraphics() {
275
275
},
276
276
277
277
endDrawing : function canvasGraphicsEndDrawing () {
278
- var self = this ;
279
278
this .ctx .restore ();
280
279
281
280
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' ;
294
295
}
295
296
}
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 );
308
297
}
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 );
309
310
},
310
311
311
312
// Graphics state
@@ -577,28 +578,32 @@ var CanvasGraphics = (function canvasGraphics() {
577
578
ctx .scale (1 / textHScale , 1 );
578
579
},
579
580
getTextGeometry : function canvasGetTextGeometry () {
580
- var geom = {};
581
+ var geometry = {};
581
582
var ctx = this .ctx ;
582
583
var font = this .current .font ;
583
584
var ctxMatrix = ctx .mozCurrentTransform ;
584
585
if (ctxMatrix ) {
585
586
var bl = Util .applyTransform ([0 , 0 ], ctxMatrix );
586
587
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 ];
591
592
}
592
593
var spaceGlyph = font .charsToGlyphs (' ' );
594
+
593
595
// Hack (sometimes space is not encoded)
594
596
if (spaceGlyph .length === 0 || spaceGlyph [0 ].width === 0 )
595
597
spaceGlyph = font .charsToGlyphs ('i' );
598
+
596
599
// Fallback
597
600
if (spaceGlyph .length === 0 || spaceGlyph [0 ].width === 0 )
598
601
spaceGlyph = [{width : 0 }];
599
- geom .spaceWidth = spaceGlyph [0 ].width ;
600
- return geom ;
602
+
603
+ geometry .spaceWidth = spaceGlyph [0 ].width ;
604
+ return geometry ;
601
605
},
606
+
602
607
pushTextDivs : function canvasGraphicsPushTextDivs (text ) {
603
608
var div = document .createElement ('div' );
604
609
var fontSize = this .current .fontSize ;
0 commit comments