diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2018-02-16 03:46:26 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-02-16 03:46:26 +0000 |
commit | 844d79e853074c99b7e5e64e051f1e1236c1723e (patch) | |
tree | 7c83ab8ecfa4bf210dc8bb3e7117ccfdd21fd69e /core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp | |
parent | 2388506a1ba13481463033b414f46c1b8864519e (diff) | |
download | pdfium-844d79e853074c99b7e5e64e051f1e1236c1723e.tar.xz |
Improve performance of writing path floats.
This CL copies the SkPDF code to convert floats into strings when
writing back to PDF files.
Change-Id: I8f8af3924a07aa67f93b9d951af1eef5d2c705db
Reviewed-on: https://pdfium-review.googlesource.com/21990
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Hal Canary <halcanary@chromium.org>
Diffstat (limited to 'core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp')
-rw-r--r-- | core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp index 8a08a849cc..a2d4d4f125 100644 --- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp +++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp @@ -25,6 +25,7 @@ #include "core/fpdfapi/parser/cpdf_reference.h" #include "core/fpdfapi/parser/cpdf_stream.h" #include "core/fpdfapi/parser/fpdf_parser_decode.h" +#include "third_party/skia_shared/SkFloatToDecimal.h" namespace { @@ -221,7 +222,13 @@ void CPDF_PageContentGenerator::ProcessPath(std::ostringstream* buf, for (size_t i = 0; i < pPoints.size(); i++) { if (i > 0) *buf << " "; - *buf << pPoints[i].m_Point.x << " " << pPoints[i].m_Point.y; + + char buffer[kMaximumSkFloatToDecimalLength]; + unsigned size = SkFloatToDecimal(pPoints[i].m_Point.x, buffer); + buf->write(buffer, size) << " "; + size = SkFloatToDecimal(pPoints[i].m_Point.y, buffer); + buf->write(buffer, size); + FXPT_TYPE pointType = pPoints[i].m_Type; if (pointType == FXPT_TYPE::MoveTo) { *buf << " m"; |