Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / src / fxbarcode / src / BC_OnedUPCAReader.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_Reader.h"\r
9 #include "include/BC_OneDReader.h"\r
10 #include "include/BC_OneDimReader.h"\r
11 #include "include/BC_OnedEAN13Reader.h"\r
12 #include "include/BC_OnedUPCAReader.h"\r
13 CBC_OnedUPCAReader::CBC_OnedUPCAReader()\r
14 {\r
15     m_ean13Reader = NULL;\r
16 }\r
17 void CBC_OnedUPCAReader::Init()\r
18 {\r
19     m_ean13Reader = FX_NEW CBC_OnedEAN13Reader;\r
20 }\r
21 CBC_OnedUPCAReader::~CBC_OnedUPCAReader()\r
22 {\r
23     if(m_ean13Reader != NULL) {\r
24         delete m_ean13Reader;\r
25     }\r
26     m_ean13Reader = NULL;\r
27 }\r
28 CFX_ByteString CBC_OnedUPCAReader::DecodeRow(FX_INT32 rowNumber, CBC_CommonBitArray *row, FX_INT32 hints, FX_INT32 &e)\r
29 {\r
30     CFX_ByteString bytestring = m_ean13Reader->DecodeRow(rowNumber, row, hints, e);\r
31     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
32     CFX_ByteString temp = MaybeReturnResult(bytestring, e);\r
33     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
34     return temp;\r
35 }\r
36 CFX_ByteString CBC_OnedUPCAReader::DecodeRow(FX_INT32 rowNumber, CBC_CommonBitArray *row, CFX_Int32Array *startGuardRange, FX_INT32 hints, FX_INT32 &e)\r
37 {\r
38     CFX_ByteString bytestring = m_ean13Reader->DecodeRow(rowNumber, row, startGuardRange, hints, e);\r
39     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
40     CFX_ByteString temp = MaybeReturnResult(bytestring, e);\r
41     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
42     return temp;\r
43 }\r
44 CFX_ByteString CBC_OnedUPCAReader::Decode(CBC_BinaryBitmap *image, FX_INT32 &e)\r
45 {\r
46     CFX_ByteString bytestring = m_ean13Reader->Decode(image, e);\r
47     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
48     CFX_ByteString temp = MaybeReturnResult(bytestring, e);\r
49     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
50     return temp;\r
51 }\r
52 CFX_ByteString CBC_OnedUPCAReader::Decode(CBC_BinaryBitmap *image, FX_INT32 hints, FX_INT32 &e)\r
53 {\r
54     CFX_ByteString bytestring = m_ean13Reader->Decode(image, hints, e);\r
55     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
56     CFX_ByteString temp = MaybeReturnResult(bytestring, e);\r
57     BC_EXCEPTION_CHECK_ReturnValue(e, "");\r
58     return temp;\r
59 }\r
60 FX_INT32 CBC_OnedUPCAReader::DecodeMiddle(CBC_CommonBitArray *row, CFX_Int32Array *startRange, CFX_ByteString &resultString, FX_INT32 &e)\r
61 {\r
62     FX_INT32 temp = m_ean13Reader->DecodeMiddle(row, startRange, resultString, e);\r
63     BC_EXCEPTION_CHECK_ReturnValue(e, 0);\r
64     return temp;\r
65 }\r
66 CFX_ByteString CBC_OnedUPCAReader::MaybeReturnResult(CFX_ByteString &result, FX_INT32 &e)\r
67 {\r
68     if(result[0] == '0') {\r
69         result.Delete(0);\r
70         return result;\r
71     } else {\r
72         e = BCExceptionFormatException;\r
73         return "";\r
74     }\r
75     return "";\r
76 }\r