1 58 package org.krysalis.barcode.impl; 59 60 import org.krysalis.barcode.BarGroup; 61 import org.krysalis.barcode.BarcodeDimension; 62 import org.krysalis.barcode.BaselineAlignment; 63 import org.krysalis.barcode.ClassicBarcodeLogicHandler; 64 import org.krysalis.barcode.HumanReadablePlacement; 65 import org.krysalis.barcode.output.Canvas; 66 67 73 public class DefaultHeightVariableLogicHandler 74 implements ClassicBarcodeLogicHandler { 75 76 77 private HeightVariableBarcodeImpl bcImpl; 78 private Canvas canvas; 79 private double x = 0.0; 80 private String msg; 82 83 88 public DefaultHeightVariableLogicHandler(HeightVariableBarcodeImpl bcImpl, Canvas canvas) { 89 this.bcImpl = bcImpl; 90 this.canvas = canvas; 91 } 92 93 private double getStartX() { 94 if (bcImpl.hasQuietZone()) { 95 return bcImpl.getQuietZone(); 96 } else { 97 return 0.0; 98 } 99 } 100 101 104 public void startBarcode(String msg) { 105 this.msg = msg; 106 BarcodeDimension dim = bcImpl.calcDimensions(msg); 108 canvas.establishDimensions(dim); 109 x = getStartX(); 110 } 111 112 115 public void addBar(boolean black, int height) { 116 final double w = black ? bcImpl.getBarWidth(1) : bcImpl.getBarWidth(-1); 117 final double h = bcImpl.getBarHeight(height); 118 final BaselineAlignment baselinePosition = bcImpl.getBaselinePosition(); 119 120 if (black) { 121 if (bcImpl.getMsgPosition() == HumanReadablePlacement.HRP_TOP) { 122 if (baselinePosition == BaselineAlignment.ALIGN_TOP) { 123 canvas.drawRectWH(x, bcImpl.getHumanReadableHeight(), w, h); 124 } else if (baselinePosition == BaselineAlignment.ALIGN_BOTTOM) { 125 canvas.drawRectWH(x, bcImpl.getHeight() - h, w, h); 126 } 127 } else { 128 if (baselinePosition == BaselineAlignment.ALIGN_TOP) { 129 canvas.drawRectWH(x, 0, w, h); 130 } else if (baselinePosition == BaselineAlignment.ALIGN_BOTTOM) { 131 canvas.drawRectWH(x, bcImpl.getBarHeight() - h, w, h); 132 } 133 } 134 } 135 x += w; 136 } 137 138 141 public void endBarcode() { 142 if (bcImpl.getMsgPosition() == HumanReadablePlacement.HRP_NONE) { 143 } else if (bcImpl.getMsgPosition() == HumanReadablePlacement.HRP_TOP) { 145 bcImpl.drawCenteredText(canvas, msg, getStartX(), x, bcImpl.getHumanReadableHeight()); 146 } else if (bcImpl.getMsgPosition() == HumanReadablePlacement.HRP_BOTTOM) { 147 bcImpl.drawCenteredText(canvas, msg, getStartX(), x, bcImpl.getHeight()); 148 } 149 } 150 151 154 public void startBarGroup(BarGroup barGroup, String string) { 155 } 156 157 160 public void endBarGroup() { 161 } 162 163 } 164 | Popular Tags |