diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2017-12-12 20:13:38 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-12-12 20:13:38 +0000 |
commit | 2e8cc01dd9e416c17a90a8d484d882d1c257c081 (patch) | |
tree | c1a3fc3492c17eef7525374ea48db2d7480bb12e /fxjs/xfa | |
parent | ebcbb85ea364605baf8e382ad66793bf1b4db029 (diff) | |
download | pdfium-2e8cc01dd9e416c17a90a8d484d882d1c257c081.tar.xz |
Move Script_Som_{Fill|Font}Color to CJX_Object
The CJX_Node isn't the root of the CJX hierarchy. This causes issues
now that CJX_Object has child objects which don't inherit from CJX_Node.
This CL moves Script_Som_{Fill|Font}Color from CJX_Node to
CJX_Object.
Change-Id: I681d2c09a7560eb96967bbbbcb050246f4b879c0
Reviewed-on: https://pdfium-review.googlesource.com/20991
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'fxjs/xfa')
-rw-r--r-- | fxjs/xfa/cjx_node.cpp | 95 | ||||
-rw-r--r-- | fxjs/xfa/cjx_node.h | 6 | ||||
-rw-r--r-- | fxjs/xfa/cjx_object.cpp | 61 | ||||
-rw-r--r-- | fxjs/xfa/cjx_object.h | 6 |
4 files changed, 67 insertions, 101 deletions
diff --git a/fxjs/xfa/cjx_node.cpp b/fxjs/xfa/cjx_node.cpp index c0a7f37675..ff65c38850 100644 --- a/fxjs/xfa/cjx_node.cpp +++ b/fxjs/xfa/cjx_node.cpp @@ -7,7 +7,6 @@ #include "fxjs/xfa/cjx_node.h" #include <map> -#include <tuple> #include <vector> #include "core/fxcrt/cfx_decimal.h" @@ -32,37 +31,6 @@ namespace { -std::tuple<int32_t, int32_t, int32_t> StrToRGB(const WideString& strRGB) { - int32_t r = 0; - int32_t g = 0; - int32_t b = 0; - - size_t iIndex = 0; - for (size_t i = 0; i < strRGB.GetLength(); ++i) { - wchar_t ch = strRGB[i]; - if (ch == L',') - ++iIndex; - if (iIndex > 2) - break; - - int32_t iValue = ch - L'0'; - if (iValue >= 0 && iValue <= 9) { - switch (iIndex) { - case 0: - r = r * 10 + iValue; - break; - case 1: - g = g * 10 + iValue; - break; - default: - b = b * 10 + iValue; - break; - } - } - } - return {r, g, b}; -} - enum class EventAppliesToo { kNone = 0, kAll = 1, @@ -789,39 +757,6 @@ void CJX_Node::Script_Boolean_Value(CFXJSE_Value* pValue, SetContent(wsNewValue, wsFormatValue, true, true, true); } -void CJX_Node::Script_Som_FillColor(CFXJSE_Value* pValue, - bool bSetting, - XFA_Attribute eAttribute) { - CXFA_WidgetData* pWidgetData = GetXFANode()->GetWidgetData(); - if (!pWidgetData) - return; - - CXFA_BorderData borderData = pWidgetData->GetBorderData(true); - CXFA_FillData borderfillData = borderData.GetFillData(true); - CXFA_Node* pNode = borderfillData.GetNode(); - if (!pNode) - return; - - if (bSetting) { - int32_t r; - int32_t g; - int32_t b; - std::tie(r, g, b) = StrToRGB(pValue->ToWideString()); - FX_ARGB color = ArgbEncode(0xff, r, g, b); - borderfillData.SetColor(color); - return; - } - - FX_ARGB color = borderfillData.GetColor(false); - int32_t a; - int32_t r; - int32_t g; - int32_t b; - std::tie(a, r, g, b) = ArgbDecode(color); - pValue->SetString( - WideString::Format(L"%d,%d,%d", r, g, b).UTF8Encode().AsStringView()); -} - void CJX_Node::Script_Som_DataNode(CFXJSE_Value* pValue, bool bSetting, XFA_Attribute eAttribute) { @@ -943,36 +878,6 @@ void CJX_Node::Script_Field_EditValue(CFXJSE_Value* pValue, pWidgetData->GetValue(XFA_VALUEPICTURE_Edit).UTF8Encode().AsStringView()); } -void CJX_Node::Script_Som_FontColor(CFXJSE_Value* pValue, - bool bSetting, - XFA_Attribute eAttribute) { - CXFA_WidgetData* pWidgetData = GetXFANode()->GetWidgetData(); - if (!pWidgetData) - return; - - CXFA_FontData fontData = pWidgetData->GetFontData(true); - CXFA_Node* pNode = fontData.GetNode(); - if (!pNode) - return; - - if (bSetting) { - int32_t r; - int32_t g; - int32_t b; - std::tie(r, g, b) = StrToRGB(pValue->ToWideString()); - FX_ARGB color = ArgbEncode(0xff, r, g, b); - fontData.SetColor(color); - return; - } - - int32_t a; - int32_t r; - int32_t g; - int32_t b; - std::tie(a, r, g, b) = ArgbDecode(fontData.GetColor()); - pValue->SetString(ByteString::Format("%d,%d,%d", r, g, b).AsStringView()); -} - void CJX_Node::Script_Field_FormatMessage(CFXJSE_Value* pValue, bool bSetting, XFA_Attribute eAttribute) { diff --git a/fxjs/xfa/cjx_node.h b/fxjs/xfa/cjx_node.h index 8c42b340a8..bfc0fa4d5f 100644 --- a/fxjs/xfa/cjx_node.h +++ b/fxjs/xfa/cjx_node.h @@ -122,15 +122,9 @@ class CJX_Node : public CJX_Tree { void Script_Som_Message(CFXJSE_Value* pValue, bool bSetting, XFA_SOM_MESSAGETYPE iMessageType); - void Script_Som_FillColor(CFXJSE_Value* pValue, - bool bSetting, - XFA_Attribute eAttribute); void Script_Som_DataNode(CFXJSE_Value* pValue, bool bSetting, XFA_Attribute eAttribute); - void Script_Som_FontColor(CFXJSE_Value* pValue, - bool bSetting, - XFA_Attribute eAttribute); void Script_Som_Mandatory(CFXJSE_Value* pValue, bool bSetting, XFA_Attribute eAttribute); diff --git a/fxjs/xfa/cjx_object.cpp b/fxjs/xfa/cjx_object.cpp index 5b21730df2..1d94b55d98 100644 --- a/fxjs/xfa/cjx_object.cpp +++ b/fxjs/xfa/cjx_object.cpp @@ -925,6 +925,67 @@ void CJX_Object::Script_Attribute_Integer(CFXJSE_Value* pValue, pValue->SetInteger(GetInteger(eAttribute)); } +void CJX_Object::Script_Som_FontColor(CFXJSE_Value* pValue, + bool bSetting, + XFA_Attribute eAttribute) { + if (!widget_data_) + return; + + CXFA_FontData fontData = widget_data_->GetFontData(true); + CXFA_Node* pNode = fontData.GetNode(); + if (!pNode) + return; + + if (bSetting) { + int32_t r; + int32_t g; + int32_t b; + std::tie(r, g, b) = StrToRGB(pValue->ToWideString()); + FX_ARGB color = ArgbEncode(0xff, r, g, b); + fontData.SetColor(color); + return; + } + + int32_t a; + int32_t r; + int32_t g; + int32_t b; + std::tie(a, r, g, b) = ArgbDecode(fontData.GetColor()); + pValue->SetString(ByteString::Format("%d,%d,%d", r, g, b).AsStringView()); +} + +void CJX_Object::Script_Som_FillColor(CFXJSE_Value* pValue, + bool bSetting, + XFA_Attribute eAttribute) { + if (!widget_data_) + return; + + CXFA_BorderData borderData = widget_data_->GetBorderData(true); + CXFA_FillData borderfillData = borderData.GetFillData(true); + CXFA_Node* pNode = borderfillData.GetNode(); + if (!pNode) + return; + + if (bSetting) { + int32_t r; + int32_t g; + int32_t b; + std::tie(r, g, b) = StrToRGB(pValue->ToWideString()); + FX_ARGB color = ArgbEncode(0xff, r, g, b); + borderfillData.SetColor(color); + return; + } + + FX_ARGB color = borderfillData.GetColor(false); + int32_t a; + int32_t r; + int32_t g; + int32_t b; + std::tie(a, r, g, b) = ArgbDecode(color); + pValue->SetString( + WideString::Format(L"%d,%d,%d", r, g, b).UTF8Encode().AsStringView()); +} + void CJX_Object::Script_Som_BorderColor(CFXJSE_Value* pValue, bool bSetting, XFA_Attribute eAttribute) { diff --git a/fxjs/xfa/cjx_object.h b/fxjs/xfa/cjx_object.h index dfd2bbc929..e29081c07b 100644 --- a/fxjs/xfa/cjx_object.h +++ b/fxjs/xfa/cjx_object.h @@ -92,6 +92,12 @@ class CJX_Object { bool bSetting, XFA_Attribute eAttribute); + void Script_Som_FontColor(CFXJSE_Value* pValue, + bool bSetting, + XFA_Attribute eAttribute); + void Script_Som_FillColor(CFXJSE_Value* pValue, + bool bSetting, + XFA_Attribute eAttribute); void Script_Som_BorderColor(CFXJSE_Value* pValue, bool bSetting, XFA_Attribute eAttribute); |