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

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

Issue 1236383003: Merge to XFA: Kill Func_Renderpage global function pointer. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Don't IWYDU 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') | xfa/include/fwl/adapter/fwl_adaptertimermgr.h » ('j') | 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/fpdfapi/fpdf_module.h" 7 #include "../../core/include/fpdfapi/fpdf_module.h"
8 #include "../../core/include/fxcodec/fx_codec.h" 8 #include "../../core/include/fxcodec/fx_codec.h"
9 #include "../../core/include/fxcrt/fx_safe_types.h" 9 #include "../../core/include/fxcrt/fx_safe_types.h"
10 #include "../../public/fpdf_ext.h" 10 #include "../../public/fpdf_ext.h"
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
442 if (!page) return 0.0; 442 if (!page) return 0.0;
443 // return ((CPDF_Page*)page)->GetPageHeight(); 443 // return ((CPDF_Page*)page)->GetPageHeight();
444 return ((CPDFXFA_Page*)page)->GetPageHeight(); 444 return ((CPDFXFA_Page*)page)->GetPageHeight();
445 } 445 }
446 446
447 void DropContext(void* data) 447 void DropContext(void* data)
448 { 448 {
449 delete (CRenderContext*)data; 449 delete (CRenderContext*)data;
450 } 450 }
451 451
452 void FPDF_RenderPage_Retail(CRenderContext* pContext, FPDF_PAGE page, int start_ x, int start_y, int size_x, int size_y,
453 int rotate, int flags,FX_BOOL bN eedToRestore, IFSDK_PAUSE_Adapter * pause );
454 void (*Func_RenderPage)(CRenderContext*, FPDF_PAGE page, int start_x, int start_ y, int size_x, int size_y,
455 int rotate, int flags,FX_BOOL bN eedToRestore, IFSDK_PAUSE_Adapter * pause ) = FPDF_RenderPage_Retail;
456
457 #if defined(_DEBUG) || defined(DEBUG) 452 #if defined(_DEBUG) || defined(DEBUG)
458 #define DEBUG_TRACE 453 #define DEBUG_TRACE
459 #endif 454 #endif
460 455
461 #if defined(_WIN32) 456 #if defined(_WIN32)
462 DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc, FPDF_PAGE page, int start_x, int start_y, int size_x, int size_y, 457 DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc, FPDF_PAGE page, int start_x, int start_y, int size_x, int size_y,
463 int rotate, int flags) 458 int rotate, int flags)
464 { 459 {
465 if (page==NULL) return; 460 if (page==NULL) return;
466 CPDF_Page* pPage = ((CPDFXFA_Page*)page)->GetPDFPage(); 461 CPDF_Page* pPage = ((CPDFXFA_Page*)page)->GetPDFPage();
(...skipping 16 matching lines...) Expand all
483 pContext->m_pDevice = FX_NEW CFX_SkiaDevice; 478 pContext->m_pDevice = FX_NEW CFX_SkiaDevice;
484 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pB itmap); 479 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pB itmap);
485 #else 480 #else
486 pContext->m_pDevice = FX_NEW CFX_FxgeDevice; 481 pContext->m_pDevice = FX_NEW CFX_FxgeDevice;
487 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pB itmap); 482 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pB itmap);
488 #endif 483 #endif
489 } 484 }
490 else 485 else
491 pContext->m_pDevice = FX_NEW CFX_WindowsDevice(dc); 486 pContext->m_pDevice = FX_NEW CFX_WindowsDevice(dc);
492 487
493 » Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate , flags,TRUE,NULL); 488 » FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
489 rotate, flags, TRUE, NULL);
494 490
495 if (bBackgroundAlphaNeeded) 491 if (bBackgroundAlphaNeeded)
496 { 492 {
497 if (pBitmap) 493 if (pBitmap)
498 { 494 {
499 CFX_WindowsDevice WinDC(dc); 495 CFX_WindowsDevice WinDC(dc);
500 496
501 if (WinDC.GetDeviceCaps(FXDC_DEVICE_CLASS) == FXDC_PRINT ER) 497 if (WinDC.GetDeviceCaps(FXDC_DEVICE_CLASS) == FXDC_PRINT ER)
502 { 498 {
503 CFX_DIBitmap* pDst = FX_NEW CFX_DIBitmap; 499 CFX_DIBitmap* pDst = FX_NEW CFX_DIBitmap;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 pContext->m_pBitmap = new CFX_DIBitmap; 562 pContext->m_pBitmap = new CFX_DIBitmap;
567 pContext->m_pBitmap->Create(width, height, FXDIB_Rgb, (uint8_t*)pBuffer) ; 563 pContext->m_pBitmap->Create(width, height, FXDIB_Rgb, (uint8_t*)pBuffer) ;
568 pContext->m_pDevice = new CPDF_FxgeDevice; 564 pContext->m_pDevice = new CPDF_FxgeDevice;
569 ((CPDF_FxgeDevice*)pContext->m_pDevice)->Attach(pContext->m_pBitmap); 565 ((CPDF_FxgeDevice*)pContext->m_pDevice)->Attach(pContext->m_pBitmap);
570 566
571 #ifdef DEBUG_TRACE 567 #ifdef DEBUG_TRACE
572 CPDF_ModuleMgr::Get()->ReportError(999, "Ready for PDF rendering"); 568 CPDF_ModuleMgr::Get()->ReportError(999, "Ready for PDF rendering");
573 #endif 569 #endif
574 570
575 // output to bitmap device 571 // output to bitmap device
576 » Func_RenderPage(pContext, page, start_x - rect.left, start_y - rect.top, size_x, size_y, rotate, flags); 572 » FPDF_RenderPage_Retail(pContext, page, start_x - rect.left,
573 start_y - rect.top, size_x, size_y, rotate, flags);
577 574
578 #ifdef DEBUG_TRACE 575 #ifdef DEBUG_TRACE
579 CPDF_ModuleMgr::Get()->ReportError(999, "Finished PDF rendering"); 576 CPDF_ModuleMgr::Get()->ReportError(999, "Finished PDF rendering");
580 #endif 577 #endif
581 578
582 // Now output to real device 579 // Now output to real device
583 HDC hMemDC = CreateCompatibleDC(dc); 580 HDC hMemDC = CreateCompatibleDC(dc);
584 if (hMemDC == NULL) { 581 if (hMemDC == NULL) {
585 #if defined(DEBUG) || defined(_DEBUG) 582 #if defined(DEBUG) || defined(_DEBUG)
586 char str[128]; 583 char str[128];
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi tmap); 631 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi tmap);
635 #else 632 #else
636 pContext->m_pDevice = FX_NEW CFX_FxgeDevice; 633 pContext->m_pDevice = FX_NEW CFX_FxgeDevice;
637 634
638 if (flags & FPDF_REVERSE_BYTE_ORDER) 635 if (flags & FPDF_REVERSE_BYTE_ORDER)
639 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi tmap,0,TRUE); 636 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi tmap,0,TRUE);
640 else 637 else
641 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi tmap); 638 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi tmap);
642 #endif 639 #endif
643 640
644 » Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate , flags,TRUE,NULL); 641 » FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
642 rotate, flags, TRUE, NULL);
645 643
646 delete pContext; 644 delete pContext;
647 pPage->RemovePrivateData((void*)1); 645 pPage->RemovePrivateData((void*)1);
648 } 646 }
649 647
650 DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page) 648 DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page)
651 { 649 {
652 if (!page) return; 650 if (!page) return;
653 651
654 CPDFXFA_Page* pPage = (CPDFXFA_Page*)page; 652 CPDFXFA_Page* pPage = (CPDFXFA_Page*)page;
655 pPage->Release(); 653 pPage->Release();
656 } 654 }
657 655
658 DLLEXPORT void STDCALL FPDF_CloseDocument(FPDF_DOCUMENT document) 656 DLLEXPORT void STDCALL FPDF_CloseDocument(FPDF_DOCUMENT document)
659 { 657 {
660 if (!document) 658 if (!document)
661 return; 659 return;
660
662 CPDFXFA_Document* pDoc = (CPDFXFA_Document*)document; 661 CPDFXFA_Document* pDoc = (CPDFXFA_Document*)document;
663 delete pDoc; 662 delete pDoc;
664
665 // CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser();
666 // if (pParser == NULL)
667 // {
668 // delete pDoc;
669 // return;
670 // }
671 // delete pParser;
672 // delete pDoc;
673 } 663 }
674 664
675 DLLEXPORT unsigned long STDCALL FPDF_GetLastError() 665 DLLEXPORT unsigned long STDCALL FPDF_GetLastError()
676 { 666 {
677 return GetLastError(); 667 return GetLastError();
678 } 668 }
679 669
680 DLLEXPORT void STDCALL FPDF_DeviceToPage(FPDF_PAGE page, int start_x, int start_ y, int size_x, int size_y, 670 DLLEXPORT void STDCALL FPDF_DeviceToPage(FPDF_PAGE page, int start_x, int start_ y, int size_x, int size_y,
681 int rotate, int device_x, int de vice_y, double* page_x, double* page_y) 671 int rotate, int device_x, int de vice_y, double* page_x, double* page_y)
682 { 672 {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 if (bitmap == NULL) return 0; 754 if (bitmap == NULL) return 0;
765 return ((CFX_DIBitmap*)bitmap)->GetPitch(); 755 return ((CFX_DIBitmap*)bitmap)->GetPitch();
766 } 756 }
767 757
768 DLLEXPORT void STDCALL FPDFBitmap_Destroy(FPDF_BITMAP bitmap) 758 DLLEXPORT void STDCALL FPDFBitmap_Destroy(FPDF_BITMAP bitmap)
769 { 759 {
770 delete (CFX_DIBitmap*)bitmap; 760 delete (CFX_DIBitmap*)bitmap;
771 } 761 }
772 762
773 void FPDF_RenderPage_Retail(CRenderContext* pContext, FPDF_PAGE page, int start_ x, int start_y, int size_x, int size_y, 763 void FPDF_RenderPage_Retail(CRenderContext* pContext, FPDF_PAGE page, int start_ x, int start_y, int size_x, int size_y,
774 » » » » » » int rotate, int flags,FX_BOOL bN eedToRestore, IFSDK_PAUSE_Adapter * pause ) 764 int rotate, int flags,FX_BOOL bNeedToRestore, IFSDK_ PAUSE_Adapter * pause )
775 { 765 {
776 CPDF_Page* pPage = ((CPDFXFA_Page*)page)->GetPDFPage(); 766 CPDF_Page* pPage = ((CPDFXFA_Page*)page)->GetPDFPage();
777 if (pPage == NULL) return; 767 if (pPage == NULL) return;
778 768
779 if (!pContext->m_pOptions) 769 if (!pContext->m_pOptions)
780 pContext->m_pOptions = new CPDF_RenderOptions; 770 pContext->m_pOptions = new CPDF_RenderOptions;
781 //» CPDF_RenderOptions options; 771
782 if (flags & FPDF_LCD_TEXT) 772 if (flags & FPDF_LCD_TEXT)
783 pContext->m_pOptions->m_Flags |= RENDER_CLEARTYPE; 773 pContext->m_pOptions->m_Flags |= RENDER_CLEARTYPE;
784 else 774 else
785 pContext->m_pOptions->m_Flags &= ~RENDER_CLEARTYPE; 775 pContext->m_pOptions->m_Flags &= ~RENDER_CLEARTYPE;
786 if (flags & FPDF_NO_NATIVETEXT) 776 if (flags & FPDF_NO_NATIVETEXT)
787 pContext->m_pOptions->m_Flags |= RENDER_NO_NATIVETEXT; 777 pContext->m_pOptions->m_Flags |= RENDER_NO_NATIVETEXT;
788 if (flags & FPDF_RENDER_LIMITEDIMAGECACHE) 778 if (flags & FPDF_RENDER_LIMITEDIMAGECACHE)
789 pContext->m_pOptions->m_Flags |= RENDER_LIMITEDIMAGECACHE; 779 pContext->m_pOptions->m_Flags |= RENDER_LIMITEDIMAGECACHE;
790 if (flags & FPDF_RENDER_FORCEHALFTONE) 780 if (flags & FPDF_RENDER_FORCEHALFTONE)
791 pContext->m_pOptions->m_Flags |= RENDER_FORCE_HALFTONE; 781 pContext->m_pOptions->m_Flags |= RENDER_FORCE_HALFTONE;
792 //Grayscale output 782 //Grayscale output
793 if (flags & FPDF_GRAYSCALE) 783 if (flags & FPDF_GRAYSCALE)
794 { 784 {
795 pContext->m_pOptions->m_ColorMode = RENDER_COLOR_GRAY; 785 pContext->m_pOptions->m_ColorMode = RENDER_COLOR_GRAY;
796 pContext->m_pOptions->m_ForeColor = 0; 786 pContext->m_pOptions->m_ForeColor = 0;
797 pContext->m_pOptions->m_BackColor = 0xffffff; 787 pContext->m_pOptions->m_BackColor = 0xffffff;
798 } 788 }
799 const CPDF_OCContext::UsageType usage = (flags & FPDF_PRINTING) ? CPDF_O CContext::Print : CPDF_OCContext::View; 789 const CPDF_OCContext::UsageType usage = (flags & FPDF_PRINTING) ? CPDF_O CContext::Print : CPDF_OCContext::View;
800
801 pContext->m_pOptions->m_AddFlags = flags >> 8; 790 pContext->m_pOptions->m_AddFlags = flags >> 8;
802
803 pContext->m_pOptions->m_pOCContext = new CPDF_OCContext(pPage->m_pDocume nt, usage); 791 pContext->m_pOptions->m_pOCContext = new CPDF_OCContext(pPage->m_pDocume nt, usage);
804 792
805
806 CFX_AffineMatrix matrix; 793 CFX_AffineMatrix matrix;
807 pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate ); 794 pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate );
808 795
809 FX_RECT clip; 796 FX_RECT clip;
810 clip.left = start_x; 797 clip.left = start_x;
811 clip.right = start_x + size_x; 798 clip.right = start_x + size_x;
812 clip.top = start_y; 799 clip.top = start_y;
813 clip.bottom = start_y + size_y; 800 clip.bottom = start_y + size_y;
814 pContext->m_pDevice->SaveState(); 801 pContext->m_pDevice->SaveState();
815 pContext->m_pDevice->SetClip_Rect(&clip); 802 pContext->m_pDevice->SetClip_Rect(&clip);
816 803
817 pContext->m_pContext = FX_NEW CPDF_RenderContext; 804 pContext->m_pContext = FX_NEW CPDF_RenderContext;
818 pContext->m_pContext->Create(pPage); 805 pContext->m_pContext->Create(pPage);
819 pContext->m_pContext->AppendObjectList(pPage, &matrix); 806 pContext->m_pContext->AppendObjectList(pPage, &matrix);
820 807
821 if (flags & FPDF_ANNOT) { 808 if (flags & FPDF_ANNOT) {
822 pContext->m_pAnnots = FX_NEW CPDF_AnnotList(pPage); 809 pContext->m_pAnnots = FX_NEW CPDF_AnnotList(pPage);
823 FX_BOOL bPrinting = pContext->m_pDevice->GetDeviceClass() != FXD C_DISPLAY; 810 FX_BOOL bPrinting = pContext->m_pDevice->GetDeviceClass() != FXD C_DISPLAY;
824 pContext->m_pAnnots->DisplayAnnots(pPage, pContext->m_pContext, bPrinting, &matrix, TRUE, NULL); 811 pContext->m_pAnnots->DisplayAnnots(pPage, pContext->m_pContext, bPrinting, &matrix, TRUE, NULL);
825 } 812 }
826 813
827 pContext->m_pRenderer = FX_NEW CPDF_ProgressiveRenderer; 814 pContext->m_pRenderer = FX_NEW CPDF_ProgressiveRenderer;
828 pContext->m_pRenderer->Start(pContext->m_pContext, pContext->m_pDevice, pContext->m_pOptions, pause); 815 pContext->m_pRenderer->Start(pContext->m_pContext, pContext->m_pDevice, pContext->m_pOptions, pause);
829 if (bNeedToRestore) 816 if (bNeedToRestore)
830 { 817 {
831 » pContext->m_pDevice->RestoreState(); 818 » » pContext->m_pDevice->RestoreState();
832 } 819 }
833 820
834 //#endif 821 //#endif
835 } 822 }
836 823
837 DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, int page_i ndex, double* width, double* height) 824 DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, int page_i ndex, double* width, double* height)
838 { 825 {
839 // CPDF_Document* pDoc = (CPDF_Document*)document; 826 // CPDF_Document* pDoc = (CPDF_Document*)document;
840 // if(pDoc == NULL) 827 // if(pDoc == NULL)
841 // return FALSE; 828 // return FALSE;
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
1037 if (!buffer) { 1024 if (!buffer) {
1038 *buflen = len; 1025 *buflen = len;
1039 } else if (*buflen >= len) { 1026 } else if (*buflen >= len) {
1040 memcpy(buffer, utf16Name.c_str(), len); 1027 memcpy(buffer, utf16Name.c_str(), len);
1041 *buflen = len; 1028 *buflen = len;
1042 } else { 1029 } else {
1043 *buflen = -1; 1030 *buflen = -1;
1044 } 1031 }
1045 return (FPDF_DEST)pDestObj; 1032 return (FPDF_DEST)pDestObj;
1046 } 1033 }
OLDNEW
« no previous file with comments | « fpdfsdk/src/fpdf_progressive.cpp ('k') | xfa/include/fwl/adapter/fwl_adaptertimermgr.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698