12 #include <OpenGL/CGLMacro.h>
14 #include <zxing/common/GreyscaleLuminanceSource.h>
15 #include <zxing/common/HybridBinarizer.h>
16 #include <zxing/MultiFormatReader.h>
17 #include <zxing/ReaderException.h>
25 "title" :
"VuoBarcode",
38 using namespace zxing;
64 Ref<Binarizer> binarizer(
new GlobalHistogramBinarizer(source));
65 Ref<BinaryBitmap> bir(
new BinaryBitmap(binarizer));
67 DecodeHints hints(DecodeHints::DEFAULT_HINT);
73 if (format == 10) hints.addFormat(BarcodeFormat::CODABAR);
74 else if (format == 20) hints.addFormat(BarcodeFormat::CODE_39);
75 else if (format == 30) hints.addFormat(BarcodeFormat::CODE_93);
76 else if (format == 40) hints.addFormat(BarcodeFormat::CODE_128);
77 else if (format == 50) hints.addFormat(BarcodeFormat::EAN_8);
78 else if (format == 60) hints.addFormat(BarcodeFormat::EAN_13);
79 else if (format == 70) hints.addFormat(BarcodeFormat::RSS_14);
80 else if (format == 80) hints.addFormat(BarcodeFormat::RSS_EXPANDED);
81 else if (format == 90) hints.addFormat(BarcodeFormat::ITF);
82 else if (format == 100) hints.addFormat(BarcodeFormat::UPC_A);
83 else if (format == 110) hints.addFormat(BarcodeFormat::UPC_E);
84 else if (format == 200) hints.addFormat(BarcodeFormat::AZTEC);
85 else if (format == 210) hints.addFormat(BarcodeFormat::DATA_MATRIX);
86 else if (format == 220) hints.addFormat(BarcodeFormat::MAXICODE);
87 else if (format == 230) hints.addFormat(BarcodeFormat::PDF_417);
88 else if (format == 240) hints.addFormat(BarcodeFormat::QR_CODE);
91 MultiFormatReader reader;
93 Ref<Result> result = reader.decode(bir, hints);
94 Ref<String> s = result->getText();
99 ArrayRef< Ref<ResultPoint> > points = result->getResultPoints();
101 for (
int i = 0; i < points->size(); ++i)
117 int actualFormat = result->getBarcodeFormat().value;
118 if (actualFormat == BarcodeFormat::CODABAR) *outputFormat =
VuoText_make(
"Codabar");
119 else if (actualFormat == BarcodeFormat::CODE_39) *outputFormat =
VuoText_make(
"Code 39");
120 else if (actualFormat == BarcodeFormat::CODE_93) *outputFormat =
VuoText_make(
"Code 93");
121 else if (actualFormat == BarcodeFormat::CODE_128) *outputFormat =
VuoText_make(
"Code 128");
122 else if (actualFormat == BarcodeFormat::EAN_8) *outputFormat =
VuoText_make(
"EAN-8");
123 else if (actualFormat == BarcodeFormat::EAN_13) *outputFormat =
VuoText_make(
"EAN-13");
124 else if (actualFormat == BarcodeFormat::RSS_14) *outputFormat =
VuoText_make(
"GS1 DataBar-14 (RSS-14)");
125 else if (actualFormat == BarcodeFormat::RSS_EXPANDED) *outputFormat =
VuoText_make(
"GS1 DataBar Expanded (RSS Expanded)");
126 else if (actualFormat == BarcodeFormat::ITF) *outputFormat =
VuoText_make(
"Interleaved 2 of 5 (ITF)");
127 else if (actualFormat == BarcodeFormat::UPC_A) *outputFormat =
VuoText_make(
"UPC-A");
128 else if (actualFormat == BarcodeFormat::UPC_E) *outputFormat =
VuoText_make(
"UPC-E");
129 else if (actualFormat == BarcodeFormat::AZTEC) *outputFormat =
VuoText_make(
"Aztec");
130 else if (actualFormat == BarcodeFormat::DATA_MATRIX) *outputFormat =
VuoText_make(
"Data Matrix");
131 else if (actualFormat == BarcodeFormat::MAXICODE) *outputFormat =
VuoText_make(
"MaxiCode");
132 else if (actualFormat == BarcodeFormat::PDF_417) *outputFormat =
VuoText_make(
"PDF417");
133 else if (actualFormat == BarcodeFormat::QR_CODE) *outputFormat =
VuoText_make(
"QR Code");
136 unsigned long len = s->length();
137 char *outputText = (
char *)malloc(len+1);
138 for(
int i = 0; i < len; ++i)
139 outputText[i] = s->charAt(i);
147 if (strcmp(e.what(),
"No code detected"))