OLD | NEW |
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 #include <utility> | 10 #include <utility> |
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
568 pDst->Create(size_x, size_y, FXDIB_Rgb32); | 568 pDst->Create(size_x, size_y, FXDIB_Rgb32); |
569 FXSYS_memset(pDst->GetBuffer(), -1, pitch * size_y); | 569 FXSYS_memset(pDst->GetBuffer(), -1, pitch * size_y); |
570 pDst->CompositeBitmap(0, 0, size_x, size_y, pBitmap.get(), 0, 0, | 570 pDst->CompositeBitmap(0, 0, size_x, size_y, pBitmap.get(), 0, 0, |
571 FXDIB_BLEND_NORMAL, nullptr, FALSE, nullptr); | 571 FXDIB_BLEND_NORMAL, nullptr, FALSE, nullptr); |
572 WinDC.StretchDIBits(pDst.get(), 0, 0, size_x, size_y); | 572 WinDC.StretchDIBits(pDst.get(), 0, 0, size_x, size_y); |
573 } else { | 573 } else { |
574 WinDC.SetDIBits(pBitmap.get(), 0, 0); | 574 WinDC.SetDIBits(pBitmap.get(), 0, 0); |
575 } | 575 } |
576 } | 576 } |
577 | 577 |
578 pPage->SetRenderContext(std::unique_ptr<CPDF_PageRenderContext>()); | 578 pPage->SetRenderContext(nullptr); |
579 } | 579 } |
580 #endif // defined(_WIN32) | 580 #endif // defined(_WIN32) |
581 | 581 |
582 DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap, | 582 DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap, |
583 FPDF_PAGE page, | 583 FPDF_PAGE page, |
584 int start_x, | 584 int start_x, |
585 int start_y, | 585 int start_y, |
586 int size_x, | 586 int size_x, |
587 int size_y, | 587 int size_y, |
588 int rotate, | 588 int rotate, |
589 int flags) { | 589 int flags) { |
590 if (!bitmap) | 590 if (!bitmap) |
591 return; | 591 return; |
592 | 592 |
593 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); | 593 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
594 if (!pPage) | 594 if (!pPage) |
595 return; | 595 return; |
596 | 596 |
597 CPDF_PageRenderContext* pContext = new CPDF_PageRenderContext; | 597 CPDF_PageRenderContext* pContext = new CPDF_PageRenderContext; |
598 pPage->SetRenderContext(pdfium::WrapUnique(pContext)); | 598 pPage->SetRenderContext(pdfium::WrapUnique(pContext)); |
599 CFX_FxgeDevice* pDevice = new CFX_FxgeDevice; | 599 CFX_FxgeDevice* pDevice = new CFX_FxgeDevice; |
600 pContext->m_pDevice.reset(pDevice); | 600 pContext->m_pDevice.reset(pDevice); |
601 CFX_DIBitmap* pBitmap = CFXBitmapFromFPDFBitmap(bitmap); | 601 CFX_DIBitmap* pBitmap = CFXBitmapFromFPDFBitmap(bitmap); |
602 pDevice->Attach(pBitmap, !!(flags & FPDF_REVERSE_BYTE_ORDER), nullptr, false); | 602 pDevice->Attach(pBitmap, !!(flags & FPDF_REVERSE_BYTE_ORDER), nullptr, false); |
603 | 603 |
604 FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y, | 604 FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y, |
605 rotate, flags, TRUE, nullptr); | 605 rotate, flags, TRUE, nullptr); |
606 | 606 |
607 pPage->SetRenderContext(std::unique_ptr<CPDF_PageRenderContext>()); | 607 pPage->SetRenderContext(nullptr); |
608 } | 608 } |
609 | 609 |
610 #ifdef _SKIA_SUPPORT_ | 610 #ifdef _SKIA_SUPPORT_ |
611 DLLEXPORT FPDF_RECORDER STDCALL FPDF_RenderPageSkp(FPDF_PAGE page, | 611 DLLEXPORT FPDF_RECORDER STDCALL FPDF_RenderPageSkp(FPDF_PAGE page, |
612 int size_x, | 612 int size_x, |
613 int size_y) { | 613 int size_y) { |
614 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); | 614 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
615 if (!pPage) | 615 if (!pPage) |
616 return nullptr; | 616 return nullptr; |
617 | 617 |
618 CPDF_PageRenderContext* pContext = new CPDF_PageRenderContext; | 618 CPDF_PageRenderContext* pContext = new CPDF_PageRenderContext; |
619 pPage->SetRenderContext(pdfium::WrapUnique(pContext)); | 619 pPage->SetRenderContext(pdfium::WrapUnique(pContext)); |
620 CFX_FxgeDevice* skDevice = new CFX_FxgeDevice; | 620 CFX_FxgeDevice* skDevice = new CFX_FxgeDevice; |
621 FPDF_RECORDER recorder = skDevice->CreateRecorder(size_x, size_y); | 621 FPDF_RECORDER recorder = skDevice->CreateRecorder(size_x, size_y); |
622 pContext->m_pDevice.reset(skDevice); | 622 pContext->m_pDevice.reset(skDevice); |
623 FPDF_RenderPage_Retail(pContext, page, 0, 0, size_x, size_y, 0, 0, TRUE, | 623 FPDF_RenderPage_Retail(pContext, page, 0, 0, size_x, size_y, 0, 0, TRUE, |
624 nullptr); | 624 nullptr); |
625 pPage->SetRenderContext(std::unique_ptr<CPDF_PageRenderContext>()); | 625 pPage->SetRenderContext(nullptr); |
626 return recorder; | 626 return recorder; |
627 } | 627 } |
628 #endif | 628 #endif |
629 | 629 |
630 DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page) { | 630 DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page) { |
631 UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page); | 631 UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page); |
632 if (!page) | 632 if (!page) |
633 return; | 633 return; |
634 #ifdef PDF_ENABLE_XFA | 634 #ifdef PDF_ENABLE_XFA |
635 pPage->Release(); | 635 pPage->Release(); |
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1095 if (!buffer) { | 1095 if (!buffer) { |
1096 *buflen = len; | 1096 *buflen = len; |
1097 } else if (*buflen >= len) { | 1097 } else if (*buflen >= len) { |
1098 memcpy(buffer, utf16Name.c_str(), len); | 1098 memcpy(buffer, utf16Name.c_str(), len); |
1099 *buflen = len; | 1099 *buflen = len; |
1100 } else { | 1100 } else { |
1101 *buflen = -1; | 1101 *buflen = -1; |
1102 } | 1102 } |
1103 return (FPDF_DEST)pDestObj; | 1103 return (FPDF_DEST)pDestObj; |
1104 } | 1104 } |
OLD | NEW |