1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #ifndef XFA_FXBARCODE_UTILS_H_
8 #define XFA_FXBARCODE_UTILS_H_
9 
10 #include "core/fxcrt/include/fx_basic.h"
11 
12 typedef CFX_MapPtrTemplate<void*, int32_t> CFX_PtrToInt32;
13 FX_BOOL BC_FX_ByteString_Replace(CFX_ByteString& dst,
14                                  uint32_t first,
15                                  uint32_t last,
16                                  int32_t count,
17                                  FX_CHAR c);
18 void BC_FX_ByteString_Append(CFX_ByteString& dst, int32_t count, FX_CHAR c);
19 void BC_FX_ByteString_Append(CFX_ByteString& dst, const CFX_ByteArray& ba);
20 
21 #if (_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_)
22 #include <limits>
23 #elif(_FX_OS_ == _FX_MACOSX_ || _FX_OS_ == _FX_LINUX_DESKTOP_ || \
24       _FX_OS_ == _FX_IOS_)
25 #include <limits.h>
26 #endif
27 #if (_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_)
28 #define FXSYS_isnan(x) _isnan(x)
29 #elif(_FX_OS_ == _FX_MACOSX_ || _FX_OS_ == _FX_IOS_ || \
30       _FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_ANDROID_)
31 #include <cmath>
32 #define FXSYS_isnan(x) std::isnan(x)
33 #endif
34 #if (_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_)
35 #define FXSYS_nan() (std::numeric_limits<float>::quiet_NaN())
36 #elif(_FX_OS_ == _FX_MACOSX_ || _FX_OS_ == _FX_LINUX_DESKTOP_ || \
37       _FX_OS_ == _FX_IOS_ || _FX_OS_ == _FX_ANDROID_)
38 #define FXSYS_nan() NAN
39 #endif
40 enum BCFORMAT {
41   BCFORMAT_UNSPECIFY = -1,
42   BCFORMAT_CODABAR,
43   BCFORMAT_CODE_39,
44   BCFORMAT_CODE_128,
45   BCFORMAT_CODE_128B,
46   BCFORMAT_CODE_128C,
47   BCFORMAT_EAN_8,
48   BCFORMAT_UPC_A,
49   BCFORMAT_EAN_13,
50   BCFORMAT_PDF_417,
51   BCFORMAT_DATAMATRIX,
52   BCFORMAT_QR_CODE
53 };
54 #define BCFORMAT_ECLEVEL_L 0
55 #define BCFORMAT_ECLEVEL_M 1
56 #define BCFORMAT_ECLEVEL_Q 2
57 #define BCFORMAT_ECLEVEL_H 3
58 #include <ctype.h>
59 #define FXSYS_IntMax INT_MAX
60 #define FXSYS_Isdigit isdigit
61 #define BCExceptionNO 0
62 #define BCExceptionNotFound 1
63 #define BCExceptionEndLessThanStart 2
64 #define BCExceptionUnknownDecoder 3
65 #define BCExceptionRotateNotSupported 4
66 #define BCExceptionHeightAndWidthMustBeAtLeast1 5
67 #define BCExceptionRegionMustFitInsideMatrix 6
68 #define BCExceptionCanNotCallGetDimensionOnNonSquareMatrix 7
69 #define BCExceptionFormatException 8
70 #define BCExceptionIllegalArgumentMustMatchVersionSize 9
71 #define BCExceptionChecksumException 10
72 #define BCExceptionIllegalArgumentInvalidFirstDigit 11
73 #define BCExceptionIllegalArgumentInvalidSecondDigit 12
74 #define BCExceptionRuntimeDecodingInvalidISO_IEC 13
75 #define BCExceptionRuntimeDecodingInvalidAlphanumeric 14
76 #define BCExceptionLeftAndTopMustBeNonnegative 15
77 #define BCExceptionIllegalArgument 16
78 #define BCExceptionBadECI 17
79 #define BCExceptionUnSupportedBarcode 18
80 #define BCExceptionUnSupportedString 19
81 #define BCExceptionDigitLengthMustBe8 20
82 #define BCExceptionDataCheckException 21
83 #define BCExceptionExtractNumberValueFromBitArray 22
84 #define BCExceptionRead 23
85 #define BCExceptionRequestedRowIsOutSizeTheImage 24
86 #define BCExceptionNoContents 26
87 #define BCExceptionUnSupportEclevel 27
88 #define BCExceptionUnSupportMode 28
89 #define BCExceptionReferenceMustBeBetween0And7 29
90 #define BCExceptionBadErrorLocation 30
91 #define BCExceptionDegreeIsNegative 31
92 #define BCExceptionDivideByZero 32
93 #define BCExceptionCoefficientsSizeIsNull 33
94 #define BCExceptionNoCorrectionBytes 34
95 #define BCExceptionNoDataBytesProvided 35
96 #define BCExceptionR_I_1IsZero 36
97 #define BCExceptionAIsZero 37
98 #define BCExceptionIsZero 38
99 #define BCExceptionDegreeNotMatchRoots 39
100 #define BCExceptionContentsLengthShouldBetween1and80 40
101 #define BCExceptionOnlyEncodeCODE_128 41
102 #define BCExceptionOnlyEncodeCODE_39 42
103 #define BCExceptionOnlyEncodeEAN_13 43
104 #define BCExceptionOnlyEncodeEAN_8 44
105 #define BCExceptionOnlyEncodeITF 45
106 #define BCExceptionDigitLengthShould13 46
107 #define BCExceptionDigitLengthMustBe6or8or10or12or14or16or20or24or44 47
108 #define BCExceptionOnlyEncodeUPC_A 48
109 #define BCExceptionDigitLengthShouldBe12 49
110 #define BCExceptionValueMustBeEither0or1 50
111 #define BCExceptionReedsolomnDecodeException 51
112 #define BCExceptionBadIndexException 52
113 #define BCExceptionBadValueException 53
114 #define BCExceptionBadNumBitsException 54
115 #define BCExceptioncanNotOperatexorOperator 55
116 #define BCExceptionVersionMust1_40 56
117 #define BCExceptionUnknown 57
118 #define BCExceptionNoSuchVersion 58
119 #define BCExceptionCannotFindBlockInfo 59
120 #define BCExceptionDataTooBig 60
121 #define BCExceptionInvalidQRCode 61
122 #define BCExceptionDataTooMany 62
123 #define BCExceptionBitsNotEqualCacity 63
124 #define BCExceptionUnsupportedMode 64
125 #define BCExceptionInvalidateCharacter 65
126 #define BCExceptionBytesNotMatchOffset 66
127 #define BCExceptionSizeInBytesDiffer 67
128 #define BCExceptionInvalidateMaskPattern 68
129 #define BCExceptionNullPointer 69
130 #define BCExceptionBadMask 70
131 #define BCExceptionBitSizeNot15 71
132 #define BCExceptionBitSizeNot18 72
133 #define BCExceptionInvalidateImageData 73
134 #define BCExceptionHeight_8BeZero 74
135 #define BCExceptionCharacterNotThisMode 75
136 #define BCExceptionBitsBytesNotMatch 76
137 #define BCExceptionInvalidateData 77
138 #define BCExceptionLoadFile 78
139 #define BCExceptionPDF417EncodeFail 79
140 #define BCExceptionFailToCreateBitmap 80
141 #define BCExceptionLoadFontFail 81
142 #define BCExceptionOnlyEncodeCODEBAR 82
143 #define BCExceptionCodabarShouldStartWithOneOfABCD 83
144 #define BCExceptionCodabarShouldEndWithOneOfTNE 84
145 #define BCExceptionCodabarEncodeCharsInvalid 85
146 #define BCExceptionOnlyEncodeDATAMATRIX 86
147 #define BCExceptionCharactersOutsideISO88591Encoding 87
148 #define BCExceptionIllegalDataCodewords 88
149 #define BCExceptionCannotHandleThisNumberOfDataRegions 89
150 #define BCExceptionIllegalStateUnexpectedCase 90
151 #define BCExceptionIllegalStateCountMustNotExceed4 91
152 #define BCExceptionIllegalStateMessageLengthInvalid 92
153 #define BCExceptionIllegalArgumentNotGigits 93
154 #define BCExceptionIllegalStateIllegalMode 94
155 #define BCExceptionOnlyEncodePDF417 95
156 #define BCExceptionNonEncodableCharacterDetected 96
157 #define BCExceptionErrorCorrectionLevelMustBeBetween0And8 97
158 #define BCExceptionNoRecommendationPossible 98
159 #define BCExceptionIllegalArgumentnMustBeAbove0 99
160 #define BCExceptionUnableToFitMessageInColumns 100
161 #define BCExceptionEncodedMessageContainsTooManyCodeWords 101
162 #define BCExceptionBitmapSizeError 102
163 #define BCExceptionFormatInstance 102
164 #define BCExceptionChecksumInstance 103
165 #define BCExceptiontNotFoundInstance 104
166 #define BCExceptionNotFoundInstance 105
167 #define BCExceptionCannotMetadata 106
168 #define TWO_DIGIT_DATA_LENGTH_SIZE 24
169 #define THREE_DIGIT_DATA_LENGTH_SIZE 23
170 #define THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH_SIZE 57
171 #define FOUR_DIGIT_DATA_LENGTH_SIZE 17
172 #define BC_EXCEPTION_CHECK_ReturnVoid(e) \
173   if (e != BCExceptionNO)                \
174     return;
175 #define BC_EXCEPTION_CHECK_ReturnValue(e, v) \
176   if (e != BCExceptionNO)                    \
177     return v;
178 
179 #endif  // XFA_FXBARCODE_UTILS_H_
180