diff options
author | Nicolas Pena <npm@chromium.org> | 2017-06-14 11:41:18 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-06-14 16:15:20 +0000 |
commit | 603a31d0c509c7ce3c2709dcb5377a78e6ce4815 (patch) | |
tree | dc5adcb4a16ab862c6fe7393be07cd7cb8f19ecf /core/fpdfapi | |
parent | f0f2a2a528e154b8ceeded297abc3a64007850f8 (diff) | |
download | pdfium-603a31d0c509c7ce3c2709dcb5377a78e6ce4815.tar.xz |
Add blend to GraphicsData
CL [1] added the ability to set the blend mode for a page object. This
CL adds the corresponding component to GraphicsData since the blend
mode is part of ExtGSState. In addition, a test using the SetBlendMode
method is added.
[1] https://pdfium-review.googlesource.com/c/5953/
Bug: pdfium:720
Change-Id: I49120284345185c200a45cc3b37ec59f0658e2dc
Reviewed-on: https://pdfium-review.googlesource.com/6510
Commit-Queue: Nicolás Peña <npm@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'core/fpdfapi')
-rw-r--r-- | core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp | 10 | ||||
-rw-r--r-- | core/fpdfapi/page/cpdf_page.cpp | 4 | ||||
-rw-r--r-- | core/fpdfapi/page/cpdf_page.h | 1 |
3 files changed, 9 insertions, 6 deletions
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp index e06c28d7ae..8b39a7a136 100644 --- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp +++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp @@ -269,10 +269,10 @@ void CPDF_PageContentGenerator::ProcessGraphics(std::ostringstream* buf, GraphicsData graphD; graphD.fillAlpha = pPageObj->m_GeneralState.GetFillAlpha(); graphD.strokeAlpha = pPageObj->m_GeneralState.GetStrokeAlpha(); - int blend_type = pPageObj->m_GeneralState.GetBlendType(); + graphD.blendType = pPageObj->m_GeneralState.GetBlendType(); if (graphD.fillAlpha == 1.0f && graphD.strokeAlpha == 1.0f && - (blend_type == FXDIB_BLEND_UNSUPPORTED || - blend_type == FXDIB_BLEND_NORMAL)) { + (graphD.blendType == FXDIB_BLEND_UNSUPPORTED || + graphD.blendType == FXDIB_BLEND_NORMAL)) { return; } @@ -288,8 +288,8 @@ void CPDF_PageContentGenerator::ProcessGraphics(std::ostringstream* buf, if (graphD.strokeAlpha != 1.0f) gsDict->SetNewFor<CPDF_Number>("CA", graphD.strokeAlpha); - if (blend_type != FXDIB_BLEND_UNSUPPORTED && - blend_type != FXDIB_BLEND_NORMAL) { + if (graphD.blendType != FXDIB_BLEND_UNSUPPORTED && + graphD.blendType != FXDIB_BLEND_NORMAL) { gsDict->SetNewFor<CPDF_Name>("BM", pPageObj->m_GeneralState.GetBlendMode()); } diff --git a/core/fpdfapi/page/cpdf_page.cpp b/core/fpdfapi/page/cpdf_page.cpp index 092a1cad41..075aa9023d 100644 --- a/core/fpdfapi/page/cpdf_page.cpp +++ b/core/fpdfapi/page/cpdf_page.cpp @@ -183,7 +183,9 @@ int CPDF_Page::GetPageRotation() const { bool GraphicsData::operator<(const GraphicsData& other) const { if (fillAlpha != other.fillAlpha) return fillAlpha < other.fillAlpha; - return strokeAlpha < other.strokeAlpha; + if (strokeAlpha != other.strokeAlpha) + return strokeAlpha < other.strokeAlpha; + return blendType < other.blendType; } bool FontData::operator<(const FontData& other) const { diff --git a/core/fpdfapi/page/cpdf_page.h b/core/fpdfapi/page/cpdf_page.h index 77cc793d81..0a080a58ae 100644 --- a/core/fpdfapi/page/cpdf_page.h +++ b/core/fpdfapi/page/cpdf_page.h @@ -26,6 +26,7 @@ class CPDF_PageRenderContext; struct GraphicsData { float fillAlpha; float strokeAlpha; + int blendType; bool operator<(const GraphicsData& other) const; }; |