mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
This commit is contained in:
@@ -0,0 +1,319 @@
|
||||
/*
|
||||
* jQuery Barcode plugin 0.3
|
||||
*
|
||||
* http://www.pasella.it/projects/jQuery/barcode
|
||||
* based on code from Kris Bailey [http://www.krisbailey.com/creating-code-39-barcodes-in-pure-javascript]
|
||||
*
|
||||
* Copyright (c) 2009 Antonello Pasella antonello.pasella@gmail.com
|
||||
*
|
||||
* Dual licensed under the MIT and GPL licenses:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
*/
|
||||
|
||||
|
||||
;(function($) {
|
||||
|
||||
$.barcode = {};
|
||||
$.barcode.defaults = {thinBarWidth : 1, height: '100%', code: 'code39'};
|
||||
|
||||
$.fn.extend({
|
||||
barcode : function(settings){
|
||||
settings = $.extend({}, $.barcode.defaults, settings);
|
||||
settings.barWidthRatio = 3;
|
||||
settings.thin = settings.thinBarWidth;
|
||||
settings.thick = settings.thinBarWidth * settings.barWidthRatio;
|
||||
return $.barcode._barcodeBMP(settings, this);
|
||||
}
|
||||
});
|
||||
|
||||
$.barcode.palette = [ [0, 0 ,0] , [255, 255, 255] ];
|
||||
$.barcode.codes = {};
|
||||
$.barcode.codes.code39 = {};
|
||||
$.barcode.codes.code39.plain = {};
|
||||
$.barcode.codes.code39.plain['0'] = 'bwbWBwBwb';
|
||||
$.barcode.codes.code39.plain['1'] = 'BwbWbwbwB';
|
||||
$.barcode.codes.code39.plain['2'] = 'bwBWbwbwB';
|
||||
$.barcode.codes.code39.plain['3'] = 'BwBWbwbwb';
|
||||
$.barcode.codes.code39.plain['4'] = 'bwbWBwbwB';
|
||||
$.barcode.codes.code39.plain['5'] = 'BwbWBwbwb';
|
||||
$.barcode.codes.code39.plain['6'] = 'bwBWBwbwb';
|
||||
$.barcode.codes.code39.plain['7'] = 'bwbWbwBwB';
|
||||
$.barcode.codes.code39.plain['8'] = 'BwbWbwBwb';
|
||||
$.barcode.codes.code39.plain['9'] = 'bwBWbwBwb';
|
||||
$.barcode.codes.code39.plain['A'] = 'BwbwbWbwB';
|
||||
$.barcode.codes.code39.plain['B'] = 'bwBwbWbwB';
|
||||
$.barcode.codes.code39.plain['C'] = 'BwBwbWbwb';
|
||||
$.barcode.codes.code39.plain['D'] = 'bwbwBWbwB';
|
||||
$.barcode.codes.code39.plain['E'] = 'BwbwBWbwb';
|
||||
$.barcode.codes.code39.plain['F'] = 'bwBwBWbwb';
|
||||
$.barcode.codes.code39.plain['G'] = 'bwbwbWBwB';
|
||||
$.barcode.codes.code39.plain['H'] = 'BwbwbWBwb';
|
||||
$.barcode.codes.code39.plain['I'] = 'bwBwbWBwb';
|
||||
$.barcode.codes.code39.plain['J'] = 'bwbwBWBwb';
|
||||
$.barcode.codes.code39.plain['K'] = 'BwbwbwbWB';
|
||||
$.barcode.codes.code39.plain['L'] = 'bwBwbwbWB';
|
||||
$.barcode.codes.code39.plain['M'] = 'BwBwbwbWb';
|
||||
$.barcode.codes.code39.plain['N'] = 'bwbwBwbWB';
|
||||
$.barcode.codes.code39.plain['O'] = 'BwbwBwbWb';
|
||||
$.barcode.codes.code39.plain['P'] = 'bwBwBwbWb';
|
||||
$.barcode.codes.code39.plain['Q'] = 'bwbwbwBWB';
|
||||
$.barcode.codes.code39.plain['R'] = 'BwbwbwBWb';
|
||||
$.barcode.codes.code39.plain['S'] = 'bwBwbwBWb';
|
||||
$.barcode.codes.code39.plain['T'] = 'bwbwBwBWb';
|
||||
$.barcode.codes.code39.plain['U'] = 'BWbwbwbwB';
|
||||
$.barcode.codes.code39.plain['V'] = 'bWBwbwbwB';
|
||||
$.barcode.codes.code39.plain['W'] = 'BWBwbwbwb';
|
||||
$.barcode.codes.code39.plain['X'] = 'bWbwBwbwB';
|
||||
$.barcode.codes.code39.plain['Y'] = 'BWbwBwbwb';
|
||||
$.barcode.codes.code39.plain['Z'] = 'bWBwBwbwb';
|
||||
$.barcode.codes.code39.plain['-'] = 'bWbwbwBwB';
|
||||
$.barcode.codes.code39.plain['.'] = 'BWbwbwBwb';
|
||||
$.barcode.codes.code39.plain[' '] = 'bWBwbwBwb';
|
||||
$.barcode.codes.code39.plain['*'] = 'bWbwBwBwb';
|
||||
$.barcode.codes.code39.plain['$'] = 'bWbWbWbwb';
|
||||
$.barcode.codes.code39.plain['/'] = 'bWbWbwbWb';
|
||||
$.barcode.codes.code39.plain['+'] = 'bWbwbWbWb';
|
||||
$.barcode.codes.code39.plain['%'] = 'bwbWbWbWb';
|
||||
|
||||
$.barcode.codes.I25 = {};
|
||||
$.barcode.codes.I25.plain = {};
|
||||
$.barcode.codes.I25.plain['START'] = 'wwwwwwwwwwbwbw';
|
||||
$.barcode.codes.I25.plain['END'] = 'Bwbwwwwwwwwww';
|
||||
$.barcode.codes.I25.plain['0'] = 'bbBBb';
|
||||
$.barcode.codes.I25.plain['1'] = 'BbbbB';
|
||||
$.barcode.codes.I25.plain['2'] = 'bBbbB';
|
||||
$.barcode.codes.I25.plain['3'] = 'BBbbb';
|
||||
$.barcode.codes.I25.plain['4'] = 'bbBbB';
|
||||
$.barcode.codes.I25.plain['5'] = 'BbBbb';
|
||||
$.barcode.codes.I25.plain['6'] = 'bBBbb';
|
||||
$.barcode.codes.I25.plain['7'] = 'bbbBB';
|
||||
$.barcode.codes.I25.plain['8'] = 'BbbBb';
|
||||
$.barcode.codes.I25.plain['9'] = 'bBbBb';
|
||||
|
||||
/* Cache BMP translation codes*/
|
||||
$.barcode.codes.code39.BMP = {};
|
||||
for (var x in $.barcode.codes.code39.plain){
|
||||
var tcodes = $.barcode.codes.code39.plain[x];
|
||||
$.barcode.codes.code39.BMP[x] = '';
|
||||
for (var xi=0; xi<9; xi++)
|
||||
switch (tcodes.charAt(xi)){
|
||||
case 'B':
|
||||
$.barcode.codes.code39.BMP[x] += '\x00\x00\x00\x00\x00\x00\x00\x00\x00';
|
||||
break;
|
||||
case 'b':
|
||||
$.barcode.codes.code39.BMP[x] += '\x00\x00\x00';
|
||||
break;
|
||||
case 'W':
|
||||
$.barcode.codes.code39.BMP[x] += '\x01\x01\x01\x01\x01\x01\x01\x01\x01';
|
||||
break;
|
||||
case 'w':
|
||||
$.barcode.codes.code39.BMP[x] += '\x01\x01\x01';
|
||||
break;
|
||||
}
|
||||
$.barcode.codes.code39.BMP[x] += '\x01\x01\x01';
|
||||
};
|
||||
|
||||
$.barcode._barcodeBMP = function(settings, jQ) {
|
||||
return $(jQ).each(function(item, index){
|
||||
var encoded = '';
|
||||
switch(settings.code){
|
||||
case 'code39' :
|
||||
var code = '*' + $.trim($(this).html()) + '*';
|
||||
for(var i = 0; i < code.length; i++)
|
||||
encoded += $.barcode.codes.code39.BMP[code.charAt(i)];
|
||||
break;
|
||||
case 'I25' :
|
||||
var code = $.trim($(this).html());
|
||||
encoded = $.barcode.codes.I25.plain['START'];
|
||||
|
||||
if(code.length % 2 == 1)
|
||||
code = '0' + code;
|
||||
|
||||
for(var i = 0; i < code.length; i+=2){
|
||||
var code1 = $.barcode.codes.I25.plain[code.charAt(i)];
|
||||
var code2 = $.barcode.codes.I25.plain[code.charAt(i+1)].replace(/b/g,"w").replace(/B/g, "W");
|
||||
for(var i2 = 0; i2 < 5; i2++){
|
||||
encoded += code1.charAt(i2) + code2.charAt(i2);
|
||||
}
|
||||
}
|
||||
encoded += $.barcode.codes.I25.plain['END'];
|
||||
encoded = encoded.replace(/w/g, '\x01\x01\x01');
|
||||
encoded = encoded.replace(/W/g, '\x01\x01\x01\x01\x01\x01\x01\x01\x01');
|
||||
encoded = encoded.replace(/b/g, '\x00\x00\x00');
|
||||
encoded = encoded.replace(/B/g, '\x00\x00\x00\x00\x00\x00\x00\x00\x00');
|
||||
break;
|
||||
default :
|
||||
alert("Code" + settings.code + ' not implemented');
|
||||
return;
|
||||
};
|
||||
var img = $("<img />").width("100%").height("100%").attr("src", $.barcode._createBmp([encoded], $.barcode.palette));
|
||||
$(this).html("").append(img);
|
||||
});
|
||||
};
|
||||
|
||||
$.barcode._encode64 = function(input) {
|
||||
var output = '';
|
||||
var i = 0;
|
||||
do {
|
||||
var chr1 = input.charCodeAt(i++);
|
||||
var chr2 = input.charCodeAt(i++);
|
||||
var chr3 = input.charCodeAt(i++);
|
||||
|
||||
var enc1 = chr1 >> 2;
|
||||
var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
|
||||
var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
|
||||
var enc4 = chr3 & 63;
|
||||
|
||||
if (isNaN(chr2)) enc3 = enc4 = 64;
|
||||
else if (isNaN(chr3)) enc4 = 64;
|
||||
|
||||
output = output + $.barcode._encode64.keyStr.charAt(enc1) +
|
||||
$.barcode._encode64.keyStr.charAt(enc2) +
|
||||
$.barcode._encode64.keyStr.charAt(enc3) +
|
||||
$.barcode._encode64.keyStr.charAt(enc4);
|
||||
} while (i < input.length);
|
||||
return output;
|
||||
};
|
||||
|
||||
$.barcode._encode64.keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
||||
|
||||
$.barcode._multiByteEncode = function(number, bytes) {
|
||||
if (number < 0 || bytes < 0) {
|
||||
throw('Negative numbers not allowed.');
|
||||
}
|
||||
var oldbase = 1;
|
||||
var string = '';
|
||||
for (var x = 0; x < bytes; x++) {
|
||||
if (number == 0) {
|
||||
CharCode = 0;
|
||||
} else {
|
||||
var base = oldbase * 256;
|
||||
var CharCode = number % base;
|
||||
number = number - CharCode;
|
||||
CharCode = CharCode / oldbase;
|
||||
oldbase = base;
|
||||
}
|
||||
string += String.fromCharCode(CharCode);
|
||||
}
|
||||
if (number != 0)
|
||||
throw('Overflow, number too big for string length');
|
||||
return string;
|
||||
};
|
||||
|
||||
if ('btoa' in window && typeof window.btoa == 'function' && window.btoa('hello') == 'aGVsbG8=') {
|
||||
$.barcode._encode64 = function(input) {
|
||||
return window.btoa(input);
|
||||
}
|
||||
};
|
||||
|
||||
$.barcode._createBmp = function(grid, palette) {
|
||||
// xxxx and yyyy are placeholders for offsets (computed later).
|
||||
var bitmapFileHeader = 'BMxxxx\0\0\0\0yyyy';
|
||||
|
||||
// Assemble the info header.
|
||||
var height = grid.length;
|
||||
var width = height && grid[0].length;
|
||||
var biHeight = this._multiByteEncode(height, 4);
|
||||
var biWidth = this._multiByteEncode(width, 4);
|
||||
var bfOffBits = this._multiByteEncode(40, 4);
|
||||
var bitCount = 8;
|
||||
|
||||
var biBitCount = this._multiByteEncode(bitCount, 2);
|
||||
var bitmapInfoHeader = bfOffBits + biWidth + biHeight + '\x01\0' +
|
||||
biBitCount + '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0';
|
||||
|
||||
if (bitCount != 24) {
|
||||
var palette_str = String(palette);
|
||||
var rgbQuad = [];
|
||||
var r = 0;
|
||||
var g = 0;
|
||||
var b = 0;
|
||||
for (var x = 0; x < 256; x++) {
|
||||
if (x < palette.length) {
|
||||
r = palette[x][0];
|
||||
g = palette[x][1];
|
||||
b = palette[x][2];
|
||||
}
|
||||
rgbQuad[x] = String.fromCharCode(b, g, r, 0);
|
||||
}
|
||||
rgbQuad = rgbQuad.join('');
|
||||
}
|
||||
|
||||
var padding;
|
||||
if (width % 4 == 1) padding = '\0\0\0';
|
||||
else if (width % 4 == 2) padding = '\0\0';
|
||||
else if (width % 4 == 3) padding = '\0';
|
||||
else padding = '';
|
||||
|
||||
var data = [];
|
||||
for (var y = 0; y < height; y++)
|
||||
data[y] = grid[height - y - 1] + padding;
|
||||
|
||||
var bitmap = bitmapFileHeader + bitmapInfoHeader + rgbQuad + data.join('');
|
||||
bitmap = bitmap.replace(/yyyy/, this._multiByteEncode(bitmapFileHeader.length + bitmapInfoHeader.length + rgbQuad.length, 4));
|
||||
bitmap = bitmap.replace(/xxxx/, this._multiByteEncode(bitmap.length, 4));
|
||||
return 'data:image/bmp;base64,' + this._encode64(bitmap);
|
||||
};
|
||||
})(jQuery);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
A version with DIVs for IE < 8 ...
|
||||
|
||||
|
||||
//For Ie<8 fallback to DIV version
|
||||
if($.browser.msie && parseInt($.browser.version.charAt(0)) < 8)
|
||||
return $.barcode._barcodeDIV(settings, this);
|
||||
else
|
||||
|
||||
|
||||
|
||||
$.barcode._barcodeDIV = function(settings, jQ) {
|
||||
settings.thinWhiteBar = "<div style='float:left;background-color:#FFF;width:"+settings.thin+"px;height:"+settings.height+"'></div>";
|
||||
settings.thinBlackBar = "<div style='float:left;background-color:#000;width:"+settings.thin+"px;height:"+settings.height+"'></div>";
|
||||
settings.thickWhiteBar = "<div style='float:left;background-color:#FFF;width:"+settings.thick+"px;height:"+settings.height+"'></div>";
|
||||
settings.thickBlackBar = "<div style='float:left;background-color:#000;width:"+settings.thick+"px;height:"+settings.height+"'></div>";
|
||||
var codesHTML = {};
|
||||
for (var x in $.barcode.codes.code39){
|
||||
var htmlRES = '';
|
||||
var tcodes = $.barcode.codes.code39[x];
|
||||
for (var xi=0; xi<9; xi++){
|
||||
switch (tcodes.charAt(xi)){
|
||||
case 'w':
|
||||
htmlRES += settings.thinWhiteBar;
|
||||
break;
|
||||
case 'b':
|
||||
htmlRES += settings.thinBlackBar;
|
||||
break;
|
||||
case 'W':
|
||||
htmlRES += settings.thickWhiteBar;
|
||||
break;
|
||||
case 'B':
|
||||
htmlRES += settings.thickBlackBar;
|
||||
break;
|
||||
}
|
||||
}
|
||||
htmlRES += settings.thinWhiteBar;
|
||||
codesHTML[x] = htmlRES;
|
||||
};
|
||||
|
||||
return $(jQ).each(function(index, item) {
|
||||
var code = '*'+$.trim($(item).attr("alt")).toUpperCase() + '*';
|
||||
//alert(code);
|
||||
var htmlout = "";
|
||||
for (var i=0; i<code.length; i++){
|
||||
tcodes = $.barcode.codes.code39[code.charAt(i)];
|
||||
if (typeof tcodes!='undefined')
|
||||
htmlout += codesHTML[code.charAt(i)];
|
||||
}
|
||||
$(item).wrap("<div></div>");
|
||||
$(item).parent().css("width", $(item).width());
|
||||
$(item).parent().css("height", $(item).height());
|
||||
$(item).parent().html(htmlout);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
*/
|
||||
Reference in New Issue
Block a user