Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(250)

Side by Side Diff: fpdfsdk/src/javascript/Document.cpp

Issue 1243953004: Re-land else-after-returns (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/src/fxedit/fxet_edit.cpp ('k') | fpdfsdk/src/javascript/Field.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "../../include/javascript/JavaScript.h" 7 #include "../../include/javascript/JavaScript.h"
8 #include "../../include/javascript/IJavaScript.h" 8 #include "../../include/javascript/IJavaScript.h"
9 #include "../../include/javascript/JS_Define.h" 9 #include "../../include/javascript/JS_Define.h"
10 #include "../../include/javascript/JS_Object.h" 10 #include "../../include/javascript/JS_Object.h"
11 #include "../../include/javascript/JS_Value.h" 11 #include "../../include/javascript/JS_Value.h"
12 #include "../../include/javascript/Document.h" 12 #include "../../include/javascript/Document.h"
13 #include "../../include/javascript/JS_EventHandler.h" 13 #include "../../include/javascript/JS_EventHandler.h"
14 #include "../../include/javascript/JS_Context.h" 14 #include "../../include/javascript/JS_Context.h"
15 #include "../../include/javascript/JS_Runtime.h" 15 #include "../../include/javascript/JS_Runtime.h"
16 #include "../../include/javascript/app.h" 16 #include "../../include/javascript/app.h"
17 #include "../../include/javascript/Field.h" 17 #include "../../include/javascript/Field.h"
18 #include "../../include/javascript/Icon.h" 18 #include "../../include/javascript/Icon.h"
19 #include "../../include/javascript/resource.h" 19 #include "../../include/javascript/resource.h"
20 20
21 #include "../../../third_party/base/numerics/safe_math.h" 21 #include "../../../third_party/base/numerics/safe_math.h"
22 22
23 static v8::Isolate* GetIsolate(IFXJS_Context* cc) 23 static v8::Isolate* GetIsolate(IFXJS_Context* cc)
24 { 24 {
25 » CJS_Context* pContext = (CJS_Context *)cc; 25 CJS_Context* pContext = (CJS_Context *)cc;
26 » ASSERT(pContext != NULL); 26 ASSERT(pContext != NULL);
27 27
28 » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 28 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
29 » ASSERT(pRuntime != NULL); 29 ASSERT(pRuntime != NULL);
30 30
31 » return pRuntime->GetIsolate(); 31 return pRuntime->GetIsolate();
32 } 32 }
33 33
34 BEGIN_JS_STATIC_CONST(CJS_PrintParamsObj) 34 BEGIN_JS_STATIC_CONST(CJS_PrintParamsObj)
35 END_JS_STATIC_CONST() 35 END_JS_STATIC_CONST()
36 36
37 BEGIN_JS_STATIC_PROP(CJS_PrintParamsObj) 37 BEGIN_JS_STATIC_PROP(CJS_PrintParamsObj)
38 END_JS_STATIC_PROP() 38 END_JS_STATIC_PROP()
39 39
40 BEGIN_JS_STATIC_METHOD(CJS_PrintParamsObj) 40 BEGIN_JS_STATIC_METHOD(CJS_PrintParamsObj)
41 END_JS_STATIC_METHOD() 41 END_JS_STATIC_METHOD()
42 42
43 IMPLEMENT_JS_CLASS(CJS_PrintParamsObj, PrintParamsObj) 43 IMPLEMENT_JS_CLASS(CJS_PrintParamsObj, PrintParamsObj)
44 44
45 PrintParamsObj::PrintParamsObj(CJS_Object* pJSObject) 45 PrintParamsObj::PrintParamsObj(CJS_Object* pJSObject)
46 : CJS_EmbedObj(pJSObject) 46 : CJS_EmbedObj(pJSObject)
47 { 47 {
48 » bUI = TRUE; 48 bUI = TRUE;
49 » nStart = 0; 49 nStart = 0;
50 » nEnd = 0; 50 nEnd = 0;
51 » bSilent = FALSE; 51 bSilent = FALSE;
52 » bShrinkToFit = FALSE; 52 bShrinkToFit = FALSE;
53 » bPrintAsImage = FALSE; 53 bPrintAsImage = FALSE;
54 » bReverse = FALSE; 54 bReverse = FALSE;
55 » bAnnotations = TRUE; 55 bAnnotations = TRUE;
56 } 56 }
57 57
58 /* ---------------------- Document ---------------------- */ 58 /* ---------------------- Document ---------------------- */
59 59
60 #define MINWIDTH 5.0f 60 #define MINWIDTH 5.0f
61 #define MINHEIGHT 5.0f 61 #define MINHEIGHT 5.0f
62 62
63 BEGIN_JS_STATIC_CONST(CJS_Document) 63 BEGIN_JS_STATIC_CONST(CJS_Document)
64 END_JS_STATIC_CONST() 64 END_JS_STATIC_CONST()
65 65
66 BEGIN_JS_STATIC_PROP(CJS_Document) 66 BEGIN_JS_STATIC_PROP(CJS_Document)
67 » JS_STATIC_PROP_ENTRY(ADBE) 67 JS_STATIC_PROP_ENTRY(ADBE)
68 » JS_STATIC_PROP_ENTRY(author) 68 JS_STATIC_PROP_ENTRY(author)
69 » JS_STATIC_PROP_ENTRY(baseURL) 69 JS_STATIC_PROP_ENTRY(baseURL)
70 » JS_STATIC_PROP_ENTRY(bookmarkRoot) 70 JS_STATIC_PROP_ENTRY(bookmarkRoot)
71 » JS_STATIC_PROP_ENTRY(calculate) 71 JS_STATIC_PROP_ENTRY(calculate)
72 » JS_STATIC_PROP_ENTRY(Collab) 72 JS_STATIC_PROP_ENTRY(Collab)
73 » JS_STATIC_PROP_ENTRY(creationDate) 73 JS_STATIC_PROP_ENTRY(creationDate)
74 » JS_STATIC_PROP_ENTRY(creator) 74 JS_STATIC_PROP_ENTRY(creator)
75 » JS_STATIC_PROP_ENTRY(delay) 75 JS_STATIC_PROP_ENTRY(delay)
76 » JS_STATIC_PROP_ENTRY(dirty) 76 JS_STATIC_PROP_ENTRY(dirty)
77 » JS_STATIC_PROP_ENTRY(documentFileName) 77 JS_STATIC_PROP_ENTRY(documentFileName)
78 » JS_STATIC_PROP_ENTRY(external) 78 JS_STATIC_PROP_ENTRY(external)
79 » JS_STATIC_PROP_ENTRY(filesize) 79 JS_STATIC_PROP_ENTRY(filesize)
80 » JS_STATIC_PROP_ENTRY(icons) 80 JS_STATIC_PROP_ENTRY(icons)
81 » JS_STATIC_PROP_ENTRY(info) 81 JS_STATIC_PROP_ENTRY(info)
82 » JS_STATIC_PROP_ENTRY(keywords) 82 JS_STATIC_PROP_ENTRY(keywords)
83 » JS_STATIC_PROP_ENTRY(layout) 83 JS_STATIC_PROP_ENTRY(layout)
84 » JS_STATIC_PROP_ENTRY(media) 84 JS_STATIC_PROP_ENTRY(media)
85 » JS_STATIC_PROP_ENTRY(modDate) 85 JS_STATIC_PROP_ENTRY(modDate)
86 » JS_STATIC_PROP_ENTRY(mouseX) 86 JS_STATIC_PROP_ENTRY(mouseX)
87 » JS_STATIC_PROP_ENTRY(mouseY) 87 JS_STATIC_PROP_ENTRY(mouseY)
88 » JS_STATIC_PROP_ENTRY(numFields) 88 JS_STATIC_PROP_ENTRY(numFields)
89 » JS_STATIC_PROP_ENTRY(numPages) 89 JS_STATIC_PROP_ENTRY(numPages)
90 » JS_STATIC_PROP_ENTRY(pageNum) 90 JS_STATIC_PROP_ENTRY(pageNum)
91 » JS_STATIC_PROP_ENTRY(pageWindowRect) 91 JS_STATIC_PROP_ENTRY(pageWindowRect)
92 » JS_STATIC_PROP_ENTRY(path) 92 JS_STATIC_PROP_ENTRY(path)
93 » JS_STATIC_PROP_ENTRY(producer) 93 JS_STATIC_PROP_ENTRY(producer)
94 » JS_STATIC_PROP_ENTRY(subject) 94 JS_STATIC_PROP_ENTRY(subject)
95 » JS_STATIC_PROP_ENTRY(title) 95 JS_STATIC_PROP_ENTRY(title)
96 » JS_STATIC_PROP_ENTRY(zoom) 96 JS_STATIC_PROP_ENTRY(zoom)
97 » JS_STATIC_PROP_ENTRY(zoomType) 97 JS_STATIC_PROP_ENTRY(zoomType)
98 END_JS_STATIC_PROP() 98 END_JS_STATIC_PROP()
99 99
100 BEGIN_JS_STATIC_METHOD(CJS_Document) 100 BEGIN_JS_STATIC_METHOD(CJS_Document)
101 » JS_STATIC_METHOD_ENTRY(addAnnot) 101 JS_STATIC_METHOD_ENTRY(addAnnot)
102 » JS_STATIC_METHOD_ENTRY(addField) 102 JS_STATIC_METHOD_ENTRY(addField)
103 » JS_STATIC_METHOD_ENTRY(addLink) 103 JS_STATIC_METHOD_ENTRY(addLink)
104 » JS_STATIC_METHOD_ENTRY(addIcon) 104 JS_STATIC_METHOD_ENTRY(addIcon)
105 » JS_STATIC_METHOD_ENTRY(calculateNow) 105 JS_STATIC_METHOD_ENTRY(calculateNow)
106 » JS_STATIC_METHOD_ENTRY(closeDoc) 106 JS_STATIC_METHOD_ENTRY(closeDoc)
107 » JS_STATIC_METHOD_ENTRY(createDataObject) 107 JS_STATIC_METHOD_ENTRY(createDataObject)
108 » JS_STATIC_METHOD_ENTRY(deletePages) 108 JS_STATIC_METHOD_ENTRY(deletePages)
109 » JS_STATIC_METHOD_ENTRY(exportAsText) 109 JS_STATIC_METHOD_ENTRY(exportAsText)
110 » JS_STATIC_METHOD_ENTRY(exportAsFDF) 110 JS_STATIC_METHOD_ENTRY(exportAsFDF)
111 » JS_STATIC_METHOD_ENTRY(exportAsXFDF) 111 JS_STATIC_METHOD_ENTRY(exportAsXFDF)
112 » JS_STATIC_METHOD_ENTRY(extractPages) 112 JS_STATIC_METHOD_ENTRY(extractPages)
113 » JS_STATIC_METHOD_ENTRY(getAnnot) 113 JS_STATIC_METHOD_ENTRY(getAnnot)
114 » JS_STATIC_METHOD_ENTRY(getAnnots) 114 JS_STATIC_METHOD_ENTRY(getAnnots)
115 » JS_STATIC_METHOD_ENTRY(getAnnot3D) 115 JS_STATIC_METHOD_ENTRY(getAnnot3D)
116 » JS_STATIC_METHOD_ENTRY(getAnnots3D) 116 JS_STATIC_METHOD_ENTRY(getAnnots3D)
117 » JS_STATIC_METHOD_ENTRY(getField) 117 JS_STATIC_METHOD_ENTRY(getField)
118 » JS_STATIC_METHOD_ENTRY(getIcon) 118 JS_STATIC_METHOD_ENTRY(getIcon)
119 » JS_STATIC_METHOD_ENTRY(getLinks) 119 JS_STATIC_METHOD_ENTRY(getLinks)
120 » JS_STATIC_METHOD_ENTRY(getNthFieldName) 120 JS_STATIC_METHOD_ENTRY(getNthFieldName)
121 » JS_STATIC_METHOD_ENTRY(getOCGs) 121 JS_STATIC_METHOD_ENTRY(getOCGs)
122 » JS_STATIC_METHOD_ENTRY(getPageBox) 122 JS_STATIC_METHOD_ENTRY(getPageBox)
123 » JS_STATIC_METHOD_ENTRY(getPageNthWord) 123 JS_STATIC_METHOD_ENTRY(getPageNthWord)
124 » JS_STATIC_METHOD_ENTRY(getPageNthWordQuads) 124 JS_STATIC_METHOD_ENTRY(getPageNthWordQuads)
125 » JS_STATIC_METHOD_ENTRY(getPageNumWords) 125 JS_STATIC_METHOD_ENTRY(getPageNumWords)
126 » JS_STATIC_METHOD_ENTRY(getPrintParams) 126 JS_STATIC_METHOD_ENTRY(getPrintParams)
127 » JS_STATIC_METHOD_ENTRY(getURL) 127 JS_STATIC_METHOD_ENTRY(getURL)
128 » JS_STATIC_METHOD_ENTRY(importAnFDF) 128 JS_STATIC_METHOD_ENTRY(importAnFDF)
129 » JS_STATIC_METHOD_ENTRY(importAnXFDF) 129 JS_STATIC_METHOD_ENTRY(importAnXFDF)
130 » JS_STATIC_METHOD_ENTRY(importTextData) 130 JS_STATIC_METHOD_ENTRY(importTextData)
131 » JS_STATIC_METHOD_ENTRY(insertPages) 131 JS_STATIC_METHOD_ENTRY(insertPages)
132 » JS_STATIC_METHOD_ENTRY(mailForm) 132 JS_STATIC_METHOD_ENTRY(mailForm)
133 » JS_STATIC_METHOD_ENTRY(print) 133 JS_STATIC_METHOD_ENTRY(print)
134 » JS_STATIC_METHOD_ENTRY(removeField) 134 JS_STATIC_METHOD_ENTRY(removeField)
135 » JS_STATIC_METHOD_ENTRY(replacePages) 135 JS_STATIC_METHOD_ENTRY(replacePages)
136 » JS_STATIC_METHOD_ENTRY(resetForm) 136 JS_STATIC_METHOD_ENTRY(resetForm)
137 » JS_STATIC_METHOD_ENTRY(removeIcon) 137 JS_STATIC_METHOD_ENTRY(removeIcon)
138 » JS_STATIC_METHOD_ENTRY(saveAs) 138 JS_STATIC_METHOD_ENTRY(saveAs)
139 » JS_STATIC_METHOD_ENTRY(submitForm) 139 JS_STATIC_METHOD_ENTRY(submitForm)
140 » JS_STATIC_METHOD_ENTRY(mailDoc) 140 JS_STATIC_METHOD_ENTRY(mailDoc)
141 END_JS_STATIC_METHOD() 141 END_JS_STATIC_METHOD()
142 142
143 IMPLEMENT_JS_CLASS(CJS_Document, Document) 143 IMPLEMENT_JS_CLASS(CJS_Document, Document)
144 144
145 FX_BOOL»CJS_Document::InitInstance(IFXJS_Context* cc) 145 FX_BOOL CJS_Document::InitInstance(IFXJS_Context* cc)
146 { 146 {
147 » CJS_Context* pContext = (CJS_Context*)cc; 147 CJS_Context* pContext = (CJS_Context*)cc;
148 » ASSERT(pContext != NULL); 148 ASSERT(pContext != NULL);
149 149
150 » Document* pDoc = (Document*)GetEmbedObject(); 150 Document* pDoc = (Document*)GetEmbedObject();
151 » ASSERT(pDoc != NULL); 151 ASSERT(pDoc != NULL);
152 152
153 » pDoc->AttachDoc(pContext->GetReaderDocument()); 153 pDoc->AttachDoc(pContext->GetReaderDocument());
154 » pDoc->SetIsolate(pContext->GetJSRuntime()->GetIsolate()); 154 pDoc->SetIsolate(pContext->GetJSRuntime()->GetIsolate());
155 » return TRUE; 155 return TRUE;
156 }; 156 };
157 157
158 /* --------------------------------- Document --------------------------------- */ 158 /* --------------------------------- Document --------------------------------- */
159 159
160 Document::Document(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject), 160 Document::Document(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject),
161 » m_isolate(NULL), 161 m_isolate(NULL),
162 » m_pIconTree(NULL), 162 m_pIconTree(NULL),
163 » m_pDocument(NULL), 163 m_pDocument(NULL),
164 » m_cwBaseURL(L""), 164 m_cwBaseURL(L""),
165 » m_bDelay(FALSE) 165 m_bDelay(FALSE)
166 { 166 {
167 } 167 }
168 168
169 Document::~Document() 169 Document::~Document()
170 { 170 {
171 » if (m_pIconTree) 171 if (m_pIconTree)
172 » { 172 {
173 » » m_pIconTree->DeleteIconTree(); 173 m_pIconTree->DeleteIconTree();
174 » » delete m_pIconTree; 174 delete m_pIconTree;
175 » » m_pIconTree = NULL; 175 m_pIconTree = NULL;
176 » } 176 }
177 » for (int i=0; i<m_DelayData.GetSize(); i++) 177 for (int i=0; i<m_DelayData.GetSize(); i++)
178 » { 178 {
179 » » if (CJS_DelayData* pData = m_DelayData.GetAt(i)) 179 if (CJS_DelayData* pData = m_DelayData.GetAt(i))
180 » » { 180 {
181 » » » delete pData; 181 delete pData;
182 » » » pData = NULL; 182 pData = NULL;
183 » » » m_DelayData.SetAt(i, NULL); 183 m_DelayData.SetAt(i, NULL);
184 184
185 » » } 185 }
186 » } 186 }
187 187
188 » m_DelayData.RemoveAll(); 188 m_DelayData.RemoveAll();
189 » m_DelayAnnotData.RemoveAll(); 189 m_DelayAnnotData.RemoveAll();
190 } 190 }
191 191
192 //the total number of fileds in document. 192 //the total number of fileds in document.
193 FX_BOOL Document::numFields(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString & sError) 193 FX_BOOL Document::numFields(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString & sError)
194 { 194 {
195 » if (vp.IsSetting()) { 195 if (vp.IsSetting()) {
196 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 196 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
197 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); 197 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
198 » » return FALSE; 198 return FALSE;
199 » } 199 }
200 » CPDFSDK_InterForm *pInterForm = m_pDocument->GetInterForm(); 200 CPDFSDK_InterForm *pInterForm = m_pDocument->GetInterForm();
201 » CPDF_InterForm *pPDFForm = pInterForm->GetInterForm(); 201 CPDF_InterForm *pPDFForm = pInterForm->GetInterForm();
202 » vp << (int)pPDFForm->CountFields(); 202 vp << (int)pPDFForm->CountFields();
203 » return TRUE; 203 return TRUE;
204 } 204 }
205 205
206 FX_BOOL Document::dirty(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror) 206 FX_BOOL Document::dirty(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror)
207 { 207 {
208 » ASSERT(m_pDocument != NULL); 208 ASSERT(m_pDocument != NULL);
209 209
210 » if (vp.IsGetting()) 210 if (vp.IsGetting())
211 » { 211 {
212 » » if (m_pDocument->GetChangeMark()) 212 if (m_pDocument->GetChangeMark())
213 » » » vp << true; 213 vp << true;
214 » » else 214 else
215 » » » vp << false; 215 vp << false;
216 » } 216 }
217 » else 217 else
218 » { 218 {
219 » » bool bChanged = false; 219 bool bChanged = false;
220 220
221 » » vp >> bChanged; 221 vp >> bChanged;
222 222
223 » » if (bChanged) 223 if (bChanged)
224 » » » m_pDocument->SetChangeMark(); 224 m_pDocument->SetChangeMark();
225 » » else 225 else
226 » » » m_pDocument->ClearChangeMark(); 226 m_pDocument->ClearChangeMark();
227 » } 227 }
228 228
229 » return TRUE; 229 return TRUE;
230 } 230 }
231 231
232 FX_BOOL Document::ADBE(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr ror) 232 FX_BOOL Document::ADBE(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr ror)
233 { 233 {
234 » ASSERT(m_pDocument != NULL); 234 ASSERT(m_pDocument != NULL);
235 235
236 » if (vp.IsGetting()) 236 if (vp.IsGetting())
237 » { 237 {
238 » » vp.SetNull(); 238 vp.SetNull();
239 » } 239 }
240 » else 240 else
241 » { 241 {
242 » } 242 }
243 243
244 » return TRUE; 244 return TRUE;
245 } 245 }
246 246
247 FX_BOOL Document::pageNum(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 247 FX_BOOL Document::pageNum(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
248 { 248 {
249 » ASSERT(m_pDocument != NULL); 249 ASSERT(m_pDocument != NULL);
250 250
251 » if (vp.IsGetting()) 251 if (vp.IsGetting())
252 » { 252 {
253 » » if (CPDFSDK_PageView* pPageView = m_pDocument->GetCurrentView()) 253 if (CPDFSDK_PageView* pPageView = m_pDocument->GetCurrentView())
254 » » { 254 {
255 » » » vp << pPageView->GetPageIndex(); 255 vp << pPageView->GetPageIndex();
256 » » } 256 }
257 » } 257 }
258 » else 258 else
259 » { 259 {
260 » » int iPageCount = m_pDocument->GetPageCount(); 260 int iPageCount = m_pDocument->GetPageCount();
261 » » int iPageNum = 0; 261 int iPageNum = 0;
262 » » vp >> iPageNum; 262 vp >> iPageNum;
263 263
264 » » CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); 264 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
265 » » if (iPageNum >= 0 && iPageNum < iPageCount) 265 if (iPageNum >= 0 && iPageNum < iPageCount)
266 » » { 266 {
267 » » » pEnv->JS_docgotoPage(iPageNum); 267 pEnv->JS_docgotoPage(iPageNum);
268 » » } 268 }
269 » » else if (iPageNum >= iPageCount) 269 else if (iPageNum >= iPageCount)
270 » » { 270 {
271 » » » pEnv->JS_docgotoPage(iPageCount-1); 271 pEnv->JS_docgotoPage(iPageCount-1);
272 » » } 272 }
273 » » else if (iPageNum < 0) 273 else if (iPageNum < 0)
274 » » { 274 {
275 » » » pEnv->JS_docgotoPage(0); 275 pEnv->JS_docgotoPage(0);
276 » » } 276 }
277 » } 277 }
278 278
279 » return TRUE; 279 return TRUE;
280 } 280 }
281 281
282 FX_BOOL Document::ParserParams(JSObject* pObj,CJS_AnnotObj& annotobj) 282 FX_BOOL Document::ParserParams(JSObject* pObj,CJS_AnnotObj& annotobj)
283 { 283 {
284 » // Not supported. 284 // Not supported.
285 » return TRUE; 285 return TRUE;
286 } 286 }
287 287
288 FX_BOOL Document::addAnnot(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError) 288 FX_BOOL Document::addAnnot(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError)
289 { 289 {
290 » // Not supported. 290 // Not supported.
291 » return TRUE; 291 return TRUE;
292 } 292 }
293 293
294 FX_BOOL Document::addField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError) 294 FX_BOOL Document::addField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError)
295 { 295 {
296 » // Not supported. 296 // Not supported.
297 » return TRUE; 297 return TRUE;
298 } 298 }
299 299
300 FX_BOOL Document::exportAsText(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) 300 FX_BOOL Document::exportAsText(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
301 { 301 {
302 » // Unsafe, not supported. 302 // Unsafe, not supported.
303 » return TRUE; 303 return TRUE;
304 } 304 }
305 305
306 FX_BOOL Document::exportAsFDF(IFXJS_Context* cc, const CJS_Parameters& params, C JS_Value& vRet, CFX_WideString& sError) 306 FX_BOOL Document::exportAsFDF(IFXJS_Context* cc, const CJS_Parameters& params, C JS_Value& vRet, CFX_WideString& sError)
307 { 307 {
308 » // Unsafe, not supported. 308 // Unsafe, not supported.
309 » return TRUE; 309 return TRUE;
310 } 310 }
311 311
312 FX_BOOL Document::exportAsXFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) 312 FX_BOOL Document::exportAsXFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
313 { 313 {
314 » // Unsafe, not supported. 314 // Unsafe, not supported.
315 » return TRUE; 315 return TRUE;
316 } 316 }
317 317
318 //Maps a field object in PDF document to a JavaScript variable 318 //Maps a field object in PDF document to a JavaScript variable
319 //comment: 319 //comment:
320 //note: the paremter cName, this is clue how to treat if the cName is not a vali able filed name in this document 320 //note: the paremter cName, this is clue how to treat if the cName is not a vali able filed name in this document
321 321
322 FX_BOOL Document::getField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError) 322 FX_BOOL Document::getField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError)
323 { 323 {
324 » CJS_Context* pContext = (CJS_Context*)cc; 324 CJS_Context* pContext = (CJS_Context*)cc;
325 » if (params.size() < 1) { 325 if (params.size() < 1) {
326 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 326 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
327 » » return FALSE; 327 return FALSE;
328 » } 328 }
329 329
330 » CFX_WideString wideName = params[0].ToCFXWideString(); 330 CFX_WideString wideName = params[0].ToCFXWideString();
331 331
332 » CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); 332 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
333 » CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); 333 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
334 » if (pPDFForm->CountFields(wideName) <= 0) 334 if (pPDFForm->CountFields(wideName) <= 0)
335 » { 335 {
336 » » vRet.SetNull(); 336 vRet.SetNull();
337 » » return TRUE; 337 return TRUE;
338 » } 338 }
339 339
340 » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 340 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
341 » JSFXObject pFieldObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObj DefnID(*pRuntime, L"Field")); 341 JSFXObject pFieldObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefn ID(*pRuntime, L"Field"));
342 342
343 » v8::Isolate* isolate = GetIsolate(cc); 343 v8::Isolate* isolate = GetIsolate(cc);
344 » CJS_Field* pJSField = (CJS_Field*)JS_GetPrivate(isolate,pFieldObj); 344 CJS_Field* pJSField = (CJS_Field*)JS_GetPrivate(isolate,pFieldObj);
345 » Field* pField = (Field *)pJSField->GetEmbedObject(); 345 Field* pField = (Field *)pJSField->GetEmbedObject();
346 » pField->AttachField(this, wideName); 346 pField->AttachField(this, wideName);
347 347
348 » vRet = pJSField; 348 vRet = pJSField;
349 » return TRUE; 349 return TRUE;
350 } 350 }
351 351
352 //Gets the name of the nth field in the document 352 //Gets the name of the nth field in the document
353 FX_BOOL Document::getNthFieldName(IFXJS_Context* cc, const CJS_Parameters& param s, CJS_Value& vRet, CFX_WideString& sError) 353 FX_BOOL Document::getNthFieldName(IFXJS_Context* cc, const CJS_Parameters& param s, CJS_Value& vRet, CFX_WideString& sError)
354 { 354 {
355 » CJS_Context* pContext = (CJS_Context*)cc; 355 CJS_Context* pContext = (CJS_Context*)cc;
356 » if (params.size() != 1) { 356 if (params.size() != 1) {
357 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 357 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
358 » » return FALSE; 358 return FALSE;
359 » } 359 }
360 360
361 » int nIndex = params[0].ToInt(); 361 int nIndex = params[0].ToInt();
362 » if (nIndex < 0) { 362 if (nIndex < 0) {
363 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); 363 sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
364 » » return FALSE; 364 return FALSE;
365 » } 365 }
366 366
367 » CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); 367 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
368 » CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); 368 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
369 » CPDF_FormField* pField = pPDFForm->GetField(nIndex); 369 CPDF_FormField* pField = pPDFForm->GetField(nIndex);
370 » if (!pField) 370 if (!pField)
371 » » return FALSE; 371 return FALSE;
372 372
373 » vRet = pField->GetFullName().c_str(); 373 vRet = pField->GetFullName().c_str();
374 » return TRUE; 374 return TRUE;
375 } 375 }
376 376
377 FX_BOOL Document::importAnFDF(IFXJS_Context* cc, const CJS_Parameters& params, C JS_Value& vRet, CFX_WideString& sError) 377 FX_BOOL Document::importAnFDF(IFXJS_Context* cc, const CJS_Parameters& params, C JS_Value& vRet, CFX_WideString& sError)
378 { 378 {
379 » // Unsafe, not supported. 379 // Unsafe, not supported.
380 » return TRUE; 380 return TRUE;
381 } 381 }
382 382
383 FX_BOOL Document::importAnXFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) 383 FX_BOOL Document::importAnXFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
384 { 384 {
385 » // Unsafe, not supported. 385 // Unsafe, not supported.
386 » return TRUE; 386 return TRUE;
387 } 387 }
388 388
389 FX_BOOL Document::importTextData(IFXJS_Context* cc, const CJS_Parameters& params , CJS_Value& vRet, CFX_WideString& sError) 389 FX_BOOL Document::importTextData(IFXJS_Context* cc, const CJS_Parameters& params , CJS_Value& vRet, CFX_WideString& sError)
390 { 390 {
391 » // Unsafe, not supported. 391 // Unsafe, not supported.
392 » return TRUE; 392 return TRUE;
393 } 393 }
394 394
395 //exports the form data and mails the resulting fdf file as an attachment to all recipients. 395 //exports the form data and mails the resulting fdf file as an attachment to all recipients.
396 //comment: need reader supports 396 //comment: need reader supports
397 //note: 397 //note:
398 //int CPDFSDK_Document::mailForm(FX_BOOL bUI,String cto,string ccc,string cbcc,s tring cSubject,string cms); 398 //int CPDFSDK_Document::mailForm(FX_BOOL bUI,String cto,string ccc,string cbcc,s tring cSubject,string cms);
399 399
400 FX_BOOL Document::mailForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError) 400 FX_BOOL Document::mailForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError)
401 { 401 {
402 » ASSERT(m_pDocument != NULL); 402 ASSERT(m_pDocument != NULL);
403 403
404 » if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; 404 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE;
405 405
406 » int iLength = params.size(); 406 int iLength = params.size();
407 407
408 » FX_BOOL bUI = iLength > 0 ? params[0].ToBool() : TRUE; 408 FX_BOOL bUI = iLength > 0 ? params[0].ToBool() : TRUE;
409 » CFX_WideString cTo = iLength > 1 ? params[1].ToCFXWideString() : L""; 409 CFX_WideString cTo = iLength > 1 ? params[1].ToCFXWideString() : L"";
410 » CFX_WideString cCc = iLength > 2 ? params[2].ToCFXWideString() : L""; 410 CFX_WideString cCc = iLength > 2 ? params[2].ToCFXWideString() : L"";
411 » CFX_WideString cBcc = iLength > 3 ? params[3].ToCFXWideString() : L""; 411 CFX_WideString cBcc = iLength > 3 ? params[3].ToCFXWideString() : L"";
412 » CFX_WideString cSubject = iLength > 4 ? params[4].ToCFXWideString() : L" "; 412 CFX_WideString cSubject = iLength > 4 ? params[4].ToCFXWideString() : L"";
413 » CFX_WideString cMsg = iLength > 5 ? params[5].ToCFXWideString() : L""; 413 CFX_WideString cMsg = iLength > 5 ? params[5].ToCFXWideString() : L"";
414 414
415 » CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInte rForm(); 415 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterFor m();
416 » ASSERT(pInterForm != NULL); 416 ASSERT(pInterForm != NULL);
417 417
418 » CFX_ByteTextBuf textBuf; 418 CFX_ByteTextBuf textBuf;
419 » if (!pInterForm->ExportFormToFDFTextBuf(textBuf)) 419 if (!pInterForm->ExportFormToFDFTextBuf(textBuf))
420 » » return FALSE; 420 return FALSE;
421 421
422 » CJS_Context* pContext = (CJS_Context*)cc; 422 CJS_Context* pContext = (CJS_Context*)cc;
423 » ASSERT(pContext != NULL); 423 ASSERT(pContext != NULL);
424 » CPDFDoc_Environment* pEnv = pContext->GetReaderApp(); 424 CPDFDoc_Environment* pEnv = pContext->GetReaderApp();
425 » ASSERT(pEnv != NULL); 425 ASSERT(pEnv != NULL);
426 » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 426 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
427 » ASSERT(pRuntime != NULL); 427 ASSERT(pRuntime != NULL);
428 428
429 » pRuntime->BeginBlock(); 429 pRuntime->BeginBlock();
430 » pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, cTo. c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), cMsg.c_str()); 430 pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, cTo.c_st r(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), cMsg.c_str());
431 » pRuntime->EndBlock(); 431 pRuntime->EndBlock();
432 » return TRUE; 432 return TRUE;
433 } 433 }
434 434
435 FX_BOOL Document::print(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Val ue& vRet, CFX_WideString& sError) 435 FX_BOOL Document::print(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Val ue& vRet, CFX_WideString& sError)
436 { 436 {
437 » CJS_Context* pContext = (CJS_Context*)cc; 437 CJS_Context* pContext = (CJS_Context*)cc;
438 » ASSERT(pContext != NULL); 438 ASSERT(pContext != NULL);
439 » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 439 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
440 » ASSERT(pRuntime != NULL); 440 ASSERT(pRuntime != NULL);
441 441
442 » FX_BOOL bUI = TRUE; 442 FX_BOOL bUI = TRUE;
443 » int nStart = 0; 443 int nStart = 0;
444 » int nEnd = 0; 444 int nEnd = 0;
445 » FX_BOOL bSilent = FALSE; 445 FX_BOOL bSilent = FALSE;
446 » FX_BOOL bShrinkToFit = FALSE; 446 FX_BOOL bShrinkToFit = FALSE;
447 » FX_BOOL bPrintAsImage = FALSE; 447 FX_BOOL bPrintAsImage = FALSE;
448 » FX_BOOL bReverse = FALSE; 448 FX_BOOL bReverse = FALSE;
449 » FX_BOOL bAnnotations = FALSE; 449 FX_BOOL bAnnotations = FALSE;
450 450
451 » int nlength = params.size(); 451 int nlength = params.size();
452 » if(nlength ==9) 452 if(nlength ==9)
453 » { 453 {
454 » » if (params[8].GetType() == VT_fxobject) 454 if (params[8].GetType() == VT_fxobject)
455 » » { 455 {
456 » » » JSFXObject pObj = params[8].ToV8Object(); 456 JSFXObject pObj = params[8].ToV8Object();
457 » » » { 457 {
458 » » » » if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pR untime, L"PrintParamsObj")) 458 if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"PrintP aramsObj"))
459 » » » » { 459 {
460 » » » » » if (CJS_Object* pJSObj = params[8].ToCJS Object()) 460 if (CJS_Object* pJSObj = params[8].ToCJSObject())
461 » » » » » { 461 {
462 » » » » » » » if (PrintParamsObj* ppri ntparamsObj = (PrintParamsObj*)pJSObj->GetEmbedObject()) 462 if (PrintParamsObj* pprintparamsObj = (PrintParamsOb j*)pJSObj->GetEmbedObject())
463 » » » » » » » { 463 {
464 » » » » » » » » bUI = pprintpara msObj->bUI; 464 bUI = pprintparamsObj->bUI;
465 » » » » » » » » nStart = pprintp aramsObj->nStart; 465 nStart = pprintparamsObj->nStart;
466 » » » » » » » » nEnd = pprintpar amsObj->nEnd; 466 nEnd = pprintparamsObj->nEnd;
467 » » » » » » » » bSilent = pprint paramsObj->bSilent; 467 bSilent = pprintparamsObj->bSilent;
468 » » » » » » » » bShrinkToFit = p printparamsObj->bShrinkToFit; 468 bShrinkToFit = pprintparamsObj->bShrinkToFit;
469 » » » » » » » » bPrintAsImage = pprintparamsObj->bPrintAsImage; 469 bPrintAsImage = pprintparamsObj->bPrintAsImage;
470 » » » » » » » » bReverse = pprin tparamsObj->bReverse; 470 bReverse = pprintparamsObj->bReverse;
471 » » » » » » » » bAnnotations = p printparamsObj->bAnnotations; 471 bAnnotations = pprintparamsObj->bAnnotations;
472 » » » » » » » } 472 }
473 » » » » » } 473 }
474 » » » » } 474 }
475 » » » } 475 }
476 » » } 476 }
477 » } 477 }
478 » else 478 else
479 » { 479 {
480 » » if(nlength >= 1) 480 if(nlength >= 1)
481 » » » bUI = params[0].ToBool(); 481 bUI = params[0].ToBool();
482 » » if(nlength >= 2) 482 if(nlength >= 2)
483 » » » nStart = params[1].ToInt(); 483 nStart = params[1].ToInt();
484 » » if(nlength >= 3) 484 if(nlength >= 3)
485 » » » nEnd = params[2].ToInt(); 485 nEnd = params[2].ToInt();
486 » » if(nlength >= 4) 486 if(nlength >= 4)
487 » » » bSilent = params[3].ToBool(); 487 bSilent = params[3].ToBool();
488 » » if(nlength >= 5) 488 if(nlength >= 5)
489 » » » bShrinkToFit = params[4].ToBool(); 489 bShrinkToFit = params[4].ToBool();
490 » » if(nlength >= 6) 490 if(nlength >= 6)
491 » » » bPrintAsImage = params[5].ToBool(); 491 bPrintAsImage = params[5].ToBool();
492 » » if(nlength >= 7) 492 if(nlength >= 7)
493 » » » bReverse = params[6].ToBool(); 493 bReverse = params[6].ToBool();
494 » » if(nlength >= 8) 494 if(nlength >= 8)
495 » » » bAnnotations = params[7].ToBool(); 495 bAnnotations = params[7].ToBool();
496 » } 496 }
497 497
498 » ASSERT(m_pDocument != NULL); 498 ASSERT(m_pDocument != NULL);
499 499
500 » if (CPDFDoc_Environment* pEnv = m_pDocument->GetEnv()) 500 if (CPDFDoc_Environment* pEnv = m_pDocument->GetEnv())
501 » { 501 {
502 » » pEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, bPri ntAsImage, bReverse, bAnnotations); 502 pEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, bPrintAsImag e, bReverse, bAnnotations);
503 » » return TRUE; 503 return TRUE;
504 » } 504 }
505 » return FALSE; 505 return FALSE;
506 } 506 }
507 507
508 //removes the specified field from the document. 508 //removes the specified field from the document.
509 //comment: 509 //comment:
510 //note: if the filed name is not retional, adobe is dumb for it. 510 //note: if the filed name is not retional, adobe is dumb for it.
511 511
512 FX_BOOL Document::removeField(IFXJS_Context* cc, const CJS_Parameters& params, C JS_Value& vRet, CFX_WideString& sError) 512 FX_BOOL Document::removeField(IFXJS_Context* cc, const CJS_Parameters& params, C JS_Value& vRet, CFX_WideString& sError)
513 { 513 {
514 » ASSERT(m_pDocument != NULL); 514 ASSERT(m_pDocument != NULL);
515 515
516 » if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || 516 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) ||
517 » » m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM))) return FALSE; 517 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM))) return FALSE;
518 518
519 » CJS_Context* pContext = (CJS_Context*)cc; 519 CJS_Context* pContext = (CJS_Context*)cc;
520 » if (params.size() != 1) { 520 if (params.size() != 1) {
521 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 521 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
522 » » return FALSE; 522 return FALSE;
523 » } 523 }
524 524
525 » CFX_WideString sFieldName = params[0].ToCFXWideString(); 525 CFX_WideString sFieldName = params[0].ToCFXWideString();
526 » CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInte rForm(); 526 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterFor m();
527 » ASSERT(pInterForm != NULL); 527 ASSERT(pInterForm != NULL);
528 528
529 » CFX_PtrArray widgets; 529 CFX_PtrArray widgets;
530 » pInterForm->GetWidgets(sFieldName, widgets); 530 pInterForm->GetWidgets(sFieldName, widgets);
531 531
532 » int nSize = widgets.GetSize(); 532 int nSize = widgets.GetSize();
533 533
534 » if (nSize > 0) 534 if (nSize > 0)
535 » { 535 {
536 » » for (int i=0; i<nSize; i++) 536 for (int i=0; i<nSize; i++)
537 » » { 537 {
538 » » » CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets[i]; 538 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets[i];
539 » » » ASSERT(pWidget != NULL); 539 ASSERT(pWidget != NULL);
540 540
541 » » » CPDF_Rect rcAnnot = pWidget->GetRect(); 541 CPDF_Rect rcAnnot = pWidget->GetRect();
542 » » » rcAnnot.left -= 1; 542 rcAnnot.left -= 1;
543 » » » rcAnnot.bottom -= 1; 543 rcAnnot.bottom -= 1;
544 » » » rcAnnot.right += 1; 544 rcAnnot.right += 1;
545 » » » rcAnnot.top += 1; 545 rcAnnot.top += 1;
546 546
547 » » » CFX_RectArray aRefresh; 547 CFX_RectArray aRefresh;
548 » » » aRefresh.Add(rcAnnot); 548 aRefresh.Add(rcAnnot);
549 549
550 » » » CPDF_Page* pPage = pWidget->GetPDFPage(); 550 CPDF_Page* pPage = pWidget->GetPDFPage();
551 » » » ASSERT(pPage != NULL); 551 ASSERT(pPage != NULL);
552 552
553 » » » CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(p Page); 553 CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage);
554 » » » pPageView->DeleteAnnot(pWidget); 554 pPageView->DeleteAnnot(pWidget);
555 555
556 » » » pPageView->UpdateRects(aRefresh); 556 pPageView->UpdateRects(aRefresh);
557 » » } 557 }
558 » » m_pDocument->SetChangeMark(); 558 m_pDocument->SetChangeMark();
559 » } 559 }
560 560
561 » return TRUE; 561 return TRUE;
562 } 562 }
563 563
564 //reset filed values within a document. 564 //reset filed values within a document.
565 //comment: 565 //comment:
566 //note: if the fields names r not rational, aodbe is dumb for it. 566 //note: if the fields names r not rational, aodbe is dumb for it.
567 567
568 FX_BOOL Document::resetForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS _Value& vRet, CFX_WideString& sError) 568 FX_BOOL Document::resetForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS _Value& vRet, CFX_WideString& sError)
569 { 569 {
570 » ASSERT(m_pDocument != NULL); 570 ASSERT(m_pDocument != NULL);
571 571
572 » if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || 572 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) ||
573 » » m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || 573 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) ||
574 » » m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) return FALSE; 574 m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) return FALSE;
575 575
576 » CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInte rForm(); 576 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterFor m();
577 » ASSERT(pInterForm != NULL); 577 ASSERT(pInterForm != NULL);
578 578
579 » CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); 579 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
580 » ASSERT(pPDFForm != NULL); 580 ASSERT(pPDFForm != NULL);
581 581
582 » v8::Isolate* isolate = GetIsolate(cc); 582 v8::Isolate* isolate = GetIsolate(cc);
583 » CJS_Array aName(isolate); 583 CJS_Array aName(isolate);
584 584
585 » if (params.size() > 0) 585 if (params.size() > 0)
586 » { 586 {
587 » » switch (params[0].GetType()) 587 switch (params[0].GetType())
588 » » { 588 {
589 » » default: 589 default:
590 » » » aName.Attach(params[0].ToV8Array()); 590 aName.Attach(params[0].ToV8Array());
591 » » » break; 591 break;
592 » » case VT_string: 592 case VT_string:
593 » » » aName.SetElement(0,params[0]); 593 aName.SetElement(0,params[0]);
594 » » » break; 594 break;
595 » » } 595 }
596 596
597 » » CFX_PtrArray aFields; 597 CFX_PtrArray aFields;
598 598
599 » » for (int i=0,isz=aName.GetLength(); i<isz; i++) 599 for (int i=0,isz=aName.GetLength(); i<isz; i++)
600 » » { 600 {
601 » » » CJS_Value valElement(isolate); 601 CJS_Value valElement(isolate);
602 » » » aName.GetElement(i,valElement); 602 aName.GetElement(i,valElement);
603 » » » CFX_WideString swVal = valElement.ToCFXWideString(); 603 CFX_WideString swVal = valElement.ToCFXWideString();
604 604
605 » » » for (int j=0,jsz=pPDFForm->CountFields(swVal); j<jsz; j+ +) 605 for (int j=0,jsz=pPDFForm->CountFields(swVal); j<jsz; j++)
606 » » » { 606 {
607 » » » » aFields.Add((void*)pPDFForm->GetField(j,swVal)); 607 aFields.Add((void*)pPDFForm->GetField(j,swVal));
608 » » » } 608 }
609 » » } 609 }
610 610
611 » » if (aFields.GetSize() > 0) 611 if (aFields.GetSize() > 0)
612 » » { 612 {
613 » » » pPDFForm->ResetForm(aFields, TRUE, TRUE); 613 pPDFForm->ResetForm(aFields, TRUE, TRUE);
614 » » » m_pDocument->SetChangeMark(); 614 m_pDocument->SetChangeMark();
615 615
616 » » } 616 }
617 » } 617 }
618 » else 618 else
619 » { 619 {
620 » » pPDFForm->ResetForm(TRUE); 620 pPDFForm->ResetForm(TRUE);
621 » » m_pDocument->SetChangeMark(); 621 m_pDocument->SetChangeMark();
622 622
623 » } 623 }
624 624
625 » return TRUE; 625 return TRUE;
626 } 626 }
627 627
628 628
629 FX_BOOL Document::saveAs(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Va lue& vRet, CFX_WideString& sError) 629 FX_BOOL Document::saveAs(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Va lue& vRet, CFX_WideString& sError)
630 { 630 {
631 // Unsafe, not supported. 631 // Unsafe, not supported.
632 return TRUE; 632 return TRUE;
633 } 633 }
634 634
635 635
636 FX_BOOL Document::submitForm(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError) 636 FX_BOOL Document::submitForm(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError)
637 { 637 {
638 » ASSERT(m_pDocument != NULL); 638 ASSERT(m_pDocument != NULL);
639 » CJS_Context* pContext = (CJS_Context*)cc; 639 CJS_Context* pContext = (CJS_Context*)cc;
640 » int nSize = params.size(); 640 int nSize = params.size();
641 » if (nSize < 1) { 641 if (nSize < 1) {
642 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 642 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
643 » » return FALSE; 643 return FALSE;
644 » } 644 }
645 645
646 » CFX_WideString strURL; 646 CFX_WideString strURL;
647 » FX_BOOL bFDF = TRUE; 647 FX_BOOL bFDF = TRUE;
648 » FX_BOOL bEmpty = FALSE; 648 FX_BOOL bEmpty = FALSE;
649 » v8::Isolate* isolate = GetIsolate(cc); 649 v8::Isolate* isolate = GetIsolate(cc);
650 » CJS_Array aFields(isolate); 650 CJS_Array aFields(isolate);
651 651
652 » CJS_Value v = params[0]; 652 CJS_Value v = params[0];
653 » if (v.GetType() == VT_string) 653 if (v.GetType() == VT_string)
654 » { 654 {
655 » » strURL = params[0].ToCFXWideString(); 655 strURL = params[0].ToCFXWideString();
656 » » if (nSize > 1) 656 if (nSize > 1)
657 » » » bFDF = params[1].ToBool(); 657 bFDF = params[1].ToBool();
658 » » if (nSize > 2) 658 if (nSize > 2)
659 » » » bEmpty = params[2].ToBool(); 659 bEmpty = params[2].ToBool();
660 » » if (nSize > 3) 660 if (nSize > 3)
661 » » » aFields.Attach(params[3].ToV8Array()); 661 aFields.Attach(params[3].ToV8Array());
662 » } 662 }
663 » else if (v.GetType() == VT_object) 663 else if (v.GetType() == VT_object)
664 » { 664 {
665 » » JSObject pObj = params[0].ToV8Object(); 665 JSObject pObj = params[0].ToV8Object();
666 » » v8::Local<v8::Value> pValue = JS_GetObjectElement(isolate, pObj, L"cURL"); 666 v8::Local<v8::Value> pValue = JS_GetObjectElement(isolate, pObj, L"cURL" );
667 » » if (!pValue.IsEmpty()) 667 if (!pValue.IsEmpty())
668 » » » strURL = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValu e)).ToCFXWideString(); 668 strURL = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToCFXWid eString();
669 » » pValue = JS_GetObjectElement(isolate, pObj, L"bFDF"); 669 pValue = JS_GetObjectElement(isolate, pObj, L"bFDF");
670 » » bFDF = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool (); 670 bFDF = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool();
671 » » pValue = JS_GetObjectElement(isolate, pObj, L"bEmpty"); 671 pValue = JS_GetObjectElement(isolate, pObj, L"bEmpty");
672 » » bEmpty = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBo ol(); 672 bEmpty = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool();
673 » » pValue = JS_GetObjectElement(isolate, pObj,L"aFields"); 673 pValue = JS_GetObjectElement(isolate, pObj,L"aFields");
674 » » aFields.Attach(CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue) ).ToV8Array()); 674 aFields.Attach(CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToV8Ar ray());
675 » } 675 }
676 676
677 » CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInte rForm(); 677 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
678 » ASSERT(pInterForm != NULL); 678 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterFor m();
679 » CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); 679 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm();
680 » ASSERT(pPDFInterForm != NULL); 680 FX_BOOL bAll = (aFields.GetLength() == 0);
681 681 if (bAll && bEmpty)
682 » FX_BOOL bAll = (aFields.GetLength() == 0); 682 {
683 683 if (pPDFInterForm->CheckRequiredFields())
684 » if (bAll && bEmpty) 684 {
685 » { 685 pRuntime->BeginBlock();
686 » » CJS_Context* pContext = (CJS_Context*)cc; 686 pInterForm->SubmitForm(strURL, FALSE);
687 » » ASSERT(pContext != NULL); 687 pRuntime->EndBlock();
688 » » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 688 }
689 » » ASSERT(pRuntime != NULL); 689 return TRUE;
690 690 }
691 691
692 » » if (pPDFInterForm->CheckRequiredFields()) 692 CFX_PtrArray fieldObjects;
693 » » { 693 for (int i=0,sz=aFields.GetLength(); i<sz; i++)
694 » » » pRuntime->BeginBlock(); 694 {
695 » » » pInterForm->SubmitForm(strURL, FALSE); 695 CJS_Value valName(isolate);
696 » » » pRuntime->EndBlock(); 696 aFields.GetElement(i, valName);
697 » » } 697
698 698 CFX_WideString sName = valName.ToCFXWideString();
699 » » return TRUE; 699 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
700 » } 700 for (int j = 0, jsz = pPDFForm->CountFields(sName); j < jsz; ++j)
701 » else 701 {
702 » { 702 CPDF_FormField* pField = pPDFForm->GetField(j, sName);
703 » » CFX_PtrArray fieldObjects; 703 if (!bEmpty && pField->GetValue().IsEmpty())
704 704 continue;
705 » » for (int i=0,sz=aFields.GetLength(); i<sz; i++) 705
706 » » { 706 fieldObjects.Add(pField);
707 » » » CJS_Value valName(isolate); 707 }
708 » » » aFields.GetElement(i, valName); 708 }
709 » » » CFX_WideString sName = valName.ToCFXWideString(); 709
710 710 if (pPDFInterForm->CheckRequiredFields(&fieldObjects, TRUE))
711 » » » CPDF_InterForm* pPDFForm = pInterForm->GetInterForm(); 711 {
712 » » » ASSERT(pPDFForm != NULL); 712 pRuntime->BeginBlock();
713 713 pInterForm->SubmitFields(strURL, fieldObjects, TRUE, !bFDF);
714 » » » for (int j=0, jsz=pPDFForm->CountFields(sName); j<jsz; j ++) 714 pRuntime->EndBlock();
715 » » » { 715 }
716 » » » » CPDF_FormField* pField = pPDFForm->GetField(j, s Name); 716 return TRUE;
717 » » » » if (!bEmpty && pField->GetValue().IsEmpty())
718 » » » » » continue;
719
720 » » » » fieldObjects.Add(pField);
721 » » » }
722 » » }
723
724 » » CJS_Context* pContext = (CJS_Context*)cc;
725 » » ASSERT(pContext != NULL);
726 » » CJS_Runtime* pRuntime = pContext->GetJSRuntime();
727 » » ASSERT(pRuntime != NULL);
728
729
730 » » if (pPDFInterForm->CheckRequiredFields(&fieldObjects, TRUE))
731 » » {
732 » » » pRuntime->BeginBlock();
733 » » » pInterForm->SubmitFields(strURL, fieldObjects, TRUE, !bF DF);
734 » » » pRuntime->EndBlock();
735 » » }
736
737 » » return TRUE;
738 » }
739
740 } 717 }
741 718
742 //////////////////////////////////////////////////////////////////////////////// ////////////// 719 //////////////////////////////////////////////////////////////////////////////// //////////////
743 720
744 void Document::AttachDoc(CPDFSDK_Document *pDoc) 721 void Document::AttachDoc(CPDFSDK_Document *pDoc)
745 { 722 {
746 » m_pDocument = pDoc; 723 m_pDocument = pDoc;
747 } 724 }
748 725
749 CPDFSDK_Document * Document::GetReaderDoc() 726 CPDFSDK_Document * Document::GetReaderDoc()
750 { 727 {
751 » return m_pDocument; 728 return m_pDocument;
752 } 729 }
753 730
754 FX_BOOL Document::ExtractFileName(CPDFSDK_Document *pDoc,CFX_ByteString &strFile Name) 731 FX_BOOL Document::ExtractFileName(CPDFSDK_Document *pDoc,CFX_ByteString &strFile Name)
755 { 732 {
756 » return FALSE; 733 return FALSE;
757 } 734 }
758 735
759 FX_BOOL Document::ExtractFolderName(CPDFSDK_Document *pDoc,CFX_ByteString &strFo lderName) 736 FX_BOOL Document::ExtractFolderName(CPDFSDK_Document *pDoc,CFX_ByteString &strFo lderName)
760 { 737 {
761 » return FALSE; 738 return FALSE;
762 } 739 }
763 740
764 FX_BOOL Document::bookmarkRoot(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideStr ing& sError) 741 FX_BOOL Document::bookmarkRoot(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideStr ing& sError)
765 { 742 {
766 » return TRUE; 743 return TRUE;
767 } 744 }
768 745
769 FX_BOOL Document::mailDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError) 746 FX_BOOL Document::mailDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError)
770 { 747 {
771 » ASSERT(m_pDocument != NULL); 748 ASSERT(m_pDocument != NULL);
772 749
773 » FX_BOOL bUI = TRUE; 750 FX_BOOL bUI = TRUE;
774 » CFX_WideString cTo = L""; 751 CFX_WideString cTo = L"";
775 » CFX_WideString cCc = L""; 752 CFX_WideString cCc = L"";
776 » CFX_WideString cBcc = L""; 753 CFX_WideString cBcc = L"";
777 » CFX_WideString cSubject = L""; 754 CFX_WideString cSubject = L"";
778 » CFX_WideString cMsg = L""; 755 CFX_WideString cMsg = L"";
779 756
780 » if (params.size() >= 1) 757 if (params.size() >= 1)
781 » » bUI = params[0].ToBool(); 758 bUI = params[0].ToBool();
782 » if (params.size() >= 2) 759 if (params.size() >= 2)
783 » » cTo = params[1].ToCFXWideString(); 760 cTo = params[1].ToCFXWideString();
784 » if (params.size() >= 3) 761 if (params.size() >= 3)
785 » » cCc = params[2].ToCFXWideString(); 762 cCc = params[2].ToCFXWideString();
786 » if (params.size() >= 4) 763 if (params.size() >= 4)
787 » » cBcc = params[3].ToCFXWideString(); 764 cBcc = params[3].ToCFXWideString();
788 » if (params.size() >= 5) 765 if (params.size() >= 5)
789 » » cSubject = params[4].ToCFXWideString(); 766 cSubject = params[4].ToCFXWideString();
790 » if (params.size() >= 6) 767 if (params.size() >= 6)
791 » » cMsg = params[5].ToCFXWideString(); 768 cMsg = params[5].ToCFXWideString();
792 769
793 » v8::Isolate* isolate = GetIsolate(cc); 770 v8::Isolate* isolate = GetIsolate(cc);
794 771
795 » if(params.size() >= 1 && params[0].GetType() == VT_object) 772 if(params.size() >= 1 && params[0].GetType() == VT_object)
796 » { 773 {
797 » » JSObject pObj = params[0].ToV8Object(); 774 JSObject pObj = params[0].ToV8Object();
798 775
799 » » v8::Local<v8::Value> pValue = JS_GetObjectElement(isolate,pObj, L"bUI"); 776 v8::Local<v8::Value> pValue = JS_GetObjectElement(isolate,pObj, L"bUI");
800 » » bUI = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToInt(); 777 bUI = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToInt();
801 778
802 » » pValue = JS_GetObjectElement(isolate,pObj, L"cTo"); 779 pValue = JS_GetObjectElement(isolate,pObj, L"cTo");
803 » » cTo = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWide String(); 780 cTo = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString() ;
804 781
805 » » pValue = JS_GetObjectElement(isolate,pObj, L"cCc"); 782 pValue = JS_GetObjectElement(isolate,pObj, L"cCc");
806 » » cCc = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWide String(); 783 cCc = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString() ;
807 784
808 » » pValue = JS_GetObjectElement(isolate,pObj, L"cBcc"); 785 pValue = JS_GetObjectElement(isolate,pObj, L"cBcc");
809 » » cBcc = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWid eString(); 786 cBcc = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString( );
810 787
811 » » pValue = JS_GetObjectElement(isolate,pObj, L"cSubject"); 788 pValue = JS_GetObjectElement(isolate,pObj, L"cSubject");
812 » » cSubject = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCF XWideString(); 789 cSubject = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideStr ing();
813 790
814 » » pValue = JS_GetObjectElement(isolate,pObj, L"cMsg"); 791 pValue = JS_GetObjectElement(isolate,pObj, L"cMsg");
815 » » cMsg = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWid eString(); 792 cMsg = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).ToCFXWideString( );
816 793
817 » } 794 }
818 795
819 » CJS_Context* pContext = (CJS_Context*)cc; 796 CJS_Context* pContext = (CJS_Context*)cc;
820 » ASSERT(pContext != NULL); 797 ASSERT(pContext != NULL);
821 » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 798 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
822 » ASSERT(pRuntime != NULL); 799 ASSERT(pRuntime != NULL);
823 800
824 » pRuntime->BeginBlock(); 801 pRuntime->BeginBlock();
825 » CPDFDoc_Environment* pEnv = pRuntime->GetReaderApp(); 802 CPDFDoc_Environment* pEnv = pRuntime->GetReaderApp();
826 » pEnv->JS_docmailForm(NULL, 0, bUI, cTo.c_str(), cSubject.c_str(), cCc.c_ str(), cBcc.c_str(), cMsg.c_str()); 803 pEnv->JS_docmailForm(NULL, 0, bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str( ), cBcc.c_str(), cMsg.c_str());
827 » pRuntime->EndBlock(); 804 pRuntime->EndBlock();
828 805
829 » return TRUE; 806 return TRUE;
830 } 807 }
831 808
832 FX_BOOL Document::author(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error) 809 FX_BOOL Document::author(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error)
833 { 810 {
834 » ASSERT(m_pDocument != NULL); 811 ASSERT(m_pDocument != NULL);
835 812
836 » CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); 813 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
837 » if (!pDictionary)return FALSE; 814 if (!pDictionary)return FALSE;
838 815
839 » if (vp.IsGetting()) 816 if (vp.IsGetting())
840 » { 817 {
841 » » vp << pDictionary->GetUnicodeText("Author"); 818 vp << pDictionary->GetUnicodeText("Author");
842 » » return TRUE; 819 return TRUE;
843 » } 820 }
844 » else 821 else
845 » { 822 {
846 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 823 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE;
847 824
848 » » CFX_WideString csAuthor; 825 CFX_WideString csAuthor;
849 » » vp >> csAuthor; 826 vp >> csAuthor;
850 » » pDictionary->SetAtString("Author", PDF_EncodeText(csAuthor)); 827 pDictionary->SetAtString("Author", PDF_EncodeText(csAuthor));
851 » » m_pDocument->SetChangeMark(); 828 m_pDocument->SetChangeMark();
852 » » return TRUE; 829 return TRUE;
853 » } 830 }
854 } 831 }
855 832
856 FX_BOOL Document::info(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr ror) 833 FX_BOOL Document::info(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr ror)
857 { 834 {
858 » ASSERT(m_pDocument != NULL); 835 ASSERT(m_pDocument != NULL);
859 836
860 » CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); 837 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
861 » if (!pDictionary)return FALSE; 838 if (!pDictionary)
862 839 return FALSE;
863 » CFX_WideString cwAuthor»» » = pDictionary->GetUnicodeText("A uthor"); 840
864 » CFX_WideString cwTitle» » » = pDictionary->GetUnicodeText("T itle"); 841 CFX_WideString cwAuthor = pDictionary->GetUnicodeText("Author");
865 » CFX_WideString cwSubject» » = pDictionary->GetUnicodeText("S ubject"); 842 CFX_WideString cwTitle = pDictionary->GetUnicodeText("Title");
866 » CFX_WideString cwKeywords» » = pDictionary->GetUnicodeText("K eywords"); 843 CFX_WideString cwSubject = pDictionary->GetUnicodeText("Subject");
867 » CFX_WideString cwCreator» » = pDictionary->GetUnicodeText("C reator"); 844 CFX_WideString cwKeywords = pDictionary->GetUnicodeText("Keywords");
868 » CFX_WideString cwProducer» » = pDictionary->GetUnicodeText("P roducer"); 845 CFX_WideString cwCreator = pDictionary->GetUnicodeText("Creator");
869 » CFX_WideString cwCreationDate» = pDictionary->GetUnicodeText("CreationD ate"); 846 CFX_WideString cwProducer = pDictionary->GetUnicodeText("Producer");
870 » CFX_WideString cwModDate» » = pDictionary->GetUnicodeText("M odDate"); 847 CFX_WideString cwCreationDate = pDictionary->GetUnicodeText("CreationDate" );
871 » CFX_WideString cwTrapped» » = pDictionary->GetUnicodeText("T rapped"); 848 CFX_WideString cwModDate = pDictionary->GetUnicodeText("ModDate");
872 849 CFX_WideString cwTrapped = pDictionary->GetUnicodeText("Trapped");
873 » v8::Isolate* isolate = GetIsolate(cc); 850
874 » if (vp.IsGetting()) 851 v8::Isolate* isolate = GetIsolate(cc);
875 » { 852 if (vp.IsGetting())
876 » » CJS_Context* pContext = (CJS_Context *)cc; 853 {
877 » » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 854 CJS_Context* pContext = (CJS_Context *)cc;
878 855 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
879 » » JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, -1); 856 JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, -1);
880 857 JS_PutObjectString(isolate, pObj, L"Author", cwAuthor.c_str());
881 » » JS_PutObjectString(isolate, pObj, L"Author", cwAuthor.c_str()); 858 JS_PutObjectString(isolate, pObj, L"Title", cwTitle.c_str());
882 » » JS_PutObjectString(isolate, pObj, L"Title", cwTitle.c_str()); 859 JS_PutObjectString(isolate, pObj, L"Subject", cwSubject.c_str());
883 » » JS_PutObjectString(isolate, pObj, L"Subject", cwSubject.c_str()) ; 860 JS_PutObjectString(isolate, pObj, L"Keywords", cwKeywords.c_str());
884 » » JS_PutObjectString(isolate, pObj, L"Keywords", cwKeywords.c_str( )); 861 JS_PutObjectString(isolate, pObj, L"Creator", cwCreator.c_str());
885 » » JS_PutObjectString(isolate, pObj, L"Creator", cwCreator.c_str()) ; 862 JS_PutObjectString(isolate, pObj, L"Producer", cwProducer.c_str());
886 » » JS_PutObjectString(isolate, pObj, L"Producer", cwProducer.c_str( )); 863 JS_PutObjectString(isolate, pObj, L"CreationDate", cwCreationDate.c_str( ));
887 » » JS_PutObjectString(isolate, pObj, L"CreationDate", cwCreationDat e.c_str()); 864 JS_PutObjectString(isolate, pObj, L"ModDate", cwModDate.c_str());
888 » » JS_PutObjectString(isolate, pObj, L"ModDate", cwModDate.c_str()) ; 865 JS_PutObjectString(isolate, pObj, L"Trapped", cwTrapped.c_str());
889 » » JS_PutObjectString(isolate, pObj, L"Trapped", cwTrapped.c_str()) ; 866
890 867 // It's to be compatible to non-standard info dictionary.
891 // It's to be compatible to non-standard info dictionary. 868 FX_POSITION pos = pDictionary->GetStartPos();
892 » » FX_POSITION pos = pDictionary->GetStartPos(); 869 while(pos)
893 » » while(pos) 870 {
894 » » { 871 CFX_ByteString bsKey;
895 » » » CFX_ByteString bsKey; 872 CPDF_Object* pValueObj = pDictionary->GetNextElement(pos, bsKey);
896 » » » CPDF_Object* pValueObj = pDictionary->GetNextElement(pos , bsKey); 873 CFX_WideString wsKey = CFX_WideString::FromUTF8(bsKey, bsKey.GetLen gth());
897 » » » CFX_WideString wsKey = CFX_WideString::FromUTF8(bsKey, bsKey.GetLength()); 874 if((pValueObj->GetType()==PDFOBJ_STRING) || (pValueObj->GetType()==P DFOBJ_NAME) )
898 » » » if((pValueObj->GetType()==PDFOBJ_STRING) || (pValueObj-> GetType()==PDFOBJ_NAME) ) 875 JS_PutObjectString(isolate, pObj, wsKey.c_str(), pValueObj->GetU nicodeText().c_str());
899 » » » » JS_PutObjectString(isolate, pObj, wsKey.c_str(), pValueObj->GetUnicodeText().c_str()); 876 if(pValueObj->GetType()==PDFOBJ_NUMBER)
900 » » » if(pValueObj->GetType()==PDFOBJ_NUMBER) 877 JS_PutObjectNumber(isolate,pObj, wsKey.c_str(), (float)pValueObj ->GetNumber());
901 » » » » JS_PutObjectNumber(isolate,pObj, wsKey.c_str(), (float)pValueObj->GetNumber()); 878 if(pValueObj->GetType()==PDFOBJ_BOOLEAN)
902 » » » if(pValueObj->GetType()==PDFOBJ_BOOLEAN) 879 JS_PutObjectBoolean(isolate,pObj, wsKey.c_str(), (bool)pValueObj ->GetInteger());
903 » » » » JS_PutObjectBoolean(isolate,pObj, wsKey.c_str(), (bool)pValueObj->GetInteger()); 880 }
904 » » } 881 vp << pObj;
905 882 }
906 » » vp << pObj; 883 return TRUE;
907 » » return TRUE;
908 » }
909 » else
910 » {
911 » » return TRUE;
912 » }
913 } 884 }
914 885
915 FX_BOOL Document::creationDate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideStr ing& sError) 886 FX_BOOL Document::creationDate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideStr ing& sError)
916 { 887 {
917 » ASSERT(m_pDocument != NULL); 888 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
918 889 if (!pDictionary)
919 » CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); 890 return FALSE;
920 » if (!pDictionary)return FALSE; 891
921 892 if (vp.IsGetting())
922 » if (vp.IsGetting()) 893 {
923 » { 894 vp << pDictionary->GetUnicodeText("CreationDate");
924 » » vp << pDictionary->GetUnicodeText("CreationDate"); 895 }
925 » » return TRUE; 896 else
926 » } 897 {
927 » else 898 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
928 » { 899 return FALSE;
929 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 900
930 901 CFX_WideString csCreationDate;
931 » » CFX_WideString csCreationDate; 902 vp >> csCreationDate;
932 » » vp >> csCreationDate; 903 pDictionary->SetAtString("CreationDate", PDF_EncodeText(csCreationDate)) ;
933 » » pDictionary->SetAtString("CreationDate", PDF_EncodeText(csCreati onDate)); 904 m_pDocument->SetChangeMark();
934 » » m_pDocument->SetChangeMark(); 905 }
935 906 return TRUE;
936 » » return TRUE;
937 » }
938 } 907 }
939 908
940 FX_BOOL Document::creator(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 909 FX_BOOL Document::creator(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
941 { 910 {
942 » ASSERT(m_pDocument != NULL); 911 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
943 912 if (!pDictionary)
944 » CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); 913 return FALSE;
945 » if (!pDictionary)return FALSE; 914
946 915 if (vp.IsGetting())
947 » if (vp.IsGetting()) 916 {
948 » { 917 vp << pDictionary->GetUnicodeText("Creator");
949 » » vp << pDictionary->GetUnicodeText("Creator"); 918 }
950 » » return TRUE; 919 else
951 » } 920 {
952 » else 921 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
953 » { 922 return FALSE;
954 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 923
955 924 CFX_WideString csCreator;
956 » » CFX_WideString csCreator; 925 vp >> csCreator;
957 » » vp >> csCreator; 926 pDictionary->SetAtString("Creator", PDF_EncodeText(csCreator));
958 » » pDictionary->SetAtString("Creator", PDF_EncodeText(csCreator)); 927 m_pDocument->SetChangeMark();
959 » » m_pDocument->SetChangeMark(); 928 }
960 » » return TRUE; 929 return TRUE;
961 » }
962 } 930 }
963 931
964 FX_BOOL Document::delay(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror) 932 FX_BOOL Document::delay(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror)
965 { 933 {
966 » if (vp.IsGetting()) 934 if (vp.IsGetting())
967 » { 935 {
968 » » vp << m_bDelay; 936 vp << m_bDelay;
969 » » return TRUE; 937 }
970 » } 938 else
971 » else 939 {
972 » { 940 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
973 » » ASSERT(m_pDocument != NULL); 941 return FALSE;
974 942
975 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 943 bool b;
976 944 vp >> b;
977 » » bool b; 945 m_bDelay = b;
978 » » vp >> b; 946 if (m_bDelay)
979 947 {
980 » » m_bDelay = b; 948 for (int i=0,sz=m_DelayData.GetSize(); i<sz; i++)
981 949 delete m_DelayData.GetAt(i);
982 » » if (m_bDelay) 950
983 » » { 951 m_DelayData.RemoveAll();
984 » » » for (int i=0,sz=m_DelayData.GetSize(); i<sz; i++) 952 }
985 » » » » delete m_DelayData.GetAt(i); 953 else
986 954 {
987 » » » m_DelayData.RemoveAll(); 955 CFX_ArrayTemplate<CJS_DelayData*> DelayDataToProcess;
988 » » } 956 for (int i=0,sz=m_DelayData.GetSize(); i < sz; i++)
989 » » else 957 {
990 » » { 958 if (CJS_DelayData* pData = m_DelayData.GetAt(i))
991 » » » CFX_ArrayTemplate<CJS_DelayData*> DelayDataToProcess; 959 {
992 960 DelayDataToProcess.Add(pData);
993 » » » for (int i=0,sz=m_DelayData.GetSize(); i < sz; i++) 961 m_DelayData.SetAt(i, NULL);
994 » » » { 962 }
995 » » » » if (CJS_DelayData* pData = m_DelayData.GetAt(i)) 963 }
996 » » » » { 964 m_DelayData.RemoveAll();
997 » » » » » DelayDataToProcess.Add(pData); 965 for (int i=0,sz=DelayDataToProcess.GetSize(); i < sz; i++)
998 » » » » » m_DelayData.SetAt(i, NULL); 966 {
999 » » » » } 967 CJS_DelayData* pData = DelayDataToProcess.GetAt(i);
1000 » » » } 968 Field::DoDelay(m_pDocument, pData);
1001 » » » m_DelayData.RemoveAll(); 969 DelayDataToProcess.SetAt(i,NULL);
1002 970 delete pData;
1003 » » » for (int i=0,sz=DelayDataToProcess.GetSize(); i < sz; i+ +) 971 }
1004 » » » { 972 }
1005 » » » » CJS_DelayData* pData = DelayDataToProcess.GetAt( i); 973 }
1006 » » » » Field::DoDelay(m_pDocument, pData); 974 return TRUE;
1007 » » » » DelayDataToProcess.SetAt(i,NULL);
1008 » » » » delete pData;
1009 » » » }
1010 » » }
1011
1012 » » return TRUE;
1013 » }
1014 } 975 }
1015 976
1016 FX_BOOL Document::keywords(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 977 FX_BOOL Document::keywords(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1017 { 978 {
1018 » ASSERT(m_pDocument != NULL); 979 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
1019 980 if (!pDictionary)
1020 » CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); 981 return FALSE;
1021 » if (!pDictionary)return FALSE; 982
1022 983 if (vp.IsGetting())
1023 » if (vp.IsGetting()) 984 {
1024 » { 985 vp << pDictionary->GetUnicodeText("Keywords");
1025 » » vp << pDictionary->GetUnicodeText("Keywords"); 986 }
1026 » » return TRUE; 987 else
1027 » } 988 {
1028 » else 989 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
1029 » { 990 return FALSE;
1030 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 991
1031 992 CFX_WideString csKeywords;
1032 » » CFX_WideString csKeywords; 993 vp >> csKeywords;
1033 » » vp >> csKeywords; 994 pDictionary->SetAtString("Keywords", PDF_EncodeText(csKeywords));
1034 » » pDictionary->SetAtString("Keywords", PDF_EncodeText(csKeywords)) ; 995 m_pDocument->SetChangeMark();
1035 » » m_pDocument->SetChangeMark(); 996 }
1036 » » return TRUE; 997 return TRUE;
1037 » }
1038 } 998 }
1039 999
1040 FX_BOOL Document::modDate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1000 FX_BOOL Document::modDate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1041 { 1001 {
1042 » ASSERT(m_pDocument != NULL); 1002 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
1043 1003 if (!pDictionary)
1044 » CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); 1004 return FALSE;
1045 » if (!pDictionary)return FALSE; 1005
1046 1006 if (vp.IsGetting())
1047 » if (vp.IsGetting()) 1007 {
1048 » { 1008 vp << pDictionary->GetUnicodeText("ModDate");
1049 » » vp << pDictionary->GetUnicodeText("ModDate"); 1009 }
1050 » » return TRUE; 1010 else
1051 » } 1011 {
1052 » else 1012 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
1053 » { 1013 return FALSE;
1054 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 1014
1055 1015 CFX_WideString csmodDate;
1056 » » CFX_WideString csmodDate; 1016 vp >> csmodDate;
1057 » » vp >> csmodDate; 1017 pDictionary->SetAtString("ModDate", PDF_EncodeText(csmodDate));
1058 » » pDictionary->SetAtString("ModDate", PDF_EncodeText(csmodDate)); 1018 m_pDocument->SetChangeMark();
1059 » » m_pDocument->SetChangeMark(); 1019 }
1060 » » return TRUE; 1020 return TRUE;
1061 » }
1062 } 1021 }
1063 1022
1064 FX_BOOL Document::producer(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1023 FX_BOOL Document::producer(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1065 { 1024 {
1066 » ASSERT(m_pDocument != NULL); 1025 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
1067 1026 if (!pDictionary)
1068 » CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); 1027 return FALSE;
1069 » if (!pDictionary)return FALSE; 1028
1070 1029 if (vp.IsGetting())
1071 » if (vp.IsGetting()) 1030 {
1072 » { 1031 vp << pDictionary->GetUnicodeText("Producer");
1073 » » vp << pDictionary->GetUnicodeText("Producer"); 1032 }
1074 » » return TRUE; 1033 else
1075 » } 1034 {
1076 » else 1035 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
1077 » { 1036 return FALSE;
1078 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 1037
1079 1038 CFX_WideString csproducer;
1080 » » CFX_WideString csproducer; 1039 vp >> csproducer;
1081 » » vp >> csproducer; 1040 pDictionary->SetAtString("Producer", PDF_EncodeText(csproducer));
1082 » » pDictionary->SetAtString("Producer", PDF_EncodeText(csproducer)) ; 1041 m_pDocument->SetChangeMark();
1083 » » m_pDocument->SetChangeMark(); 1042 }
1084 » » return TRUE; 1043 return TRUE;
1085 » }
1086 } 1044 }
1087 1045
1088 FX_BOOL Document::subject(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1046 FX_BOOL Document::subject(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1089 { 1047 {
1090 » ASSERT(m_pDocument != NULL); 1048 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
1091 1049 if (!pDictionary)
1092 » CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); 1050 return FALSE;
1093 » if (!pDictionary)return FALSE; 1051
1094 1052 if (vp.IsGetting())
1095 » if (vp.IsGetting()) 1053 {
1096 » { 1054 vp << pDictionary->GetUnicodeText("Subject");
1097 » » vp << pDictionary->GetUnicodeText("Subject"); 1055 }
1098 » » return TRUE; 1056 else
1099 » } 1057 {
1100 » else 1058 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
1101 » { 1059 return FALSE;
1102 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 1060
1103 1061 CFX_WideString cssubject;
1104 » » CFX_WideString cssubject; 1062 vp >> cssubject;
1105 » » vp >> cssubject; 1063 pDictionary->SetAtString("Subject", PDF_EncodeText(cssubject));
1106 » » pDictionary->SetAtString("Subject", PDF_EncodeText(cssubject)); 1064 m_pDocument->SetChangeMark();
1107 » » m_pDocument->SetChangeMark(); 1065 }
1108 » » return TRUE; 1066 return TRUE;
1109 » }
1110 } 1067 }
1111 1068
1112 FX_BOOL Document::title(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror) 1069 FX_BOOL Document::title(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror)
1113 { 1070 {
1114 » ASSERT(m_pDocument != NULL); 1071 if (m_pDocument == NULL || m_pDocument->GetDocument() == NULL)
1115 1072 return FALSE;
1116 » if (m_pDocument == NULL || m_pDocument->GetDocument() == NULL) 1073
1117 » » return FALSE; 1074 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo();
1118 1075 if (!pDictionary)
1119 » CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetInfo(); 1076 return FALSE;
1120 » if (!pDictionary)return FALSE; 1077
1121 1078 if (vp.IsGetting())
1122 » if (vp.IsGetting()) 1079 {
1123 » { 1080 vp << pDictionary->GetUnicodeText("Title");
1124 » » vp << pDictionary->GetUnicodeText("Title"); 1081 }
1125 » » return TRUE; 1082 else
1126 » } 1083 {
1127 » else 1084 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
1128 » { 1085 return FALSE;
1129 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 1086
1130 1087 CFX_WideString cstitle;
1131 » » CFX_WideString cstitle; 1088 vp >> cstitle;
1132 » » vp >> cstitle; 1089 pDictionary->SetAtString("Title", PDF_EncodeText(cstitle));
1133 » » pDictionary->SetAtString("Title", PDF_EncodeText(cstitle)); 1090 m_pDocument->SetChangeMark();
1134 » » m_pDocument->SetChangeMark(); 1091 }
1135 » » return TRUE; 1092 return TRUE;
1136 » }
1137 } 1093 }
1138 1094
1139 FX_BOOL Document::numPages(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1095 FX_BOOL Document::numPages(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1140 { 1096 {
1141 » if (vp.IsSetting()) { 1097 if (vp.IsSetting()) {
1142 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 1098 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1143 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); 1099 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
1144 » » return FALSE; 1100 return FALSE;
1145 » } 1101 }
1146 » vp << m_pDocument->GetPageCount(); 1102 vp << m_pDocument->GetPageCount();
1147 » return TRUE; 1103 return TRUE;
1148 } 1104 }
1149 1105
1150 FX_BOOL Document::external(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1106 FX_BOOL Document::external(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1151 { 1107 {
1152 » //In Chrome case,should always return true. 1108 //In Chrome case,should always return true.
1153 » if (vp.IsGetting()) { 1109 if (vp.IsGetting()) {
1154 » » vp << TRUE; 1110 vp << TRUE;
1155 » } 1111 }
1156 » return TRUE; 1112 return TRUE;
1157 } 1113 }
1158 1114
1159 FX_BOOL Document::filesize(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1115 FX_BOOL Document::filesize(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1160 { 1116 {
1161 » if (vp.IsSetting()) { 1117 if (vp.IsSetting()) {
1162 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 1118 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1163 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); 1119 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
1164 » » return FALSE; 1120 return FALSE;
1165 » } 1121 }
1166 » vp << 0; 1122 vp << 0;
1167 » return TRUE; 1123 return TRUE;
1168 } 1124 }
1169 1125
1170 FX_BOOL Document::mouseX(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error) 1126 FX_BOOL Document::mouseX(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error)
1171 { 1127 {
1172 » return TRUE; 1128 return TRUE;
1173 } 1129 }
1174 1130
1175 FX_BOOL Document::mouseY(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error) 1131 FX_BOOL Document::mouseY(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error)
1176 { 1132 {
1177 » return TRUE; 1133 return TRUE;
1178 } 1134 }
1179 1135
1180 FX_BOOL Document::baseURL(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1136 FX_BOOL Document::baseURL(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1181 { 1137 {
1182 » if (vp.IsGetting()) 1138 if (vp.IsGetting())
1183 » { 1139 {
1184 » » vp << m_cwBaseURL; 1140 vp << m_cwBaseURL;
1185 » } 1141 }
1186 » else 1142 else
1187 » { 1143 {
1188 » » vp >> m_cwBaseURL; 1144 vp >> m_cwBaseURL;
1189 » } 1145 }
1190 » return TRUE; 1146 return TRUE;
1191 } 1147 }
1192 1148
1193 FX_BOOL Document::calculate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString & sError) 1149 FX_BOOL Document::calculate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString & sError)
1194 { 1150 {
1195 » ASSERT(m_pDocument != NULL); 1151 ASSERT(m_pDocument != NULL);
1196 1152
1197 » CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInte rForm(); 1153 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterFor m();
1198 » ASSERT(pInterForm != NULL); 1154 ASSERT(pInterForm != NULL);
1199 1155
1200 » if (vp.IsGetting()) 1156 if (vp.IsGetting())
1201 » { 1157 {
1202 » » if (pInterForm->IsCalculateEnabled()) 1158 if (pInterForm->IsCalculateEnabled())
1203 » » » vp << true; 1159 vp << true;
1204 » » else 1160 else
1205 » » » vp << false; 1161 vp << false;
1206 » } 1162 }
1207 » else 1163 else
1208 » { 1164 {
1209 » » bool bCalculate; 1165 bool bCalculate;
1210 » » vp >> bCalculate; 1166 vp >> bCalculate;
1211 1167
1212 » » pInterForm->EnableCalculate(bCalculate); 1168 pInterForm->EnableCalculate(bCalculate);
1213 » } 1169 }
1214 1170
1215 » return TRUE; 1171 return TRUE;
1216 } 1172 }
1217 1173
1218 FX_BOOL Document::documentFileName(IFXJS_Context* cc, CJS_PropValue& vp, CFX_Wid eString& sError) 1174 FX_BOOL Document::documentFileName(IFXJS_Context* cc, CJS_PropValue& vp, CFX_Wid eString& sError)
1219 { 1175 {
1220 » if (vp.IsSetting()) { 1176 if (vp.IsSetting()) {
1221 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 1177 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1222 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); 1178 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
1223 » » return FALSE; 1179 return FALSE;
1224 » } 1180 }
1225 » CFX_WideString wsFilePath = m_pDocument->GetPath(); 1181 CFX_WideString wsFilePath = m_pDocument->GetPath();
1226 » int32_t i = wsFilePath.GetLength() - 1; 1182 int32_t i = wsFilePath.GetLength() - 1;
1227 » for ( ; i >= 0; i-- ) 1183 for ( ; i >= 0; i-- )
1228 » { 1184 {
1229 » » if ( wsFilePath.GetAt( i ) == L'\\' || wsFilePath.GetAt( i ) == L'/' ) 1185 if ( wsFilePath.GetAt( i ) == L'\\' || wsFilePath.GetAt( i ) == L'/' )
1230 » » » break; 1186 break;
1231 » } 1187 }
1232 » if ( i >= 0 && i < wsFilePath.GetLength() - 1 ) 1188 if ( i >= 0 && i < wsFilePath.GetLength() - 1 )
1233 » { 1189 {
1234 » » vp << ( wsFilePath.GetBuffer( wsFilePath.GetLength() ) + i + 1 ) ; 1190 vp << ( wsFilePath.GetBuffer( wsFilePath.GetLength() ) + i + 1 );
1235 » }else{ 1191 }else{
1236 » » vp << L""; 1192 vp << L"";
1237 » } 1193 }
1238 » return TRUE; 1194 return TRUE;
1239 } 1195 }
1240 1196
1241 CFX_WideString Document::ReversalStr(CFX_WideString cbFrom) 1197 CFX_WideString Document::ReversalStr(CFX_WideString cbFrom)
1242 { 1198 {
1243 » size_t iLength = cbFrom.GetLength(); 1199 size_t iLength = cbFrom.GetLength();
1244 pdfium::base::CheckedNumeric<size_t> iSize = sizeof(wchar_t); 1200 pdfium::base::CheckedNumeric<size_t> iSize = sizeof(wchar_t);
1245 » iSize *= (iLength + 1); 1201 iSize *= (iLength + 1);
1246 » wchar_t* pResult = (wchar_t*)malloc(iSize.ValueOrDie()); 1202 wchar_t* pResult = (wchar_t*)malloc(iSize.ValueOrDie());
1247 » wchar_t* pFrom = (wchar_t*)cbFrom.GetBuffer(iLength); 1203 wchar_t* pFrom = (wchar_t*)cbFrom.GetBuffer(iLength);
1248 1204
1249 » for (size_t i = 0; i < iLength; i++) 1205 for (size_t i = 0; i < iLength; i++)
1250 » { 1206 {
1251 » » pResult[i] = *(pFrom + iLength - i - 1); 1207 pResult[i] = *(pFrom + iLength - i - 1);
1252 » } 1208 }
1253 » pResult[iLength] = L'\0'; 1209 pResult[iLength] = L'\0';
1254 1210
1255 » cbFrom.ReleaseBuffer(); 1211 cbFrom.ReleaseBuffer();
1256 » CFX_WideString cbRet = CFX_WideString(pResult); 1212 CFX_WideString cbRet = CFX_WideString(pResult);
1257 » free(pResult); 1213 free(pResult);
1258 » pResult = NULL; 1214 pResult = NULL;
1259 » return cbRet; 1215 return cbRet;
1260 } 1216 }
1261 1217
1262 CFX_WideString Document::CutString(CFX_WideString cbFrom) 1218 CFX_WideString Document::CutString(CFX_WideString cbFrom)
1263 { 1219 {
1264 » size_t iLength = cbFrom.GetLength(); 1220 size_t iLength = cbFrom.GetLength();
1265 » pdfium::base::CheckedNumeric<size_t> iSize = sizeof(wchar_t); 1221 pdfium::base::CheckedNumeric<size_t> iSize = sizeof(wchar_t);
1266 » iSize *= (iLength + 1); 1222 iSize *= (iLength + 1);
1267 » wchar_t* pResult = (wchar_t*)malloc(iSize.ValueOrDie()); 1223 wchar_t* pResult = (wchar_t*)malloc(iSize.ValueOrDie());
1268 » wchar_t* pFrom = (wchar_t*)cbFrom.GetBuffer(iLength); 1224 wchar_t* pFrom = (wchar_t*)cbFrom.GetBuffer(iLength);
1269 1225
1270 » for (int i = 0; i < iLength; i++) 1226 for (int i = 0; i < iLength; i++)
1271 » { 1227 {
1272 » » if (pFrom[i] == L'\\' || pFrom[i] == L'/') 1228 if (pFrom[i] == L'\\' || pFrom[i] == L'/')
1273 » » { 1229 {
1274 » » » pResult[i] = L'\0'; 1230 pResult[i] = L'\0';
1275 » » » break; 1231 break;
1276 » » } 1232 }
1277 » » pResult[i] = pFrom[i]; 1233 pResult[i] = pFrom[i];
1278 » } 1234 }
1279 » pResult[iLength] = L'\0'; 1235 pResult[iLength] = L'\0';
1280 1236
1281 » cbFrom.ReleaseBuffer(); 1237 cbFrom.ReleaseBuffer();
1282 » CFX_WideString cbRet = CFX_WideString(pResult); 1238 CFX_WideString cbRet = CFX_WideString(pResult);
1283 » free(pResult); 1239 free(pResult);
1284 » pResult = NULL; 1240 pResult = NULL;
1285 » return cbRet; 1241 return cbRet;
1286 } 1242 }
1287 1243
1288 FX_BOOL Document::path(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr ror) 1244 FX_BOOL Document::path(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr ror)
1289 { 1245 {
1290 » if (vp.IsSetting()) { 1246 if (vp.IsSetting()) {
1291 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 1247 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1292 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); 1248 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
1293 » » return FALSE; 1249 return FALSE;
1294 » } 1250 }
1295 » vp << app::SysPathToPDFPath(m_pDocument->GetPath()); 1251 vp << app::SysPathToPDFPath(m_pDocument->GetPath());
1296 » return TRUE; 1252 return TRUE;
1297 } 1253 }
1298 1254
1299 FX_BOOL Document::pageWindowRect(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideS tring& sError) 1255 FX_BOOL Document::pageWindowRect(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideS tring& sError)
1300 { 1256 {
1301 » return TRUE; 1257 return TRUE;
1302 } 1258 }
1303 1259
1304 FX_BOOL Document::layout(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error) 1260 FX_BOOL Document::layout(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error)
1305 { 1261 {
1306 » return TRUE; 1262 return TRUE;
1307 } 1263 }
1308 1264
1309 FX_BOOL Document::addLink(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError) 1265 FX_BOOL Document::addLink(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError)
1310 { 1266 {
1311 » return TRUE; 1267 return TRUE;
1312 } 1268 }
1313 1269
1314 FX_BOOL Document::closeDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError) 1270 FX_BOOL Document::closeDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError)
1315 { 1271 {
1316 » ASSERT(m_pDocument != NULL); 1272 ASSERT(m_pDocument != NULL);
1317 » return TRUE; 1273 return TRUE;
1318 } 1274 }
1319 1275
1320 FX_BOOL Document::getPageBox(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError) 1276 FX_BOOL Document::getPageBox(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError)
1321 { 1277 {
1322 » return TRUE; 1278 return TRUE;
1323 } 1279 }
1324 1280
1325 FX_BOOL Document::getAnnot(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError) 1281 FX_BOOL Document::getAnnot(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError)
1326 { 1282 {
1327 » return TRUE; 1283 return TRUE;
1328 } 1284 }
1329 1285
1330 FX_BOOL Document::getAnnots(IFXJS_Context* cc, const CJS_Parameters& params, CJS _Value& vRet, CFX_WideString& sError) 1286 FX_BOOL Document::getAnnots(IFXJS_Context* cc, const CJS_Parameters& params, CJS _Value& vRet, CFX_WideString& sError)
1331 { 1287 {
1332 » vRet.SetNull(); 1288 vRet.SetNull();
1333 » return TRUE; 1289 return TRUE;
1334 } 1290 }
1335 1291
1336 FX_BOOL Document::getAnnot3D(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError) 1292 FX_BOOL Document::getAnnot3D(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError)
1337 { 1293 {
1338 » vRet.SetNull(); 1294 vRet.SetNull();
1339 » return TRUE; 1295 return TRUE;
1340 } 1296 }
1341 1297
1342 FX_BOOL Document::getAnnots3D(IFXJS_Context* cc, const CJS_Parameters& params, C JS_Value& vRet, CFX_WideString& sError) 1298 FX_BOOL Document::getAnnots3D(IFXJS_Context* cc, const CJS_Parameters& params, C JS_Value& vRet, CFX_WideString& sError)
1343 { 1299 {
1344 » vRet = VT_undefined; 1300 vRet = VT_undefined;
1345 » return TRUE; 1301 return TRUE;
1346 } 1302 }
1347 1303
1348 FX_BOOL Document::getOCGs(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError) 1304 FX_BOOL Document::getOCGs(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError)
1349 { 1305 {
1350 » return TRUE; 1306 return TRUE;
1351 } 1307 }
1352 1308
1353 FX_BOOL Document::getLinks(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError) 1309 FX_BOOL Document::getLinks(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError)
1354 { 1310 {
1355 » return TRUE; 1311 return TRUE;
1356 } 1312 }
1357 1313
1358 bool Document::IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect) 1314 bool Document::IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect)
1359 { 1315 {
1360 » if (rect.left <= LinkRect.left 1316 return (rect.left <= LinkRect.left &&
1361 » && rect.top <= LinkRect.top 1317 rect.top <= LinkRect.top &&
1362 » && rect.right >= LinkRect.right 1318 rect.right >= LinkRect.right &&
1363 » && rect.bottom >= LinkRect.bottom) 1319 rect.bottom >= LinkRect.bottom);
1364 » » return true;
1365 » else
1366 » » return false;
1367 } 1320 }
1368 1321
1369 void IconTree::InsertIconElement(IconElement* pNewIcon) 1322 void IconTree::InsertIconElement(IconElement* pNewIcon)
1370 { 1323 {
1371 » if (!pNewIcon)return; 1324 if (!pNewIcon)return;
1372 1325
1373 » if (m_pHead == NULL && m_pEnd == NULL) 1326 if (m_pHead == NULL && m_pEnd == NULL)
1374 » { 1327 {
1375 » » m_pHead = m_pEnd = pNewIcon; 1328 m_pHead = m_pEnd = pNewIcon;
1376 » » m_iLength++; 1329 m_iLength++;
1377 » } 1330 }
1378 » else 1331 else
1379 » { 1332 {
1380 » » m_pEnd->NextIcon = pNewIcon; 1333 m_pEnd->NextIcon = pNewIcon;
1381 » » m_pEnd = pNewIcon; 1334 m_pEnd = pNewIcon;
1382 » » m_iLength++; 1335 m_iLength++;
1383 » } 1336 }
1384 } 1337 }
1385 1338
1386 void IconTree::DeleteIconTree() 1339 void IconTree::DeleteIconTree()
1387 { 1340 {
1388 » if (!m_pHead || !m_pEnd)return; 1341 if (!m_pHead || !m_pEnd)return;
1389 1342
1390 » IconElement* pTemp = NULL; 1343 IconElement* pTemp = NULL;
1391 » while(m_pEnd != m_pHead) 1344 while(m_pEnd != m_pHead)
1392 » { 1345 {
1393 » » pTemp = m_pHead; 1346 pTemp = m_pHead;
1394 » » m_pHead = m_pHead->NextIcon; 1347 m_pHead = m_pHead->NextIcon;
1395 » » delete pTemp; 1348 delete pTemp;
1396 » } 1349 }
1397 1350
1398 » delete m_pEnd; 1351 delete m_pEnd;
1399 » m_pHead = NULL; 1352 m_pHead = NULL;
1400 » m_pEnd = NULL; 1353 m_pEnd = NULL;
1401 } 1354 }
1402 1355
1403 int IconTree::GetLength() 1356 int IconTree::GetLength()
1404 { 1357 {
1405 » return m_iLength; 1358 return m_iLength;
1406 } 1359 }
1407 1360
1408 IconElement* IconTree::operator [](int iIndex) 1361 IconElement* IconTree::operator [](int iIndex)
1409 { 1362 {
1410 » if (iIndex >= 0 && iIndex <= m_iLength) 1363 if (iIndex >= 0 && iIndex <= m_iLength)
1411 » { 1364 {
1412 » » IconElement* pTemp = m_pHead; 1365 IconElement* pTemp = m_pHead;
1413 » » for (int i = 0; i < iIndex; i++) 1366 for (int i = 0; i < iIndex; i++)
1414 » » { 1367 {
1415 » » » pTemp = pTemp->NextIcon; 1368 pTemp = pTemp->NextIcon;
1416 » » } 1369 }
1417 » » return pTemp; 1370 return pTemp;
1418 » } 1371 }
1419 » else 1372 return NULL;
1420 » » return NULL;
1421 } 1373 }
1422 1374
1423 FX_BOOL Document::addIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError) 1375 FX_BOOL Document::addIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError)
1424 { 1376 {
1425 » CJS_Context* pContext = (CJS_Context*)cc; 1377 CJS_Context* pContext = (CJS_Context*)cc;
1426 » if (params.size() != 2) { 1378 if (params.size() != 2) {
1427 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1379 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1428 » » return FALSE; 1380 return FALSE;
1429 » } 1381 }
1430 1382
1431 » CFX_WideString swIconName = params[0].ToCFXWideString(); 1383 CFX_WideString swIconName = params[0].ToCFXWideString();
1432 » JSFXObject pJSIcon = params[1].ToV8Object(); 1384 JSFXObject pJSIcon = params[1].ToV8Object();
1433 1385
1434 » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 1386 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
1435 » if (JS_GetObjDefnID(pJSIcon) != JS_GetObjDefnID(*pRuntime, L"Icon")) { 1387 if (JS_GetObjDefnID(pJSIcon) != JS_GetObjDefnID(*pRuntime, L"Icon")) {
1436 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR); 1388 sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR);
1437 » » return FALSE; 1389 return FALSE;
1438 » } 1390 }
1439 1391
1440 » CJS_EmbedObj* pEmbedObj = params[1].ToCJSObject()->GetEmbedObject(); 1392 CJS_EmbedObj* pEmbedObj = params[1].ToCJSObject()->GetEmbedObject();
1441 » if (!pEmbedObj) { 1393 if (!pEmbedObj) {
1442 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR); 1394 sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR);
1443 » » return FALSE; 1395 return FALSE;
1444 » } 1396 }
1445 1397
1446 » Icon* pIcon = (Icon*)pEmbedObj; 1398 Icon* pIcon = (Icon*)pEmbedObj;
1447 » if (!m_pIconTree) 1399 if (!m_pIconTree)
1448 » » m_pIconTree = new IconTree(); 1400 m_pIconTree = new IconTree();
1449 1401
1450 » IconElement* pNewIcon = new IconElement(); 1402 IconElement* pNewIcon = new IconElement();
1451 » pNewIcon->IconName = swIconName; 1403 pNewIcon->IconName = swIconName;
1452 » pNewIcon->NextIcon = NULL; 1404 pNewIcon->NextIcon = NULL;
1453 » pNewIcon->IconStream = pIcon; 1405 pNewIcon->IconStream = pIcon;
1454 » m_pIconTree->InsertIconElement(pNewIcon); 1406 m_pIconTree->InsertIconElement(pNewIcon);
1455 » return TRUE; 1407 return TRUE;
1456 } 1408 }
1457 1409
1458 FX_BOOL Document::icons(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror) 1410 FX_BOOL Document::icons(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror)
1459 { 1411 {
1460 » if (vp.IsSetting()) { 1412 if (vp.IsSetting()) {
1461 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 1413 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1462 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); 1414 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
1463 » » return FALSE; 1415 return FALSE;
1464 » } 1416 }
1465 1417
1466 » if (!m_pIconTree) 1418 if (!m_pIconTree)
1467 » { 1419 {
1468 » » vp.SetNull(); 1420 vp.SetNull();
1469 » » return TRUE; 1421 return TRUE;
1470 » } 1422 }
1471 1423
1472 » CJS_Array Icons(m_isolate); 1424 CJS_Array Icons(m_isolate);
1473 » IconElement* pIconElement = NULL; 1425 IconElement* pIconElement = NULL;
1474 » int iIconTreeLength = m_pIconTree->GetLength(); 1426 int iIconTreeLength = m_pIconTree->GetLength();
1475 1427
1476 » CJS_Context* pContext = (CJS_Context *)cc; 1428 CJS_Context* pContext = (CJS_Context *)cc;
1477 » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 1429 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
1478 1430
1479 » for (int i = 0; i < iIconTreeLength; i++) 1431 for (int i = 0; i < iIconTreeLength; i++)
1480 » { 1432 {
1481 » » pIconElement = (*m_pIconTree)[i]; 1433 pIconElement = (*m_pIconTree)[i];
1482 1434
1483 » » JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_Ge tObjDefnID(*pRuntime, L"Icon")); 1435 JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefn ID(*pRuntime, L"Icon"));
1484 » » if (pObj.IsEmpty()) return FALSE; 1436 if (pObj.IsEmpty()) return FALSE;
1485 1437
1486 » » CJS_Icon * pJS_Icon = (CJS_Icon *)JS_GetPrivate(pObj); 1438 CJS_Icon * pJS_Icon = (CJS_Icon *)JS_GetPrivate(pObj);
1487 » » if (!pJS_Icon) return FALSE; 1439 if (!pJS_Icon) return FALSE;
1488 1440
1489 » » Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject(); 1441 Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject();
1490 » » if (!pIcon)return FALSE; 1442 if (!pIcon)return FALSE;
1491 1443
1492 » » pIcon->SetStream(pIconElement->IconStream->GetStream()); 1444 pIcon->SetStream(pIconElement->IconStream->GetStream());
1493 » » pIcon->SetIconName(pIconElement->IconName); 1445 pIcon->SetIconName(pIconElement->IconName);
1494 » » Icons.SetElement(i, CJS_Value(m_isolate,pJS_Icon)); 1446 Icons.SetElement(i, CJS_Value(m_isolate,pJS_Icon));
1495 » } 1447 }
1496 1448
1497 » vp << Icons; 1449 vp << Icons;
1498 » return TRUE; 1450 return TRUE;
1499 } 1451 }
1500 1452
1501 FX_BOOL Document::getIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError) 1453 FX_BOOL Document::getIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError)
1502 { 1454 {
1503 » CJS_Context* pContext = (CJS_Context *)cc; 1455 CJS_Context* pContext = (CJS_Context *)cc;
1504 » if (params.size() != 1) { 1456 if (params.size() != 1) {
1505 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1457 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1506 » » return FALSE; 1458 return FALSE;
1507 » } 1459 }
1508 1460
1509 » if(!m_pIconTree) 1461 if(!m_pIconTree)
1510 » » return FALSE; 1462 return FALSE;
1511 » CFX_WideString swIconName = params[0].ToCFXWideString(); 1463 CFX_WideString swIconName = params[0].ToCFXWideString();
1512 » int iIconCounts = m_pIconTree->GetLength(); 1464 int iIconCounts = m_pIconTree->GetLength();
1513 1465
1514 » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 1466 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
1515 1467
1516 » for (int i = 0; i < iIconCounts; i++) 1468 for (int i = 0; i < iIconCounts; i++)
1517 » { 1469 {
1518 » » if ((*m_pIconTree)[i]->IconName == swIconName) 1470 if ((*m_pIconTree)[i]->IconName == swIconName)
1519 » » { 1471 {
1520 » » » Icon* pRetIcon = (*m_pIconTree)[i]->IconStream; 1472 Icon* pRetIcon = (*m_pIconTree)[i]->IconStream;
1521 1473
1522 » » » JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContex t, JS_GetObjDefnID(*pRuntime, L"Icon")); 1474 JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObj DefnID(*pRuntime, L"Icon"));
1523 » » » if (pObj.IsEmpty()) return FALSE; 1475 if (pObj.IsEmpty()) return FALSE;
1524 1476
1525 » » » CJS_Icon * pJS_Icon = (CJS_Icon *)JS_GetPrivate(pObj); 1477 CJS_Icon * pJS_Icon = (CJS_Icon *)JS_GetPrivate(pObj);
1526 » » » if (!pJS_Icon) return FALSE; 1478 if (!pJS_Icon) return FALSE;
1527 1479
1528 » » » Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject(); 1480 Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject();
1529 » » » if (!pIcon)return FALSE; 1481 if (!pIcon)return FALSE;
1530 1482
1531 » » » pIcon->SetIconName(swIconName); 1483 pIcon->SetIconName(swIconName);
1532 » » » pIcon->SetStream(pRetIcon->GetStream()); 1484 pIcon->SetStream(pRetIcon->GetStream());
1533 » » » vRet = pJS_Icon; 1485 vRet = pJS_Icon;
1534 » » » return TRUE; 1486 return TRUE;
1535 » » } 1487 }
1536 » } 1488 }
1537 1489
1538 » return FALSE; 1490 return FALSE;
1539 } 1491 }
1540 1492
1541 FX_BOOL Document::removeIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError) 1493 FX_BOOL Document::removeIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError)
1542 { 1494 {
1543 // Unsafe, no supported. 1495 // Unsafe, no supported.
1544 return TRUE; 1496 return TRUE;
1545 } 1497 }
1546 1498
1547 FX_BOOL Document::createDataObject(IFXJS_Context* cc, const CJS_Parameters& para ms, CJS_Value& vRet, CFX_WideString& sError) 1499 FX_BOOL Document::createDataObject(IFXJS_Context* cc, const CJS_Parameters& para ms, CJS_Value& vRet, CFX_WideString& sError)
1548 { 1500 {
1549 // Unsafe, not implemented. 1501 // Unsafe, not implemented.
1550 return TRUE; 1502 return TRUE;
1551 } 1503 }
1552 1504
1553 FX_BOOL Document::media(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror) 1505 FX_BOOL Document::media(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror)
1554 { 1506 {
1555 » return TRUE; 1507 return TRUE;
1556 } 1508 }
1557 1509
1558 FX_BOOL Document::calculateNow(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) 1510 FX_BOOL Document::calculateNow(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
1559 { 1511 {
1560 » ASSERT(m_pDocument != NULL); 1512 ASSERT(m_pDocument != NULL);
1561 1513
1562 » if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || 1514 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) ||
1563 » » m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || 1515 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) ||
1564 » » m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) return FALSE; 1516 m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) return FALSE;
1565 1517
1566 » CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInte rForm(); 1518 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterFor m();
1567 » ASSERT(pInterForm != NULL); 1519 ASSERT(pInterForm != NULL);
1568 » pInterForm->OnCalculate(); 1520 pInterForm->OnCalculate();
1569 » return TRUE; 1521 return TRUE;
1570 } 1522 }
1571 1523
1572 FX_BOOL Document::Collab(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error) 1524 FX_BOOL Document::Collab(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error)
1573 { 1525 {
1574 » return TRUE; 1526 return TRUE;
1575 } 1527 }
1576 1528
1577 FX_BOOL Document::getPageNthWord(IFXJS_Context* cc, const CJS_Parameters& params , CJS_Value& vRet, CFX_WideString& sError) 1529 FX_BOOL Document::getPageNthWord(IFXJS_Context* cc, const CJS_Parameters& params , CJS_Value& vRet, CFX_WideString& sError)
1578 { 1530 {
1579 » ASSERT(m_pDocument != NULL); 1531 ASSERT(m_pDocument != NULL);
1580 1532
1581 » if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; 1533 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE;
1582 1534
1583 » int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0; 1535 int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0;
1584 » int nWordNo = params.GetSize() > 1 ? params[1].ToInt() : 0; 1536 int nWordNo = params.GetSize() > 1 ? params[1].ToInt() : 0;
1585 » bool bStrip = params.GetSize() > 2 ? params[2].ToBool() : true; 1537 bool bStrip = params.GetSize() > 2 ? params[2].ToBool() : true;
1586 1538
1587 » CPDF_Document* pDocument = m_pDocument->GetDocument(); 1539 CPDF_Document* pDocument = m_pDocument->GetDocument();
1588 » if (!pDocument) return FALSE; 1540 if (!pDocument) return FALSE;
1589 1541
1590 » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 1542 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1591 » if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) 1543 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount())
1592 » { 1544 {
1593 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); 1545 sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
1594 » » return FALSE; 1546 return FALSE;
1595 » } 1547 }
1596 1548
1597 » CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); 1549 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo);
1598 » if (!pPageDict) return FALSE; 1550 if (!pPageDict) return FALSE;
1599 1551
1600 » CPDF_Page page; 1552 CPDF_Page page;
1601 » page.Load(pDocument, pPageDict); 1553 page.Load(pDocument, pPageDict);
1602 » page.StartParse(); 1554 page.StartParse();
1603 » page.ParseContent(); 1555 page.ParseContent();
1604 1556
1605 » FX_POSITION pos = page.GetFirstObjectPosition(); 1557 FX_POSITION pos = page.GetFirstObjectPosition();
1606 1558
1607 » int nWords = 0; 1559 int nWords = 0;
1608 1560
1609 » CFX_WideString swRet; 1561 CFX_WideString swRet;
1610 1562
1611 » while (pos) 1563 while (pos)
1612 » { 1564 {
1613 » » if (CPDF_PageObject* pPageObj = page.GetNextObject(pos)) 1565 if (CPDF_PageObject* pPageObj = page.GetNextObject(pos))
1614 » » { 1566 {
1615 » » » if (pPageObj->m_Type == PDFPAGE_TEXT) 1567 if (pPageObj->m_Type == PDFPAGE_TEXT)
1616 » » » { 1568 {
1617 » » » » int nObjWords = CountWords((CPDF_TextObject*)pPa geObj); 1569 int nObjWords = CountWords((CPDF_TextObject*)pPageObj);
1618 1570
1619 » » » » if (nWords + nObjWords >= nWordNo) 1571 if (nWords + nObjWords >= nWordNo)
1620 » » » » { 1572 {
1621 » » » » » swRet = GetObjWordStr((CPDF_TextObject*) pPageObj, nWordNo - nWords); 1573 swRet = GetObjWordStr((CPDF_TextObject*)pPageObj, nWordNo - nWords);
1622 » » » » » break; 1574 break;
1623 » » » » } 1575 }
1624 1576
1625 » » » » nWords += nObjWords; 1577 nWords += nObjWords;
1626 » » » } 1578 }
1627 » » } 1579 }
1628 » } 1580 }
1629 1581
1630 » if (bStrip) 1582 if (bStrip)
1631 » { 1583 {
1632 » » swRet.TrimLeft(); 1584 swRet.TrimLeft();
1633 » » swRet.TrimRight(); 1585 swRet.TrimRight();
1634 » } 1586 }
1635 1587
1636 » vRet = swRet.c_str(); 1588 vRet = swRet.c_str();
1637 » return TRUE; 1589 return TRUE;
1638 } 1590 }
1639 1591
1640 FX_BOOL Document::getPageNthWordQuads(IFXJS_Context* cc, const CJS_Parameters& p arams, CJS_Value& vRet, CFX_WideString& sError) 1592 FX_BOOL Document::getPageNthWordQuads(IFXJS_Context* cc, const CJS_Parameters& p arams, CJS_Value& vRet, CFX_WideString& sError)
1641 { 1593 {
1642 » ASSERT(m_pDocument != NULL); 1594 ASSERT(m_pDocument != NULL);
1643 1595
1644 » if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; 1596 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE;
1645 1597
1646 » return FALSE; 1598 return FALSE;
1647 } 1599 }
1648 1600
1649 FX_BOOL Document::getPageNumWords(IFXJS_Context* cc, const CJS_Parameters& param s, CJS_Value& vRet, CFX_WideString& sError) 1601 FX_BOOL Document::getPageNumWords(IFXJS_Context* cc, const CJS_Parameters& param s, CJS_Value& vRet, CFX_WideString& sError)
1650 { 1602 {
1651 » ASSERT(m_pDocument != NULL); 1603 ASSERT(m_pDocument != NULL);
1652 1604
1653 » if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; 1605 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE;
1654 1606
1655 » int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0; 1607 int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0;
1656 1608
1657 » CPDF_Document* pDocument = m_pDocument->GetDocument(); 1609 CPDF_Document* pDocument = m_pDocument->GetDocument();
1658 » ASSERT(pDocument != NULL); 1610 ASSERT(pDocument != NULL);
1659 1611
1660 » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 1612 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1661 » if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) 1613 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount())
1662 » { 1614 {
1663 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); 1615 sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
1664 » » return FALSE; 1616 return FALSE;
1665 » } 1617 }
1666 1618
1667 » CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); 1619 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo);
1668 » if (!pPageDict) return FALSE; 1620 if (!pPageDict) return FALSE;
1669 1621
1670 » CPDF_Page page; 1622 CPDF_Page page;
1671 » page.Load(pDocument, pPageDict); 1623 page.Load(pDocument, pPageDict);
1672 » page.StartParse(); 1624 page.StartParse();
1673 » page.ParseContent(); 1625 page.ParseContent();
1674 1626
1675 » FX_POSITION pos = page.GetFirstObjectPosition(); 1627 FX_POSITION pos = page.GetFirstObjectPosition();
1676 1628
1677 » int nWords = 0; 1629 int nWords = 0;
1678 1630
1679 » while (pos) 1631 while (pos)
1680 » { 1632 {
1681 » » if (CPDF_PageObject* pPageObj = page.GetNextObject(pos)) 1633 if (CPDF_PageObject* pPageObj = page.GetNextObject(pos))
1682 » » { 1634 {
1683 » » » if (pPageObj->m_Type == PDFPAGE_TEXT) 1635 if (pPageObj->m_Type == PDFPAGE_TEXT)
1684 » » » { 1636 {
1685 » » » » CPDF_TextObject* pTextObj = (CPDF_TextObject*)pP ageObj; 1637 CPDF_TextObject* pTextObj = (CPDF_TextObject*)pPageObj;
1686 » » » » nWords += CountWords(pTextObj); 1638 nWords += CountWords(pTextObj);
1687 » » » } 1639 }
1688 » » } 1640 }
1689 » } 1641 }
1690 1642
1691 » vRet = nWords; 1643 vRet = nWords;
1692 1644
1693 » return TRUE; 1645 return TRUE;
1694 } 1646 }
1695 1647
1696 FX_BOOL Document::getPrintParams(IFXJS_Context* cc, const CJS_Parameters& params , CJS_Value& vRet, CFX_WideString& sError) 1648 FX_BOOL Document::getPrintParams(IFXJS_Context* cc, const CJS_Parameters& params , CJS_Value& vRet, CFX_WideString& sError)
1697 { 1649 {
1698 » CJS_Context* pContext = (CJS_Context*)cc; 1650 CJS_Context* pContext = (CJS_Context*)cc;
1699 » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 1651 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
1700 » JSFXObject pRetObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDe fnID(*pRuntime, L"PrintParamsObj")); 1652 JSFXObject pRetObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID (*pRuntime, L"PrintParamsObj"));
1701 1653
1702 » // Not implemented yet. 1654 // Not implemented yet.
1703 1655
1704 » vRet = pRetObj; 1656 vRet = pRetObj;
1705 » return TRUE; 1657 return TRUE;
1706 } 1658 }
1707 1659
1708 #define ISLATINWORD(u)» (u != 0x20 && u <= 0x28FF) 1660 #define ISLATINWORD(u) (u != 0x20 && u <= 0x28FF)
1709 1661
1710 int» Document::CountWords(CPDF_TextObject* pTextObj) 1662 int Document::CountWords(CPDF_TextObject* pTextObj)
1711 { 1663 {
1712 » if (!pTextObj) return 0; 1664 if (!pTextObj) return 0;
1713 1665
1714 » int nWords = 0; 1666 int nWords = 0;
1715 1667
1716 » CPDF_Font* pFont = pTextObj->GetFont(); 1668 CPDF_Font* pFont = pTextObj->GetFont();
1717 » if (!pFont) return 0; 1669 if (!pFont) return 0;
1718 1670
1719 » FX_BOOL bIsLatin = FALSE; 1671 FX_BOOL bIsLatin = FALSE;
1720 1672
1721 » for (int i=0, sz=pTextObj->CountChars(); i<sz; i++) 1673 for (int i=0, sz=pTextObj->CountChars(); i<sz; i++)
1722 » { 1674 {
1723 » » FX_DWORD charcode = -1; 1675 FX_DWORD charcode = -1;
1724 » » FX_FLOAT kerning; 1676 FX_FLOAT kerning;
1725 1677
1726 » » pTextObj->GetCharInfo(i, charcode, kerning); 1678 pTextObj->GetCharInfo(i, charcode, kerning);
1727 » » CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode); 1679 CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode);
1728 1680
1729 » » FX_WORD unicode = 0; 1681 FX_WORD unicode = 0;
1730 » » if (swUnicode.GetLength() > 0) 1682 if (swUnicode.GetLength() > 0)
1731 » » » unicode = swUnicode[0]; 1683 unicode = swUnicode[0];
1732 1684
1733 » » if (ISLATINWORD(unicode) && bIsLatin) 1685 if (ISLATINWORD(unicode) && bIsLatin)
1734 » » » continue; 1686 continue;
1735 1687
1736 » » bIsLatin = ISLATINWORD(unicode); 1688 bIsLatin = ISLATINWORD(unicode);
1737 » » if (unicode != 0x20) 1689 if (unicode != 0x20)
1738 » » » nWords++; 1690 nWords++;
1739 » } 1691 }
1740 1692
1741 » return nWords; 1693 return nWords;
1742 } 1694 }
1743 1695
1744 CFX_WideString Document::GetObjWordStr(CPDF_TextObject* pTextObj, int nWordIndex ) 1696 CFX_WideString Document::GetObjWordStr(CPDF_TextObject* pTextObj, int nWordIndex )
1745 { 1697 {
1746 » ASSERT(pTextObj != NULL); 1698 ASSERT(pTextObj != NULL);
1747 1699
1748 » CFX_WideString swRet; 1700 CFX_WideString swRet;
1749 1701
1750 » CPDF_Font* pFont = pTextObj->GetFont(); 1702 CPDF_Font* pFont = pTextObj->GetFont();
1751 » if (!pFont) return L""; 1703 if (!pFont) return L"";
1752 1704
1753 » int nWords = 0; 1705 int nWords = 0;
1754 » FX_BOOL bIsLatin = FALSE; 1706 FX_BOOL bIsLatin = FALSE;
1755 1707
1756 » for (int i=0, sz=pTextObj->CountChars(); i<sz; i++) 1708 for (int i=0, sz=pTextObj->CountChars(); i<sz; i++)
1757 » { 1709 {
1758 » » FX_DWORD charcode = -1; 1710 FX_DWORD charcode = -1;
1759 » » FX_FLOAT kerning; 1711 FX_FLOAT kerning;
1760 1712
1761 » » pTextObj->GetCharInfo(i, charcode, kerning); 1713 pTextObj->GetCharInfo(i, charcode, kerning);
1762 » » CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode); 1714 CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode);
1763 1715
1764 » » FX_WORD unicode = 0; 1716 FX_WORD unicode = 0;
1765 » » if (swUnicode.GetLength() > 0) 1717 if (swUnicode.GetLength() > 0)
1766 » » » unicode = swUnicode[0]; 1718 unicode = swUnicode[0];
1767 1719
1768 » » if (ISLATINWORD(unicode) && bIsLatin) 1720 if (ISLATINWORD(unicode) && bIsLatin)
1769 » » { 1721 {
1770 » » } 1722 }
1771 » » else 1723 else
1772 » » { 1724 {
1773 » » » bIsLatin = ISLATINWORD(unicode); 1725 bIsLatin = ISLATINWORD(unicode);
1774 » » » if (unicode != 0x20) 1726 if (unicode != 0x20)
1775 » » » » nWords++; 1727 nWords++;
1776 » » } 1728 }
1777 1729
1778 » » if (nWords-1 == nWordIndex) 1730 if (nWords-1 == nWordIndex)
1779 » » » swRet += unicode; 1731 swRet += unicode;
1780 » } 1732 }
1781 1733
1782 » return swRet; 1734 return swRet;
1783 } 1735 }
1784 1736
1785 FX_BOOL Document::zoom(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr ror) 1737 FX_BOOL Document::zoom(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr ror)
1786 { 1738 {
1787 1739
1788 » return TRUE; 1740 return TRUE;
1789 } 1741 }
1790 1742
1791 /** 1743 /**
1792 (none,» NoVary) 1744 (none, NoVary)
1793 (fitP,» FitPage) 1745 (fitP, FitPage)
1794 (fitW,» FitWidth) 1746 (fitW, FitWidth)
1795 (fitH,» FitHeight) 1747 (fitH, FitHeight)
1796 (fitV,» FitVisibleWidth) 1748 (fitV, FitVisibleWidth)
1797 (pref,» Preferred) 1749 (pref, Preferred)
1798 (refW,» ReflowWidth) 1750 (refW, ReflowWidth)
1799 */ 1751 */
1800 1752
1801 FX_BOOL Document::zoomType(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1753 FX_BOOL Document::zoomType(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1802 { 1754 {
1803 » return TRUE; 1755 return TRUE;
1804 } 1756 }
1805 1757
1806 FX_BOOL Document::deletePages(IFXJS_Context* cc, const CJS_Parameters& params, C JS_Value& vRet, CFX_WideString& sError) 1758 FX_BOOL Document::deletePages(IFXJS_Context* cc, const CJS_Parameters& params, C JS_Value& vRet, CFX_WideString& sError)
1807 { 1759 {
1808 // Unsafe, no supported. 1760 // Unsafe, no supported.
1809 return TRUE; 1761 return TRUE;
1810 } 1762 }
1811 1763
1812 FX_BOOL Document::extractPages(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) 1764 FX_BOOL Document::extractPages(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
1813 { 1765 {
(...skipping 14 matching lines...) Expand all
1828 } 1780 }
1829 1781
1830 FX_BOOL Document::getURL(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Va lue& vRet, CFX_WideString& sError) 1782 FX_BOOL Document::getURL(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Va lue& vRet, CFX_WideString& sError)
1831 { 1783 {
1832 // Unsafe, not supported. 1784 // Unsafe, not supported.
1833 return TRUE; 1785 return TRUE;
1834 } 1786 }
1835 1787
1836 void Document::AddDelayData(CJS_DelayData* pData) 1788 void Document::AddDelayData(CJS_DelayData* pData)
1837 { 1789 {
1838 » m_DelayData.Add(pData); 1790 m_DelayData.Add(pData);
1839 } 1791 }
1840 1792
1841 void Document::DoFieldDelay(const CFX_WideString& sFieldName, int nControlIndex) 1793 void Document::DoFieldDelay(const CFX_WideString& sFieldName, int nControlIndex)
1842 { 1794 {
1843 » CFX_DWordArray DelArray; 1795 CFX_DWordArray DelArray;
1844 » CFX_ArrayTemplate<CJS_DelayData*> DelayDataForFieldAndControlIndex; 1796 CFX_ArrayTemplate<CJS_DelayData*> DelayDataForFieldAndControlIndex;
1845 1797
1846 » for (int i=0,sz=m_DelayData.GetSize(); i<sz; i++) 1798 for (int i=0,sz=m_DelayData.GetSize(); i<sz; i++)
1847 » { 1799 {
1848 » » if (CJS_DelayData* pData = m_DelayData.GetAt(i)) 1800 if (CJS_DelayData* pData = m_DelayData.GetAt(i))
1849 » » { 1801 {
1850 » » » if (pData->sFieldName == sFieldName && pData->nControlIn dex == nControlIndex) 1802 if (pData->sFieldName == sFieldName && pData->nControlIndex == nCont rolIndex)
1851 » » » { 1803 {
1852 » » » » DelayDataForFieldAndControlIndex.Add(pData); 1804 DelayDataForFieldAndControlIndex.Add(pData);
1853 » » » » m_DelayData.SetAt(i, NULL); 1805 m_DelayData.SetAt(i, NULL);
1854 » » » » DelArray.Add(i); 1806 DelArray.Add(i);
1855 » » » } 1807 }
1856 » » } 1808 }
1857 » } 1809 }
1858 1810
1859 » for (int j=DelArray.GetSize()-1; j>=0; j--) 1811 for (int j=DelArray.GetSize()-1; j>=0; j--)
1860 » { 1812 {
1861 » » m_DelayData.RemoveAt(DelArray[j]); 1813 m_DelayData.RemoveAt(DelArray[j]);
1862 » } 1814 }
1863 1815
1864 » for (int i=0,sz=DelayDataForFieldAndControlIndex.GetSize(); i < sz; i++) 1816 for (int i=0,sz=DelayDataForFieldAndControlIndex.GetSize(); i < sz; i++)
1865 » { 1817 {
1866 » » CJS_DelayData* pData = DelayDataForFieldAndControlIndex.GetAt(i) ; 1818 CJS_DelayData* pData = DelayDataForFieldAndControlIndex.GetAt(i);
1867 » » Field::DoDelay(m_pDocument, pData); 1819 Field::DoDelay(m_pDocument, pData);
1868 » » DelayDataForFieldAndControlIndex.SetAt(i,NULL); 1820 DelayDataForFieldAndControlIndex.SetAt(i,NULL);
1869 » » delete pData; 1821 delete pData;
1870 » } 1822 }
1871 } 1823 }
1872 1824
1873 void Document::AddDelayAnnotData(CJS_AnnotObj *pData) 1825 void Document::AddDelayAnnotData(CJS_AnnotObj *pData)
1874 { 1826 {
1875 » m_DelayAnnotData.Add(pData); 1827 m_DelayAnnotData.Add(pData);
1876 } 1828 }
1877 1829
1878 void Document::DoAnnotDelay() 1830 void Document::DoAnnotDelay()
1879 { 1831 {
1880 » CFX_DWordArray DelArray; 1832 CFX_DWordArray DelArray;
1881 1833
1882 » for (int j=DelArray.GetSize()-1; j>=0; j--) 1834 for (int j=DelArray.GetSize()-1; j>=0; j--)
1883 » { 1835 {
1884 » » m_DelayData.RemoveAt(DelArray[j]); 1836 m_DelayData.RemoveAt(DelArray[j]);
1885 » } 1837 }
1886 } 1838 }
1887 1839
1888 CJS_Document* Document::GetCJSDoc() const 1840 CJS_Document* Document::GetCJSDoc() const
1889 { 1841 {
1890 » return static_cast<CJS_Document*>(m_pJSObject); 1842 return static_cast<CJS_Document*>(m_pJSObject);
1891 } 1843 }
1892
OLDNEW
« no previous file with comments | « fpdfsdk/src/fxedit/fxet_edit.cpp ('k') | fpdfsdk/src/javascript/Field.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698