OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 |
| 7 #include "xfa/fxfa/parser/cxfa_fill.h" |
| 8 |
| 9 #include "xfa/fxfa/parser/xfa_object.h" |
| 10 |
| 11 CXFA_Fill::CXFA_Fill(CXFA_Node* pNode) : CXFA_Data(pNode) {} |
| 12 |
| 13 CXFA_Fill::~CXFA_Fill() {} |
| 14 |
| 15 int32_t CXFA_Fill::GetPresence() { |
| 16 return m_pNode->GetEnum(XFA_ATTRIBUTE_Presence); |
| 17 } |
| 18 |
| 19 void CXFA_Fill::SetColor(FX_ARGB color) { |
| 20 CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Color); |
| 21 CFX_WideString wsColor; |
| 22 int a, r, g, b; |
| 23 ArgbDecode(color, a, r, g, b); |
| 24 wsColor.Format(L"%d,%d,%d", r, g, b); |
| 25 pNode->SetCData(XFA_ATTRIBUTE_Value, wsColor); |
| 26 } |
| 27 |
| 28 FX_ARGB CXFA_Fill::GetColor(FX_BOOL bText) { |
| 29 if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Color)) { |
| 30 CFX_WideStringC wsColor; |
| 31 if (pNode->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE)) |
| 32 return CXFA_Data::ToColor(wsColor); |
| 33 } |
| 34 if (bText) |
| 35 return 0xFF000000; |
| 36 return 0xFFFFFFFF; |
| 37 } |
| 38 |
| 39 int32_t CXFA_Fill::GetFillType() { |
| 40 CXFA_Node* pChild = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 41 while (pChild) { |
| 42 int32_t eType = pChild->GetClassID(); |
| 43 if (eType != XFA_ELEMENT_Color && eType != XFA_ELEMENT_Extras) |
| 44 return eType; |
| 45 |
| 46 pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling); |
| 47 } |
| 48 return XFA_ELEMENT_Solid; |
| 49 } |
| 50 |
| 51 int32_t CXFA_Fill::GetPattern(FX_ARGB& foreColor) { |
| 52 CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Pattern); |
| 53 if (CXFA_Node* pColor = pNode->GetChild(0, XFA_ELEMENT_Color)) { |
| 54 CFX_WideStringC wsColor; |
| 55 pColor->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE); |
| 56 foreColor = CXFA_Data::ToColor(wsColor); |
| 57 } else { |
| 58 foreColor = 0xFF000000; |
| 59 } |
| 60 return pNode->GetEnum(XFA_ATTRIBUTE_Type); |
| 61 } |
| 62 |
| 63 int32_t CXFA_Fill::GetStipple(FX_ARGB& stippleColor) { |
| 64 CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Stipple); |
| 65 int32_t eAttr = 50; |
| 66 pNode->TryInteger(XFA_ATTRIBUTE_Rate, eAttr); |
| 67 if (CXFA_Node* pColor = pNode->GetChild(0, XFA_ELEMENT_Color)) { |
| 68 CFX_WideStringC wsColor; |
| 69 pColor->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE); |
| 70 stippleColor = CXFA_Data::ToColor(wsColor); |
| 71 } else { |
| 72 stippleColor = 0xFF000000; |
| 73 } |
| 74 return eAttr; |
| 75 } |
| 76 |
| 77 int32_t CXFA_Fill::GetLinear(FX_ARGB& endColor) { |
| 78 CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Linear); |
| 79 XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_ToRight; |
| 80 pNode->TryEnum(XFA_ATTRIBUTE_Type, eAttr); |
| 81 if (CXFA_Node* pColor = pNode->GetChild(0, XFA_ELEMENT_Color)) { |
| 82 CFX_WideStringC wsColor; |
| 83 pColor->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE); |
| 84 endColor = CXFA_Data::ToColor(wsColor); |
| 85 } else { |
| 86 endColor = 0xFF000000; |
| 87 } |
| 88 return eAttr; |
| 89 } |
| 90 |
| 91 int32_t CXFA_Fill::GetRadial(FX_ARGB& endColor) { |
| 92 CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Radial); |
| 93 XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_ToEdge; |
| 94 pNode->TryEnum(XFA_ATTRIBUTE_Type, eAttr); |
| 95 if (CXFA_Node* pColor = pNode->GetChild(0, XFA_ELEMENT_Color)) { |
| 96 CFX_WideStringC wsColor; |
| 97 pColor->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE); |
| 98 endColor = CXFA_Data::ToColor(wsColor); |
| 99 } else { |
| 100 endColor = 0xFF000000; |
| 101 } |
| 102 return eAttr; |
| 103 } |
OLD | NEW |