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

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

Issue 1233203004: Kill Func_Renderpage global function pointer, it never changes. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: tabs. Created 5 years, 5 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/fpdf_progressive.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"
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 { 317 {
318 if (!page) return 0.0; 318 if (!page) return 0.0;
319 return ((CPDF_Page*)page)->GetPageHeight(); 319 return ((CPDF_Page*)page)->GetPageHeight();
320 } 320 }
321 321
322 void DropContext(void* data) 322 void DropContext(void* data)
323 { 323 {
324 delete (CRenderContext*)data; 324 delete (CRenderContext*)data;
325 } 325 }
326 326
327 void FPDF_RenderPage_Retail(CRenderContext* pContext, FPDF_PAGE page, int start_ x, int start_y, int size_x, int size_y,
328 int rotate, int flags,FX_BOOL bN eedToRestore, IFSDK_PAUSE_Adapter * pause );
329 void (*Func_RenderPage)(CRenderContext*, FPDF_PAGE page, int start_x, int start_ y, int size_x, int size_y,
330 int rotate, int flags,FX_BOOL bN eedToRestore, IFSDK_PAUSE_Adapter * pause ) = FPDF_RenderPage_Retail;
331
332 #if defined(_DEBUG) || defined(DEBUG) 327 #if defined(_DEBUG) || defined(DEBUG)
333 #define DEBUG_TRACE 328 #define DEBUG_TRACE
334 #endif 329 #endif
335 330
336 #if defined(_WIN32) 331 #if defined(_WIN32)
337 DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc, FPDF_PAGE page, int start_x, int start_y, int size_x, int size_y, 332 DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc, FPDF_PAGE page, int start_x, int start_y, int size_x, int size_y,
338 int rotate, int flags) 333 int rotate, int flags)
339 { 334 {
340 if (page==NULL) return; 335 if (page==NULL) return;
341 CPDF_Page* pPage = (CPDF_Page*)page; 336 CPDF_Page* pPage = (CPDF_Page*)page;
(...skipping 15 matching lines...) Expand all
357 pContext->m_pDevice = new CFX_SkiaDevice; 352 pContext->m_pDevice = new CFX_SkiaDevice;
358 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pB itmap); 353 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pB itmap);
359 #else 354 #else
360 pContext->m_pDevice = new CFX_FxgeDevice; 355 pContext->m_pDevice = new CFX_FxgeDevice;
361 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pB itmap); 356 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pB itmap);
362 #endif 357 #endif
363 } 358 }
364 else 359 else
365 pContext->m_pDevice = new CFX_WindowsDevice(dc); 360 pContext->m_pDevice = new CFX_WindowsDevice(dc);
366 361
367 » Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate , flags,TRUE,NULL); 362 » FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
363 rotate, flags, TRUE, NULL);
368 364
369 if (bBackgroundAlphaNeeded) 365 if (bBackgroundAlphaNeeded)
370 { 366 {
371 if (pBitmap) 367 if (pBitmap)
372 { 368 {
373 CFX_WindowsDevice WinDC(dc); 369 CFX_WindowsDevice WinDC(dc);
374 370
375 if (WinDC.GetDeviceCaps(FXDC_DEVICE_CLASS) == FXDC_PRINT ER) 371 if (WinDC.GetDeviceCaps(FXDC_DEVICE_CLASS) == FXDC_PRINT ER)
376 { 372 {
377 CFX_DIBitmap* pDst = new CFX_DIBitmap; 373 CFX_DIBitmap* pDst = new CFX_DIBitmap;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 pContext->m_pBitmap = new CFX_DIBitmap; 436 pContext->m_pBitmap = new CFX_DIBitmap;
441 pContext->m_pBitmap->Create(width, height, FXDIB_Rgb, (uint8_t*)pBuffer) ; 437 pContext->m_pBitmap->Create(width, height, FXDIB_Rgb, (uint8_t*)pBuffer) ;
442 pContext->m_pDevice = new CPDF_FxgeDevice; 438 pContext->m_pDevice = new CPDF_FxgeDevice;
443 ((CPDF_FxgeDevice*)pContext->m_pDevice)->Attach(pContext->m_pBitmap); 439 ((CPDF_FxgeDevice*)pContext->m_pDevice)->Attach(pContext->m_pBitmap);
444 440
445 #ifdef DEBUG_TRACE 441 #ifdef DEBUG_TRACE
446 CPDF_ModuleMgr::Get()->ReportError(999, "Ready for PDF rendering"); 442 CPDF_ModuleMgr::Get()->ReportError(999, "Ready for PDF rendering");
447 #endif 443 #endif
448 444
449 // output to bitmap device 445 // output to bitmap device
450 » Func_RenderPage(pContext, page, start_x - rect.left, start_y - rect.top, size_x, size_y, rotate, flags); 446 » FPDF_RenderPage_Retail(pContext, page, start_x - rect.left,
447 start_y - rect.top, size_x, size_y, rotate, flags);
451 448
452 #ifdef DEBUG_TRACE 449 #ifdef DEBUG_TRACE
453 CPDF_ModuleMgr::Get()->ReportError(999, "Finished PDF rendering"); 450 CPDF_ModuleMgr::Get()->ReportError(999, "Finished PDF rendering");
454 #endif 451 #endif
455 452
456 // Now output to real device 453 // Now output to real device
457 HDC hMemDC = CreateCompatibleDC(dc); 454 HDC hMemDC = CreateCompatibleDC(dc);
458 if (hMemDC == NULL) { 455 if (hMemDC == NULL) {
459 #if defined(DEBUG) || defined(_DEBUG) 456 #if defined(DEBUG) || defined(_DEBUG)
460 char str[128]; 457 char str[128];
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi tmap); 505 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi tmap);
509 #else 506 #else
510 pContext->m_pDevice = new CFX_FxgeDevice; 507 pContext->m_pDevice = new CFX_FxgeDevice;
511 508
512 if (flags & FPDF_REVERSE_BYTE_ORDER) 509 if (flags & FPDF_REVERSE_BYTE_ORDER)
513 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi tmap,0,TRUE); 510 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi tmap,0,TRUE);
514 else 511 else
515 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi tmap); 512 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi tmap);
516 #endif 513 #endif
517 514
518 » Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate , flags,TRUE,NULL); 515 » FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
516 rotate, flags, TRUE, NULL);
519 517
520 delete pContext; 518 delete pContext;
521 pPage->RemovePrivateData((void*)1); 519 pPage->RemovePrivateData((void*)1);
522 } 520 }
523 521
524 DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page) 522 DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page)
525 { 523 {
526 if (!page) return; 524 if (!page) return;
527 CPDFSDK_PageView* pPageView = (CPDFSDK_PageView*)(((CPDF_Page*)page))->G etPrivateData((void*)page); 525 CPDFSDK_PageView* pPageView = (CPDFSDK_PageView*)(((CPDF_Page*)page))->G etPrivateData((void*)page);
528 if (pPageView && pPageView->IsLocked()) { 526 if (pPageView && pPageView->IsLocked()) {
529 pPageView->TakeOverPage(); 527 pPageView->TakeOverPage();
530 return; 528 return;
531 } 529 }
532 delete (CPDF_Page*)page; 530 delete (CPDF_Page*)page;
533 531
534 } 532 }
535 533
536 DLLEXPORT void STDCALL FPDF_CloseDocument(FPDF_DOCUMENT document) 534 DLLEXPORT void STDCALL FPDF_CloseDocument(FPDF_DOCUMENT document)
537 { 535 {
538 if (!document) 536 if (!document)
539 return; 537 return;
540 CPDF_Document* pDoc = (CPDF_Document*)document; 538 CPDF_Document* pDoc = (CPDF_Document*)document;
541 CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser(); 539 CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser();
542 if (pParser == NULL) 540 if (pParser == NULL)
543 { 541 {
544 delete pDoc; 542 delete pDoc;
545 return; 543 return;
546 } 544 }
547 delete pParser; 545 delete pParser;
548 // delete pDoc;
549 } 546 }
550 547
551 DLLEXPORT unsigned long STDCALL FPDF_GetLastError() 548 DLLEXPORT unsigned long STDCALL FPDF_GetLastError()
552 { 549 {
553 return GetLastError(); 550 return GetLastError();
554 } 551 }
555 552
556 DLLEXPORT void STDCALL FPDF_DeviceToPage(FPDF_PAGE page, int start_x, int start_ y, int size_x, int size_y, 553 DLLEXPORT void STDCALL FPDF_DeviceToPage(FPDF_PAGE page, int start_x, int start_ y, int size_x, int size_y,
557 int rotate, int device_x, int de vice_y, double* page_x, double* page_y) 554 int rotate, int device_x, int de vice_y, double* page_x, double* page_y)
558 { 555 {
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 if (bitmap == NULL) return 0; 654 if (bitmap == NULL) return 0;
658 return ((CFX_DIBitmap*)bitmap)->GetPitch(); 655 return ((CFX_DIBitmap*)bitmap)->GetPitch();
659 } 656 }
660 657
661 DLLEXPORT void STDCALL FPDFBitmap_Destroy(FPDF_BITMAP bitmap) 658 DLLEXPORT void STDCALL FPDFBitmap_Destroy(FPDF_BITMAP bitmap)
662 { 659 {
663 delete (CFX_DIBitmap*)bitmap; 660 delete (CFX_DIBitmap*)bitmap;
664 } 661 }
665 662
666 void FPDF_RenderPage_Retail(CRenderContext* pContext, FPDF_PAGE page, int start_ x, int start_y, int size_x, int size_y, 663 void FPDF_RenderPage_Retail(CRenderContext* pContext, FPDF_PAGE page, int start_ x, int start_y, int size_x, int size_y,
667 » » » » » » int rotate, int flags,FX_BOOL bN eedToRestore, IFSDK_PAUSE_Adapter * pause ) 664 int rotate, int flags,FX_BOOL bNeedToRestore, IFSDK_ PAUSE_Adapter * pause )
668 { 665 {
669 CPDF_Page* pPage = (CPDF_Page*)page; 666 CPDF_Page* pPage = (CPDF_Page*)page;
670 if (pPage == NULL) return; 667 if (pPage == NULL) return;
671 668
672 if (!pContext->m_pOptions) 669 if (!pContext->m_pOptions)
673 pContext->m_pOptions = new CPDF_RenderOptions; 670 pContext->m_pOptions = new CPDF_RenderOptions;
674 //» CPDF_RenderOptions options; 671
675 if (flags & FPDF_LCD_TEXT) 672 if (flags & FPDF_LCD_TEXT)
676 pContext->m_pOptions->m_Flags |= RENDER_CLEARTYPE; 673 pContext->m_pOptions->m_Flags |= RENDER_CLEARTYPE;
677 else 674 else
678 pContext->m_pOptions->m_Flags &= ~RENDER_CLEARTYPE; 675 pContext->m_pOptions->m_Flags &= ~RENDER_CLEARTYPE;
679 if (flags & FPDF_NO_NATIVETEXT) 676 if (flags & FPDF_NO_NATIVETEXT)
680 pContext->m_pOptions->m_Flags |= RENDER_NO_NATIVETEXT; 677 pContext->m_pOptions->m_Flags |= RENDER_NO_NATIVETEXT;
681 if (flags & FPDF_RENDER_LIMITEDIMAGECACHE) 678 if (flags & FPDF_RENDER_LIMITEDIMAGECACHE)
682 pContext->m_pOptions->m_Flags |= RENDER_LIMITEDIMAGECACHE; 679 pContext->m_pOptions->m_Flags |= RENDER_LIMITEDIMAGECACHE;
683 if (flags & FPDF_RENDER_FORCEHALFTONE) 680 if (flags & FPDF_RENDER_FORCEHALFTONE)
684 pContext->m_pOptions->m_Flags |= RENDER_FORCE_HALFTONE; 681 pContext->m_pOptions->m_Flags |= RENDER_FORCE_HALFTONE;
685 if (flags & FPDF_RENDER_NO_SMOOTHTEXT) 682 if (flags & FPDF_RENDER_NO_SMOOTHTEXT)
686 pContext->m_pOptions->m_Flags |= RENDER_NOTEXTSMOOTH; 683 pContext->m_pOptions->m_Flags |= RENDER_NOTEXTSMOOTH;
687 if (flags & FPDF_RENDER_NO_SMOOTHIMAGE) 684 if (flags & FPDF_RENDER_NO_SMOOTHIMAGE)
688 pContext->m_pOptions->m_Flags |= RENDER_NOIMAGESMOOTH; 685 pContext->m_pOptions->m_Flags |= RENDER_NOIMAGESMOOTH;
689 if (flags & FPDF_RENDER_NO_SMOOTHPATH) 686 if (flags & FPDF_RENDER_NO_SMOOTHPATH)
690 pContext->m_pOptions->m_Flags |= RENDER_NOPATHSMOOTH; 687 pContext->m_pOptions->m_Flags |= RENDER_NOPATHSMOOTH;
691 //Grayscale output 688 //Grayscale output
692 if (flags & FPDF_GRAYSCALE) 689 if (flags & FPDF_GRAYSCALE)
693 { 690 {
694 pContext->m_pOptions->m_ColorMode = RENDER_COLOR_GRAY; 691 pContext->m_pOptions->m_ColorMode = RENDER_COLOR_GRAY;
695 pContext->m_pOptions->m_ForeColor = 0; 692 pContext->m_pOptions->m_ForeColor = 0;
696 pContext->m_pOptions->m_BackColor = 0xffffff; 693 pContext->m_pOptions->m_BackColor = 0xffffff;
697 } 694 }
698 const CPDF_OCContext::UsageType usage = (flags & FPDF_PRINTING) ? CPDF_O CContext::Print : CPDF_OCContext::View; 695 const CPDF_OCContext::UsageType usage = (flags & FPDF_PRINTING) ? CPDF_O CContext::Print : CPDF_OCContext::View;
699
700 pContext->m_pOptions->m_AddFlags = flags >> 8; 696 pContext->m_pOptions->m_AddFlags = flags >> 8;
701
702 pContext->m_pOptions->m_pOCContext = new CPDF_OCContext(pPage->m_pDocume nt, usage); 697 pContext->m_pOptions->m_pOCContext = new CPDF_OCContext(pPage->m_pDocume nt, usage);
703 698
704
705 CFX_AffineMatrix matrix; 699 CFX_AffineMatrix matrix;
706 pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate ); 700 pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate );
707 701
708 FX_RECT clip; 702 FX_RECT clip;
709 clip.left = start_x; 703 clip.left = start_x;
710 clip.right = start_x + size_x; 704 clip.right = start_x + size_x;
711 clip.top = start_y; 705 clip.top = start_y;
712 clip.bottom = start_y + size_y; 706 clip.bottom = start_y + size_y;
713 pContext->m_pDevice->SaveState(); 707 pContext->m_pDevice->SaveState();
714 pContext->m_pDevice->SetClip_Rect(&clip); 708 pContext->m_pDevice->SetClip_Rect(&clip);
715 709
716 pContext->m_pContext = new CPDF_RenderContext; 710 pContext->m_pContext = new CPDF_RenderContext;
717 pContext->m_pContext->Create(pPage); 711 pContext->m_pContext->Create(pPage);
718 pContext->m_pContext->AppendObjectList(pPage, &matrix); 712 pContext->m_pContext->AppendObjectList(pPage, &matrix);
719 713
720 if (flags & FPDF_ANNOT) { 714 if (flags & FPDF_ANNOT) {
721 pContext->m_pAnnots = new CPDF_AnnotList(pPage); 715 pContext->m_pAnnots = new CPDF_AnnotList(pPage);
722 FX_BOOL bPrinting = pContext->m_pDevice->GetDeviceClass() != FXD C_DISPLAY; 716 FX_BOOL bPrinting = pContext->m_pDevice->GetDeviceClass() != FXD C_DISPLAY;
723 pContext->m_pAnnots->DisplayAnnots(pPage, pContext->m_pContext, bPrinting, &matrix, TRUE, NULL); 717 pContext->m_pAnnots->DisplayAnnots(pPage, pContext->m_pContext, bPrinting, &matrix, TRUE, NULL);
724 } 718 }
725 719
726 pContext->m_pRenderer = new CPDF_ProgressiveRenderer; 720 pContext->m_pRenderer = new CPDF_ProgressiveRenderer;
727 pContext->m_pRenderer->Start(pContext->m_pContext, pContext->m_pDevice, pContext->m_pOptions, pause); 721 pContext->m_pRenderer->Start(pContext->m_pContext, pContext->m_pDevice, pContext->m_pOptions, pause);
728 if (bNeedToRestore) 722 if (bNeedToRestore)
729 { 723 {
730 » pContext->m_pDevice->RestoreState(); 724 » » pContext->m_pDevice->RestoreState();
731 } 725 }
732 } 726 }
733 727
734 DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, int page_i ndex, double* width, double* height) 728 DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, int page_i ndex, double* width, double* height)
735 { 729 {
736 CPDF_Document* pDoc = (CPDF_Document*)document; 730 CPDF_Document* pDoc = (CPDF_Document*)document;
737 if(pDoc == NULL) 731 if(pDoc == NULL)
738 return FALSE; 732 return FALSE;
739 733
740 CPDF_Dictionary* pDict = pDoc->GetPage(page_index); 734 CPDF_Dictionary* pDict = pDoc->GetPage(page_index);
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 if (!buffer) { 851 if (!buffer) {
858 *buflen = len; 852 *buflen = len;
859 } else if (*buflen >= len) { 853 } else if (*buflen >= len) {
860 memcpy(buffer, utf16Name.c_str(), len); 854 memcpy(buffer, utf16Name.c_str(), len);
861 *buflen = len; 855 *buflen = len;
862 } else { 856 } else {
863 *buflen = -1; 857 *buflen = -1;
864 } 858 }
865 return (FPDF_DEST)pDestObj; 859 return (FPDF_DEST)pDestObj;
866 } 860 }
OLDNEW
« no previous file with comments | « fpdfsdk/src/fpdf_progressive.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698