summaryrefslogtreecommitdiff
path: root/core/fpdfapi
diff options
context:
space:
mode:
authorNicolas Pena <npm@chromium.org>2017-06-14 11:41:18 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-06-14 16:15:20 +0000
commit603a31d0c509c7ce3c2709dcb5377a78e6ce4815 (patch)
treedc5adcb4a16ab862c6fe7393be07cd7cb8f19ecf /core/fpdfapi
parentf0f2a2a528e154b8ceeded297abc3a64007850f8 (diff)
downloadpdfium-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.cpp10
-rw-r--r--core/fpdfapi/page/cpdf_page.cpp4
-rw-r--r--core/fpdfapi/page/cpdf_page.h1
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;
};