1010
1111namespace Net . Codecrete . QrCodeGenerator
1212{
13- internal class BmpBuilder
13+ internal static class BmpBuilder
1414 {
15- internal BmpBuilder ( int size , bool [ , ] modules )
16- {
17- _size = size ;
18- _modules = modules ;
19- }
20-
21- private readonly int _size ;
22-
23- // The modules of this QR code (false = light, true = dark).
24- // Immutable after constructor finishes.
25- private readonly bool [ , ] _modules ;
26-
2715 [ SuppressMessage ( "csharpsquid" , "S3776" ) ]
28- internal byte [ ] ToBmpBitmap ( int border , int scale , int foreground , int background )
16+ internal static byte [ ] ToImage ( QrCode qrCode , int border , int scale , int foreground , int background )
2917 {
3018 if ( scale < 1 )
3119 {
@@ -37,7 +25,8 @@ internal byte[] ToBmpBitmap(int border, int scale, int foreground, int backgroun
3725 throw new ArgumentOutOfRangeException ( nameof ( border ) , border , "Border must be non-negative." ) ;
3826 }
3927
40- var dim = ( _size + 2 * border ) * scale ;
28+ var size = qrCode . Size ;
29+ var dim = ( size + 2 * border ) * scale ;
4130
4231 if ( dim > short . MaxValue )
4332 {
@@ -121,7 +110,7 @@ internal byte[] ToBmpBitmap(int border, int scale, int foreground, int backgroun
121110
122111 if ( border > 0 )
123112 {
124- var scaledSize = _size * scale ;
113+ var scaledSize = size * scale ;
125114
126115 for ( i = 0 ; i < aligned ; ++ i )
127116 {
@@ -144,7 +133,7 @@ internal byte[] ToBmpBitmap(int border, int scale, int foreground, int backgroun
144133 }
145134 }
146135
147- for ( y = 0 ; y < _size ; ++ y )
136+ for ( y = 0 ; y < size ; ++ y )
148137 {
149138 int j ;
150139 var yOffset = y * scale + scaledBorder ;
@@ -162,13 +151,13 @@ internal byte[] ToBmpBitmap(int border, int scale, int foreground, int backgroun
162151 continue ;
163152 }
164153
165- if ( x < border || x >= _size + border )
154+ if ( x < border || x >= size + border )
166155 {
167156 px |= ( byte ) ( 1 << ( 7 - j ) ) ;
168157 continue ;
169158 }
170159
171- px |= ( byte ) ( _modules [ ( _size - y - 1 ) , x - border ] ? 0 : 1 << ( 7 - j ) ) ;
160+ px |= ( byte ) ( qrCode . GetModule ( x - border , size - y - 1 ) ? 0 : 1 << ( 7 - j ) ) ;
172161 }
173162
174163 buf [ 62 + i + yOffset * aligned ] = px ;
0 commit comments