diff options
author | Albert Astals Cid <aacid@kde.org> | 2020-11-15 12:37:03 +0100 |
---|---|---|
committer | Albert Astals Cid <tsdgeos@yahoo.es> | 2020-11-15 11:37:46 +0000 |
commit | 95a4ee50304666f299890daa41fdb40ac8e38384 (patch) | |
tree | 922d816ed9b36b8eb703983ed37b4f7ace009fe7 | |
parent | 0986483fbd49b7bdf5f2e45bb03a7ebe6d3b8e65 (diff) |
Remove #if that was confusing clang-format
Code looks better now
-rw-r--r-- | poppler/JBIG2Stream.cc | 257 |
1 files changed, 129 insertions, 128 deletions
diff --git a/poppler/JBIG2Stream.cc b/poppler/JBIG2Stream.cc index 3014c9e1..62d7ada8 100644 --- a/poppler/JBIG2Stream.cc +++ b/poppler/JBIG2Stream.cc @@ -1705,167 +1705,168 @@ bool JBIG2Stream::readSymbolDictSeg(unsigned int segNum, unsigned int length, un break; } } -#if 0 //~ This special case was added about a year before the final draft - //~ of the JBIG2 spec was released. I have encountered some old - //~ JBIG2 images that predate it. - if (0) { -#else + //~ This special case was added about a year before the final draft + //~ of the JBIG2 spec was released. I have encountered some old + //~ JBIG2 images that predate it. + //~ if (0) { if (refAggNum == 1) { -#endif - if (huff) { - symID = huffDecoder->readBits(symCodeLen); - huffDecoder->decodeInt(&refDX, huffTableO); - huffDecoder->decodeInt(&refDY, huffTableO); - huffDecoder->decodeInt(&bmSize, huffTableA); - huffDecoder->reset(); - arithDecoder->start(); - } else { - if (iaidStats == nullptr) { + if (huff) { + symID = huffDecoder->readBits(symCodeLen); + huffDecoder->decodeInt(&refDX, huffTableO); + huffDecoder->decodeInt(&refDY, huffTableO); + huffDecoder->decodeInt(&bmSize, huffTableA); + huffDecoder->reset(); + arithDecoder->start(); + } else { + if (iaidStats == nullptr) { + goto syntaxError; + } + symID = arithDecoder->decodeIAID(symCodeLen, iaidStats); + arithDecoder->decodeInt(&refDX, iardxStats); + arithDecoder->decodeInt(&refDY, iardyStats); + } + if (symID >= numInputSyms + i) { + error(errSyntaxError, curStr->getPos(), "Invalid symbol ID in JBIG2 symbol dictionary"); + goto syntaxError; + } + refBitmap = bitmaps[symID]; + if (unlikely(refBitmap == nullptr)) { + error(errSyntaxError, curStr->getPos(), "Invalid ref bitmap for symbol ID {0:ud} in JBIG2 symbol dictionary", symID); goto syntaxError; } - symID = arithDecoder->decodeIAID(symCodeLen, iaidStats); - arithDecoder->decodeInt(&refDX, iardxStats); - arithDecoder->decodeInt(&refDY, iardyStats); + bitmaps[numInputSyms + i] = readGenericRefinementRegion(symWidth, symHeight, sdrTemplate, false, refBitmap, refDX, refDY, sdrATX, sdrATY); + //~ do we need to use the bmSize value here (in Huffman mode)? + } else { + bitmaps[numInputSyms + i] = readTextRegion(huff, true, symWidth, symHeight, refAggNum, 0, numInputSyms + i, nullptr, symCodeLen, bitmaps, 0, 0, 0, 1, 0, huffTableF, huffTableH, huffTableK, huffTableO, huffTableO, + huffTableO, huffTableO, huffTableA, sdrTemplate, sdrATX, sdrATY); } - if (symID >= numInputSyms + i) { - error(errSyntaxError, curStr->getPos(), "Invalid symbol ID in JBIG2 symbol dictionary"); + + // non-ref/agg coding + } else { + bitmaps[numInputSyms + i] = readGenericBitmap(false, symWidth, symHeight, sdTemplate, false, false, nullptr, sdATX, sdATY, 0); + } + + ++i; + } + + // read the collective bitmap + if (huff && !refAgg) { + huffDecoder->decodeInt(&bmSize, huffBMSizeTable); + huffDecoder->reset(); + if (bmSize == 0) { + collBitmap = new JBIG2Bitmap(0, totalWidth, symHeight); + bmSize = symHeight * ((totalWidth + 7) >> 3); + p = collBitmap->getDataPtr(); + if (unlikely(p == nullptr)) { + delete collBitmap; goto syntaxError; } - refBitmap = bitmaps[symID]; - if (unlikely(refBitmap == nullptr)) { - error(errSyntaxError, curStr->getPos(), "Invalid ref bitmap for symbol ID {0:ud} in JBIG2 symbol dictionary", symID); - goto syntaxError; + for (k = 0; k < (unsigned int)bmSize; ++k) { + if ((c = curStr->getChar()) == EOF) { + memset(p, 0, bmSize - k); + break; + } + *p++ = (unsigned char)c; } - bitmaps[numInputSyms + i] = readGenericRefinementRegion(symWidth, symHeight, sdrTemplate, false, refBitmap, refDX, refDY, sdrATX, sdrATY); - //~ do we need to use the bmSize value here (in Huffman mode)? } else { - bitmaps[numInputSyms + i] = readTextRegion(huff, true, symWidth, symHeight, refAggNum, 0, numInputSyms + i, nullptr, symCodeLen, bitmaps, 0, 0, 0, 1, 0, huffTableF, huffTableH, huffTableK, huffTableO, huffTableO, huffTableO, - huffTableO, huffTableA, sdrTemplate, sdrATX, sdrATY); + collBitmap = readGenericBitmap(true, totalWidth, symHeight, 0, false, false, nullptr, nullptr, nullptr, bmSize); + } + if (likely(collBitmap != nullptr)) { + x = 0; + for (; j < i; ++j) { + bitmaps[numInputSyms + j] = collBitmap->getSlice(x, 0, symWidths[j], symHeight); + x += symWidths[j]; + } + delete collBitmap; + } else { + error(errSyntaxError, curStr->getPos(), "collBitmap was null"); + goto syntaxError; } - - // non-ref/agg coding } - else { bitmaps[numInputSyms + i] = readGenericBitmap(false, symWidth, symHeight, sdTemplate, false, false, nullptr, sdATX, sdATY, 0); } + } - ++i; + // create the symbol dict object + symbolDict = new JBIG2SymbolDict(segNum, numExSyms); + if (!symbolDict->isOk()) { + delete symbolDict; + goto syntaxError; } - // read the collective bitmap - if (huff && !refAgg) { - huffDecoder->decodeInt(&bmSize, huffBMSizeTable); - huffDecoder->reset(); - if (bmSize == 0) { - collBitmap = new JBIG2Bitmap(0, totalWidth, symHeight); - bmSize = symHeight * ((totalWidth + 7) >> 3); - p = collBitmap->getDataPtr(); - if (unlikely(p == nullptr)) { - delete collBitmap; - goto syntaxError; - } - for (k = 0; k < (unsigned int)bmSize; ++k) { - if ((c = curStr->getChar()) == EOF) { - memset(p, 0, bmSize - k); - break; - } - *p++ = (unsigned char)c; - } + // exported symbol list + i = j = 0; + ex = false; + run = 0; // initialize it once in case the first decodeInt fails + // we do not want to use uninitialized memory + while (i < numInputSyms + numNewSyms) { + if (huff) { + huffDecoder->decodeInt(&run, huffTableA); } else { - collBitmap = readGenericBitmap(true, totalWidth, symHeight, 0, false, false, nullptr, nullptr, nullptr, bmSize); + arithDecoder->decodeInt(&run, iaexStats); + } + if (i + run > numInputSyms + numNewSyms || (ex && j + run > numExSyms)) { + error(errSyntaxError, curStr->getPos(), "Too many exported symbols in JBIG2 symbol dictionary"); + for (; j < numExSyms; ++j) + symbolDict->setBitmap(j, nullptr); + delete symbolDict; + goto syntaxError; } - if (likely(collBitmap != nullptr)) { - x = 0; - for (; j < i; ++j) { - bitmaps[numInputSyms + j] = collBitmap->getSlice(x, 0, symWidths[j], symHeight); - x += symWidths[j]; + if (ex) { + for (cnt = 0; cnt < run; ++cnt) { + symbolDict->setBitmap(j++, new JBIG2Bitmap(bitmaps[i++])); } - delete collBitmap; } else { - error(errSyntaxError, curStr->getPos(), "collBitmap was null"); - goto syntaxError; + i += run; } + ex = !ex; } -} - -// create the symbol dict object -symbolDict = new JBIG2SymbolDict(segNum, numExSyms); -if (!symbolDict->isOk()) { - delete symbolDict; - goto syntaxError; -} - -// exported symbol list -i = j = 0; -ex = false; -run = 0; // initialize it once in case the first decodeInt fails - // we do not want to use uninitialized memory -while (i < numInputSyms + numNewSyms) { - if (huff) { - huffDecoder->decodeInt(&run, huffTableA); - } else { - arithDecoder->decodeInt(&run, iaexStats); - } - if (i + run > numInputSyms + numNewSyms || (ex && j + run > numExSyms)) { - error(errSyntaxError, curStr->getPos(), "Too many exported symbols in JBIG2 symbol dictionary"); + if (j != numExSyms) { + error(errSyntaxError, curStr->getPos(), "Too few symbols in JBIG2 symbol dictionary"); for (; j < numExSyms; ++j) symbolDict->setBitmap(j, nullptr); delete symbolDict; goto syntaxError; } - if (ex) { - for (cnt = 0; cnt < run; ++cnt) { - symbolDict->setBitmap(j++, new JBIG2Bitmap(bitmaps[i++])); - } - } else { - i += run; - } - ex = !ex; -} -if (j != numExSyms) { - error(errSyntaxError, curStr->getPos(), "Too few symbols in JBIG2 symbol dictionary"); - for (; j < numExSyms; ++j) - symbolDict->setBitmap(j, nullptr); - delete symbolDict; - goto syntaxError; -} -for (i = 0; i < numNewSyms; ++i) { - delete bitmaps[numInputSyms + i]; -} -gfree(bitmaps); -if (symWidths) { - gfree(symWidths); -} + for (i = 0; i < numNewSyms; ++i) { + delete bitmaps[numInputSyms + i]; + } + gfree(bitmaps); + if (symWidths) { + gfree(symWidths); + } -// save the arithmetic decoder stats -if (!huff && contextRetained) { - symbolDict->setGenericRegionStats(genericRegionStats->copy()); - if (refAgg) { - symbolDict->setRefinementRegionStats(refinementRegionStats->copy()); + // save the arithmetic decoder stats + if (!huff && contextRetained) { + symbolDict->setGenericRegionStats(genericRegionStats->copy()); + if (refAgg) { + symbolDict->setRefinementRegionStats(refinementRegionStats->copy()); + } } -} -// store the new symbol dict -segments->push_back(symbolDict); + // store the new symbol dict + segments->push_back(symbolDict); -return true; + return true; -codeTableError : error(errSyntaxError, curStr->getPos(), "Missing code table in JBIG2 symbol dictionary"); -delete codeTables; +codeTableError: + error(errSyntaxError, curStr->getPos(), "Missing code table in JBIG2 symbol dictionary"); + delete codeTables; -syntaxError : for (i = 0; i < numNewSyms; ++i) -{ - if (bitmaps[numInputSyms + i]) { - delete bitmaps[numInputSyms + i]; +syntaxError: + for (i = 0; i < numNewSyms; ++i) { + if (bitmaps[numInputSyms + i]) { + delete bitmaps[numInputSyms + i]; + } } -} -gfree(bitmaps); -if (symWidths) { - gfree(symWidths); -} -return false; + gfree(bitmaps); + if (symWidths) { + gfree(symWidths); + } + return false; -eofError : error(errSyntaxError, curStr->getPos(), "Unexpected EOF in JBIG2 stream"); -return false; +eofError: + error(errSyntaxError, curStr->getPos(), "Unexpected EOF in JBIG2 stream"); + return false; } void JBIG2Stream::readTextRegionSeg(unsigned int segNum, bool imm, bool lossless, unsigned int length, unsigned int *refSegs, unsigned int nRefSegs) |