Add a WriteRect() helper to cpdf_contentstream_write_utils.h.
Add a helper function for creating legal content stream data from a
CFX_FloatRect. The code already mostly exists in cpdfsdk_appstream.cpp.
Move it into cpdf_contentstream_write_utils.cpp and use it in
fpdf_transformpage.cpp.
Change-Id: Ia1ae1fa86784d0372bdbf5245ec8e63c237c4917
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/97775
Reviewed-by: Nigi <nigi@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/edit/cpdf_contentstream_write_utils.cpp b/core/fpdfapi/edit/cpdf_contentstream_write_utils.cpp
index 7cd53e7..33642d4 100644
--- a/core/fpdfapi/edit/cpdf_contentstream_write_utils.cpp
+++ b/core/fpdfapi/edit/cpdf_contentstream_write_utils.cpp
@@ -30,3 +30,11 @@
WriteFloat(stream, point.y);
return stream;
}
+
+std::ostream& WriteRect(std::ostream& stream, const CFX_FloatRect& rect) {
+ WriteFloat(stream, rect.left) << " ";
+ WriteFloat(stream, rect.bottom) << " ";
+ WriteFloat(stream, rect.Width()) << " ";
+ WriteFloat(stream, rect.Height());
+ return stream;
+}
diff --git a/core/fpdfapi/edit/cpdf_contentstream_write_utils.h b/core/fpdfapi/edit/cpdf_contentstream_write_utils.h
index 22c40d7..abc700f 100644
--- a/core/fpdfapi/edit/cpdf_contentstream_write_utils.h
+++ b/core/fpdfapi/edit/cpdf_contentstream_write_utils.h
@@ -12,5 +12,6 @@
std::ostream& WriteFloat(std::ostream& stream, float value);
std::ostream& WriteMatrix(std::ostream& stream, const CFX_Matrix& matrix);
std::ostream& WritePoint(std::ostream& stream, const CFX_PointF& point);
+std::ostream& WriteRect(std::ostream& stream, const CFX_FloatRect& rect);
#endif // CORE_FPDFAPI_EDIT_CPDF_CONTENTSTREAM_WRITE_UTILS_H_
diff --git a/fpdfsdk/cpdfsdk_appstream.cpp b/fpdfsdk/cpdfsdk_appstream.cpp
index 47443cb..af1d35a 100644
--- a/fpdfsdk/cpdfsdk_appstream.cpp
+++ b/fpdfsdk/cpdfsdk_appstream.cpp
@@ -137,10 +137,7 @@
}
void WriteAppendRect(fxcrt::ostringstream& stream, const CFX_FloatRect& rect) {
- WriteFloat(stream, rect.left) << " ";
- WriteFloat(stream, rect.bottom) << " ";
- WriteFloat(stream, rect.Width()) << " ";
- WriteFloat(stream, rect.Height()) << " " << kAppendRectOperator << "\n";
+ WriteRect(stream, rect) << " " << kAppendRectOperator << "\n";
}
ByteString GetStrokeColorAppStream(const CFX_Color& color) {
diff --git a/fpdfsdk/fpdf_transformpage.cpp b/fpdfsdk/fpdf_transformpage.cpp
index 1db1d21..4254666 100644
--- a/fpdfsdk/fpdf_transformpage.cpp
+++ b/fpdfsdk/fpdf_transformpage.cpp
@@ -223,11 +223,7 @@
if (clipRect) {
CFX_FloatRect rect = CFXFloatRectFromFSRectF(*clipRect);
rect.Normalize();
-
- WriteFloat(text_buf, rect.left) << " ";
- WriteFloat(text_buf, rect.bottom) << " ";
- WriteFloat(text_buf, rect.Width()) << " ";
- WriteFloat(text_buf, rect.Height()) << " re W* n ";
+ WriteRect(text_buf, rect) << " re W* n ";
}
if (matrix)
WriteMatrix(text_buf, CFXMatrixFromFSMatrix(*matrix)) << " cm ";