codice:package barcode; import java.awt.*; public class Ean extends java.applet.Applet { // codifiche binarie delle cifre decimali String[][] barcode = { {"0001101", "0011001", "0010011", "0111101", "0100011", "0110001", "0101111", "0111011", "0110111", "0001011"}, // left hand A {"0100111", "0110011", "0011011", "0100001", "0011101", "0111001", "0000101", "0010001", "0001001", "0010111"}, // left hand B {"1110010", "1100110", "1101100", "1000010", "1011100", "1001110", "1010000", "1000100", "1001000", "1110100"}, // right hand {"101", "01010"} // guide (laterale-centrale) }; // masking del primo byte del flag sui 4 vettori barcode: // 0=left hand a - 1=left hand b - 2=right hand - 3=barra guida int[][] maskMatrix = { {3,0,0,0,0,0,0,3,2,2,2,2,2,2,3}, //0 {3,0,0,1,0,1,1,3,2,2,2,2,2,2,3}, //1 {3,0,0,1,1,0,1,3,2,2,2,2,2,2,3}, //2 {3,0,0,1,1,1,0,3,2,2,2,2,2,2,3}, //3 {3,0,1,0,0,1,1,3,2,2,2,2,2,2,3}, //4 {3,0,1,1,0,0,1,3,2,2,2,2,2,2,3}, //5 {3,0,1,1,1,0,0,3,2,2,2,2,2,2,3}, //6 {3,0,1,0,1,0,1,3,2,2,2,2,2,2,3}, //7 {3,0,1,0,1,1,0,3,2,2,2,2,2,2,3}, //8 {3,0,1,1,0,1,0,3,2,2,2,2,2,2,3}, //9 {3,0,0,0,0,3,2,2,2,2,3} // ecco la compatibilita' ean8 }; String input; String output; String ean; String fgcolor; String bgcolor; int width; int height; boolean isValid = true; boolean hideMistakes = false; public void init() { input = getParameter("barcode"); try { height = Integer.parseInt(getParameter("height")); } catch(Exception ex) {height = 40;} try { width = Integer.parseInt(getParameter("width")); } catch(Exception ex) {width = 100;} fgcolor = getParameter("color"); if (fgcolor == null) fgcolor = getParameter("fgcolor"); if (fgcolor == null) fgcolor = "#000000"; bgcolor = getParameter("bgcolor"); if (bgcolor == null) bgcolor = "#FFFFFF"; if (("true".equals(getParameter("hidemistakes"))) || ("true".equals(getParameter("hideMistakes")))) hideMistakes = true; output = input; createEAN(); repaint(); } public void paint(Graphics g) { g.setColor(Color.decode(bgcolor)); // background g.fillRect(0, 0, width, height); // le barre g.setColor(Color.decode(fgcolor)); if (isValid) for (int i = 0, j = ean.length(); i < j; i++) if (ean.charAt(i) == '1') g.fillRect(i, 0, 1, height-12); // le cifre if (isValid || !hideMistakes) { g.setFont(new Font("Courier", Font.PLAIN, 12)); g.drawString(output, 3, height-2); } } public void createEAN() { // valore di default come primo indice // sulla matrice di masking nel caso di ean8 int flagByte = 10; try { long test = Long.parseLong(input); } catch(NumberFormatException nfx) { isValid = false; } if (isValid) { if (input.length() == 13) { // pesco il primo byte di flag, quello indicante // il primo indice sulla matrice di masking flagByte = Integer.parseInt((new Character(input.charAt(0))).toString()); // ...e lo tolgo dalla stringa di input input = input.substring(1); } // inserisco le barre guida - 0=laterale - 1=centrale input = "0" + input.substring(0, input.length()/2) + "1" + input.substring(input.length()/2) + "0"; ean = ""; for (int i = 0; i < input.length(); i ++) { // primo indice: pesco il byte indicante // che vettore interrogare per codificare la cifra corrente int i1 = maskMatrix[flagByte][i]; // secondo indice: pesco la cifra corrente dall'input string int i2 = Integer.parseInt((new Character(input.charAt(i))).toString()); ean += barcode[i1][i2]; } } } }

Rispondi quotando