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

Side by Side Diff: core/fpdfapi/fpdf_parser/cpdf_data_avail.cpp

Issue 1832173003: Remove FX_DWORD from core/ and delete definition (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 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 2016 PDFium Authors. All rights reserved. 1 // Copyright 2016 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/fpdfapi/fpdf_parser/include/ipdf_data_avail.h" 7 #include "core/fpdfapi/fpdf_parser/include/ipdf_data_avail.h"
8 8
9 #include "core/fpdfapi/fpdf_parser/cpdf_data_avail.h" 9 #include "core/fpdfapi/fpdf_parser/cpdf_data_avail.h"
10 #include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h" 10 #include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h"
(...skipping 28 matching lines...) Expand all
39 // static 39 // static
40 int CPDF_DataAvail::s_CurrentDataAvailRecursionDepth = 0; 40 int CPDF_DataAvail::s_CurrentDataAvailRecursionDepth = 0;
41 41
42 CPDF_DataAvail::CPDF_DataAvail(IPDF_DataAvail::FileAvail* pFileAvail, 42 CPDF_DataAvail::CPDF_DataAvail(IPDF_DataAvail::FileAvail* pFileAvail,
43 IFX_FileRead* pFileRead, 43 IFX_FileRead* pFileRead,
44 FX_BOOL bSupportHintTable) 44 FX_BOOL bSupportHintTable)
45 : IPDF_DataAvail(pFileAvail, pFileRead) { 45 : IPDF_DataAvail(pFileAvail, pFileRead) {
46 m_Pos = 0; 46 m_Pos = 0;
47 m_dwFileLen = 0; 47 m_dwFileLen = 0;
48 if (m_pFileRead) { 48 if (m_pFileRead) {
49 m_dwFileLen = (FX_DWORD)m_pFileRead->GetSize(); 49 m_dwFileLen = (uint32_t)m_pFileRead->GetSize();
50 } 50 }
51 m_dwCurrentOffset = 0; 51 m_dwCurrentOffset = 0;
52 m_dwXRefOffset = 0; 52 m_dwXRefOffset = 0;
53 m_bufferOffset = 0; 53 m_bufferOffset = 0;
54 m_dwFirstPageNo = 0; 54 m_dwFirstPageNo = 0;
55 m_bufferSize = 0; 55 m_bufferSize = 0;
56 m_PagesObjNum = 0; 56 m_PagesObjNum = 0;
57 m_dwCurrentXRefSteam = 0; 57 m_dwCurrentXRefSteam = 0;
58 m_dwAcroFormObjNum = 0; 58 m_dwAcroFormObjNum = 0;
59 m_dwInfoObjNum = 0; 59 m_dwInfoObjNum = 0;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 100
101 int iSize = m_arrayAcroforms.GetSize(); 101 int iSize = m_arrayAcroforms.GetSize();
102 for (int i = 0; i < iSize; ++i) 102 for (int i = 0; i < iSize; ++i)
103 m_arrayAcroforms.GetAt(i)->Release(); 103 m_arrayAcroforms.GetAt(i)->Release();
104 } 104 }
105 105
106 void CPDF_DataAvail::SetDocument(CPDF_Document* pDoc) { 106 void CPDF_DataAvail::SetDocument(CPDF_Document* pDoc) {
107 m_pDocument = pDoc; 107 m_pDocument = pDoc;
108 } 108 }
109 109
110 FX_DWORD CPDF_DataAvail::GetObjectSize(FX_DWORD objnum, FX_FILESIZE& offset) { 110 uint32_t CPDF_DataAvail::GetObjectSize(uint32_t objnum, FX_FILESIZE& offset) {
111 CPDF_Parser* pParser = m_pDocument->GetParser(); 111 CPDF_Parser* pParser = m_pDocument->GetParser();
112 if (!pParser || !pParser->IsValidObjectNumber(objnum)) 112 if (!pParser || !pParser->IsValidObjectNumber(objnum))
113 return 0; 113 return 0;
114 114
115 if (pParser->GetObjectType(objnum) == 2) 115 if (pParser->GetObjectType(objnum) == 2)
116 objnum = pParser->GetObjectPositionOrZero(objnum); 116 objnum = pParser->GetObjectPositionOrZero(objnum);
117 117
118 if (pParser->GetObjectType(objnum) != 1 && 118 if (pParser->GetObjectType(objnum) != 1 &&
119 pParser->GetObjectType(objnum) != 255) { 119 pParser->GetObjectType(objnum) != 255) {
120 return 0; 120 return 0;
(...skipping 12 matching lines...) Expand all
133 } 133 }
134 134
135 FX_BOOL CPDF_DataAvail::IsObjectsAvail( 135 FX_BOOL CPDF_DataAvail::IsObjectsAvail(
136 CFX_ArrayTemplate<CPDF_Object*>& obj_array, 136 CFX_ArrayTemplate<CPDF_Object*>& obj_array,
137 FX_BOOL bParsePage, 137 FX_BOOL bParsePage,
138 IPDF_DataAvail::DownloadHints* pHints, 138 IPDF_DataAvail::DownloadHints* pHints,
139 CFX_ArrayTemplate<CPDF_Object*>& ret_array) { 139 CFX_ArrayTemplate<CPDF_Object*>& ret_array) {
140 if (!obj_array.GetSize()) 140 if (!obj_array.GetSize())
141 return TRUE; 141 return TRUE;
142 142
143 FX_DWORD count = 0; 143 uint32_t count = 0;
144 CFX_ArrayTemplate<CPDF_Object*> new_obj_array; 144 CFX_ArrayTemplate<CPDF_Object*> new_obj_array;
145 int32_t i = 0; 145 int32_t i = 0;
146 for (i = 0; i < obj_array.GetSize(); i++) { 146 for (i = 0; i < obj_array.GetSize(); i++) {
147 CPDF_Object* pObj = obj_array[i]; 147 CPDF_Object* pObj = obj_array[i];
148 if (!pObj) 148 if (!pObj)
149 continue; 149 continue;
150 150
151 int32_t type = pObj->GetType(); 151 int32_t type = pObj->GetType();
152 switch (type) { 152 switch (type) {
153 case CPDF_Object::ARRAY: { 153 case CPDF_Object::ARRAY: {
154 CPDF_Array* pArray = pObj->GetArray(); 154 CPDF_Array* pArray = pObj->GetArray();
155 for (FX_DWORD k = 0; k < pArray->GetCount(); ++k) 155 for (uint32_t k = 0; k < pArray->GetCount(); ++k)
156 new_obj_array.Add(pArray->GetElement(k)); 156 new_obj_array.Add(pArray->GetElement(k));
157 } break; 157 } break;
158 case CPDF_Object::STREAM: 158 case CPDF_Object::STREAM:
159 pObj = pObj->GetDict(); 159 pObj = pObj->GetDict();
160 case CPDF_Object::DICTIONARY: { 160 case CPDF_Object::DICTIONARY: {
161 CPDF_Dictionary* pDict = pObj->GetDict(); 161 CPDF_Dictionary* pDict = pObj->GetDict();
162 if (pDict && pDict->GetStringBy("Type") == "Page" && !bParsePage) 162 if (pDict && pDict->GetStringBy("Type") == "Page" && !bParsePage)
163 continue; 163 continue;
164 164
165 for (const auto& it : *pDict) { 165 for (const auto& it : *pDict) {
166 const CFX_ByteString& key = it.first; 166 const CFX_ByteString& key = it.first;
167 CPDF_Object* value = it.second; 167 CPDF_Object* value = it.second;
168 if (key != "Parent") 168 if (key != "Parent")
169 new_obj_array.Add(value); 169 new_obj_array.Add(value);
170 } 170 }
171 } break; 171 } break;
172 case CPDF_Object::REFERENCE: { 172 case CPDF_Object::REFERENCE: {
173 CPDF_Reference* pRef = pObj->AsReference(); 173 CPDF_Reference* pRef = pObj->AsReference();
174 FX_DWORD dwNum = pRef->GetRefObjNum(); 174 uint32_t dwNum = pRef->GetRefObjNum();
175 175
176 FX_FILESIZE offset; 176 FX_FILESIZE offset;
177 FX_DWORD size = GetObjectSize(dwNum, offset); 177 uint32_t size = GetObjectSize(dwNum, offset);
178 if (size == 0 || offset < 0 || offset >= m_dwFileLen) 178 if (size == 0 || offset < 0 || offset >= m_dwFileLen)
179 break; 179 break;
180 180
181 if (!IsDataAvail(offset, size, pHints)) { 181 if (!IsDataAvail(offset, size, pHints)) {
182 ret_array.Add(pObj); 182 ret_array.Add(pObj);
183 count++; 183 count++;
184 } else if (!pdfium::ContainsKey(m_ObjectSet, dwNum)) { 184 } else if (!pdfium::ContainsKey(m_ObjectSet, dwNum)) {
185 m_ObjectSet.insert(dwNum); 185 m_ObjectSet.insert(dwNum);
186 CPDF_Object* pReferred = 186 CPDF_Object* pReferred =
187 m_pDocument->GetIndirectObject(pRef->GetRefObjNum()); 187 m_pDocument->GetIndirectObject(pRef->GetRefObjNum());
188 if (pReferred) 188 if (pReferred)
189 new_obj_array.Add(pReferred); 189 new_obj_array.Add(pReferred);
190 } 190 }
191 } break; 191 } break;
192 } 192 }
193 } 193 }
194 194
195 if (count > 0) { 195 if (count > 0) {
196 int32_t iSize = new_obj_array.GetSize(); 196 int32_t iSize = new_obj_array.GetSize();
197 for (i = 0; i < iSize; ++i) { 197 for (i = 0; i < iSize; ++i) {
198 CPDF_Object* pObj = new_obj_array[i]; 198 CPDF_Object* pObj = new_obj_array[i];
199 if (CPDF_Reference* pRef = pObj->AsReference()) { 199 if (CPDF_Reference* pRef = pObj->AsReference()) {
200 FX_DWORD dwNum = pRef->GetRefObjNum(); 200 uint32_t dwNum = pRef->GetRefObjNum();
201 if (!pdfium::ContainsKey(m_ObjectSet, dwNum)) 201 if (!pdfium::ContainsKey(m_ObjectSet, dwNum))
202 ret_array.Add(pObj); 202 ret_array.Add(pObj);
203 } else { 203 } else {
204 ret_array.Add(pObj); 204 ret_array.Add(pObj);
205 } 205 }
206 } 206 }
207 return FALSE; 207 return FALSE;
208 } 208 }
209 209
210 obj_array.RemoveAll(); 210 obj_array.RemoveAll();
211 obj_array.Append(new_obj_array); 211 obj_array.Append(new_obj_array);
212 return IsObjectsAvail(obj_array, FALSE, pHints, ret_array); 212 return IsObjectsAvail(obj_array, FALSE, pHints, ret_array);
213 } 213 }
214 214
215 IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsDocAvail( 215 IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsDocAvail(
216 IPDF_DataAvail::DownloadHints* pHints) { 216 IPDF_DataAvail::DownloadHints* pHints) {
217 if (!m_dwFileLen && m_pFileRead) { 217 if (!m_dwFileLen && m_pFileRead) {
218 m_dwFileLen = (FX_DWORD)m_pFileRead->GetSize(); 218 m_dwFileLen = (uint32_t)m_pFileRead->GetSize();
219 if (!m_dwFileLen) 219 if (!m_dwFileLen)
220 return DataError; 220 return DataError;
221 } 221 }
222 222
223 while (!m_bDocAvail) { 223 while (!m_bDocAvail) {
224 if (!CheckDocStatus(pHints)) 224 if (!CheckDocStatus(pHints))
225 return DataNotAvailable; 225 return DataNotAvailable;
226 } 226 }
227 227
228 return DataAvailable; 228 return DataAvailable;
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 case PDF_DATAAVAIL_ERROR: 336 case PDF_DATAAVAIL_ERROR:
337 return LoadAllFile(pHints); 337 return LoadAllFile(pHints);
338 default: 338 default:
339 m_bPagesTreeLoad = TRUE; 339 m_bPagesTreeLoad = TRUE;
340 m_bPagesLoad = TRUE; 340 m_bPagesLoad = TRUE;
341 return TRUE; 341 return TRUE;
342 } 342 }
343 } 343 }
344 344
345 FX_BOOL CPDF_DataAvail::LoadAllFile(IPDF_DataAvail::DownloadHints* pHints) { 345 FX_BOOL CPDF_DataAvail::LoadAllFile(IPDF_DataAvail::DownloadHints* pHints) {
346 if (m_pFileAvail->IsDataAvail(0, (FX_DWORD)m_dwFileLen)) { 346 if (m_pFileAvail->IsDataAvail(0, (uint32_t)m_dwFileLen)) {
347 m_docStatus = PDF_DATAAVAIL_DONE; 347 m_docStatus = PDF_DATAAVAIL_DONE;
348 return TRUE; 348 return TRUE;
349 } 349 }
350 350
351 pHints->AddSegment(0, (FX_DWORD)m_dwFileLen); 351 pHints->AddSegment(0, (uint32_t)m_dwFileLen);
352 return FALSE; 352 return FALSE;
353 } 353 }
354 354
355 FX_BOOL CPDF_DataAvail::LoadAllXref(IPDF_DataAvail::DownloadHints* pHints) { 355 FX_BOOL CPDF_DataAvail::LoadAllXref(IPDF_DataAvail::DownloadHints* pHints) {
356 m_parser.m_pSyntax->InitParser(m_pFileRead, (FX_DWORD)m_dwHeaderOffset); 356 m_parser.m_pSyntax->InitParser(m_pFileRead, (uint32_t)m_dwHeaderOffset);
357 m_parser.m_bOwnFileRead = false; 357 m_parser.m_bOwnFileRead = false;
358 if (!m_parser.LoadAllCrossRefV4(m_dwLastXRefOffset) && 358 if (!m_parser.LoadAllCrossRefV4(m_dwLastXRefOffset) &&
359 !m_parser.LoadAllCrossRefV5(m_dwLastXRefOffset)) { 359 !m_parser.LoadAllCrossRefV5(m_dwLastXRefOffset)) {
360 m_docStatus = PDF_DATAAVAIL_LOADALLFILE; 360 m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
361 return FALSE; 361 return FALSE;
362 } 362 }
363 363
364 m_dwRootObjNum = m_parser.GetRootObjNum(); 364 m_dwRootObjNum = m_parser.GetRootObjNum();
365 m_dwInfoObjNum = m_parser.GetInfoObjNum(); 365 m_dwInfoObjNum = m_parser.GetInfoObjNum();
366 m_pCurrentParser = &m_parser; 366 m_pCurrentParser = &m_parser;
367 m_docStatus = PDF_DATAAVAIL_ROOT; 367 m_docStatus = PDF_DATAAVAIL_ROOT;
368 return TRUE; 368 return TRUE;
369 } 369 }
370 370
371 CPDF_Object* CPDF_DataAvail::GetObject(FX_DWORD objnum, 371 CPDF_Object* CPDF_DataAvail::GetObject(uint32_t objnum,
372 IPDF_DataAvail::DownloadHints* pHints, 372 IPDF_DataAvail::DownloadHints* pHints,
373 FX_BOOL* pExistInFile) { 373 FX_BOOL* pExistInFile) {
374 CPDF_Object* pRet = nullptr; 374 CPDF_Object* pRet = nullptr;
375 FX_DWORD size = 0; 375 uint32_t size = 0;
376 FX_FILESIZE offset = 0; 376 FX_FILESIZE offset = 0;
377 CPDF_Parser* pParser = nullptr; 377 CPDF_Parser* pParser = nullptr;
378 378
379 if (pExistInFile) 379 if (pExistInFile)
380 *pExistInFile = TRUE; 380 *pExistInFile = TRUE;
381 381
382 if (m_pDocument) { 382 if (m_pDocument) {
383 size = GetObjectSize(objnum, offset); 383 size = GetObjectSize(objnum, offset);
384 pParser = m_pDocument->GetParser(); 384 pParser = m_pDocument->GetParser();
385 } else { 385 } else {
386 size = (FX_DWORD)m_parser.GetObjectSize(objnum); 386 size = (uint32_t)m_parser.GetObjectSize(objnum);
387 offset = m_parser.GetObjectOffset(objnum); 387 offset = m_parser.GetObjectOffset(objnum);
388 pParser = &m_parser; 388 pParser = &m_parser;
389 } 389 }
390 390
391 if (!IsDataAvail(offset, size, pHints)) 391 if (!IsDataAvail(offset, size, pHints))
392 return nullptr; 392 return nullptr;
393 393
394 if (pParser) 394 if (pParser)
395 pRet = pParser->ParseIndirectObject(nullptr, objnum); 395 pRet = pParser->ParseIndirectObject(nullptr, objnum);
396 396
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 491
492 bool CPDF_DataAvail::IsFirstCheck(int iPage) { 492 bool CPDF_DataAvail::IsFirstCheck(int iPage) {
493 return m_pageMapCheckState.insert(iPage).second; 493 return m_pageMapCheckState.insert(iPage).second;
494 } 494 }
495 495
496 void CPDF_DataAvail::ResetFirstCheck(int iPage) { 496 void CPDF_DataAvail::ResetFirstCheck(int iPage) {
497 m_pageMapCheckState.erase(iPage); 497 m_pageMapCheckState.erase(iPage);
498 } 498 }
499 499
500 FX_BOOL CPDF_DataAvail::CheckPage(IPDF_DataAvail::DownloadHints* pHints) { 500 FX_BOOL CPDF_DataAvail::CheckPage(IPDF_DataAvail::DownloadHints* pHints) {
501 FX_DWORD iPageObjs = m_PageObjList.GetSize(); 501 uint32_t iPageObjs = m_PageObjList.GetSize();
502 CFX_ArrayTemplate<FX_DWORD> UnavailObjList; 502 CFX_ArrayTemplate<uint32_t> UnavailObjList;
503 for (FX_DWORD i = 0; i < iPageObjs; ++i) { 503 for (uint32_t i = 0; i < iPageObjs; ++i) {
504 FX_DWORD dwPageObjNum = m_PageObjList.GetAt(i); 504 uint32_t dwPageObjNum = m_PageObjList.GetAt(i);
505 FX_BOOL bExist = FALSE; 505 FX_BOOL bExist = FALSE;
506 CPDF_Object* pObj = GetObject(dwPageObjNum, pHints, &bExist); 506 CPDF_Object* pObj = GetObject(dwPageObjNum, pHints, &bExist);
507 if (!pObj) { 507 if (!pObj) {
508 if (bExist) 508 if (bExist)
509 UnavailObjList.Add(dwPageObjNum); 509 UnavailObjList.Add(dwPageObjNum);
510 continue; 510 continue;
511 } 511 }
512 512
513 if (pObj->IsArray()) { 513 if (pObj->IsArray()) {
514 CPDF_Array* pArray = pObj->GetArray(); 514 CPDF_Array* pArray = pObj->GetArray();
(...skipping 18 matching lines...) Expand all
533 } 533 }
534 pObj->Release(); 534 pObj->Release();
535 } 535 }
536 536
537 m_PageObjList.RemoveAll(); 537 m_PageObjList.RemoveAll();
538 if (UnavailObjList.GetSize()) { 538 if (UnavailObjList.GetSize()) {
539 m_PageObjList.Append(UnavailObjList); 539 m_PageObjList.Append(UnavailObjList);
540 return FALSE; 540 return FALSE;
541 } 541 }
542 542
543 FX_DWORD iPages = m_PagesArray.GetSize(); 543 uint32_t iPages = m_PagesArray.GetSize();
544 for (FX_DWORD i = 0; i < iPages; i++) { 544 for (uint32_t i = 0; i < iPages; i++) {
545 CPDF_Object* pPages = m_PagesArray.GetAt(i); 545 CPDF_Object* pPages = m_PagesArray.GetAt(i);
546 if (!pPages) 546 if (!pPages)
547 continue; 547 continue;
548 548
549 if (!GetPageKids(m_pCurrentParser, pPages)) { 549 if (!GetPageKids(m_pCurrentParser, pPages)) {
550 pPages->Release(); 550 pPages->Release();
551 while (++i < iPages) { 551 while (++i < iPages) {
552 pPages = m_PagesArray.GetAt(i); 552 pPages = m_PagesArray.GetAt(i);
553 pPages->Release(); 553 pPages->Release();
554 } 554 }
(...skipping 21 matching lines...) Expand all
576 CPDF_Object* pKids = pDict ? pDict->GetElement("Kids") : NULL; 576 CPDF_Object* pKids = pDict ? pDict->GetElement("Kids") : NULL;
577 if (!pKids) 577 if (!pKids)
578 return TRUE; 578 return TRUE;
579 579
580 switch (pKids->GetType()) { 580 switch (pKids->GetType()) {
581 case CPDF_Object::REFERENCE: 581 case CPDF_Object::REFERENCE:
582 m_PageObjList.Add(pKids->AsReference()->GetRefObjNum()); 582 m_PageObjList.Add(pKids->AsReference()->GetRefObjNum());
583 break; 583 break;
584 case CPDF_Object::ARRAY: { 584 case CPDF_Object::ARRAY: {
585 CPDF_Array* pKidsArray = pKids->AsArray(); 585 CPDF_Array* pKidsArray = pKids->AsArray();
586 for (FX_DWORD i = 0; i < pKidsArray->GetCount(); ++i) { 586 for (uint32_t i = 0; i < pKidsArray->GetCount(); ++i) {
587 if (CPDF_Reference* pRef = ToReference(pKidsArray->GetElement(i))) 587 if (CPDF_Reference* pRef = ToReference(pKidsArray->GetElement(i)))
588 m_PageObjList.Add(pRef->GetRefObjNum()); 588 m_PageObjList.Add(pRef->GetRefObjNum());
589 } 589 }
590 } break; 590 } break;
591 default: 591 default:
592 m_docStatus = PDF_DATAAVAIL_ERROR; 592 m_docStatus = PDF_DATAAVAIL_ERROR;
593 return FALSE; 593 return FALSE;
594 } 594 }
595 return TRUE; 595 return TRUE;
596 } 596 }
(...skipping 19 matching lines...) Expand all
616 m_docStatus = PDF_DATAAVAIL_ERROR; 616 m_docStatus = PDF_DATAAVAIL_ERROR;
617 return FALSE; 617 return FALSE;
618 } 618 }
619 619
620 pPages->Release(); 620 pPages->Release();
621 m_docStatus = PDF_DATAAVAIL_PAGE; 621 m_docStatus = PDF_DATAAVAIL_PAGE;
622 return TRUE; 622 return TRUE;
623 } 623 }
624 624
625 FX_BOOL CPDF_DataAvail::CheckHeader(IPDF_DataAvail::DownloadHints* pHints) { 625 FX_BOOL CPDF_DataAvail::CheckHeader(IPDF_DataAvail::DownloadHints* pHints) {
626 FX_DWORD req_size = 1024; 626 uint32_t req_size = 1024;
627 if ((FX_FILESIZE)req_size > m_dwFileLen) 627 if ((FX_FILESIZE)req_size > m_dwFileLen)
628 req_size = (FX_DWORD)m_dwFileLen; 628 req_size = (uint32_t)m_dwFileLen;
629 629
630 if (m_pFileAvail->IsDataAvail(0, req_size)) { 630 if (m_pFileAvail->IsDataAvail(0, req_size)) {
631 uint8_t buffer[1024]; 631 uint8_t buffer[1024];
632 m_pFileRead->ReadBlock(buffer, 0, req_size); 632 m_pFileRead->ReadBlock(buffer, 0, req_size);
633 633
634 if (IsLinearizedFile(buffer, req_size)) { 634 if (IsLinearizedFile(buffer, req_size)) {
635 m_docStatus = PDF_DATAAVAIL_FIRSTPAGE; 635 m_docStatus = PDF_DATAAVAIL_FIRSTPAGE;
636 } else { 636 } else {
637 if (m_docStatus == PDF_DATAAVAIL_ERROR) 637 if (m_docStatus == PDF_DATAAVAIL_ERROR)
638 return FALSE; 638 return FALSE;
(...skipping 21 matching lines...) Expand all
660 } 660 }
661 661
662 CPDF_Object* pFileLen = pDict ? pDict->GetElement("L") : NULL; 662 CPDF_Object* pFileLen = pDict ? pDict->GetElement("L") : NULL;
663 if (!pFileLen) { 663 if (!pFileLen) {
664 m_docStatus = PDF_DATAAVAIL_ERROR; 664 m_docStatus = PDF_DATAAVAIL_ERROR;
665 return FALSE; 665 return FALSE;
666 } 666 }
667 667
668 FX_BOOL bNeedDownLoad = FALSE; 668 FX_BOOL bNeedDownLoad = FALSE;
669 if (pEndOffSet->IsNumber()) { 669 if (pEndOffSet->IsNumber()) {
670 FX_DWORD dwEnd = pEndOffSet->GetInteger(); 670 uint32_t dwEnd = pEndOffSet->GetInteger();
671 dwEnd += 512; 671 dwEnd += 512;
672 if ((FX_FILESIZE)dwEnd > m_dwFileLen) 672 if ((FX_FILESIZE)dwEnd > m_dwFileLen)
673 dwEnd = (FX_DWORD)m_dwFileLen; 673 dwEnd = (uint32_t)m_dwFileLen;
674 674
675 int32_t iStartPos = (int32_t)(m_dwFileLen > 1024 ? 1024 : m_dwFileLen); 675 int32_t iStartPos = (int32_t)(m_dwFileLen > 1024 ? 1024 : m_dwFileLen);
676 int32_t iSize = dwEnd > 1024 ? dwEnd - 1024 : 0; 676 int32_t iSize = dwEnd > 1024 ? dwEnd - 1024 : 0;
677 if (!m_pFileAvail->IsDataAvail(iStartPos, iSize)) { 677 if (!m_pFileAvail->IsDataAvail(iStartPos, iSize)) {
678 pHints->AddSegment(iStartPos, iSize); 678 pHints->AddSegment(iStartPos, iSize);
679 bNeedDownLoad = TRUE; 679 bNeedDownLoad = TRUE;
680 } 680 }
681 } 681 }
682 682
683 m_dwLastXRefOffset = 0; 683 m_dwLastXRefOffset = 0;
684 FX_FILESIZE dwFileLen = 0; 684 FX_FILESIZE dwFileLen = 0;
685 if (pXRefOffset->IsNumber()) 685 if (pXRefOffset->IsNumber())
686 m_dwLastXRefOffset = pXRefOffset->GetInteger(); 686 m_dwLastXRefOffset = pXRefOffset->GetInteger();
687 687
688 if (pFileLen->IsNumber()) 688 if (pFileLen->IsNumber())
689 dwFileLen = pFileLen->GetInteger(); 689 dwFileLen = pFileLen->GetInteger();
690 690
691 if (!m_pFileAvail->IsDataAvail(m_dwLastXRefOffset, 691 if (!m_pFileAvail->IsDataAvail(m_dwLastXRefOffset,
692 (FX_DWORD)(dwFileLen - m_dwLastXRefOffset))) { 692 (uint32_t)(dwFileLen - m_dwLastXRefOffset))) {
693 if (m_docStatus == PDF_DATAAVAIL_FIRSTPAGE) { 693 if (m_docStatus == PDF_DATAAVAIL_FIRSTPAGE) {
694 FX_DWORD dwSize = (FX_DWORD)(dwFileLen - m_dwLastXRefOffset); 694 uint32_t dwSize = (uint32_t)(dwFileLen - m_dwLastXRefOffset);
695 FX_FILESIZE offset = m_dwLastXRefOffset; 695 FX_FILESIZE offset = m_dwLastXRefOffset;
696 if (dwSize < 512 && dwFileLen > 512) { 696 if (dwSize < 512 && dwFileLen > 512) {
697 dwSize = 512; 697 dwSize = 512;
698 offset = dwFileLen - 512; 698 offset = dwFileLen - 512;
699 } 699 }
700 pHints->AddSegment(offset, dwSize); 700 pHints->AddSegment(offset, dwSize);
701 } 701 }
702 } else { 702 } else {
703 m_docStatus = PDF_DATAAVAIL_FIRSTPAGE_PREPARE; 703 m_docStatus = PDF_DATAAVAIL_FIRSTPAGE_PREPARE;
704 } 704 }
705 705
706 if (bNeedDownLoad || m_docStatus != PDF_DATAAVAIL_FIRSTPAGE_PREPARE) { 706 if (bNeedDownLoad || m_docStatus != PDF_DATAAVAIL_FIRSTPAGE_PREPARE) {
707 m_docStatus = PDF_DATAAVAIL_FIRSTPAGE_PREPARE; 707 m_docStatus = PDF_DATAAVAIL_FIRSTPAGE_PREPARE;
708 return FALSE; 708 return FALSE;
709 } 709 }
710 710
711 m_docStatus = 711 m_docStatus =
712 m_bSupportHintTable ? PDF_DATAAVAIL_HINTTABLE : PDF_DATAAVAIL_DONE; 712 m_bSupportHintTable ? PDF_DATAAVAIL_HINTTABLE : PDF_DATAAVAIL_DONE;
713 return TRUE; 713 return TRUE;
714 } 714 }
715 715
716 FX_BOOL CPDF_DataAvail::IsDataAvail(FX_FILESIZE offset, 716 FX_BOOL CPDF_DataAvail::IsDataAvail(FX_FILESIZE offset,
717 FX_DWORD size, 717 uint32_t size,
718 IPDF_DataAvail::DownloadHints* pHints) { 718 IPDF_DataAvail::DownloadHints* pHints) {
719 if (offset > m_dwFileLen) 719 if (offset > m_dwFileLen)
720 return TRUE; 720 return TRUE;
721 721
722 FX_SAFE_DWORD safeSize = pdfium::base::checked_cast<FX_DWORD>(offset); 722 FX_SAFE_DWORD safeSize = pdfium::base::checked_cast<uint32_t>(offset);
723 safeSize += size; 723 safeSize += size;
724 safeSize += 512; 724 safeSize += 512;
725 if (!safeSize.IsValid() || safeSize.ValueOrDie() > m_dwFileLen) 725 if (!safeSize.IsValid() || safeSize.ValueOrDie() > m_dwFileLen)
726 size = m_dwFileLen - offset; 726 size = m_dwFileLen - offset;
727 else 727 else
728 size += 512; 728 size += 512;
729 729
730 if (!m_pFileAvail->IsDataAvail(offset, size)) { 730 if (!m_pFileAvail->IsDataAvail(offset, size)) {
731 pHints->AddSegment(offset, size); 731 pHints->AddSegment(offset, size);
732 return FALSE; 732 return FALSE;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
778 CPDF_Stream* pStream = ToStream(pHintStream.get()); 778 CPDF_Stream* pStream = ToStream(pHintStream.get());
779 if (pStream && pHintTables->LoadHintStream(pStream)) 779 if (pStream && pHintTables->LoadHintStream(pStream))
780 m_pHintTables = std::move(pHintTables); 780 m_pHintTables = std::move(pHintTables);
781 781
782 m_docStatus = PDF_DATAAVAIL_DONE; 782 m_docStatus = PDF_DATAAVAIL_DONE;
783 return TRUE; 783 return TRUE;
784 } 784 }
785 785
786 CPDF_Object* CPDF_DataAvail::ParseIndirectObjectAt( 786 CPDF_Object* CPDF_DataAvail::ParseIndirectObjectAt(
787 FX_FILESIZE pos, 787 FX_FILESIZE pos,
788 FX_DWORD objnum, 788 uint32_t objnum,
789 CPDF_IndirectObjectHolder* pObjList) { 789 CPDF_IndirectObjectHolder* pObjList) {
790 FX_FILESIZE SavedPos = m_syntaxParser.SavePos(); 790 FX_FILESIZE SavedPos = m_syntaxParser.SavePos();
791 m_syntaxParser.RestorePos(pos); 791 m_syntaxParser.RestorePos(pos);
792 792
793 bool bIsNumber; 793 bool bIsNumber;
794 CFX_ByteString word = m_syntaxParser.GetNextWord(&bIsNumber); 794 CFX_ByteString word = m_syntaxParser.GetNextWord(&bIsNumber);
795 if (!bIsNumber) 795 if (!bIsNumber)
796 return nullptr; 796 return nullptr;
797 797
798 FX_DWORD parser_objnum = FXSYS_atoui(word); 798 uint32_t parser_objnum = FXSYS_atoui(word);
799 if (objnum && parser_objnum != objnum) 799 if (objnum && parser_objnum != objnum)
800 return nullptr; 800 return nullptr;
801 801
802 word = m_syntaxParser.GetNextWord(&bIsNumber); 802 word = m_syntaxParser.GetNextWord(&bIsNumber);
803 if (!bIsNumber) 803 if (!bIsNumber)
804 return nullptr; 804 return nullptr;
805 805
806 FX_DWORD gennum = FXSYS_atoui(word); 806 uint32_t gennum = FXSYS_atoui(word);
807 if (m_syntaxParser.GetKeyword() != "obj") { 807 if (m_syntaxParser.GetKeyword() != "obj") {
808 m_syntaxParser.RestorePos(SavedPos); 808 m_syntaxParser.RestorePos(SavedPos);
809 return nullptr; 809 return nullptr;
810 } 810 }
811 811
812 CPDF_Object* pObj = 812 CPDF_Object* pObj =
813 m_syntaxParser.GetObject(pObjList, parser_objnum, gennum, true); 813 m_syntaxParser.GetObject(pObjList, parser_objnum, gennum, true);
814 m_syntaxParser.RestorePos(SavedPos); 814 m_syntaxParser.RestorePos(SavedPos);
815 return pObj; 815 return pObj;
816 } 816 }
817 817
818 IPDF_DataAvail::DocLinearizationStatus CPDF_DataAvail::IsLinearizedPDF() { 818 IPDF_DataAvail::DocLinearizationStatus CPDF_DataAvail::IsLinearizedPDF() {
819 FX_DWORD req_size = 1024; 819 uint32_t req_size = 1024;
820 if (!m_pFileAvail->IsDataAvail(0, req_size)) 820 if (!m_pFileAvail->IsDataAvail(0, req_size))
821 return LinearizationUnknown; 821 return LinearizationUnknown;
822 822
823 if (!m_pFileRead) 823 if (!m_pFileRead)
824 return NotLinearized; 824 return NotLinearized;
825 825
826 FX_FILESIZE dwSize = m_pFileRead->GetSize(); 826 FX_FILESIZE dwSize = m_pFileRead->GetSize();
827 if (dwSize < (FX_FILESIZE)req_size) 827 if (dwSize < (FX_FILESIZE)req_size)
828 return LinearizationUnknown; 828 return LinearizationUnknown;
829 829
830 uint8_t buffer[1024]; 830 uint8_t buffer[1024];
831 m_pFileRead->ReadBlock(buffer, 0, req_size); 831 m_pFileRead->ReadBlock(buffer, 0, req_size);
832 if (IsLinearizedFile(buffer, req_size)) 832 if (IsLinearizedFile(buffer, req_size))
833 return Linearized; 833 return Linearized;
834 834
835 return NotLinearized; 835 return NotLinearized;
836 } 836 }
837 FX_BOOL CPDF_DataAvail::IsLinearizedFile(uint8_t* pData, FX_DWORD dwLen) { 837 FX_BOOL CPDF_DataAvail::IsLinearizedFile(uint8_t* pData, uint32_t dwLen) {
838 ScopedFileStream file(FX_CreateMemoryStream(pData, (size_t)dwLen, FALSE)); 838 ScopedFileStream file(FX_CreateMemoryStream(pData, (size_t)dwLen, FALSE));
839 839
840 int32_t offset = GetHeaderOffset(file.get()); 840 int32_t offset = GetHeaderOffset(file.get());
841 if (offset == -1) { 841 if (offset == -1) {
842 m_docStatus = PDF_DATAAVAIL_ERROR; 842 m_docStatus = PDF_DATAAVAIL_ERROR;
843 return FALSE; 843 return FALSE;
844 } 844 }
845 845
846 m_dwHeaderOffset = offset; 846 m_dwHeaderOffset = offset;
847 m_syntaxParser.InitParser(file.get(), offset); 847 m_syntaxParser.InitParser(file.get(), offset);
848 m_syntaxParser.RestorePos(m_syntaxParser.m_HeaderOffset + 9); 848 m_syntaxParser.RestorePos(m_syntaxParser.m_HeaderOffset + 9);
849 849
850 bool bNumber; 850 bool bNumber;
851 CFX_ByteString wordObjNum = m_syntaxParser.GetNextWord(&bNumber); 851 CFX_ByteString wordObjNum = m_syntaxParser.GetNextWord(&bNumber);
852 if (!bNumber) 852 if (!bNumber)
853 return FALSE; 853 return FALSE;
854 854
855 FX_DWORD objnum = FXSYS_atoui(wordObjNum); 855 uint32_t objnum = FXSYS_atoui(wordObjNum);
856 if (m_pLinearized) { 856 if (m_pLinearized) {
857 m_pLinearized->Release(); 857 m_pLinearized->Release();
858 m_pLinearized = nullptr; 858 m_pLinearized = nullptr;
859 } 859 }
860 860
861 m_pLinearized = 861 m_pLinearized =
862 ParseIndirectObjectAt(m_syntaxParser.m_HeaderOffset + 9, objnum); 862 ParseIndirectObjectAt(m_syntaxParser.m_HeaderOffset + 9, objnum);
863 if (!m_pLinearized) 863 if (!m_pLinearized)
864 return FALSE; 864 return FALSE;
865 865
(...skipping 10 matching lines...) Expand all
876 876
877 if (CPDF_Number* pNo = ToNumber(pDict->GetElement("P"))) 877 if (CPDF_Number* pNo = ToNumber(pDict->GetElement("P")))
878 m_dwFirstPageNo = pNo->GetInteger(); 878 m_dwFirstPageNo = pNo->GetInteger();
879 879
880 return TRUE; 880 return TRUE;
881 } 881 }
882 return FALSE; 882 return FALSE;
883 } 883 }
884 884
885 FX_BOOL CPDF_DataAvail::CheckEnd(IPDF_DataAvail::DownloadHints* pHints) { 885 FX_BOOL CPDF_DataAvail::CheckEnd(IPDF_DataAvail::DownloadHints* pHints) {
886 FX_DWORD req_pos = (FX_DWORD)(m_dwFileLen > 1024 ? m_dwFileLen - 1024 : 0); 886 uint32_t req_pos = (uint32_t)(m_dwFileLen > 1024 ? m_dwFileLen - 1024 : 0);
887 FX_DWORD dwSize = (FX_DWORD)(m_dwFileLen - req_pos); 887 uint32_t dwSize = (uint32_t)(m_dwFileLen - req_pos);
888 888
889 if (m_pFileAvail->IsDataAvail(req_pos, dwSize)) { 889 if (m_pFileAvail->IsDataAvail(req_pos, dwSize)) {
890 uint8_t buffer[1024]; 890 uint8_t buffer[1024];
891 m_pFileRead->ReadBlock(buffer, req_pos, dwSize); 891 m_pFileRead->ReadBlock(buffer, req_pos, dwSize);
892 892
893 ScopedFileStream file(FX_CreateMemoryStream(buffer, (size_t)dwSize, FALSE)); 893 ScopedFileStream file(FX_CreateMemoryStream(buffer, (size_t)dwSize, FALSE));
894 m_syntaxParser.InitParser(file.get(), 0); 894 m_syntaxParser.InitParser(file.get(), 0);
895 m_syntaxParser.RestorePos(dwSize - 1); 895 m_syntaxParser.RestorePos(dwSize - 1);
896 896
897 if (m_syntaxParser.SearchWord("startxref", TRUE, FALSE, dwSize)) { 897 if (m_syntaxParser.SearchWord("startxref", TRUE, FALSE, dwSize)) {
(...skipping 23 matching lines...) Expand all
921 } 921 }
922 922
923 pHints->AddSegment(req_pos, dwSize); 923 pHints->AddSegment(req_pos, dwSize);
924 return FALSE; 924 return FALSE;
925 } 925 }
926 926
927 int32_t CPDF_DataAvail::CheckCrossRefStream( 927 int32_t CPDF_DataAvail::CheckCrossRefStream(
928 IPDF_DataAvail::DownloadHints* pHints, 928 IPDF_DataAvail::DownloadHints* pHints,
929 FX_FILESIZE& xref_offset) { 929 FX_FILESIZE& xref_offset) {
930 xref_offset = 0; 930 xref_offset = 0;
931 FX_DWORD req_size = 931 uint32_t req_size =
932 (FX_DWORD)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512); 932 (uint32_t)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512);
933 933
934 if (m_pFileAvail->IsDataAvail(m_Pos, req_size)) { 934 if (m_pFileAvail->IsDataAvail(m_Pos, req_size)) {
935 int32_t iSize = (int32_t)(m_Pos + req_size - m_dwCurrentXRefSteam); 935 int32_t iSize = (int32_t)(m_Pos + req_size - m_dwCurrentXRefSteam);
936 CFX_BinaryBuf buf(iSize); 936 CFX_BinaryBuf buf(iSize);
937 uint8_t* pBuf = buf.GetBuffer(); 937 uint8_t* pBuf = buf.GetBuffer();
938 938
939 m_pFileRead->ReadBlock(pBuf, m_dwCurrentXRefSteam, iSize); 939 m_pFileRead->ReadBlock(pBuf, m_dwCurrentXRefSteam, iSize);
940 940
941 ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, FALSE)); 941 ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, FALSE));
942 m_parser.m_pSyntax->InitParser(file.get(), 0); 942 m_parser.m_pSyntax->InitParser(file.get(), 0);
943 943
944 bool bNumber; 944 bool bNumber;
945 CFX_ByteString objnum = m_parser.m_pSyntax->GetNextWord(&bNumber); 945 CFX_ByteString objnum = m_parser.m_pSyntax->GetNextWord(&bNumber);
946 if (!bNumber) 946 if (!bNumber)
947 return -1; 947 return -1;
948 948
949 FX_DWORD objNum = FXSYS_atoui(objnum); 949 uint32_t objNum = FXSYS_atoui(objnum);
950 CPDF_Object* pObj = m_parser.ParseIndirectObjectAt(nullptr, 0, objNum); 950 CPDF_Object* pObj = m_parser.ParseIndirectObjectAt(nullptr, 0, objNum);
951 if (!pObj) { 951 if (!pObj) {
952 m_Pos += m_parser.m_pSyntax->SavePos(); 952 m_Pos += m_parser.m_pSyntax->SavePos();
953 return 0; 953 return 0;
954 } 954 }
955 955
956 CPDF_Dictionary* pDict = pObj->GetDict(); 956 CPDF_Dictionary* pDict = pObj->GetDict();
957 CPDF_Name* pName = ToName(pDict ? pDict->GetElement("Type") : nullptr); 957 CPDF_Name* pName = ToName(pDict ? pDict->GetElement("Type") : nullptr);
958 if (pName) { 958 if (pName) {
959 if (pName->GetString() == "XRef") { 959 if (pName->GetString() == "XRef") {
(...skipping 30 matching lines...) Expand all
990 990
991 while (1) { 991 while (1) {
992 if (!GetNextChar(ch)) 992 if (!GetNextChar(ch))
993 return FALSE; 993 return FALSE;
994 if (PDFCharIsLineEnding(ch)) 994 if (PDFCharIsLineEnding(ch))
995 break; 995 break;
996 } 996 }
997 } 997 }
998 998
999 uint8_t buffer[256]; 999 uint8_t buffer[256];
1000 FX_DWORD index = 0; 1000 uint32_t index = 0;
1001 if (PDFCharIsDelimiter(ch)) { 1001 if (PDFCharIsDelimiter(ch)) {
1002 buffer[index++] = ch; 1002 buffer[index++] = ch;
1003 if (ch == '/') { 1003 if (ch == '/') {
1004 while (1) { 1004 while (1) {
1005 if (!GetNextChar(ch)) 1005 if (!GetNextChar(ch))
1006 return FALSE; 1006 return FALSE;
1007 1007
1008 if (!PDFCharIsOther(ch) && !PDFCharIsNumeric(ch)) { 1008 if (!PDFCharIsOther(ch) && !PDFCharIsNumeric(ch)) {
1009 m_Pos--; 1009 m_Pos--;
1010 CFX_ByteString ret(buffer, index); 1010 CFX_ByteString ret(buffer, index);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1056 } 1056 }
1057 1057
1058 FX_BOOL CPDF_DataAvail::GetNextChar(uint8_t& ch) { 1058 FX_BOOL CPDF_DataAvail::GetNextChar(uint8_t& ch) {
1059 FX_FILESIZE pos = m_Pos; 1059 FX_FILESIZE pos = m_Pos;
1060 if (pos >= m_dwFileLen) 1060 if (pos >= m_dwFileLen)
1061 return FALSE; 1061 return FALSE;
1062 1062
1063 if (m_bufferOffset >= pos || 1063 if (m_bufferOffset >= pos ||
1064 (FX_FILESIZE)(m_bufferOffset + m_bufferSize) <= pos) { 1064 (FX_FILESIZE)(m_bufferOffset + m_bufferSize) <= pos) {
1065 FX_FILESIZE read_pos = pos; 1065 FX_FILESIZE read_pos = pos;
1066 FX_DWORD read_size = 512; 1066 uint32_t read_size = 512;
1067 if ((FX_FILESIZE)read_size > m_dwFileLen) 1067 if ((FX_FILESIZE)read_size > m_dwFileLen)
1068 read_size = (FX_DWORD)m_dwFileLen; 1068 read_size = (uint32_t)m_dwFileLen;
1069 1069
1070 if ((FX_FILESIZE)(read_pos + read_size) > m_dwFileLen) 1070 if ((FX_FILESIZE)(read_pos + read_size) > m_dwFileLen)
1071 read_pos = m_dwFileLen - read_size; 1071 read_pos = m_dwFileLen - read_size;
1072 1072
1073 if (!m_pFileRead->ReadBlock(m_bufferData, read_pos, read_size)) 1073 if (!m_pFileRead->ReadBlock(m_bufferData, read_pos, read_size))
1074 return FALSE; 1074 return FALSE;
1075 1075
1076 m_bufferOffset = read_pos; 1076 m_bufferOffset = read_pos;
1077 m_bufferSize = read_size; 1077 m_bufferSize = read_size;
1078 } 1078 }
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1203 if (!pTrailer->IsDictionary()) 1203 if (!pTrailer->IsDictionary())
1204 return FALSE; 1204 return FALSE;
1205 1205
1206 CPDF_Dictionary* pTrailerDict = pTrailer->GetDict(); 1206 CPDF_Dictionary* pTrailerDict = pTrailer->GetDict();
1207 CPDF_Object* pEncrypt = pTrailerDict->GetElement("Encrypt"); 1207 CPDF_Object* pEncrypt = pTrailerDict->GetElement("Encrypt");
1208 if (ToReference(pEncrypt)) { 1208 if (ToReference(pEncrypt)) {
1209 m_docStatus = PDF_DATAAVAIL_LOADALLFILE; 1209 m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
1210 return TRUE; 1210 return TRUE;
1211 } 1211 }
1212 1212
1213 FX_DWORD xrefpos = GetDirectInteger(pTrailerDict, "Prev"); 1213 uint32_t xrefpos = GetDirectInteger(pTrailerDict, "Prev");
1214 if (xrefpos) { 1214 if (xrefpos) {
1215 m_dwPrevXRefOffset = GetDirectInteger(pTrailerDict, "XRefStm"); 1215 m_dwPrevXRefOffset = GetDirectInteger(pTrailerDict, "XRefStm");
1216 if (m_dwPrevXRefOffset) { 1216 if (m_dwPrevXRefOffset) {
1217 m_docStatus = PDF_DATAAVAIL_LOADALLFILE; 1217 m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
1218 } else { 1218 } else {
1219 m_dwPrevXRefOffset = xrefpos; 1219 m_dwPrevXRefOffset = xrefpos;
1220 if (m_dwPrevXRefOffset >= m_dwFileLen) { 1220 if (m_dwPrevXRefOffset >= m_dwFileLen) {
1221 m_docStatus = PDF_DATAAVAIL_LOADALLFILE; 1221 m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
1222 } else { 1222 } else {
1223 SetStartOffset(m_dwPrevXRefOffset); 1223 SetStartOffset(m_dwPrevXRefOffset);
(...skipping 28 matching lines...) Expand all
1252 m_bPagesTreeLoad = TRUE; 1252 m_bPagesTreeLoad = TRUE;
1253 m_bPagesLoad = TRUE; 1253 m_bPagesLoad = TRUE;
1254 m_bCurPageDictLoadOK = TRUE; 1254 m_bCurPageDictLoadOK = TRUE;
1255 m_docStatus = PDF_DATAAVAIL_PAGE; 1255 m_docStatus = PDF_DATAAVAIL_PAGE;
1256 return TRUE; 1256 return TRUE;
1257 } 1257 }
1258 } 1258 }
1259 } 1259 }
1260 1260
1261 FX_BOOL CPDF_DataAvail::CheckArrayPageNode( 1261 FX_BOOL CPDF_DataAvail::CheckArrayPageNode(
1262 FX_DWORD dwPageNo, 1262 uint32_t dwPageNo,
1263 CPDF_DataAvail::PageNode* pPageNode, 1263 CPDF_DataAvail::PageNode* pPageNode,
1264 IPDF_DataAvail::DownloadHints* pHints) { 1264 IPDF_DataAvail::DownloadHints* pHints) {
1265 FX_BOOL bExist = FALSE; 1265 FX_BOOL bExist = FALSE;
1266 CPDF_Object* pPages = GetObject(dwPageNo, pHints, &bExist); 1266 CPDF_Object* pPages = GetObject(dwPageNo, pHints, &bExist);
1267 if (!bExist) { 1267 if (!bExist) {
1268 m_docStatus = PDF_DATAAVAIL_ERROR; 1268 m_docStatus = PDF_DATAAVAIL_ERROR;
1269 return FALSE; 1269 return FALSE;
1270 } 1270 }
1271 1271
1272 if (!pPages) { 1272 if (!pPages) {
1273 if (m_docStatus == PDF_DATAAVAIL_ERROR) { 1273 if (m_docStatus == PDF_DATAAVAIL_ERROR) {
1274 m_docStatus = PDF_DATAAVAIL_ERROR; 1274 m_docStatus = PDF_DATAAVAIL_ERROR;
1275 return FALSE; 1275 return FALSE;
1276 } 1276 }
1277 return FALSE; 1277 return FALSE;
1278 } 1278 }
1279 1279
1280 CPDF_Array* pArray = pPages->AsArray(); 1280 CPDF_Array* pArray = pPages->AsArray();
1281 if (!pArray) { 1281 if (!pArray) {
1282 pPages->Release(); 1282 pPages->Release();
1283 m_docStatus = PDF_DATAAVAIL_ERROR; 1283 m_docStatus = PDF_DATAAVAIL_ERROR;
1284 return FALSE; 1284 return FALSE;
1285 } 1285 }
1286 1286
1287 pPageNode->m_type = PDF_PAGENODE_PAGES; 1287 pPageNode->m_type = PDF_PAGENODE_PAGES;
1288 for (FX_DWORD i = 0; i < pArray->GetCount(); ++i) { 1288 for (uint32_t i = 0; i < pArray->GetCount(); ++i) {
1289 CPDF_Reference* pKid = ToReference(pArray->GetElement(i)); 1289 CPDF_Reference* pKid = ToReference(pArray->GetElement(i));
1290 if (!pKid) 1290 if (!pKid)
1291 continue; 1291 continue;
1292 1292
1293 PageNode* pNode = new PageNode(); 1293 PageNode* pNode = new PageNode();
1294 pPageNode->m_childNode.Add(pNode); 1294 pPageNode->m_childNode.Add(pNode);
1295 pNode->m_dwPageNo = pKid->GetRefObjNum(); 1295 pNode->m_dwPageNo = pKid->GetRefObjNum();
1296 } 1296 }
1297 pPages->Release(); 1297 pPages->Release();
1298 return TRUE; 1298 return TRUE;
1299 } 1299 }
1300 1300
1301 FX_BOOL CPDF_DataAvail::CheckUnkownPageNode( 1301 FX_BOOL CPDF_DataAvail::CheckUnkownPageNode(
1302 FX_DWORD dwPageNo, 1302 uint32_t dwPageNo,
1303 CPDF_DataAvail::PageNode* pPageNode, 1303 CPDF_DataAvail::PageNode* pPageNode,
1304 IPDF_DataAvail::DownloadHints* pHints) { 1304 IPDF_DataAvail::DownloadHints* pHints) {
1305 FX_BOOL bExist = FALSE; 1305 FX_BOOL bExist = FALSE;
1306 CPDF_Object* pPage = GetObject(dwPageNo, pHints, &bExist); 1306 CPDF_Object* pPage = GetObject(dwPageNo, pHints, &bExist);
1307 if (!bExist) { 1307 if (!bExist) {
1308 m_docStatus = PDF_DATAAVAIL_ERROR; 1308 m_docStatus = PDF_DATAAVAIL_ERROR;
1309 return FALSE; 1309 return FALSE;
1310 } 1310 }
1311 1311
1312 if (!pPage) { 1312 if (!pPage) {
(...skipping 28 matching lines...) Expand all
1341 1341
1342 switch (pKids->GetType()) { 1342 switch (pKids->GetType()) {
1343 case CPDF_Object::REFERENCE: { 1343 case CPDF_Object::REFERENCE: {
1344 CPDF_Reference* pKid = pKids->AsReference(); 1344 CPDF_Reference* pKid = pKids->AsReference();
1345 PageNode* pNode = new PageNode(); 1345 PageNode* pNode = new PageNode();
1346 pPageNode->m_childNode.Add(pNode); 1346 pPageNode->m_childNode.Add(pNode);
1347 pNode->m_dwPageNo = pKid->GetRefObjNum(); 1347 pNode->m_dwPageNo = pKid->GetRefObjNum();
1348 } break; 1348 } break;
1349 case CPDF_Object::ARRAY: { 1349 case CPDF_Object::ARRAY: {
1350 CPDF_Array* pKidsArray = pKids->AsArray(); 1350 CPDF_Array* pKidsArray = pKids->AsArray();
1351 for (FX_DWORD i = 0; i < pKidsArray->GetCount(); ++i) { 1351 for (uint32_t i = 0; i < pKidsArray->GetCount(); ++i) {
1352 CPDF_Reference* pKid = ToReference(pKidsArray->GetElement(i)); 1352 CPDF_Reference* pKid = ToReference(pKidsArray->GetElement(i));
1353 if (!pKid) 1353 if (!pKid)
1354 continue; 1354 continue;
1355 1355
1356 PageNode* pNode = new PageNode(); 1356 PageNode* pNode = new PageNode();
1357 pPageNode->m_childNode.Add(pNode); 1357 pPageNode->m_childNode.Add(pNode);
1358 pNode->m_dwPageNo = pKid->GetRefObjNum(); 1358 pNode->m_dwPageNo = pKid->GetRefObjNum();
1359 } 1359 }
1360 } break; 1360 } break;
1361 default: 1361 default:
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
1616 m_bAnnotsLoad = FALSE; 1616 m_bAnnotsLoad = FALSE;
1617 m_bNeedDownLoadResource = FALSE; 1617 m_bNeedDownLoadResource = FALSE;
1618 m_objs_array.RemoveAll(); 1618 m_objs_array.RemoveAll();
1619 m_ObjectSet.clear(); 1619 m_ObjectSet.clear();
1620 } 1620 }
1621 1621
1622 if (pdfium::ContainsKey(m_pagesLoadState, iPage)) 1622 if (pdfium::ContainsKey(m_pagesLoadState, iPage))
1623 return DataAvailable; 1623 return DataAvailable;
1624 1624
1625 if (m_bLinearized) { 1625 if (m_bLinearized) {
1626 if ((FX_DWORD)iPage == m_dwFirstPageNo) { 1626 if ((uint32_t)iPage == m_dwFirstPageNo) {
1627 DocAvailStatus nRet = CheckLinearizedFirstPage(iPage, pHints); 1627 DocAvailStatus nRet = CheckLinearizedFirstPage(iPage, pHints);
1628 if (nRet == DataAvailable) 1628 if (nRet == DataAvailable)
1629 m_pagesLoadState.insert(iPage); 1629 m_pagesLoadState.insert(iPage);
1630 return nRet; 1630 return nRet;
1631 } 1631 }
1632 1632
1633 DocAvailStatus nResult = CheckLinearizedData(pHints); 1633 DocAvailStatus nResult = CheckLinearizedData(pHints);
1634 if (nResult != DataAvailable) 1634 if (nResult != DataAvailable)
1635 return nResult; 1635 return nResult;
1636 1636
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
1746 1746
1747 CFX_ArrayTemplate<CPDF_Object*> new_objs_array; 1747 CFX_ArrayTemplate<CPDF_Object*> new_objs_array;
1748 FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); 1748 FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array);
1749 m_objs_array.RemoveAll(); 1749 m_objs_array.RemoveAll();
1750 if (!bRet) 1750 if (!bRet)
1751 m_objs_array.Append(new_objs_array); 1751 m_objs_array.Append(new_objs_array);
1752 return bRet; 1752 return bRet;
1753 } 1753 }
1754 1754
1755 void CPDF_DataAvail::GetLinearizedMainXRefInfo(FX_FILESIZE* pPos, 1755 void CPDF_DataAvail::GetLinearizedMainXRefInfo(FX_FILESIZE* pPos,
1756 FX_DWORD* pSize) { 1756 uint32_t* pSize) {
1757 if (pPos) 1757 if (pPos)
1758 *pPos = m_dwLastXRefOffset; 1758 *pPos = m_dwLastXRefOffset;
1759 if (pSize) 1759 if (pSize)
1760 *pSize = (FX_DWORD)(m_dwFileLen - m_dwLastXRefOffset); 1760 *pSize = (uint32_t)(m_dwFileLen - m_dwLastXRefOffset);
1761 } 1761 }
1762 1762
1763 int CPDF_DataAvail::GetPageCount() const { 1763 int CPDF_DataAvail::GetPageCount() const {
1764 if (m_pLinearized) { 1764 if (m_pLinearized) {
1765 CPDF_Dictionary* pDict = m_pLinearized->GetDict(); 1765 CPDF_Dictionary* pDict = m_pLinearized->GetDict();
1766 CPDF_Object* pObj = pDict ? pDict->GetElementValue("N") : nullptr; 1766 CPDF_Object* pObj = pDict ? pDict->GetElementValue("N") : nullptr;
1767 return pObj ? pObj->GetInteger() : 0; 1767 return pObj ? pObj->GetInteger() : 0;
1768 } 1768 }
1769 return m_pDocument ? m_pDocument->GetPageCount() : 0; 1769 return m_pDocument ? m_pDocument->GetPageCount() : 0;
1770 } 1770 }
1771 1771
1772 CPDF_Dictionary* CPDF_DataAvail::GetPage(int index) { 1772 CPDF_Dictionary* CPDF_DataAvail::GetPage(int index) {
1773 if (!m_pDocument || index < 0 || index >= GetPageCount()) 1773 if (!m_pDocument || index < 0 || index >= GetPageCount())
1774 return nullptr; 1774 return nullptr;
1775 1775
1776 if (m_pLinearized) { 1776 if (m_pLinearized) {
1777 CPDF_Dictionary* pDict = m_pLinearized->GetDict(); 1777 CPDF_Dictionary* pDict = m_pLinearized->GetDict();
1778 CPDF_Object* pObj = pDict ? pDict->GetElementValue("P") : nullptr; 1778 CPDF_Object* pObj = pDict ? pDict->GetElementValue("P") : nullptr;
1779 1779
1780 int pageNum = pObj ? pObj->GetInteger() : 0; 1780 int pageNum = pObj ? pObj->GetInteger() : 0;
1781 if (m_pHintTables && index != pageNum) { 1781 if (m_pHintTables && index != pageNum) {
1782 FX_FILESIZE szPageStartPos = 0; 1782 FX_FILESIZE szPageStartPos = 0;
1783 FX_FILESIZE szPageLength = 0; 1783 FX_FILESIZE szPageLength = 0;
1784 FX_DWORD dwObjNum = 0; 1784 uint32_t dwObjNum = 0;
1785 FX_BOOL bPagePosGot = m_pHintTables->GetPagePos(index, szPageStartPos, 1785 FX_BOOL bPagePosGot = m_pHintTables->GetPagePos(index, szPageStartPos,
1786 szPageLength, dwObjNum); 1786 szPageLength, dwObjNum);
1787 if (!bPagePosGot) 1787 if (!bPagePosGot)
1788 return nullptr; 1788 return nullptr;
1789 1789
1790 m_syntaxParser.InitParser(m_pFileRead, (FX_DWORD)szPageStartPos); 1790 m_syntaxParser.InitParser(m_pFileRead, (uint32_t)szPageStartPos);
1791 CPDF_Object* pPageDict = ParseIndirectObjectAt(0, dwObjNum, m_pDocument); 1791 CPDF_Object* pPageDict = ParseIndirectObjectAt(0, dwObjNum, m_pDocument);
1792 if (!pPageDict) 1792 if (!pPageDict)
1793 return nullptr; 1793 return nullptr;
1794 1794
1795 if (!m_pDocument->InsertIndirectObject(dwObjNum, pPageDict)) 1795 if (!m_pDocument->InsertIndirectObject(dwObjNum, pPageDict))
1796 return nullptr; 1796 return nullptr;
1797 return pPageDict->GetDict(); 1797 return pPageDict->GetDict();
1798 } 1798 }
1799 } 1799 }
1800 return m_pDocument->GetPage(index); 1800 return m_pDocument->GetPage(index);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1835 return FormAvailable; 1835 return FormAvailable;
1836 } 1836 }
1837 1837
1838 CPDF_DataAvail::PageNode::PageNode() : m_type(PDF_PAGENODE_UNKNOWN) {} 1838 CPDF_DataAvail::PageNode::PageNode() : m_type(PDF_PAGENODE_UNKNOWN) {}
1839 1839
1840 CPDF_DataAvail::PageNode::~PageNode() { 1840 CPDF_DataAvail::PageNode::~PageNode() {
1841 for (int32_t i = 0; i < m_childNode.GetSize(); ++i) 1841 for (int32_t i = 0; i < m_childNode.GetSize(); ++i)
1842 delete m_childNode[i]; 1842 delete m_childNode[i];
1843 m_childNode.RemoveAll(); 1843 m_childNode.RemoveAll();
1844 } 1844 }
OLDNEW
« no previous file with comments | « core/fpdfapi/fpdf_parser/cpdf_data_avail.h ('k') | core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698