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

Side by Side Diff: fpdfsdk/fpdfview.cpp

Issue 2612243005: Add postscript path (Closed)
Patch Set: Small fixes, add comments Created 3 years, 11 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 #include <utility> 10 #include <utility>
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 break; 422 break;
423 } 423 }
424 SetLastError(err_code); 424 SetLastError(err_code);
425 } 425 }
426 426
427 DLLEXPORT void STDCALL FPDF_SetSandBoxPolicy(FPDF_DWORD policy, 427 DLLEXPORT void STDCALL FPDF_SetSandBoxPolicy(FPDF_DWORD policy,
428 FPDF_BOOL enable) { 428 FPDF_BOOL enable) {
429 return FSDK_SetSandBoxPolicy(policy, enable); 429 return FSDK_SetSandBoxPolicy(policy, enable);
430 } 430 }
431 431
432 #if defined(_WIN32) && defined(PDFIUM_PRINT_TEXT_WITH_GDI) 432 #if defined(_WIN32)
433 #if defined(PDFIUM_PRINT_TEXT_WITH_GDI)
433 DLLEXPORT void STDCALL 434 DLLEXPORT void STDCALL
434 FPDF_SetTypefaceAccessibleFunc(PDFiumEnsureTypefaceCharactersAccessible func) { 435 FPDF_SetTypefaceAccessibleFunc(PDFiumEnsureTypefaceCharactersAccessible func) {
435 g_pdfium_typeface_accessible_func = func; 436 g_pdfium_typeface_accessible_func = func;
436 } 437 }
437 438
438 DLLEXPORT void STDCALL FPDF_SetPrintTextWithGDI(FPDF_BOOL use_gdi) { 439 DLLEXPORT void STDCALL FPDF_SetPrintTextWithGDI(FPDF_BOOL use_gdi) {
439 g_pdfium_print_text_with_gdi = !!use_gdi; 440 g_pdfium_print_text_with_gdi = !!use_gdi;
440 } 441 }
441 #endif 442 #endif // PDFIUM_PRINT_TEXT_WITH_GDI
443
444 DLLEXPORT void STDCALL FPDF_SetPrintPostscriptLevel(int postscript_level) {
445 g_pdfium_print_postscript_level = postscript_level;
Tom Sepez 2017/01/09 20:18:20 Do we want to validate this and return an error if
rbpotter 2017/01/10 20:28:24 Done.
446 }
447 #endif // defined(_WIN32)
442 448
443 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path, 449 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path,
444 FPDF_BYTESTRING password) { 450 FPDF_BYTESTRING password) {
445 // NOTE: the creation of the file needs to be by the embedder on the 451 // NOTE: the creation of the file needs to be by the embedder on the
446 // other side of this API. 452 // other side of this API.
447 CFX_RetainPtr<IFX_SeekableReadStream> pFileAccess = 453 CFX_RetainPtr<IFX_SeekableReadStream> pFileAccess =
448 IFX_SeekableReadStream::CreateFromFilename((const FX_CHAR*)file_path); 454 IFX_SeekableReadStream::CreateFromFilename((const FX_CHAR*)file_path);
449 if (!pFileAccess) 455 if (!pFileAccess)
450 return nullptr; 456 return nullptr;
451 457
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 int rotate, 655 int rotate,
650 int flags) { 656 int flags) {
651 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); 657 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
652 if (!pPage) 658 if (!pPage)
653 return; 659 return;
654 660
655 CPDF_PageRenderContext* pContext = new CPDF_PageRenderContext; 661 CPDF_PageRenderContext* pContext = new CPDF_PageRenderContext;
656 pPage->SetRenderContext(pdfium::WrapUnique(pContext)); 662 pPage->SetRenderContext(pdfium::WrapUnique(pContext));
657 663
658 std::unique_ptr<CFX_DIBitmap> pBitmap; 664 std::unique_ptr<CFX_DIBitmap> pBitmap;
665 // TODO: This results in unnecessary rasterization of some PDFs due to
666 // HasImageMask() returning true. If any image on the page is a mask, the
667 // entire page gets rasterized and the spool size gets huge.
659 const bool bNewBitmap = 668 const bool bNewBitmap =
660 pPage->BackgroundAlphaNeeded() || pPage->HasImageMask(); 669 pPage->BackgroundAlphaNeeded() || pPage->HasImageMask();
661 if (bNewBitmap) { 670 if (bNewBitmap) {
662 pBitmap = pdfium::MakeUnique<CFX_DIBitmap>(); 671 pBitmap = pdfium::MakeUnique<CFX_DIBitmap>();
663 pBitmap->Create(size_x, size_y, FXDIB_Argb); 672 pBitmap->Create(size_x, size_y, FXDIB_Argb);
664 pBitmap->Clear(0x00ffffff); 673 pBitmap->Clear(0x00ffffff);
665 CFX_FxgeDevice* pDevice = new CFX_FxgeDevice; 674 CFX_FxgeDevice* pDevice = new CFX_FxgeDevice;
666 pContext->m_pDevice = pdfium::WrapUnique(pDevice); 675 pContext->m_pDevice = pdfium::WrapUnique(pDevice);
667 pDevice->Attach(pBitmap.get(), false, nullptr, false); 676 pDevice->Attach(pBitmap.get(), false, nullptr, false);
668 } else { 677 } else {
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
1222 if (!buffer) { 1231 if (!buffer) {
1223 *buflen = len; 1232 *buflen = len;
1224 } else if (len <= *buflen) { 1233 } else if (len <= *buflen) {
1225 memcpy(buffer, utf16Name.c_str(), len); 1234 memcpy(buffer, utf16Name.c_str(), len);
1226 *buflen = len; 1235 *buflen = len;
1227 } else { 1236 } else {
1228 *buflen = -1; 1237 *buflen = -1;
1229 } 1238 }
1230 return (FPDF_DEST)pDestObj; 1239 return (FPDF_DEST)pDestObj;
1231 } 1240 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698