diff options
Diffstat (limited to 'core/fpdfapi')
-rw-r--r-- | core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp | 4 | ||||
-rw-r--r-- | core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp | 13 |
2 files changed, 17 insertions, 0 deletions
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp index a5bd741cc0..9de97ee718 100644 --- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp +++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp @@ -192,6 +192,7 @@ void CPDF_PageContentGenerator::ProcessPath(CFX_ByteTextBuf* buf, // values cannot be obtained. The method also adds an external graphics // dictionary, as described in Section 4.3.4. // "rg" sets the fill color, "RG" sets the stroke color (using DefaultRGB) +// "w" sets the stroke line width. // "ca" sets the fill alpha, "CA" sets the stroke alpha. // "q" saves the graphics state, so that the settings can later be reversed void CPDF_PageContentGenerator::ProcessGraphics(CFX_ByteTextBuf* buf, @@ -207,6 +208,9 @@ void CPDF_PageContentGenerator::ProcessGraphics(CFX_ByteTextBuf* buf, *buf << strokeColor[0] << " " << strokeColor[1] << " " << strokeColor[2] << " RG "; } + FX_FLOAT lineWidth = pPageObj->m_GraphState.GetLineWidth(); + if (lineWidth != 1.0f) + *buf << lineWidth << " w "; GraphicsData graphD; graphD.fillAlpha = pPageObj->m_GeneralState.GetFillAlpha(); diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp index 3267f5218c..4846b1bd3c 100644 --- a/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp +++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp @@ -167,4 +167,17 @@ TEST_F(CPDF_PageContentGeneratorTest, ProcessGraphics) { ASSERT_TRUE(externalGS); EXPECT_EQ(0.5f, externalGS->GetNumberFor("ca")); EXPECT_EQ(0.8f, externalGS->GetNumberFor("CA")); + + // Same path, now with a stroke. + pPathObj->m_GraphState.SetLineWidth(10.5f); + buf.Clear(); + TestProcessPath(&generator, &buf, pPathObj.get()); + CFX_ByteString pathString2 = buf.MakeString(); + EXPECT_EQ("q 0.501961 0.701961 0.34902 rg 1 0.901961 0 RG 10.5 w /", + pathString2.Left(55)); + EXPECT_EQ(" gs 1 2 m 3 4 l 5 6 l h B Q\n", pathString2.Right(28)); + // Compare with the previous (should use same dictionary for gs) + EXPECT_EQ(pathString.GetLength() + 7, pathString2.GetLength()); + EXPECT_EQ(pathString.Mid(48, pathString.GetLength() - 76), + pathString2.Mid(55, pathString2.GetLength() - 83)); } |