Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / src / fxfa / src / app / xfa_ffConfigAcc.cpp
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #include "../../../foxitlib.h"\r
8 #include "../common/xfa_common.h"\r
9 #include "xfa_ffConfigAcc.h"\r
10 CXFA_FFConfigAcc::CXFA_FFConfigAcc(CXFA_Node *pNode)\r
11     : m_pNode(pNode)\r
12     , m_pPsMapNode(NULL)\r
13 {\r
14 }\r
15 CXFA_FFConfigAcc::~CXFA_FFConfigAcc()\r
16 {\r
17 }\r
18 FX_INT32 CXFA_FFConfigAcc::CountChildren()\r
19 {\r
20     GetPsMapNode();\r
21     if (m_pPsMapNode == NULL) {\r
22         return 0;\r
23     }\r
24     FX_INT32 iCount = 0;\r
25     CXFA_Node* pNode = m_pPsMapNode->GetNodeItem(XFA_NODEITEM_FirstChild);\r
26     for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {\r
27         iCount++;\r
28     }\r
29     return iCount;\r
30 }\r
31 FX_BOOL CXFA_FFConfigAcc::GetFontInfo(FX_INT32 index, CFX_WideString &wsFontFamily, CFX_WideString &wsPsName, FX_BOOL bBold, FX_BOOL bItalic)\r
32 {\r
33     if (index < 0 || index >= CountChildren()) {\r
34         return FALSE;\r
35     }\r
36     CXFA_Node *pFontNode = m_pPsMapNode->GetChild(index, XFA_ELEMENT_Font);\r
37     if (pFontNode == NULL) {\r
38         return FALSE;\r
39     }\r
40     wsFontFamily.Empty();\r
41     wsPsName.Empty();\r
42     bBold  = FALSE;\r
43     bItalic = FALSE;\r
44     pFontNode->GetAttribute(XFA_ATTRIBUTE_Typeface, wsFontFamily);\r
45     pFontNode->GetAttribute(XFA_ATTRIBUTE_PsName, wsPsName);\r
46     CFX_WideString wsValue;\r
47     pFontNode->GetAttribute(XFA_ATTRIBUTE_Weight, wsValue);\r
48     wsValue.MakeLower();\r
49     if (wsValue == FX_WSTRC(L"bold")) {\r
50         bBold = TRUE;\r
51     }\r
52     pFontNode->GetAttribute(XFA_ATTRIBUTE_Posture, wsValue);\r
53     wsValue.MakeLower();\r
54     if (wsValue == FX_WSTRC(L"italic")) {\r
55         bItalic = TRUE;\r
56     }\r
57     return wsFontFamily.GetLength() > 0;\r
58 }\r
59 void CXFA_FFConfigAcc::GetPsMapNode()\r
60 {\r
61     if (m_pNode == NULL) {\r
62         return;\r
63     }\r
64     m_pPsMapNode = m_pNode->GetChild(0, XFA_ELEMENT_PsMap);\r
65 }\r