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

Side by Side Diff: core/fxcodec/jbig2/JBig2_Context.cpp

Issue 2032613003: Get rid of NULLs in core/ (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: s/NULL/nullptr/ Created 4 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
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 #include "core/fxcodec/jbig2/JBig2_Context.h" 7 #include "core/fxcodec/jbig2/JBig2_Context.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <list> 10 #include <list>
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 CPDF_StreamAcc* pSrcStream, 62 CPDF_StreamAcc* pSrcStream,
63 std::list<CJBig2_CachePair>* pSymbolDictCache, 63 std::list<CJBig2_CachePair>* pSymbolDictCache,
64 IFX_Pause* pPause, 64 IFX_Pause* pPause,
65 bool bIsGlobal) 65 bool bIsGlobal)
66 : m_nSegmentDecoded(0), 66 : m_nSegmentDecoded(0),
67 m_bInPage(false), 67 m_bInPage(false),
68 m_bBufSpecified(false), 68 m_bBufSpecified(false),
69 m_PauseStep(10), 69 m_PauseStep(10),
70 m_pPause(pPause), 70 m_pPause(pPause),
71 m_ProcessingStatus(FXCODEC_STATUS_FRAME_READY), 71 m_ProcessingStatus(FXCODEC_STATUS_FRAME_READY),
72 m_gbContext(NULL), 72 m_gbContext(nullptr),
73 m_dwOffset(0), 73 m_dwOffset(0),
74 m_pSymbolDictCache(pSymbolDictCache), 74 m_pSymbolDictCache(pSymbolDictCache),
75 m_bIsGlobal(bIsGlobal) { 75 m_bIsGlobal(bIsGlobal) {
76 if (pGlobalStream && (pGlobalStream->GetSize() > 0)) { 76 if (pGlobalStream && (pGlobalStream->GetSize() > 0)) {
77 m_pGlobalContext = new CJBig2_Context(nullptr, pGlobalStream, 77 m_pGlobalContext = new CJBig2_Context(nullptr, pGlobalStream,
78 pSymbolDictCache, pPause, true); 78 pSymbolDictCache, pPause, true);
79 } else { 79 } else {
80 m_pGlobalContext = nullptr; 80 m_pGlobalContext = nullptr;
81 } 81 }
82 82
83 m_pStream.reset(new CJBig2_BitStream(pSrcStream)); 83 m_pStream.reset(new CJBig2_BitStream(pSrcStream));
84 } 84 }
85 85
86 CJBig2_Context::~CJBig2_Context() { 86 CJBig2_Context::~CJBig2_Context() {
87 FX_Free(m_gbContext); 87 FX_Free(m_gbContext);
88 m_gbContext = NULL; 88 m_gbContext = nullptr;
89 delete m_pGlobalContext; 89 delete m_pGlobalContext;
90 m_pGlobalContext = NULL; 90 m_pGlobalContext = nullptr;
91 } 91 }
92 92
93 int32_t CJBig2_Context::decode_SquentialOrgnazation(IFX_Pause* pPause) { 93 int32_t CJBig2_Context::decode_SquentialOrgnazation(IFX_Pause* pPause) {
94 int32_t nRet; 94 int32_t nRet;
95 if (m_pStream->getByteLeft() <= 0) 95 if (m_pStream->getByteLeft() <= 0)
96 return JBIG2_END_OF_FILE; 96 return JBIG2_END_OF_FILE;
97 97
98 while (m_pStream->getByteLeft() >= JBIG2_MIN_SEGMENT_SIZE) { 98 while (m_pStream->getByteLeft() >= JBIG2_MIN_SEGMENT_SIZE) {
99 if (!m_pSegment) { 99 if (!m_pSegment) {
100 m_pSegment.reset(new CJBig2_Segment); 100 m_pSegment.reset(new CJBig2_Segment);
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 int32_t count = 0; 252 int32_t count = 0;
253 for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { 253 for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) {
254 CJBig2_Segment* pSeg = 254 CJBig2_Segment* pSeg =
255 findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i]); 255 findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i]);
256 if (pSeg && pSeg->m_cFlags.s.type == cType) { 256 if (pSeg && pSeg->m_cFlags.s.type == cType) {
257 if (count == nIndex) 257 if (count == nIndex)
258 return pSeg; 258 return pSeg;
259 ++count; 259 ++count;
260 } 260 }
261 } 261 }
262 return NULL; 262 return nullptr;
263 } 263 }
264 int32_t CJBig2_Context::parseSegmentHeader(CJBig2_Segment* pSegment) { 264 int32_t CJBig2_Context::parseSegmentHeader(CJBig2_Segment* pSegment) {
265 if (m_pStream->readInteger(&pSegment->m_dwNumber) != 0 || 265 if (m_pStream->readInteger(&pSegment->m_dwNumber) != 0 ||
266 m_pStream->read1Byte(&pSegment->m_cFlags.c) != 0) { 266 m_pStream->read1Byte(&pSegment->m_cFlags.c) != 0) {
267 return JBIG2_ERROR_TOO_SHORT; 267 return JBIG2_ERROR_TOO_SHORT;
268 } 268 }
269 269
270 uint32_t dwTemp; 270 uint32_t dwTemp;
271 uint8_t cTemp = m_pStream->getCurByte(); 271 uint8_t cTemp = m_pStream->getCurByte();
272 if ((cTemp >> 5) == 7) { 272 if ((cTemp >> 5) == 7) {
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i]); 730 findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i]);
731 if (pSeg->m_cFlags.s.type == 0) { 731 if (pSeg->m_cFlags.s.type == 0) {
732 const CJBig2_SymbolDict& dict = *pSeg->m_Result.sd; 732 const CJBig2_SymbolDict& dict = *pSeg->m_Result.sd;
733 for (size_t j = 0; j < dict.NumImages(); ++j) 733 for (size_t j = 0; j < dict.NumImages(); ++j)
734 SBSYMS.get()[dwTemp + j] = dict.GetImage(j); 734 SBSYMS.get()[dwTemp + j] = dict.GetImage(j);
735 dwTemp += dict.NumImages(); 735 dwTemp += dict.NumImages();
736 } 736 }
737 } 737 }
738 pTRD->SBSYMS = SBSYMS.get(); 738 pTRD->SBSYMS = SBSYMS.get();
739 } else { 739 } else {
740 pTRD->SBSYMS = NULL; 740 pTRD->SBSYMS = nullptr;
741 } 741 }
742 742
743 std::unique_ptr<JBig2HuffmanCode, FxFreeDeleter> SBSYMCODES; 743 std::unique_ptr<JBig2HuffmanCode, FxFreeDeleter> SBSYMCODES;
744 if (pTRD->SBHUFF == 1) { 744 if (pTRD->SBHUFF == 1) {
745 SBSYMCODES.reset( 745 SBSYMCODES.reset(
746 decodeSymbolIDHuffmanTable(m_pStream.get(), pTRD->SBNUMSYMS)); 746 decodeSymbolIDHuffmanTable(m_pStream.get(), pTRD->SBNUMSYMS));
747 if (!SBSYMCODES) 747 if (!SBSYMCODES)
748 return JBIG2_ERROR_FATAL; 748 return JBIG2_ERROR_FATAL;
749 749
750 m_pStream->alignByte(); 750 m_pStream->alignByte();
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
939 if (!m_bBufSpecified) { 939 if (!m_bBufSpecified) {
940 JBig2PageInfo* pPageInfo = m_PageInfoList.back(); 940 JBig2PageInfo* pPageInfo = m_PageInfoList.back();
941 if ((pPageInfo->m_bIsStriped == 1) && 941 if ((pPageInfo->m_bIsStriped == 1) &&
942 (ri.y + ri.height > m_pPage->m_nHeight)) { 942 (ri.y + ri.height > m_pPage->m_nHeight)) {
943 m_pPage->expand(ri.y + ri.height, (pPageInfo->m_cFlags & 4) ? 1 : 0); 943 m_pPage->expand(ri.y + ri.height, (pPageInfo->m_cFlags & 4) ? 1 : 0);
944 } 944 }
945 } 945 }
946 m_pPage->composeFrom(ri.x, ri.y, pSegment->m_Result.im, 946 m_pPage->composeFrom(ri.x, ri.y, pSegment->m_Result.im,
947 (JBig2ComposeOp)(ri.flags & 0x03)); 947 (JBig2ComposeOp)(ri.flags & 0x03));
948 delete pSegment->m_Result.im; 948 delete pSegment->m_Result.im;
949 pSegment->m_Result.im = NULL; 949 pSegment->m_Result.im = nullptr;
950 } 950 }
951 return JBIG2_SUCCESS; 951 return JBIG2_SUCCESS;
952 } 952 }
953 953
954 int32_t CJBig2_Context::parsePatternDict(CJBig2_Segment* pSegment, 954 int32_t CJBig2_Context::parsePatternDict(CJBig2_Segment* pSegment,
955 IFX_Pause* pPause) { 955 IFX_Pause* pPause) {
956 uint8_t cFlags; 956 uint8_t cFlags;
957 std::unique_ptr<CJBig2_PDDProc> pPDD(new CJBig2_PDDProc); 957 std::unique_ptr<CJBig2_PDDProc> pPDD(new CJBig2_PDDProc);
958 if (m_pStream->read1Byte(&cFlags) != 0 || 958 if (m_pStream->read1Byte(&cFlags) != 0 ||
959 m_pStream->read1Byte(&pPDD->HDPW) != 0 || 959 m_pStream->read1Byte(&pPDD->HDPW) != 0 ||
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
1057 if (!m_bBufSpecified) { 1057 if (!m_bBufSpecified) {
1058 JBig2PageInfo* pPageInfo = m_PageInfoList.back(); 1058 JBig2PageInfo* pPageInfo = m_PageInfoList.back();
1059 if (pPageInfo->m_bIsStriped == 1 && 1059 if (pPageInfo->m_bIsStriped == 1 &&
1060 ri.y + ri.height > m_pPage->m_nHeight) { 1060 ri.y + ri.height > m_pPage->m_nHeight) {
1061 m_pPage->expand(ri.y + ri.height, (pPageInfo->m_cFlags & 4) ? 1 : 0); 1061 m_pPage->expand(ri.y + ri.height, (pPageInfo->m_cFlags & 4) ? 1 : 0);
1062 } 1062 }
1063 } 1063 }
1064 m_pPage->composeFrom(ri.x, ri.y, pSegment->m_Result.im, 1064 m_pPage->composeFrom(ri.x, ri.y, pSegment->m_Result.im,
1065 (JBig2ComposeOp)(ri.flags & 0x03)); 1065 (JBig2ComposeOp)(ri.flags & 0x03));
1066 delete pSegment->m_Result.im; 1066 delete pSegment->m_Result.im;
1067 pSegment->m_Result.im = NULL; 1067 pSegment->m_Result.im = nullptr;
1068 } 1068 }
1069 return JBIG2_SUCCESS; 1069 return JBIG2_SUCCESS;
1070 } 1070 }
1071 1071
1072 int32_t CJBig2_Context::parseGenericRegion(CJBig2_Segment* pSegment, 1072 int32_t CJBig2_Context::parseGenericRegion(CJBig2_Segment* pSegment,
1073 IFX_Pause* pPause) { 1073 IFX_Pause* pPause) {
1074 if (!m_pGRD) { 1074 if (!m_pGRD) {
1075 std::unique_ptr<CJBig2_GRDProc> pGRD(new CJBig2_GRDProc); 1075 std::unique_ptr<CJBig2_GRDProc> pGRD(new CJBig2_GRDProc);
1076 uint8_t cFlags; 1076 uint8_t cFlags;
1077 if (parseRegionInfo(&m_ri) != JBIG2_SUCCESS || 1077 if (parseRegionInfo(&m_ri) != JBIG2_SUCCESS ||
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1130 } 1130 }
1131 FX_RECT Rect = m_pGRD->GetReplaceRect(); 1131 FX_RECT Rect = m_pGRD->GetReplaceRect();
1132 m_pPage->composeFrom(m_ri.x + Rect.left, m_ri.y + Rect.top, 1132 m_pPage->composeFrom(m_ri.x + Rect.left, m_ri.y + Rect.top,
1133 pSegment->m_Result.im, 1133 pSegment->m_Result.im,
1134 (JBig2ComposeOp)(m_ri.flags & 0x03), &Rect); 1134 (JBig2ComposeOp)(m_ri.flags & 0x03), &Rect);
1135 } 1135 }
1136 return JBIG2_SUCCESS; 1136 return JBIG2_SUCCESS;
1137 } else { 1137 } else {
1138 m_pArithDecoder.reset(); 1138 m_pArithDecoder.reset();
1139 FX_Free(m_gbContext); 1139 FX_Free(m_gbContext);
1140 m_gbContext = NULL; 1140 m_gbContext = nullptr;
1141 if (!pSegment->m_Result.im) { 1141 if (!pSegment->m_Result.im) {
1142 m_ProcessingStatus = FXCODEC_STATUS_ERROR; 1142 m_ProcessingStatus = FXCODEC_STATUS_ERROR;
1143 m_pGRD.reset(); 1143 m_pGRD.reset();
1144 return JBIG2_ERROR_FATAL; 1144 return JBIG2_ERROR_FATAL;
1145 } 1145 }
1146 m_pStream->alignByte(); 1146 m_pStream->alignByte();
1147 m_pStream->offset(2); 1147 m_pStream->offset(2);
1148 } 1148 }
1149 } else { 1149 } else {
1150 m_pGRD->Start_decode_MMR(&pSegment->m_Result.im, m_pStream.get(), pPause); 1150 m_pGRD->Start_decode_MMR(&pSegment->m_Result.im, m_pStream.get(), pPause);
(...skipping 10 matching lines...) Expand all
1161 (m_ri.y + m_ri.height > m_pPage->m_nHeight)) { 1161 (m_ri.y + m_ri.height > m_pPage->m_nHeight)) {
1162 m_pPage->expand(m_ri.y + m_ri.height, 1162 m_pPage->expand(m_ri.y + m_ri.height,
1163 (pPageInfo->m_cFlags & 4) ? 1 : 0); 1163 (pPageInfo->m_cFlags & 4) ? 1 : 0);
1164 } 1164 }
1165 } 1165 }
1166 FX_RECT Rect = m_pGRD->GetReplaceRect(); 1166 FX_RECT Rect = m_pGRD->GetReplaceRect();
1167 m_pPage->composeFrom(m_ri.x + Rect.left, m_ri.y + Rect.top, 1167 m_pPage->composeFrom(m_ri.x + Rect.left, m_ri.y + Rect.top,
1168 pSegment->m_Result.im, 1168 pSegment->m_Result.im,
1169 (JBig2ComposeOp)(m_ri.flags & 0x03), &Rect); 1169 (JBig2ComposeOp)(m_ri.flags & 0x03), &Rect);
1170 delete pSegment->m_Result.im; 1170 delete pSegment->m_Result.im;
1171 pSegment->m_Result.im = NULL; 1171 pSegment->m_Result.im = nullptr;
1172 } 1172 }
1173 m_pGRD.reset(); 1173 m_pGRD.reset();
1174 return JBIG2_SUCCESS; 1174 return JBIG2_SUCCESS;
1175 } 1175 }
1176 1176
1177 int32_t CJBig2_Context::parseGenericRefinementRegion(CJBig2_Segment* pSegment) { 1177 int32_t CJBig2_Context::parseGenericRefinementRegion(CJBig2_Segment* pSegment) {
1178 JBig2RegionInfo ri; 1178 JBig2RegionInfo ri;
1179 uint8_t cFlags; 1179 uint8_t cFlags;
1180 if (parseRegionInfo(&ri) != JBIG2_SUCCESS || 1180 if (parseRegionInfo(&ri) != JBIG2_SUCCESS ||
1181 m_pStream->read1Byte(&cFlags) != 0) { 1181 m_pStream->read1Byte(&cFlags) != 0) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1231 if (!m_bBufSpecified) { 1231 if (!m_bBufSpecified) {
1232 JBig2PageInfo* pPageInfo = m_PageInfoList.back(); 1232 JBig2PageInfo* pPageInfo = m_PageInfoList.back();
1233 if ((pPageInfo->m_bIsStriped == 1) && 1233 if ((pPageInfo->m_bIsStriped == 1) &&
1234 (ri.y + ri.height > m_pPage->m_nHeight)) { 1234 (ri.y + ri.height > m_pPage->m_nHeight)) {
1235 m_pPage->expand(ri.y + ri.height, (pPageInfo->m_cFlags & 4) ? 1 : 0); 1235 m_pPage->expand(ri.y + ri.height, (pPageInfo->m_cFlags & 4) ? 1 : 0);
1236 } 1236 }
1237 } 1237 }
1238 m_pPage->composeFrom(ri.x, ri.y, pSegment->m_Result.im, 1238 m_pPage->composeFrom(ri.x, ri.y, pSegment->m_Result.im,
1239 (JBig2ComposeOp)(ri.flags & 0x03)); 1239 (JBig2ComposeOp)(ri.flags & 0x03));
1240 delete pSegment->m_Result.im; 1240 delete pSegment->m_Result.im;
1241 pSegment->m_Result.im = NULL; 1241 pSegment->m_Result.im = nullptr;
1242 } 1242 }
1243 return JBIG2_SUCCESS; 1243 return JBIG2_SUCCESS;
1244 } 1244 }
1245 1245
1246 int32_t CJBig2_Context::parseTable(CJBig2_Segment* pSegment) { 1246 int32_t CJBig2_Context::parseTable(CJBig2_Segment* pSegment) {
1247 pSegment->m_nResultType = JBIG2_HUFFMAN_TABLE_POINTER; 1247 pSegment->m_nResultType = JBIG2_HUFFMAN_TABLE_POINTER;
1248 pSegment->m_Result.ht = nullptr; 1248 pSegment->m_Result.ht = nullptr;
1249 std::unique_ptr<CJBig2_HuffmanTable> pHuff( 1249 std::unique_ptr<CJBig2_HuffmanTable> pHuff(
1250 new CJBig2_HuffmanTable(m_pStream.get())); 1250 new CJBig2_HuffmanTable(m_pStream.get()));
1251 if (!pHuff->IsOK()) 1251 if (!pHuff->IsOK())
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1402 SBSYMCODES[CURTEMP].code = CURCODE; 1402 SBSYMCODES[CURTEMP].code = CURCODE;
1403 CURCODE = CURCODE + 1; 1403 CURCODE = CURCODE + 1;
1404 } 1404 }
1405 CURTEMP = CURTEMP + 1; 1405 CURTEMP = CURTEMP + 1;
1406 } 1406 }
1407 CURLEN = CURLEN + 1; 1407 CURLEN = CURLEN + 1;
1408 } 1408 }
1409 FX_Free(LENCOUNT); 1409 FX_Free(LENCOUNT);
1410 FX_Free(FIRSTCODE); 1410 FX_Free(FIRSTCODE);
1411 } 1411 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698