Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(556)

Side by Side Diff: core/src/fxcodec/jbig2/JBig2_BitStream.h

Issue 1172793002: Merge to XFA: Use stdint.h types throughout PDFium. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/src/fxcodec/fx_tiff/tiff_v403/tiffconf.h ('k') | core/src/fxcodec/jbig2/JBig2_Context.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #ifndef _JBIG2_BIT_STREAM_H_ 7 #ifndef _JBIG2_BIT_STREAM_H_
8 #define _JBIG2_BIT_STREAM_H_ 8 #define _JBIG2_BIT_STREAM_H_
9 #include "JBig2_Define.h" 9 #include "JBig2_Define.h"
10 class CJBig2_BitStream : public CJBig2_Object 10 class CJBig2_BitStream : public CJBig2_Object
11 { 11 {
12 public: 12 public:
13 13
14 CJBig2_BitStream(FX_BYTE *pBuffer, FX_DWORD dwLength); 14 CJBig2_BitStream(uint8_t *pBuffer, FX_DWORD dwLength);
15 15
16 CJBig2_BitStream(CJBig2_BitStream &bs); 16 CJBig2_BitStream(CJBig2_BitStream &bs);
17 17
18 ~CJBig2_BitStream(); 18 ~CJBig2_BitStream();
19 19
20 FX_INT32 readNBits(FX_DWORD nBits, FX_DWORD *dwResult); 20 int32_t readNBits(FX_DWORD nBits, FX_DWORD *dwResult);
21 21
22 FX_INT32 readNBits(FX_DWORD nBits, FX_INT32 *nResult); 22 int32_t readNBits(FX_DWORD nBits, int32_t *nResult);
23 23
24 FX_INT32 read1Bit(FX_DWORD *dwResult); 24 int32_t read1Bit(FX_DWORD *dwResult);
25 25
26 FX_INT32 read1Bit(FX_BOOL *bResult); 26 int32_t read1Bit(FX_BOOL *bResult);
27 27
28 FX_INT32 read1Byte(FX_BYTE *cResult); 28 int32_t read1Byte(uint8_t *cResult);
29 29
30 FX_INT32 readInteger(FX_DWORD *dwResult); 30 int32_t readInteger(FX_DWORD *dwResult);
31 31
32 FX_INT32 readShortInteger(FX_WORD *wResult); 32 int32_t readShortInteger(FX_WORD *wResult);
33 33
34 void alignByte(); 34 void alignByte();
35 35
36 void align4Byte(); 36 void align4Byte();
37 37
38 FX_BYTE getAt(FX_DWORD dwOffset); 38 uint8_t getAt(FX_DWORD dwOffset);
39 39
40 FX_BYTE getCurByte(); 40 uint8_t getCurByte();
41 41
42 FX_BYTE getNextByte(); 42 uint8_t getNextByte();
43 43
44 FX_INT32 incByteIdx(); 44 int32_t incByteIdx();
45 45
46 FX_BYTE getCurByte_arith(); 46 uint8_t getCurByte_arith();
47 47
48 FX_BYTE getNextByte_arith(); 48 uint8_t getNextByte_arith();
49 49
50 FX_DWORD getOffset(); 50 FX_DWORD getOffset();
51 51
52 void setOffset(FX_DWORD dwOffset); 52 void setOffset(FX_DWORD dwOffset);
53 53
54 FX_DWORD getBitPos(); 54 FX_DWORD getBitPos();
55 55
56 void setBitPos(FX_DWORD dwBitPos); 56 void setBitPos(FX_DWORD dwBitPos);
57 57
58 FX_BYTE *getBuf(); 58 uint8_t *getBuf();
59 59
60 FX_DWORD getLength() 60 FX_DWORD getLength()
61 { 61 {
62 return m_dwLength; 62 return m_dwLength;
63 } 63 }
64 64
65 FX_BYTE *getPointer(); 65 uint8_t *getPointer();
66 66
67 void offset(FX_DWORD dwOffset); 67 void offset(FX_DWORD dwOffset);
68 68
69 FX_DWORD getByteLeft(); 69 FX_DWORD getByteLeft();
70 private: 70 private:
71 71
72 FX_BYTE *m_pBuf; 72 uint8_t *m_pBuf;
73 73
74 FX_DWORD m_dwLength; 74 FX_DWORD m_dwLength;
75 75
76 FX_DWORD m_dwByteIdx; 76 FX_DWORD m_dwByteIdx;
77 77
78 FX_DWORD m_dwBitIdx; 78 FX_DWORD m_dwBitIdx;
79 }; 79 };
80 inline CJBig2_BitStream::CJBig2_BitStream(FX_BYTE *pBuffer, FX_DWORD dwLength) 80 inline CJBig2_BitStream::CJBig2_BitStream(uint8_t *pBuffer, FX_DWORD dwLength)
81 { 81 {
82 m_pBuf = pBuffer; 82 m_pBuf = pBuffer;
83 m_dwLength = dwLength; 83 m_dwLength = dwLength;
84 m_dwByteIdx = 0; 84 m_dwByteIdx = 0;
85 m_dwBitIdx = 0; 85 m_dwBitIdx = 0;
86 if (m_dwLength > 256 * 1024 * 1024) { 86 if (m_dwLength > 256 * 1024 * 1024) {
87 m_dwLength = 0; 87 m_dwLength = 0;
88 m_pBuf = NULL; 88 m_pBuf = NULL;
89 } 89 }
90 } 90 }
91 inline CJBig2_BitStream::CJBig2_BitStream(CJBig2_BitStream &bs) 91 inline CJBig2_BitStream::CJBig2_BitStream(CJBig2_BitStream &bs)
92 { 92 {
93 m_pBuf = bs.m_pBuf; 93 m_pBuf = bs.m_pBuf;
94 m_dwLength = bs.m_dwLength; 94 m_dwLength = bs.m_dwLength;
95 m_dwByteIdx = bs.m_dwByteIdx; 95 m_dwByteIdx = bs.m_dwByteIdx;
96 m_dwBitIdx = bs.m_dwBitIdx; 96 m_dwBitIdx = bs.m_dwBitIdx;
97 } 97 }
98 inline CJBig2_BitStream::~CJBig2_BitStream() 98 inline CJBig2_BitStream::~CJBig2_BitStream()
99 { 99 {
100 } 100 }
101 inline FX_INT32 CJBig2_BitStream::readNBits(FX_DWORD dwBits, FX_DWORD *dwResult) 101 inline int32_t CJBig2_BitStream::readNBits(FX_DWORD dwBits, FX_DWORD *dwResult)
102 { 102 {
103 FX_DWORD dwTemp = (m_dwByteIdx << 3) + m_dwBitIdx; 103 FX_DWORD dwTemp = (m_dwByteIdx << 3) + m_dwBitIdx;
104 if(dwTemp <= (m_dwLength << 3)) { 104 if(dwTemp <= (m_dwLength << 3)) {
105 *dwResult = 0; 105 *dwResult = 0;
106 if(dwTemp + dwBits <= (m_dwLength << 3)) { 106 if(dwTemp + dwBits <= (m_dwLength << 3)) {
107 dwTemp = dwBits; 107 dwTemp = dwBits;
108 } else { 108 } else {
109 dwTemp = (m_dwLength << 3) - dwTemp; 109 dwTemp = (m_dwLength << 3) - dwTemp;
110 } 110 }
111 while(dwTemp > 0) { 111 while(dwTemp > 0) {
112 *dwResult = (*dwResult << 1) | ((m_pBuf[m_dwByteIdx] >> (7 - m_dwBit Idx)) & 0x01); 112 *dwResult = (*dwResult << 1) | ((m_pBuf[m_dwByteIdx] >> (7 - m_dwBit Idx)) & 0x01);
113 if(m_dwBitIdx == 7) { 113 if(m_dwBitIdx == 7) {
114 m_dwByteIdx ++; 114 m_dwByteIdx ++;
115 m_dwBitIdx = 0; 115 m_dwBitIdx = 0;
116 } else { 116 } else {
117 m_dwBitIdx ++; 117 m_dwBitIdx ++;
118 } 118 }
119 dwTemp --; 119 dwTemp --;
120 } 120 }
121 return 0; 121 return 0;
122 } else { 122 } else {
123 return -1; 123 return -1;
124 } 124 }
125 } 125 }
126 inline FX_INT32 CJBig2_BitStream::readNBits(FX_DWORD dwBits, FX_INT32 *nResult) 126 inline int32_t CJBig2_BitStream::readNBits(FX_DWORD dwBits, int32_t *nResult)
127 { 127 {
128 FX_DWORD dwTemp = (m_dwByteIdx << 3) + m_dwBitIdx; 128 FX_DWORD dwTemp = (m_dwByteIdx << 3) + m_dwBitIdx;
129 if(dwTemp <= (m_dwLength << 3)) { 129 if(dwTemp <= (m_dwLength << 3)) {
130 *nResult = 0; 130 *nResult = 0;
131 if(dwTemp + dwBits <= (m_dwLength << 3)) { 131 if(dwTemp + dwBits <= (m_dwLength << 3)) {
132 dwTemp = dwBits; 132 dwTemp = dwBits;
133 } else { 133 } else {
134 dwTemp = (m_dwLength << 3) - dwTemp; 134 dwTemp = (m_dwLength << 3) - dwTemp;
135 } 135 }
136 while(dwTemp > 0) { 136 while(dwTemp > 0) {
137 *nResult = (*nResult << 1) | ((m_pBuf[m_dwByteIdx] >> (7 - m_dwBitId x)) & 0x01); 137 *nResult = (*nResult << 1) | ((m_pBuf[m_dwByteIdx] >> (7 - m_dwBitId x)) & 0x01);
138 if(m_dwBitIdx == 7) { 138 if(m_dwBitIdx == 7) {
139 m_dwByteIdx ++; 139 m_dwByteIdx ++;
140 m_dwBitIdx = 0; 140 m_dwBitIdx = 0;
141 } else { 141 } else {
142 m_dwBitIdx ++; 142 m_dwBitIdx ++;
143 } 143 }
144 dwTemp --; 144 dwTemp --;
145 } 145 }
146 return 0; 146 return 0;
147 } else { 147 } else {
148 return -1; 148 return -1;
149 } 149 }
150 } 150 }
151 151
152 inline FX_INT32 CJBig2_BitStream::read1Bit(FX_DWORD *dwResult) 152 inline int32_t CJBig2_BitStream::read1Bit(FX_DWORD *dwResult)
153 { 153 {
154 if(m_dwByteIdx < m_dwLength) { 154 if(m_dwByteIdx < m_dwLength) {
155 *dwResult = (m_pBuf[m_dwByteIdx] >> (7 - m_dwBitIdx)) & 0x01; 155 *dwResult = (m_pBuf[m_dwByteIdx] >> (7 - m_dwBitIdx)) & 0x01;
156 if(m_dwBitIdx == 7) { 156 if(m_dwBitIdx == 7) {
157 m_dwByteIdx ++; 157 m_dwByteIdx ++;
158 m_dwBitIdx = 0; 158 m_dwBitIdx = 0;
159 } else { 159 } else {
160 m_dwBitIdx ++; 160 m_dwBitIdx ++;
161 } 161 }
162 return 0; 162 return 0;
163 } else { 163 } else {
164 return -1; 164 return -1;
165 } 165 }
166 } 166 }
167 167
168 inline FX_INT32 CJBig2_BitStream::read1Bit(FX_BOOL *bResult) 168 inline int32_t CJBig2_BitStream::read1Bit(FX_BOOL *bResult)
169 { 169 {
170 if(m_dwByteIdx < m_dwLength) { 170 if(m_dwByteIdx < m_dwLength) {
171 *bResult = (m_pBuf[m_dwByteIdx] >> (7 - m_dwBitIdx)) & 0x01; 171 *bResult = (m_pBuf[m_dwByteIdx] >> (7 - m_dwBitIdx)) & 0x01;
172 if(m_dwBitIdx == 7) { 172 if(m_dwBitIdx == 7) {
173 m_dwByteIdx ++; 173 m_dwByteIdx ++;
174 m_dwBitIdx = 0; 174 m_dwBitIdx = 0;
175 } else { 175 } else {
176 m_dwBitIdx ++; 176 m_dwBitIdx ++;
177 } 177 }
178 return 0; 178 return 0;
179 } else { 179 } else {
180 return -1; 180 return -1;
181 } 181 }
182 } 182 }
183 inline FX_INT32 CJBig2_BitStream::read1Byte(FX_BYTE *cResult) 183 inline int32_t CJBig2_BitStream::read1Byte(uint8_t *cResult)
184 { 184 {
185 if(m_dwByteIdx < m_dwLength) { 185 if(m_dwByteIdx < m_dwLength) {
186 *cResult = m_pBuf[m_dwByteIdx]; 186 *cResult = m_pBuf[m_dwByteIdx];
187 m_dwByteIdx ++; 187 m_dwByteIdx ++;
188 return 0; 188 return 0;
189 } else { 189 } else {
190 return -1; 190 return -1;
191 } 191 }
192 } 192 }
193 193
194 inline FX_INT32 CJBig2_BitStream::readInteger(FX_DWORD *dwResult) 194 inline int32_t CJBig2_BitStream::readInteger(FX_DWORD *dwResult)
195 { 195 {
196 if(m_dwByteIdx + 3 < m_dwLength) { 196 if(m_dwByteIdx + 3 < m_dwLength) {
197 *dwResult = (m_pBuf[m_dwByteIdx] << 24) | (m_pBuf[m_dwByteIdx + 1] << 16 ) 197 *dwResult = (m_pBuf[m_dwByteIdx] << 24) | (m_pBuf[m_dwByteIdx + 1] << 16 )
198 | (m_pBuf[m_dwByteIdx + 2] << 8) | m_pBuf[m_dwByteIdx + 3]; 198 | (m_pBuf[m_dwByteIdx + 2] << 8) | m_pBuf[m_dwByteIdx + 3];
199 m_dwByteIdx += 4; 199 m_dwByteIdx += 4;
200 return 0; 200 return 0;
201 } else { 201 } else {
202 return -1; 202 return -1;
203 } 203 }
204 } 204 }
205 205
206 inline FX_INT32 CJBig2_BitStream::readShortInteger(FX_WORD *dwResult) 206 inline int32_t CJBig2_BitStream::readShortInteger(FX_WORD *dwResult)
207 { 207 {
208 if(m_dwByteIdx + 1 < m_dwLength) { 208 if(m_dwByteIdx + 1 < m_dwLength) {
209 *dwResult = (m_pBuf[m_dwByteIdx] << 8) | m_pBuf[m_dwByteIdx + 1]; 209 *dwResult = (m_pBuf[m_dwByteIdx] << 8) | m_pBuf[m_dwByteIdx + 1];
210 m_dwByteIdx += 2; 210 m_dwByteIdx += 2;
211 return 0; 211 return 0;
212 } else { 212 } else {
213 return -1; 213 return -1;
214 } 214 }
215 } 215 }
216 inline void CJBig2_BitStream::alignByte() 216 inline void CJBig2_BitStream::alignByte()
217 { 217 {
218 if(m_dwBitIdx != 0) { 218 if(m_dwBitIdx != 0) {
219 m_dwByteIdx ++; 219 m_dwByteIdx ++;
220 m_dwBitIdx = 0; 220 m_dwBitIdx = 0;
221 } 221 }
222 } 222 }
223 inline void CJBig2_BitStream::align4Byte() 223 inline void CJBig2_BitStream::align4Byte()
224 { 224 {
225 if(m_dwBitIdx != 0) { 225 if(m_dwBitIdx != 0) {
226 m_dwByteIdx ++; 226 m_dwByteIdx ++;
227 m_dwBitIdx = 0; 227 m_dwBitIdx = 0;
228 } 228 }
229 m_dwByteIdx = (m_dwByteIdx + 3) & -4; 229 m_dwByteIdx = (m_dwByteIdx + 3) & -4;
230 } 230 }
231 inline FX_BYTE CJBig2_BitStream::getAt(FX_DWORD dwOffset) 231 inline uint8_t CJBig2_BitStream::getAt(FX_DWORD dwOffset)
232 { 232 {
233 if(dwOffset < m_dwLength) { 233 if(dwOffset < m_dwLength) {
234 return m_pBuf[dwOffset]; 234 return m_pBuf[dwOffset];
235 } else { 235 } else {
236 return 0; 236 return 0;
237 } 237 }
238 } 238 }
239 inline FX_BYTE CJBig2_BitStream::getCurByte() 239 inline uint8_t CJBig2_BitStream::getCurByte()
240 { 240 {
241 if(m_dwByteIdx < m_dwLength) { 241 if(m_dwByteIdx < m_dwLength) {
242 return m_pBuf[m_dwByteIdx]; 242 return m_pBuf[m_dwByteIdx];
243 } else { 243 } else {
244 return 0; 244 return 0;
245 } 245 }
246 } 246 }
247 inline FX_BYTE CJBig2_BitStream::getNextByte() 247 inline uint8_t CJBig2_BitStream::getNextByte()
248 { 248 {
249 if(m_dwByteIdx + 1 < m_dwLength) { 249 if(m_dwByteIdx + 1 < m_dwLength) {
250 return m_pBuf[m_dwByteIdx + 1]; 250 return m_pBuf[m_dwByteIdx + 1];
251 } else { 251 } else {
252 return 0; 252 return 0;
253 } 253 }
254 } 254 }
255 inline FX_INT32 CJBig2_BitStream::incByteIdx() 255 inline int32_t CJBig2_BitStream::incByteIdx()
256 { 256 {
257 if(m_dwByteIdx < m_dwLength) { 257 if(m_dwByteIdx < m_dwLength) {
258 m_dwByteIdx ++; 258 m_dwByteIdx ++;
259 return 0; 259 return 0;
260 } else { 260 } else {
261 return -1; 261 return -1;
262 } 262 }
263 } 263 }
264 inline FX_BYTE CJBig2_BitStream::getCurByte_arith() 264 inline uint8_t CJBig2_BitStream::getCurByte_arith()
265 { 265 {
266 if(m_dwByteIdx < m_dwLength) { 266 if(m_dwByteIdx < m_dwLength) {
267 return m_pBuf[m_dwByteIdx]; 267 return m_pBuf[m_dwByteIdx];
268 } else { 268 } else {
269 return 0xff; 269 return 0xff;
270 } 270 }
271 } 271 }
272 inline FX_BYTE CJBig2_BitStream::getNextByte_arith() 272 inline uint8_t CJBig2_BitStream::getNextByte_arith()
273 { 273 {
274 if(m_dwByteIdx + 1 < m_dwLength) { 274 if(m_dwByteIdx + 1 < m_dwLength) {
275 return m_pBuf[m_dwByteIdx + 1]; 275 return m_pBuf[m_dwByteIdx + 1];
276 } else { 276 } else {
277 return 0xff; 277 return 0xff;
278 } 278 }
279 } 279 }
280 inline FX_DWORD CJBig2_BitStream::getOffset() 280 inline FX_DWORD CJBig2_BitStream::getOffset()
281 { 281 {
282 return m_dwByteIdx; 282 return m_dwByteIdx;
283 } 283 }
284 inline void CJBig2_BitStream::setOffset(FX_DWORD dwOffset) 284 inline void CJBig2_BitStream::setOffset(FX_DWORD dwOffset)
285 { 285 {
286 if (dwOffset > m_dwLength) { 286 if (dwOffset > m_dwLength) {
287 dwOffset = m_dwLength; 287 dwOffset = m_dwLength;
288 } 288 }
289 m_dwByteIdx = dwOffset; 289 m_dwByteIdx = dwOffset;
290 } 290 }
291 inline FX_DWORD CJBig2_BitStream::getBitPos() 291 inline FX_DWORD CJBig2_BitStream::getBitPos()
292 { 292 {
293 return (m_dwByteIdx << 3) + m_dwBitIdx; 293 return (m_dwByteIdx << 3) + m_dwBitIdx;
294 } 294 }
295 inline void CJBig2_BitStream::setBitPos(FX_DWORD dwBitPos) 295 inline void CJBig2_BitStream::setBitPos(FX_DWORD dwBitPos)
296 { 296 {
297 m_dwByteIdx = dwBitPos >> 3; 297 m_dwByteIdx = dwBitPos >> 3;
298 m_dwBitIdx = dwBitPos & 7; 298 m_dwBitIdx = dwBitPos & 7;
299 } 299 }
300 inline FX_BYTE *CJBig2_BitStream::getBuf() 300 inline uint8_t *CJBig2_BitStream::getBuf()
301 { 301 {
302 return m_pBuf; 302 return m_pBuf;
303 } 303 }
304 inline FX_BYTE *CJBig2_BitStream::getPointer() 304 inline uint8_t *CJBig2_BitStream::getPointer()
305 { 305 {
306 return m_pBuf + m_dwByteIdx; 306 return m_pBuf + m_dwByteIdx;
307 } 307 }
308 inline void CJBig2_BitStream::offset(FX_DWORD dwOffset) 308 inline void CJBig2_BitStream::offset(FX_DWORD dwOffset)
309 { 309 {
310 m_dwByteIdx += dwOffset; 310 m_dwByteIdx += dwOffset;
311 } 311 }
312 inline FX_DWORD CJBig2_BitStream::getByteLeft() 312 inline FX_DWORD CJBig2_BitStream::getByteLeft()
313 { 313 {
314 return m_dwLength - m_dwByteIdx; 314 return m_dwLength - m_dwByteIdx;
315 } 315 }
316 #endif 316 #endif
OLDNEW
« no previous file with comments | « core/src/fxcodec/fx_tiff/tiff_v403/tiffconf.h ('k') | core/src/fxcodec/jbig2/JBig2_Context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698