summaryrefslogtreecommitdiff
path: root/core/fxge/win32/fx_win32_print.cpp
diff options
context:
space:
mode:
authorLei Zhang <thestig@chromium.org>2018-04-25 21:10:05 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-04-25 21:10:05 +0000
commit9ed6bd7150a9333cb28d149c98e3d316c3ededdf (patch)
treed8b293aaec7be2acc7645150a194d9625a344758 /core/fxge/win32/fx_win32_print.cpp
parentd7f3f1e1b99f1e10bfce83d779303c678965b57c (diff)
downloadpdfium-9ed6bd7150a9333cb28d149c98e3d316c3ededdf.tar.xz
Add PostScript PASSTHROUGH options to FPDF_SetPrintMode().
The existing PostScript modes write data into EMF comments. This satisfies Chromium's use case, but other embedders want to write data out via ExtEscape() in PASSTHROUGH mode. BUG=pdfium:1068 Change-Id: I998035e99fbb84b16dcd244b750b476cecc3bd22 Reviewed-on: https://pdfium-review.googlesource.com/31299 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org> Reviewed-by: Rebekah Potter <rbpotter@chromium.org>
Diffstat (limited to 'core/fxge/win32/fx_win32_print.cpp')
-rw-r--r--core/fxge/win32/fx_win32_print.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/core/fxge/win32/fx_win32_print.cpp b/core/fxge/win32/fx_win32_print.cpp
index da40b8a762..f36fa84364 100644
--- a/core/fxge/win32/fx_win32_print.cpp
+++ b/core/fxge/win32/fx_win32_print.cpp
@@ -334,8 +334,18 @@ CPSPrinterDriver::CPSPrinterDriver(HDC hDC,
: m_hDC(hDC), m_bCmykOutput(bCmykOutput) {
// |mode| should be PostScript.
ASSERT(mode == WindowsPrintMode::kModePostScript2 ||
- mode == WindowsPrintMode::kModePostScript3);
- int pslevel = mode == WindowsPrintMode::kModePostScript2 ? 2 : 3;
+ mode == WindowsPrintMode::kModePostScript3 ||
+ mode == WindowsPrintMode::kModePostScript2PassThrough ||
+ mode == WindowsPrintMode::kModePostScript3PassThrough);
+ int pslevel = (mode == WindowsPrintMode::kModePostScript2 ||
+ mode == WindowsPrintMode::kModePostScript2PassThrough)
+ ? 2
+ : 3;
+ CPSOutput::OutputMode output_mode =
+ (mode == WindowsPrintMode::kModePostScript2 ||
+ mode == WindowsPrintMode::kModePostScript3)
+ ? CPSOutput::OutputMode::kGdiComment
+ : CPSOutput::OutputMode::kExtEscape;
m_HorzSize = ::GetDeviceCaps(m_hDC, HORZSIZE);
m_VertSize = ::GetDeviceCaps(m_hDC, VERTSIZE);
@@ -343,8 +353,8 @@ CPSPrinterDriver::CPSPrinterDriver(HDC hDC,
m_Height = ::GetDeviceCaps(m_hDC, VERTRES);
m_nBitsPerPixel = ::GetDeviceCaps(m_hDC, BITSPIXEL);
- m_PSRenderer.Init(pdfium::MakeRetain<CPSOutput>(m_hDC), pslevel, m_Width,
- m_Height, bCmykOutput);
+ m_PSRenderer.Init(pdfium::MakeRetain<CPSOutput>(m_hDC, output_mode), pslevel,
+ m_Width, m_Height, bCmykOutput);
HRGN hRgn = ::CreateRectRgn(0, 0, 1, 1);
int ret = ::GetClipRgn(hDC, hRgn);
if (ret == 1) {