@@ -349,48 +349,16 @@ function putBinaryImageData(ctx, imgData) {
349349 // imgData.kind tells us which one this is.
350350 if ( imgData . kind === ImageKind . GRAYSCALE_1BPP ) {
351351 // Grayscale, 1 bit per pixel (i.e. black-and-white).
352- const srcLength = src . byteLength ;
353- const dest32 = new Uint32Array ( dest . buffer , 0 , dest . byteLength >> 2 ) ;
354- const dest32DataLength = dest32 . length ;
355- const fullSrcDiff = ( width + 7 ) >> 3 ;
356- const white = 0xffffffff ;
357- const black = FeatureTest . isLittleEndian ? 0xff000000 : 0x000000ff ;
358-
359352 for ( i = 0 ; i < totalChunks ; i ++ ) {
360353 thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight ;
361- destPos = 0 ;
362- for ( j = 0 ; j < thisChunkHeight ; j ++ ) {
363- const srcDiff = srcLength - srcPos ;
364- let k = 0 ;
365- const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7 ;
366- const kEndUnrolled = kEnd & ~ 7 ;
367- let mask = 0 ;
368- let srcByte = 0 ;
369- for ( ; k < kEndUnrolled ; k += 8 ) {
370- srcByte = src [ srcPos ++ ] ;
371- dest32 [ destPos ++ ] = srcByte & 128 ? white : black ;
372- dest32 [ destPos ++ ] = srcByte & 64 ? white : black ;
373- dest32 [ destPos ++ ] = srcByte & 32 ? white : black ;
374- dest32 [ destPos ++ ] = srcByte & 16 ? white : black ;
375- dest32 [ destPos ++ ] = srcByte & 8 ? white : black ;
376- dest32 [ destPos ++ ] = srcByte & 4 ? white : black ;
377- dest32 [ destPos ++ ] = srcByte & 2 ? white : black ;
378- dest32 [ destPos ++ ] = srcByte & 1 ? white : black ;
379- }
380- for ( ; k < kEnd ; k ++ ) {
381- if ( mask === 0 ) {
382- srcByte = src [ srcPos ++ ] ;
383- mask = 128 ;
384- }
385354
386- dest32 [ destPos ++ ] = srcByte & mask ? white : black ;
387- mask >>= 1 ;
388- }
389- }
390- // We ran out of input. Make all remaining pixels transparent.
391- while ( destPos < dest32DataLength ) {
392- dest32 [ destPos ++ ] = 0 ;
393- }
355+ ( { srcPos } = convertBlackAndWhiteToRGBA ( {
356+ src,
357+ srcPos,
358+ dest,
359+ width,
360+ height : thisChunkHeight ,
361+ } ) ) ;
394362
395363 ctx . putImageData ( chunkImgData , 0 , i * FULL_CHUNK_HEIGHT ) ;
396364 }
0 commit comments