Replace XFA_HDOC with IXFA_Doc*
[pdfium.git] / xfa / src / fxfa / src / app / xfa_ffdochandler.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_ffdochandler.h"\r
10 #include "xfa_ffdoc.h"\r
11 CXFA_FFDocHandler::CXFA_FFDocHandler()\r
12 {\r
13 }\r
14 CXFA_FFDocHandler::~CXFA_FFDocHandler()\r
15 {\r
16 }\r
17 void CXFA_FFDocHandler::ReleaseDoc(IXFA_Doc* hDoc)\r
18 {\r
19     delete hDoc;  // virtual dtor.\r
20 }\r
21 IXFA_DocProvider* CXFA_FFDocHandler::GetDocProvider(IXFA_Doc* hDoc)\r
22 {\r
23     return static_cast<CXFA_FFDoc*>(hDoc)->GetDocProvider();\r
24 }\r
25 FX_DWORD CXFA_FFDocHandler::GetDocType(IXFA_Doc* hDoc)\r
26 {\r
27     return static_cast<CXFA_FFDoc*>(hDoc)->GetDocType();\r
28 }\r
29 FX_INT32 CXFA_FFDocHandler::StartLoad(IXFA_Doc* hDoc)\r
30 {\r
31     return static_cast<CXFA_FFDoc*>(hDoc)->StartLoad();\r
32 }\r
33 FX_INT32 CXFA_FFDocHandler::DoLoad(IXFA_Doc* hDoc, IFX_Pause *pPause )\r
34 {\r
35     return static_cast<CXFA_FFDoc*>(hDoc)->DoLoad(pPause);\r
36 }\r
37 void CXFA_FFDocHandler::StopLoad(IXFA_Doc* hDoc)\r
38 {\r
39     static_cast<CXFA_FFDoc*>(hDoc)->StopLoad();\r
40 }\r
41 \r
42 IXFA_DocView* CXFA_FFDocHandler::CreateDocView(IXFA_Doc* hDoc, FX_DWORD dwView )\r
43 {\r
44     return static_cast<CXFA_FFDoc*>(hDoc)->CreateDocView(dwView);\r
45 }\r
46 FX_INT32 CXFA_FFDocHandler::CountPackages(IXFA_Doc* hDoc)\r
47 {\r
48     return 0;\r
49 }\r
50 void CXFA_FFDocHandler::GetPackageName(IXFA_Doc* hDoc, FX_INT32 iPackage, CFX_WideStringC &wsPackage)\r
51 {\r
52 }\r
53 IFDE_XMLElement* CXFA_FFDocHandler::GetPackageData(IXFA_Doc* hDoc, FX_WSTR wsPackage)\r
54 {\r
55     return static_cast<CXFA_FFDoc*>(hDoc)->GetPackageData(wsPackage);\r
56 }\r
57 FX_BOOL CXFA_FFDocHandler::SavePackage(IXFA_Doc* hDoc, FX_WSTR wsPackage, IFX_FileWrite* pFile, IXFA_ChecksumContext *pCSContext )\r
58 {\r
59     return static_cast<CXFA_FFDoc*>(hDoc)->SavePackage(wsPackage, pFile, pCSContext);\r
60 }\r
61 FX_BOOL CXFA_FFDocHandler::CloseDoc(IXFA_Doc* hDoc)\r
62 {\r
63     return static_cast<CXFA_FFDoc*>(hDoc)->CloseDoc();\r
64 }\r
65 \r
66 FX_BOOL CXFA_FFDocHandler::ImportData(IXFA_Doc* hDoc, IFX_FileRead* pStream, FX_BOOL bXDP )\r
67 {\r
68     return static_cast<CXFA_FFDoc*>(hDoc)->ImportData(pStream, bXDP);\r
69 }\r
70 void CXFA_FFDocHandler::SetJSERuntime(IXFA_Doc* hDoc, FXJSE_HRUNTIME hRuntime)\r
71 {\r
72     static_cast<CXFA_FFDoc*>(hDoc)->GetXFADoc()->InitScriptContext(hRuntime);\r
73 }\r
74 FXJSE_HVALUE CXFA_FFDocHandler::GetXFAScriptObject(IXFA_Doc* hDoc)\r
75 {\r
76     CXFA_Document* pXFADoc = static_cast<CXFA_FFDoc*>(hDoc)->GetXFADoc();\r
77     if (!pXFADoc) {\r
78         return NULL;\r
79     }\r
80     IXFA_ScriptContext* pScriptContext = pXFADoc->GetScriptContext();\r
81     if (!pScriptContext) {\r
82         return NULL;\r
83     }\r
84     return pScriptContext->GetJSValueFromMap(pXFADoc->GetRoot());\r
85 }\r
86 XFA_ATTRIBUTEENUM CXFA_FFDocHandler::GetRestoreState(IXFA_Doc* hDoc)\r
87 {\r
88     CXFA_Document* pXFADoc = static_cast<CXFA_FFDoc*>(hDoc)->GetXFADoc();\r
89     if (!pXFADoc) {\r
90         return XFA_ATTRIBUTEENUM_Unknown;\r
91     }\r
92     CXFA_Node* pForm = (CXFA_Node*)pXFADoc->GetXFANode(XFA_HASHCODE_Form);\r
93     if (!pForm) {\r
94         return XFA_ATTRIBUTEENUM_Unknown;\r
95     }\r
96     CXFA_Node* pSubForm = pForm->GetFirstChildByClass(XFA_ELEMENT_Subform);\r
97     if (!pSubForm) {\r
98         return XFA_ATTRIBUTEENUM_Unknown;\r
99     }\r
100     return pSubForm->GetEnum(XFA_ATTRIBUTE_RestoreState);\r
101 }\r
102 FX_BOOL CXFA_FFDocHandler::RunDocScript(IXFA_Doc* hDoc, XFA_SCRIPTTYPE eScriptType, FX_WSTR wsScript, FXJSE_HVALUE hRetValue, FXJSE_HVALUE hThisObject)\r
103 {\r
104     CXFA_Document* pXFADoc = static_cast<CXFA_FFDoc*>(hDoc)->GetXFADoc();\r
105     if (!pXFADoc) {\r
106         return FALSE;\r
107     }\r
108     IXFA_ScriptContext* pScriptContext = pXFADoc->GetScriptContext();\r
109     if (!pScriptContext) {\r
110         return FALSE;\r
111     }\r
112     return pScriptContext->RunScript((XFA_SCRIPTLANGTYPE)eScriptType, wsScript, hRetValue, hThisObject ? (CXFA_Object*)FXJSE_Value_ToObject(hThisObject, NULL) : NULL);\r
113 }\r