diff options
author | wileyrya <wileyrr@gmail.com> | 2017-05-26 15:20:23 -0500 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-05-26 20:45:40 +0000 |
commit | 06bbdef296b483e6f666156b198319019d3c6373 (patch) | |
tree | b63b6fe150abc4fb9eef8db39c76c63a60ba0ca9 /core/fpdfapi/edit | |
parent | cdfc035f4ea2e786c7d7820e143c18bdb11fac3f (diff) | |
download | pdfium-06bbdef296b483e6f666156b198319019d3c6373.tar.xz |
Add public API for setting the blend mode on a page object.
BUG=pdfium:720
R=npm@chromium.org
Change-Id: I2a43b34da6946265ca06502b9ff19ad352fd18cb
Reviewed-on: https://pdfium-review.googlesource.com/5953
Commit-Queue: Nicolás Peña <npm@chromium.org>
Reviewed-by: Nicolás Peña <npm@chromium.org>
Diffstat (limited to 'core/fpdfapi/edit')
-rw-r--r-- | core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp index e9ea064810..2cf10bd7cb 100644 --- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp +++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp @@ -225,8 +225,12 @@ void CPDF_PageContentGenerator::ProcessGraphics(CFX_ByteTextBuf* buf, GraphicsData graphD; graphD.fillAlpha = pPageObj->m_GeneralState.GetFillAlpha(); graphD.strokeAlpha = pPageObj->m_GeneralState.GetStrokeAlpha(); - if (graphD.fillAlpha == 1.0f && graphD.strokeAlpha == 1.0f) + int blend_type = pPageObj->m_GeneralState.GetBlendType(); + if (graphD.fillAlpha == 1.0f && graphD.strokeAlpha == 1.0f && + (blend_type == FXDIB_BLEND_UNSUPPORTED || + blend_type == FXDIB_BLEND_NORMAL)) { return; + } CFX_ByteString name; auto it = m_pPage->m_GraphicsMap.find(graphD); @@ -234,8 +238,17 @@ void CPDF_PageContentGenerator::ProcessGraphics(CFX_ByteTextBuf* buf, name = it->second; } else { auto gsDict = pdfium::MakeUnique<CPDF_Dictionary>(); - gsDict->SetNewFor<CPDF_Number>("ca", graphD.fillAlpha); - gsDict->SetNewFor<CPDF_Number>("CA", graphD.strokeAlpha); + if (graphD.fillAlpha != 1.0f) + gsDict->SetNewFor<CPDF_Number>("ca", graphD.fillAlpha); + + if (graphD.strokeAlpha != 1.0f) + gsDict->SetNewFor<CPDF_Number>("CA", graphD.strokeAlpha); + + if (blend_type != FXDIB_BLEND_UNSUPPORTED && + blend_type != FXDIB_BLEND_NORMAL) { + gsDict->SetNewFor<CPDF_Name>("BM", + pPageObj->m_GeneralState.GetBlendMode()); + } CPDF_Object* pDict = m_pDocument->AddIndirectObject(std::move(gsDict)); uint32_t dwObjNum = pDict->GetObjNum(); name = RealizeResource(dwObjNum, "ExtGState"); |