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

Side by Side Diff: core/src/fxcodec/jbig2/JBig2_TrdProc.cpp

Issue 1359013003: Cleanup JBig2_ArithIntDecoder. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: fix cast Created 5 years, 2 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/jbig2/JBig2_SddProc.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 PDFium Authors. All rights reserved. 1 // Copyright 2015 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 #include "JBig2_TrdProc.h" 7 #include "JBig2_TrdProc.h"
8 8
9 #include "../../../../third_party/base/nonstd_unique_ptr.h" 9 #include "../../../../third_party/base/nonstd_unique_ptr.h"
10 #include "JBig2_ArithDecoder.h" 10 #include "JBig2_ArithDecoder.h"
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 } 214 }
215 215
216 CJBig2_Image* CJBig2_TRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, 216 CJBig2_Image* CJBig2_TRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder,
217 JBig2ArithCtx* grContext, 217 JBig2ArithCtx* grContext,
218 JBig2IntDecoderState* pIDS) { 218 JBig2IntDecoderState* pIDS) {
219 int32_t STRIPT, FIRSTS; 219 int32_t STRIPT, FIRSTS;
220 FX_DWORD NINSTANCES; 220 FX_DWORD NINSTANCES;
221 int32_t DT, DFS, CURS; 221 int32_t DT, DFS, CURS;
222 int32_t CURT; 222 int32_t CURT;
223 int32_t SI, TI; 223 int32_t SI, TI;
224 FX_DWORD IDI;
225 CJBig2_Image* IBI; 224 CJBig2_Image* IBI;
226 FX_DWORD WI, HI; 225 FX_DWORD WI, HI;
227 int32_t IDS; 226 int32_t IDS;
228 int RI; 227 int RI;
229 int32_t RDWI, RDHI, RDXI, RDYI; 228 int32_t RDWI, RDHI, RDXI, RDYI;
230 CJBig2_Image* IBOI; 229 CJBig2_Image* IBOI;
231 FX_DWORD WOI, HOI; 230 FX_DWORD WOI, HOI;
232 FX_BOOL bFirst; 231 FX_BOOL bFirst;
233 int32_t nRet, nVal; 232 int32_t nRet, nVal;
234 int32_t bRetained; 233 int32_t bRetained;
(...skipping 20 matching lines...) Expand all
255 IARI = new CJBig2_ArithIntDecoder(); 254 IARI = new CJBig2_ArithIntDecoder();
256 IARDW = new CJBig2_ArithIntDecoder(); 255 IARDW = new CJBig2_ArithIntDecoder();
257 IARDH = new CJBig2_ArithIntDecoder(); 256 IARDH = new CJBig2_ArithIntDecoder();
258 IARDX = new CJBig2_ArithIntDecoder(); 257 IARDX = new CJBig2_ArithIntDecoder();
259 IARDY = new CJBig2_ArithIntDecoder(); 258 IARDY = new CJBig2_ArithIntDecoder();
260 IAID = new CJBig2_ArithIaidDecoder(SBSYMCODELEN); 259 IAID = new CJBig2_ArithIaidDecoder(SBSYMCODELEN);
261 bRetained = FALSE; 260 bRetained = FALSE;
262 } 261 }
263 nonstd::unique_ptr<CJBig2_Image> SBREG(new CJBig2_Image(SBW, SBH)); 262 nonstd::unique_ptr<CJBig2_Image> SBREG(new CJBig2_Image(SBW, SBH));
264 SBREG->fill(SBDEFPIXEL); 263 SBREG->fill(SBDEFPIXEL);
265 if (IADT->decode(pArithDecoder, &STRIPT) == -1) { 264 if (!IADT->decode(pArithDecoder, &STRIPT)) {
266 goto failed; 265 goto failed;
267 } 266 }
268 STRIPT *= SBSTRIPS; 267 STRIPT *= SBSTRIPS;
269 STRIPT = -STRIPT; 268 STRIPT = -STRIPT;
270 FIRSTS = 0; 269 FIRSTS = 0;
271 NINSTANCES = 0; 270 NINSTANCES = 0;
272 while (NINSTANCES < SBNUMINSTANCES) { 271 while (NINSTANCES < SBNUMINSTANCES) {
273 if (IADT->decode(pArithDecoder, &DT) == -1) { 272 if (!IADT->decode(pArithDecoder, &DT)) {
274 goto failed; 273 goto failed;
275 } 274 }
276 DT *= SBSTRIPS; 275 DT *= SBSTRIPS;
277 STRIPT = STRIPT + DT; 276 STRIPT = STRIPT + DT;
278 bFirst = TRUE; 277 bFirst = TRUE;
279 for (;;) { 278 for (;;) {
280 if (bFirst) { 279 if (bFirst) {
281 if (IAFS->decode(pArithDecoder, &DFS) == -1) { 280 if (!IAFS->decode(pArithDecoder, &DFS)) {
282 goto failed; 281 goto failed;
283 } 282 }
284 FIRSTS = FIRSTS + DFS; 283 FIRSTS = FIRSTS + DFS;
285 CURS = FIRSTS; 284 CURS = FIRSTS;
286 bFirst = FALSE; 285 bFirst = FALSE;
287 } else { 286 } else {
288 nRet = IADS->decode(pArithDecoder, &IDS); 287 nRet = IADS->decode(pArithDecoder, &IDS);
289 if (nRet == JBIG2_OOB) { 288 if (nRet == JBIG2_OOB) {
290 break; 289 break;
291 } else if (nRet != 0) { 290 } else if (nRet != 0) {
292 goto failed; 291 goto failed;
293 } else { 292 } else {
294 CURS = CURS + IDS + SBDSOFFSET; 293 CURS = CURS + IDS + SBDSOFFSET;
295 } 294 }
296 } 295 }
297 if (NINSTANCES >= SBNUMINSTANCES) { 296 if (NINSTANCES >= SBNUMINSTANCES) {
298 break; 297 break;
299 } 298 }
300 if (SBSTRIPS == 1) { 299 if (SBSTRIPS == 1) {
301 CURT = 0; 300 CURT = 0;
302 } else { 301 } else {
303 if (IAIT->decode(pArithDecoder, &nVal) == -1) { 302 if (!IAIT->decode(pArithDecoder, &nVal)) {
Tom Sepez 2015/09/30 20:09:50 Same thing here. Can we get rid of the nVal tempo
Lei Zhang 2015/10/01 06:01:59 Done.
304 goto failed; 303 goto failed;
305 } 304 }
306 CURT = nVal; 305 CURT = nVal;
307 } 306 }
308 TI = STRIPT + CURT; 307 TI = STRIPT + CURT;
309 if (IAID->decode(pArithDecoder, &nVal) == -1) { 308 FX_DWORD IDI;
310 goto failed; 309 IAID->decode(pArithDecoder, &IDI);
311 }
312 IDI = nVal;
313 if (IDI >= SBNUMSYMS) { 310 if (IDI >= SBNUMSYMS) {
314 goto failed; 311 goto failed;
315 } 312 }
316 if (SBREFINE == 0) { 313 if (SBREFINE == 0) {
317 RI = 0; 314 RI = 0;
318 } else { 315 } else {
319 if (IARI->decode(pArithDecoder, &RI) == -1) { 316 if (!IARI->decode(pArithDecoder, &RI)) {
320 goto failed; 317 goto failed;
321 } 318 }
322 } 319 }
323 if (!SBSYMS[IDI]) { 320 if (!SBSYMS[IDI]) {
324 goto failed; 321 goto failed;
325 } 322 }
326 if (RI == 0) { 323 if (RI == 0) {
327 IBI = SBSYMS[IDI]; 324 IBI = SBSYMS[IDI];
328 } else { 325 } else {
329 if ((IARDW->decode(pArithDecoder, &RDWI) == -1) || 326 if (!IARDW->decode(pArithDecoder, &RDWI) ||
330 (IARDH->decode(pArithDecoder, &RDHI) == -1) || 327 !IARDH->decode(pArithDecoder, &RDHI) ||
331 (IARDX->decode(pArithDecoder, &RDXI) == -1) || 328 !IARDX->decode(pArithDecoder, &RDXI) ||
332 (IARDY->decode(pArithDecoder, &RDYI) == -1)) { 329 !IARDY->decode(pArithDecoder, &RDYI)) {
333 goto failed; 330 goto failed;
334 } 331 }
335 IBOI = SBSYMS[IDI]; 332 IBOI = SBSYMS[IDI];
336 WOI = IBOI->m_nWidth; 333 WOI = IBOI->m_nWidth;
337 HOI = IBOI->m_nHeight; 334 HOI = IBOI->m_nHeight;
338 if ((int)(WOI + RDWI) < 0 || (int)(HOI + RDHI) < 0) { 335 if ((int)(WOI + RDWI) < 0 || (int)(HOI + RDHI) < 0) {
339 goto failed; 336 goto failed;
340 } 337 }
341 nonstd::unique_ptr<CJBig2_GRRDProc> pGRRD(new CJBig2_GRRDProc()); 338 nonstd::unique_ptr<CJBig2_GRRDProc> pGRRD(new CJBig2_GRRDProc());
342 pGRRD->GRW = WOI + RDWI; 339 pGRRD->GRW = WOI + RDWI;
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 delete IAIT; 426 delete IAIT;
430 delete IARI; 427 delete IARI;
431 delete IARDW; 428 delete IARDW;
432 delete IARDH; 429 delete IARDH;
433 delete IARDX; 430 delete IARDX;
434 delete IARDY; 431 delete IARDY;
435 delete IAID; 432 delete IAID;
436 } 433 }
437 return nullptr; 434 return nullptr;
438 } 435 }
OLDNEW
« no previous file with comments | « core/src/fxcodec/jbig2/JBig2_SddProc.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698