Add to result the raw, but parsed, bytes of byte segments in 2D barcodes
[zxing.git] / core / src / com / google / zxing / datamatrix / DataMatrixReader.java
index fd597ab..1e602cd 100644 (file)
@@ -23,6 +23,7 @@ import com.google.zxing.Reader;
 import com.google.zxing.ReaderException;
 import com.google.zxing.Result;
 import com.google.zxing.ResultPoint;
+import com.google.zxing.ResultMetadataType;
 import com.google.zxing.common.BitMatrix;
 import com.google.zxing.common.DecoderResult;
 import com.google.zxing.common.DetectorResult;
@@ -61,11 +62,15 @@ public final class DataMatrixReader implements Reader {
       decoderResult = decoder.decode(bits);
       points = NO_POINTS;
     } else {
-      DetectorResult result = new Detector(image).detect();
-      decoderResult = decoder.decode(result.getBits());
-      points = result.getPoints();
+      DetectorResult detectorResult = new Detector(image).detect();
+      decoderResult = decoder.decode(detectorResult.getBits());
+      points = detectorResult.getPoints();
     }
-    return new Result(decoderResult.getText(), decoderResult.getRawBytes(), points, BarcodeFormat.DATAMATRIX);
+    Result result = new Result(decoderResult.getText(), decoderResult.getRawBytes(), points, BarcodeFormat.DATAMATRIX);
+    if (decoderResult.getByteSegments() != null) {
+      result.putMetadata(ResultMetadataType.BYTE_SEGMENTS, decoderResult.getByteSegments());
+    }
+    return result;
   }
 
   /**