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

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

Issue 1776313002: Add bitmaps and skp output to Skia port (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: wip; add skp output to test framework Created 4 years, 9 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 "public/fpdfview.h" 7 #include "public/fpdfview.h"
8 8
9 #include <memory> 9 #include <memory>
10 10
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 int rotate, 637 int rotate,
638 int flags) { 638 int flags) {
639 if (!bitmap) 639 if (!bitmap)
640 return; 640 return;
641 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); 641 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
642 if (!pPage) 642 if (!pPage)
643 return; 643 return;
644 CRenderContext* pContext = new CRenderContext; 644 CRenderContext* pContext = new CRenderContext;
645 pPage->SetPrivateData((void*)1, pContext, DropContext); 645 pPage->SetPrivateData((void*)1, pContext, DropContext);
646 #ifdef _SKIA_SUPPORT_ 646 #ifdef _SKIA_SUPPORT_
647 pContext->m_pDevice = new CFX_SkiaDevice; 647 pContext->m_pDevice = new CFX_SkiaDevice();
648 648
649 if (flags & FPDF_REVERSE_BYTE_ORDER) 649 if (flags & FPDF_REVERSE_BYTE_ORDER)
650 ((CFX_SkiaDevice*)pContext->m_pDevice) 650 ((CFX_SkiaDevice*)pContext->m_pDevice)
651 ->Attach((CFX_DIBitmap*)bitmap, 0, TRUE); 651 ->Attach((CFX_DIBitmap*)bitmap, 0, TRUE);
652 else 652 else
653 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap); 653 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
654 #else 654 #else
655 pContext->m_pDevice = new CFX_FxgeDevice; 655 pContext->m_pDevice = new CFX_FxgeDevice;
656 656
657 if (flags & FPDF_REVERSE_BYTE_ORDER) 657 if (flags & FPDF_REVERSE_BYTE_ORDER)
658 ((CFX_FxgeDevice*)pContext->m_pDevice) 658 ((CFX_FxgeDevice*)pContext->m_pDevice)
659 ->Attach((CFX_DIBitmap*)bitmap, 0, TRUE); 659 ->Attach((CFX_DIBitmap*)bitmap, 0, TRUE);
660 else 660 else
661 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap); 661 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
662 #endif 662 #endif
663 663
664 FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y, 664 FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
665 rotate, flags, TRUE, NULL); 665 rotate, flags, TRUE, NULL);
666 666
667 delete pContext; 667 delete pContext;
668 pPage->RemovePrivateData((void*)1); 668 pPage->RemovePrivateData((void*)1);
669 } 669 }
670 670
671 FPDF_BITMAP FPDF_RenderPageSkp(FPDF_PAGE page,
672 int size_x,
673 int size_y) {
674 #ifdef _SKIA_SUPPORT_
675 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
676 if (!pPage)
677 return nullptr;
678 CRenderContext* pContext = new CRenderContext;
dsinclair 2016/03/10 14:38:54 std::unique_ptr?
caryclark 2016/03/10 20:44:55 Done.
679 pPage->SetPrivateData((void*)1, pContext, DropContext);
680 CFX_SkiaDevice* skDevice = new CFX_SkiaDevice(size_x, size_y, nullptr);
681 pContext->m_pDevice = skDevice;
682
683 FPDF_RenderPage_Retail(pContext, page, 0, 0, size_x, size_y,
684 0, 0, TRUE, NULL);
685 void* recorder = skDevice->GetRecorder();
686 delete pContext;
687 pPage->RemovePrivateData((void*)1);
688 return recorder;
689 #else
690 return nullptr;
691 #endif
692 }
693
671 DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page) { 694 DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page) {
672 if (!page) 695 if (!page)
673 return; 696 return;
674 #ifdef PDF_ENABLE_XFA 697 #ifdef PDF_ENABLE_XFA
675 CPDFXFA_Page* pPage = (CPDFXFA_Page*)page; 698 CPDFXFA_Page* pPage = (CPDFXFA_Page*)page;
676 pPage->Release(); 699 pPage->Release();
677 #else // PDF_ENABLE_XFA 700 #else // PDF_ENABLE_XFA
678 CPDFSDK_PageView* pPageView = 701 CPDFSDK_PageView* pPageView =
679 (CPDFSDK_PageView*)(((CPDF_Page*)page))->GetPrivateData((void*)page); 702 (CPDFSDK_PageView*)(((CPDF_Page*)page))->GetPrivateData((void*)page);
680 if (pPageView && pPageView->IsLocked()) { 703 if (pPageView && pPageView->IsLocked()) {
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
1135 if (!buffer) { 1158 if (!buffer) {
1136 *buflen = len; 1159 *buflen = len;
1137 } else if (*buflen >= len) { 1160 } else if (*buflen >= len) {
1138 memcpy(buffer, utf16Name.c_str(), len); 1161 memcpy(buffer, utf16Name.c_str(), len);
1139 *buflen = len; 1162 *buflen = len;
1140 } else { 1163 } else {
1141 *buflen = -1; 1164 *buflen = -1;
1142 } 1165 }
1143 return (FPDF_DEST)pDestObj; 1166 return (FPDF_DEST)pDestObj;
1144 } 1167 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698