Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / src / fxbarcode / src / BC_DataMatrixReader.cpp
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #include "barcode.h"\r
8 #include "include/BC_DataMatrixDecoder.h"\r
9 #include "include/BC_BinaryBitmap.h"\r
10 #include "include/BC_DataMatrixDetector.h"\r
11 #include "include/BC_QRDetectorResult.h"\r
12 #include "include/BC_CommonDecoderResult.h"\r
13 #include "include/BC_Reader.h"\r
14 #include "include/BC_DataMatrixReader.h"\r
15 CBC_DataMatrixReader::CBC_DataMatrixReader()\r
16 {\r
17     m_decoder = NULL;\r
18 }\r
19 void CBC_DataMatrixReader::Init()\r
20 {\r
21     m_decoder = FX_NEW CBC_DataMatrixDecoder;\r
22     m_decoder->Init();\r
23 }\r
24 CBC_DataMatrixReader::~CBC_DataMatrixReader()\r
25 {\r
26     if(m_decoder != NULL) {\r
27         delete m_decoder;\r
28     }\r
29     m_decoder = NULL;\r
30 }\r
31 CFX_ByteString CBC_DataMatrixReader::Decode(CBC_BinaryBitmap *image, FX_INT32 hints, FX_INT32 &e)\r
32 {\r
33     CBC_CommonBitMatrix *cdr = image->GetBlackMatrix(e);\r
34     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
35     CBC_DataMatrixDetector detector(cdr);\r
36     detector.Init(e);\r
37     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
38     CBC_QRDetectorResult* ddr = detector.Detect(e);\r
39     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
40     CBC_AutoPtr<CBC_QRDetectorResult> detectorResult(ddr);\r
41     CBC_CommonDecoderResult* ResultTemp = m_decoder->Decode(detectorResult->GetBits(), e);\r
42     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
43     CBC_AutoPtr<CBC_CommonDecoderResult> decodeResult(ResultTemp);\r
44     return decodeResult->GetText();\r
45 }\r
46 CFX_ByteString CBC_DataMatrixReader::Decode(CBC_BinaryBitmap *image, FX_INT32 &e)\r
47 {\r
48     CFX_ByteString bs = Decode(image, 0, e);\r
49     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
50     return bs;\r
51 }\r