Merge to XFA: Use stdint.h types throughout PDFium.
[pdfium.git] / xfa / src / fxbarcode / datamatrix / 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 // Original code is licensed as follows:\r
7 /*\r
8  * Copyright 2007 ZXing authors\r
9  *\r
10  * Licensed under the Apache License, Version 2.0 (the "License");\r
11  * you may not use this file except in compliance with the License.\r
12  * You may obtain a copy of the License at\r
13  *\r
14  *      http://www.apache.org/licenses/LICENSE-2.0\r
15  *\r
16  * Unless required by applicable law or agreed to in writing, software\r
17  * distributed under the License is distributed on an "AS IS" BASIS,\r
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
19  * See the License for the specific language governing permissions and\r
20  * limitations under the License.\r
21  */\r
22 \r
23 #include "../barcode.h"\r
24 #include "../BC_BinaryBitmap.h"\r
25 #include "../BC_Reader.h"\r
26 #include "../qrcode/BC_QRDetectorResult.h"\r
27 #include "../common/BC_CommonDecoderResult.h"\r
28 #include "BC_DataMatrixDecoder.h"\r
29 #include "BC_DataMatrixDetector.h"\r
30 #include "BC_DataMatrixReader.h"\r
31 CBC_DataMatrixReader::CBC_DataMatrixReader()\r
32 {\r
33     m_decoder = NULL;\r
34 }\r
35 void CBC_DataMatrixReader::Init()\r
36 {\r
37     m_decoder = FX_NEW CBC_DataMatrixDecoder;\r
38     m_decoder->Init();\r
39 }\r
40 CBC_DataMatrixReader::~CBC_DataMatrixReader()\r
41 {\r
42     if(m_decoder != NULL) {\r
43         delete m_decoder;\r
44     }\r
45     m_decoder = NULL;\r
46 }\r
47 CFX_ByteString CBC_DataMatrixReader::Decode(CBC_BinaryBitmap *image, int32_t hints, int32_t &e)\r
48 {\r
49     CBC_CommonBitMatrix *cdr = image->GetBlackMatrix(e);\r
50     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
51     CBC_DataMatrixDetector detector(cdr);\r
52     detector.Init(e);\r
53     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
54     CBC_QRDetectorResult* ddr = detector.Detect(e);\r
55     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
56     CBC_AutoPtr<CBC_QRDetectorResult> detectorResult(ddr);\r
57     CBC_CommonDecoderResult* ResultTemp = m_decoder->Decode(detectorResult->GetBits(), e);\r
58     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
59     CBC_AutoPtr<CBC_CommonDecoderResult> decodeResult(ResultTemp);\r
60     return decodeResult->GetText();\r
61 }\r
62 CFX_ByteString CBC_DataMatrixReader::Decode(CBC_BinaryBitmap *image, int32_t &e)\r
63 {\r
64     CFX_ByteString bs = Decode(image, 0, e);\r
65     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
66     return bs;\r
67 }\r