Consolidate XFA color printing code to CFGAS_GEColor::ColorToString() Move similar code in 3 files into a common place. Remove some unneeded const keywords along the way. Change-Id: If45d59a3170a6443415264fce6bf51ea159cb1ec Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/121570 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org> Reviewed-by: Tom Sepez <tsepez@google.com>
diff --git a/fxjs/BUILD.gn b/fxjs/BUILD.gn index e3f62ff..0e9e23c 100644 --- a/fxjs/BUILD.gn +++ b/fxjs/BUILD.gn
@@ -213,6 +213,7 @@ deps += [ ":gc", "../xfa/fgas/crt", + "../xfa/fgas/graphics", "../xfa/fxfa/formcalc", ] }
diff --git a/fxjs/xfa/cjx_object.cpp b/fxjs/xfa/cjx_object.cpp index e61183e..6d77a81 100644 --- a/fxjs/xfa/cjx_object.cpp +++ b/fxjs/xfa/cjx_object.cpp
@@ -31,6 +31,7 @@ #include "v8/include/v8-object.h" #include "v8/include/v8-primitive.h" #include "xfa/fgas/crt/cfgas_decimal.h" +#include "xfa/fgas/graphics/cfgas_gecolor.h" #include "xfa/fxfa/cxfa_ffnotify.h" #include "xfa/fxfa/cxfa_ffwidget.h" #include "xfa/fxfa/parser/cxfa_border.h" @@ -99,10 +100,8 @@ } v8::Local<v8::String> ColorToV8String(v8::Isolate* isolate, FX_ARGB color) { - FX_BGR_STRUCT<uint8_t> bgr = ArgbToBGRStruct(color); return fxv8::NewStringHelper( - isolate, ByteString::Format("%d,%d,%d", bgr.red, bgr.green, bgr.blue) - .AsStringView()); + isolate, CFGAS_GEColor::ColorToString(color).AsStringView()); } } // namespace
diff --git a/xfa/fgas/graphics/cfgas_gecolor.cpp b/xfa/fgas/graphics/cfgas_gecolor.cpp index 861d2c3..685118e 100644 --- a/xfa/fgas/graphics/cfgas_gecolor.cpp +++ b/xfa/fgas/graphics/cfgas_gecolor.cpp
@@ -6,10 +6,9 @@ #include "xfa/fgas/graphics/cfgas_gecolor.h" -CFGAS_GEColor::CFGAS_GEColor(const FX_ARGB argb) - : m_type(Solid), m_argb(argb) {} +CFGAS_GEColor::CFGAS_GEColor(FX_ARGB argb) : m_type(Solid), m_argb(argb) {} -CFGAS_GEColor::CFGAS_GEColor(CFGAS_GEPattern* pattern, const FX_ARGB argb) +CFGAS_GEColor::CFGAS_GEColor(CFGAS_GEPattern* pattern, FX_ARGB argb) : m_type(Pattern), m_argb(argb), m_pPattern(pattern) {} CFGAS_GEColor::CFGAS_GEColor(CFGAS_GEShading* shading) @@ -20,3 +19,9 @@ CFGAS_GEColor::~CFGAS_GEColor() = default; CFGAS_GEColor& CFGAS_GEColor::operator=(const CFGAS_GEColor& that) = default; + +// static +ByteString CFGAS_GEColor::ColorToString(FX_ARGB argb) { + FX_BGR_STRUCT<uint8_t> bgr = ArgbToBGRStruct(argb); + return ByteString::Format("%d,%d,%d", bgr.red, bgr.green, bgr.blue); +}
diff --git a/xfa/fgas/graphics/cfgas_gecolor.h b/xfa/fgas/graphics/cfgas_gecolor.h index e3b2445..6ccebc4 100644 --- a/xfa/fgas/graphics/cfgas_gecolor.h +++ b/xfa/fgas/graphics/cfgas_gecolor.h
@@ -7,6 +7,7 @@ #ifndef XFA_FGAS_GRAPHICS_CFGAS_GECOLOR_H_ #define XFA_FGAS_GRAPHICS_CFGAS_GECOLOR_H_ +#include "core/fxcrt/bytestring.h" #include "core/fxcrt/check.h" #include "core/fxcrt/check_op.h" #include "core/fxcrt/unowned_ptr.h" @@ -19,9 +20,9 @@ public: enum Type { Invalid, Solid, Pattern, Shading }; - explicit CFGAS_GEColor(const FX_ARGB argb); + explicit CFGAS_GEColor(FX_ARGB argb); explicit CFGAS_GEColor(CFGAS_GEShading* shading); - CFGAS_GEColor(CFGAS_GEPattern* pattern, const FX_ARGB argb); + CFGAS_GEColor(CFGAS_GEPattern* pattern, FX_ARGB argb); CFGAS_GEColor(const CFGAS_GEColor& that); ~CFGAS_GEColor(); @@ -41,6 +42,8 @@ CFGAS_GEColor& operator=(const CFGAS_GEColor& that); + static ByteString ColorToString(FX_ARGB argb); + private: Type m_type = Invalid; FX_ARGB m_argb = 0;
diff --git a/xfa/fxfa/parser/cxfa_color.cpp b/xfa/fxfa/parser/cxfa_color.cpp index e848838..4c1dfe8 100644 --- a/xfa/fxfa/parser/cxfa_color.cpp +++ b/xfa/fxfa/parser/cxfa_color.cpp
@@ -8,6 +8,7 @@ #include "core/fxcrt/fx_extension.h" #include "fxjs/xfa/cjx_node.h" +#include "xfa/fgas/graphics/cfgas_gecolor.h" #include "xfa/fxfa/parser/cxfa_document.h" namespace { @@ -110,8 +111,7 @@ } void CXFA_Color::SetValue(FX_ARGB color) { - FX_BGR_STRUCT<uint8_t> bgr = ArgbToBGRStruct(color); - JSObject()->SetCData( - XFA_Attribute::Value, - WideString::Format(L"%d,%d,%d", bgr.red, bgr.green, bgr.blue)); + JSObject()->SetCData(XFA_Attribute::Value, + WideString::FromASCII( + CFGAS_GEColor::ColorToString(color).AsStringView())); }
diff --git a/xfa/fxfa/parser/cxfa_stroke.cpp b/xfa/fxfa/parser/cxfa_stroke.cpp index 6bba800..2fb0306 100644 --- a/xfa/fxfa/parser/cxfa_stroke.cpp +++ b/xfa/fxfa/parser/cxfa_stroke.cpp
@@ -11,6 +11,7 @@ #include <utility> #include "fxjs/xfa/cjx_object.h" +#include "xfa/fgas/graphics/cfgas_gecolor.h" #include "xfa/fgas/graphics/cfgas_gegraphics.h" #include "xfa/fxfa/cxfa_ffwidget.h" #include "xfa/fxfa/parser/cxfa_color.h" @@ -125,10 +126,9 @@ if (!pNode) return; - FX_BGR_STRUCT<uint8_t> bgr = ArgbToBGRStruct(argb); pNode->JSObject()->SetCData( XFA_Attribute::Value, - WideString::Format(L"%d,%d,%d", bgr.red, bgr.green, bgr.blue)); + WideString::FromASCII(CFGAS_GEColor::ColorToString(argb).AsStringView())); } XFA_AttributeValue CXFA_Stroke::GetJoinType() {