Skip to content

Commit d4b4bb6

Browse files
committed
Use Buffer.alloc() if available
1 parent 8a160a0 commit d4b4bb6

File tree

7 files changed

+41
-29
lines changed

7 files changed

+41
-29
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ found at the end of this document.
2323
2424
## Status
2525

26-
* Current bwip-js version is 1.7.3 (2019-04-23)
26+
* Current bwip-js version is 1.7.4 (2019-10-30)
2727
* Current BWIPP version is 2018-02-04
2828
* Node.js compatibility: 0.12+
2929
* Browser compatibility: IE10+, Edge, Firefox, Chrome

browser-bitmap.js

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
// for the extended copyright notice.
99
"use strict";
1010

11-
module.exports = Bitmap;
11+
if (typeof module == 'object' && typeof exports == 'object') {
12+
module.exports = Bitmap;
13+
}
1214

13-
// bgcolor is optional, defaults to #fff
15+
// bgcolor is optional, defaults to transparent
1416
function Bitmap(cvsid, rot, bgcolor) {
1517
var rgb = [0, 0, 0];
1618
var padx = 0; // padding-x
@@ -46,24 +48,32 @@ function Bitmap(cvsid, rot, bgcolor) {
4648
cvs.width = imgwidth + 2*padx;
4749
cvs.height = imgheight + 2*pady;
4850

49-
// Convert from cmyk?
50-
if (bgcolor && bgcolor.length == 8) {
51-
var c = parseInt(bgcolor.substr(0,2), 16) / 255;
52-
var m = parseInt(bgcolor.substr(2,2), 16) / 255;
53-
var y = parseInt(bgcolor.substr(4,2), 16) / 255;
54-
var k = parseInt(bgcolor.substr(6,2), 16) / 255;
55-
var r = Math.floor((1-c) * (1-k) * 255);
56-
var g = Math.floor((1-m) * (1-k) * 255);
57-
var b = Math.floor((1-y) * (1-k) * 255);
58-
bgcolor = 'rgb(' + r + ',' + g + ',' + b + ')';
59-
} else if (bgcolor) {
60-
bgcolor = '#' + bgcolor;
61-
}
62-
6351
ctx = cvs.getContext('2d');
64-
ctx.fillStyle = bgcolor || '#fff';
65-
ctx.fillRect(0, 0, cvs.width, cvs.height);
66-
ctx.fillStyle = '#000';
52+
53+
// Convert from BWIPP cmyk?
54+
if (typeof bgcolor == 'string') {
55+
if (/^[0-9a-fA-F]{8}$/.test(bgcolor)) {
56+
var c = parseInt(bgcolor.substr(0,2), 16) / 255;
57+
var m = parseInt(bgcolor.substr(2,2), 16) / 255;
58+
var y = parseInt(bgcolor.substr(4,2), 16) / 255;
59+
var k = parseInt(bgcolor.substr(6,2), 16) / 255;
60+
var r = Math.floor((1-c) * (1-k) * 255);
61+
var g = Math.floor((1-m) * (1-k) * 255);
62+
var b = Math.floor((1-y) * (1-k) * 255);
63+
bgcolor = 'rgb(' + r + ',' + g + ',' + b + ')';
64+
// Convert from BWIPP rgb?
65+
} else if (/^[0-9a-fA-F]{6}$/.test(bgcolor)) {
66+
bgcolor = '#' + bgcolor;
67+
} else {
68+
bgcolor = '';
69+
}
70+
if (bgcolor) {
71+
var fill = ctx.fillStyle;
72+
ctx.fillStyle = bgcolor;
73+
ctx.fillRect(0, 0, cvs.width, cvs.height);
74+
ctx.fillStyle = fill;
75+
}
76+
}
6777

6878
idata = ctx.getImageData(padx, pady, imgwidth, imgheight);
6979
bytes = idata.data;
@@ -99,11 +109,11 @@ function Bitmap(cvsid, rot, bgcolor) {
99109
bytes[idx+0] = (bytes[idx+0] * (1 - a) + rgb[0] * a)|0;
100110
bytes[idx+1] = (bytes[idx+1] * (1 - a) + rgb[1] * a)|0;
101111
bytes[idx+2] = (bytes[idx+2] * (1 - a) + rgb[2] * a)|0;
102-
bytes[idx+3] = 255;
112+
bytes[idx+3] = (bytes[idx+3] * (1 - a) + 255 * a)|0;
103113
}
104114

105115
this.finalize = function(callback) {
106116
ctx.putImageData(idata, padx, pady);
107-
callback(null, cvsid);
117+
callback && callback(null, cvsid);
108118
}
109119
}

browser-bwipjs.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ module.exports = function toCanvas(cvs, opts, callback) {
7878

7979
// Override the `backgroundcolor` option.
8080
if (vals.backgroundcolor) {
81-
bw.bitmap(new Bitmap(cvs, rot, parseInt(''+vals.backgroundcolor, 16)));
81+
bw.bitmap(new Bitmap(cvs, rot, vals.backgroundcolor));
8282
delete vals.backgroundcolor;
8383
} else {
8484
bw.bitmap(new Bitmap(cvs, rot));

bwipjs.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ BWIPJS.prototype.render = function(callback) {
602602
}
603603
}
604604

605-
BWIPJS.VERSION = '1.7.3 (2019-04-23)';
605+
BWIPJS.VERSION = '1.7.4 (2019-10-30)';
606606
if (typeof module === 'object' && module.exports) {
607607
module.exports = BWIPJS;
608608
}

demo.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414
<link rel="stylesheet" type="text/css" href="lib/jquery-ui.min.css">
1515
<script type="text/javascript" src="bwipp.js"></script>
1616
<script type="text/javascript" src="bwipjs.js"></script>
17+
<script type="text/javascript" src="browser-bitmap.js"></script>
1718
<script type="text/javascript" src="lib/jquery.js"></script>
1819
<script type="text/javascript" src="lib/jquery-ui.min.js"></script>
1920
<script type="text/javascript" src="lib/xhr-fonts.js"></script>
20-
<script type="text/javascript" src="lib/bitmap.js"></script>
2121
<script type="text/javascript" src="lib/symdesc.js"></script>
2222
<script type="text/javascript" src="lib/canvas-toblob.js"></script>
2323
<script type="text/javascript" src="lib/filesaver.js"></script>

node-bitmap.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,8 @@ module.exports = function(rot, bgcolor, opts) {
126126
if (ncolors <= 256) {
127127
// Palette Color
128128
_imgrow = _imgw + 2*_padx + 1;
129-
_imgbuf = new Buffer(_imgrow * (_imgh + 2*_pady));
129+
_imgbuf = Buffer.alloc ? Buffer.alloc(_imgrow * (_imgh + 2*_pady))
130+
: new Buffer(_imgrow * (_imgh + 2*_pady));
130131
_pngtype = PNGTYPE_PALETTE;
131132

132133
_palette = [ bgcolor ];
@@ -137,7 +138,8 @@ module.exports = function(rot, bgcolor, opts) {
137138
} else {
138139
// TrueColor with Alpha
139140
_imgrow = (_imgw + 2*_padx) * 4 + 1;
140-
_imgbuf = new Buffer(_imgrow * (_imgh + 2*_pady));
141+
_imgbuf = Buffer.alloc ? Buffer.alloc(_imgrow * (_imgh + 2*_pady))
142+
: new Buffer(_imgrow * (_imgh + 2*_pady));
141143
_pngtype = PNGTYPE_TRUEALPHA;
142144

143145
this.set = setTrueAlpha
@@ -324,7 +326,7 @@ module.exports = function(rot, bgcolor, opts) {
324326
}
325327

326328
// Emulate a byte-stream
327-
var png = new Buffer(length);
329+
var png = Buffer.alloc ? Buffer.alloc(length) : new Buffer(length);
328330
var pngoff = 0; // running offset into the png buffer
329331

330332
write('\x89PNG\x0d\x0a\x1a\x0a'); // PNG file header

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "bwip-js",
3-
"version": "1.7.3",
3+
"version": "1.7.4",
44
"description": "JavaScript barcode generator supporting over 90 types and standards.",
55
"main": "node-bwipjs.js",
66
"browser": "browser-bwipjs.js",

0 commit comments

Comments
 (0)