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

Side by Side Diff: fpdfsdk/src/fpdfview.cpp

Issue 1406543004: Introduce CPDFPageFromFPDFPage() (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: rebase. 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 | « fpdfsdk/src/fpdftext.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 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/include/fxcodec/fx_codec.h" 7 #include "../../core/include/fxcodec/fx_codec.h"
8 #include "../../core/include/fxcrt/fx_safe_types.h" 8 #include "../../core/include/fxcrt/fx_safe_types.h"
9 #include "../../public/fpdf_ext.h" 9 #include "../../public/fpdf_ext.h"
10 #include "../../public/fpdf_progressive.h" 10 #include "../../public/fpdf_progressive.h"
11 #include "../../public/fpdfview.h" 11 #include "../../public/fpdfview.h"
12 #include "../../third_party/base/nonstd_unique_ptr.h" 12 #include "../../third_party/base/nonstd_unique_ptr.h"
13 #include "../../third_party/base/numerics/safe_conversions_impl.h" 13 #include "../../third_party/base/numerics/safe_conversions_impl.h"
14 #include "../include/fsdk_define.h" 14 #include "../include/fsdk_define.h"
15 #include "../include/fsdk_mgr.h" 15 #include "../include/fsdk_mgr.h"
16 #include "../include/fsdk_rendercontext.h" 16 #include "../include/fsdk_rendercontext.h"
17 #include "../include/javascript/IJavaScript.h" 17 #include "../include/javascript/IJavaScript.h"
18 18
19 CPDF_Document* CPDFDocumentFromFPDFDocument(FPDF_DOCUMENT doc) { 19 CPDF_Document* CPDFDocumentFromFPDFDocument(FPDF_DOCUMENT doc) {
20 return static_cast<CPDF_Document*>(doc); 20 return static_cast<CPDF_Document*>(doc);
21 } 21 }
22 22
23 CPDF_Page* CPDFPageFromFPDFPage(FPDF_PAGE page) {
24 return static_cast<CPDF_Page*>(page);
25 }
26
23 CPDF_CustomAccess::CPDF_CustomAccess(FPDF_FILEACCESS* pFileAccess) { 27 CPDF_CustomAccess::CPDF_CustomAccess(FPDF_FILEACCESS* pFileAccess) {
24 if (pFileAccess) 28 if (pFileAccess)
25 m_FileAccess = *pFileAccess; 29 m_FileAccess = *pFileAccess;
26 } 30 }
27 31
28 FX_BOOL CPDF_CustomAccess::ReadBlock(void* buffer, 32 FX_BOOL CPDF_CustomAccess::ReadBlock(void* buffer,
29 FX_FILESIZE offset, 33 FX_FILESIZE offset,
30 size_t size) { 34 size_t size) {
31 if (offset < 0) { 35 if (offset < 0) {
32 return FALSE; 36 return FALSE;
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 CPDF_Dictionary* pDict = pDoc->GetPage(page_index); 281 CPDF_Dictionary* pDict = pDoc->GetPage(page_index);
278 if (pDict == NULL) 282 if (pDict == NULL)
279 return NULL; 283 return NULL;
280 CPDF_Page* pPage = new CPDF_Page; 284 CPDF_Page* pPage = new CPDF_Page;
281 pPage->Load(pDoc, pDict); 285 pPage->Load(pDoc, pDict);
282 pPage->ParseContent(); 286 pPage->ParseContent();
283 return pPage; 287 return pPage;
284 } 288 }
285 289
286 DLLEXPORT double STDCALL FPDF_GetPageWidth(FPDF_PAGE page) { 290 DLLEXPORT double STDCALL FPDF_GetPageWidth(FPDF_PAGE page) {
287 if (!page) 291 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
288 return 0.0; 292 return pPage ? pPage->GetPageWidth() : 0.0;
289 return ((CPDF_Page*)page)->GetPageWidth();
290 } 293 }
291 294
292 DLLEXPORT double STDCALL FPDF_GetPageHeight(FPDF_PAGE page) { 295 DLLEXPORT double STDCALL FPDF_GetPageHeight(FPDF_PAGE page) {
293 if (!page) 296 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
294 return 0.0; 297 return pPage ? pPage->GetPageHeight() : 0.0;
295 return ((CPDF_Page*)page)->GetPageHeight();
296 } 298 }
297 299
298 void DropContext(void* data) { 300 void DropContext(void* data) {
299 delete (CRenderContext*)data; 301 delete (CRenderContext*)data;
300 } 302 }
301 303
302 #if defined(_DEBUG) || defined(DEBUG) 304 #if defined(_DEBUG) || defined(DEBUG)
303 #define DEBUG_TRACE 305 #define DEBUG_TRACE
304 #endif 306 #endif
305 307
306 #if defined(_WIN32) 308 #if defined(_WIN32)
307 DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc, 309 DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc,
308 FPDF_PAGE page, 310 FPDF_PAGE page,
309 int start_x, 311 int start_x,
310 int start_y, 312 int start_y,
311 int size_x, 313 int size_x,
312 int size_y, 314 int size_y,
313 int rotate, 315 int rotate,
314 int flags) { 316 int flags) {
315 if (page == NULL) 317 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
318 if (!pPage)
316 return; 319 return;
317 CPDF_Page* pPage = (CPDF_Page*)page;
318 320
319 CRenderContext* pContext = new CRenderContext; 321 CRenderContext* pContext = new CRenderContext;
320 pPage->SetPrivateData((void*)1, pContext, DropContext); 322 pPage->SetPrivateData((void*)1, pContext, DropContext);
321 323
322 #ifndef _WIN32_WCE 324 #ifndef _WIN32_WCE
323 CFX_DIBitmap* pBitmap = NULL; 325 CFX_DIBitmap* pBitmap = NULL;
324 FX_BOOL bBackgroundAlphaNeeded = FALSE; 326 FX_BOOL bBackgroundAlphaNeeded = FALSE;
325 bBackgroundAlphaNeeded = pPage->BackgroundAlphaNeeded(); 327 bBackgroundAlphaNeeded = pPage->BackgroundAlphaNeeded();
326 if (bBackgroundAlphaNeeded) { 328 if (bBackgroundAlphaNeeded) {
327 pBitmap = new CFX_DIBitmap; 329 pBitmap = new CFX_DIBitmap;
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 #endif 467 #endif
466 468
467 DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap, 469 DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap,
468 FPDF_PAGE page, 470 FPDF_PAGE page,
469 int start_x, 471 int start_x,
470 int start_y, 472 int start_y,
471 int size_x, 473 int size_x,
472 int size_y, 474 int size_y,
473 int rotate, 475 int rotate,
474 int flags) { 476 int flags) {
475 if (bitmap == NULL || page == NULL) 477 if (!bitmap)
476 return; 478 return;
477 CPDF_Page* pPage = (CPDF_Page*)page; 479 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
478 480 if (!pPage)
481 return;
479 CRenderContext* pContext = new CRenderContext; 482 CRenderContext* pContext = new CRenderContext;
480 pPage->SetPrivateData((void*)1, pContext, DropContext); 483 pPage->SetPrivateData((void*)1, pContext, DropContext);
481 #ifdef _SKIA_SUPPORT_ 484 #ifdef _SKIA_SUPPORT_
482 pContext->m_pDevice = new CFX_SkiaDevice; 485 pContext->m_pDevice = new CFX_SkiaDevice;
483 486
484 if (flags & FPDF_REVERSE_BYTE_ORDER) 487 if (flags & FPDF_REVERSE_BYTE_ORDER)
485 ((CFX_SkiaDevice*)pContext->m_pDevice) 488 ((CFX_SkiaDevice*)pContext->m_pDevice)
486 ->Attach((CFX_DIBitmap*)bitmap, 0, TRUE); 489 ->Attach((CFX_DIBitmap*)bitmap, 0, TRUE);
487 else 490 else
488 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap); 491 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 DLLEXPORT void STDCALL FPDF_PageToDevice(FPDF_PAGE page, 566 DLLEXPORT void STDCALL FPDF_PageToDevice(FPDF_PAGE page,
564 int start_x, 567 int start_x,
565 int start_y, 568 int start_y,
566 int size_x, 569 int size_x,
567 int size_y, 570 int size_y,
568 int rotate, 571 int rotate,
569 double page_x, 572 double page_x,
570 double page_y, 573 double page_y,
571 int* device_x, 574 int* device_x,
572 int* device_y) { 575 int* device_y) {
573 if (page == NULL || device_x == NULL || device_y == NULL) 576 if (!device_x || !device_y)
574 return; 577 return;
575 CPDF_Page* pPage = (CPDF_Page*)page; 578 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
576 579 if (!pPage)
580 return;
577 CPDF_Matrix page2device; 581 CPDF_Matrix page2device;
578 pPage->GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y, 582 pPage->GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y,
579 rotate); 583 rotate);
580 584
581 FX_FLOAT device_x_f, device_y_f; 585 FX_FLOAT device_x_f, device_y_f;
582 page2device.Transform(((FX_FLOAT)page_x), ((FX_FLOAT)page_y), device_x_f, 586 page2device.Transform(((FX_FLOAT)page_x), ((FX_FLOAT)page_y), device_x_f,
583 device_y_f); 587 device_y_f);
584 588
585 *device_x = FXSYS_round(device_x_f); 589 *device_x = FXSYS_round(device_x_f);
586 *device_y = FXSYS_round(device_y_f); 590 *device_y = FXSYS_round(device_y_f);
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 void FPDF_RenderPage_Retail(CRenderContext* pContext, 678 void FPDF_RenderPage_Retail(CRenderContext* pContext,
675 FPDF_PAGE page, 679 FPDF_PAGE page,
676 int start_x, 680 int start_x,
677 int start_y, 681 int start_y,
678 int size_x, 682 int size_x,
679 int size_y, 683 int size_y,
680 int rotate, 684 int rotate,
681 int flags, 685 int flags,
682 FX_BOOL bNeedToRestore, 686 FX_BOOL bNeedToRestore,
683 IFSDK_PAUSE_Adapter* pause) { 687 IFSDK_PAUSE_Adapter* pause) {
684 CPDF_Page* pPage = (CPDF_Page*)page; 688 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
685 if (pPage == NULL) 689 if (!pPage)
686 return; 690 return;
687 691
688 if (!pContext->m_pOptions) 692 if (!pContext->m_pOptions)
689 pContext->m_pOptions = new CPDF_RenderOptions; 693 pContext->m_pOptions = new CPDF_RenderOptions;
690 694
691 if (flags & FPDF_LCD_TEXT) 695 if (flags & FPDF_LCD_TEXT)
692 pContext->m_pOptions->m_Flags |= RENDER_CLEARTYPE; 696 pContext->m_pOptions->m_Flags |= RENDER_CLEARTYPE;
693 else 697 else
694 pContext->m_pOptions->m_Flags &= ~RENDER_CLEARTYPE; 698 pContext->m_pOptions->m_Flags &= ~RENDER_CLEARTYPE;
695 if (flags & FPDF_NO_NATIVETEXT) 699 if (flags & FPDF_NO_NATIVETEXT)
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
890 if (!buffer) { 894 if (!buffer) {
891 *buflen = len; 895 *buflen = len;
892 } else if (*buflen >= len) { 896 } else if (*buflen >= len) {
893 memcpy(buffer, utf16Name.c_str(), len); 897 memcpy(buffer, utf16Name.c_str(), len);
894 *buflen = len; 898 *buflen = len;
895 } else { 899 } else {
896 *buflen = -1; 900 *buflen = -1;
897 } 901 }
898 return (FPDF_DEST)pDestObj; 902 return (FPDF_DEST)pDestObj;
899 } 903 }
OLDNEW
« no previous file with comments | « fpdfsdk/src/fpdftext.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698