Simplify writing out CFX_PointF to content streams.
Add operator<<() for CFX_PointF and use that instead of direct
WriteFloat() calls when appropriate.
Change-Id: Ifd445ce854681648a830fc32cff9d7cfefb0c069
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/56131
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
index 4f13434..934101e 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
+++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
@@ -57,6 +57,12 @@
return ar;
}
+std::ostream& operator<<(std::ostream& ar, const CFX_PointF& point) {
+ WriteFloat(ar, point.x) << " ";
+ WriteFloat(ar, point.y);
+ return ar;
+}
+
bool GetColor(const CPDF_Color* pColor, float* rgb) {
int intRGB[3];
if (!pColor || !pColor->IsColorSpaceRGB() ||
@@ -373,17 +379,13 @@
const auto& pPoints = pPathObj->path().GetPoints();
if (pPathObj->path().IsRect()) {
CFX_PointF diff = pPoints[2].m_Point - pPoints[0].m_Point;
- WriteFloat(*buf, pPoints[0].m_Point.x) << " ";
- WriteFloat(*buf, pPoints[0].m_Point.y) << " ";
- WriteFloat(*buf, diff.x) << " ";
- WriteFloat(*buf, diff.y) << " re";
+ *buf << pPoints[0].m_Point << " " << diff << " re";
} else {
for (size_t i = 0; i < pPoints.size(); i++) {
if (i > 0)
*buf << " ";
- WriteFloat(*buf, pPoints[i].m_Point.x) << " ";
- WriteFloat(*buf, pPoints[i].m_Point.y);
+ *buf << pPoints[i].m_Point;
FXPT_TYPE pointType = pPoints[i].m_Type;
if (pointType == FXPT_TYPE::MoveTo) {
@@ -400,10 +402,8 @@
break;
}
*buf << " ";
- WriteFloat(*buf, pPoints[i + 1].m_Point.x) << " ";
- WriteFloat(*buf, pPoints[i + 1].m_Point.y) << " ";
- WriteFloat(*buf, pPoints[i + 2].m_Point.x) << " ";
- WriteFloat(*buf, pPoints[i + 2].m_Point.y) << " c";
+ *buf << pPoints[i + 1].m_Point << " ";
+ *buf << pPoints[i + 2].m_Point << " c";
i += 2;
}
if (pPoints[i].m_CloseFigure)