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

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

Issue 1239313005: Merge to XFA - else after returns. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Fix issues. 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 CPDFXFA_Page* pPage = pWidget->GetPDFXFAPage(); 550 CPDFXFA_Page* pPage = pWidget->GetPDFXFAPage();
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 if (bAll && bEmpty)
682 {
683 if (pPDFInterForm->CheckRequiredFields())
684 {
685 pRuntime->BeginBlock();
686 pInterForm->SubmitForm(strURL, FALSE);
687 pRuntime->EndBlock();
688 }
689 return TRUE;
690 }
681 691
682 » FX_BOOL bAll = (aFields.GetLength() == 0); 692 CFX_PtrArray fieldObjects;
693 for (int i=0,sz=aFields.GetLength(); i<sz; i++)
694 {
695 CJS_Value valName(isolate);
696 aFields.GetElement(i, valName);
683 697
684 » if (bAll && bEmpty) 698 CFX_WideString sName = valName.ToCFXWideString();
685 » { 699 CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
686 » » CJS_Context* pContext = (CJS_Context*)cc; 700 for (int j = 0, jsz = pPDFForm->CountFields(sName); j < jsz; ++j)
687 » » ASSERT(pContext != NULL); 701 {
688 » » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 702 CPDF_FormField* pField = pPDFForm->GetField(j, sName);
689 » » ASSERT(pRuntime != NULL); 703 if (!bEmpty && pField->GetValue().IsEmpty())
704 continue;
690 705
706 fieldObjects.Add(pField);
707 }
708 }
691 709
692 » » if (pPDFInterForm->CheckRequiredFields()) 710 if (pPDFInterForm->CheckRequiredFields(&fieldObjects, TRUE))
693 » » { 711 {
694 » » » pRuntime->BeginBlock(); 712 pRuntime->BeginBlock();
695 » » » pInterForm->SubmitForm(strURL, FALSE); 713 pInterForm->SubmitFields(strURL, fieldObjects, TRUE, !bFDF);
696 » » » pRuntime->EndBlock(); 714 pRuntime->EndBlock();
697 » » } 715 }
698 716 return TRUE;
699 » » return TRUE;
700 » }
701 » else
702 » {
703 » » CFX_PtrArray fieldObjects;
704
705 » » for (int i=0,sz=aFields.GetLength(); i<sz; i++)
706 » » {
707 » » » CJS_Value valName(isolate);
708 » » » aFields.GetElement(i, valName);
709 » » » CFX_WideString sName = valName.ToCFXWideString();
710
711 » » » CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
712 » » » ASSERT(pPDFForm != NULL);
713
714 » » » for (int j=0, jsz=pPDFForm->CountFields(sName); j<jsz; j ++)
715 » » » {
716 » » » » CPDF_FormField* pField = pPDFForm->GetField(j, s Name);
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()->GetPDFDoc()-> GetInfo(); 813 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> 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()->GetPDFDoc()-> GetInfo(); 837 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo();
861 if (!pDictionary)return FALSE; 838 if (!pDictionary)return FALSE;
862 839
863 CFX_WideString cwAuthor = pDictionary->GetUnicodeText("A uthor"); 840 CFX_WideString cwAuthor = pDictionary->GetUnicodeText("A uthor");
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
907 return TRUE; 884 return TRUE;
908 } 885 }
909 else 886 else
910 { 887 {
911 return TRUE; 888 return TRUE;
912 } 889 }
913 } 890 }
914 891
915 FX_BOOL Document::creationDate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideStr ing& sError) 892 FX_BOOL Document::creationDate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideStr ing& sError)
916 { 893 {
917 ASSERT(m_pDocument != NULL);
918
919 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo(); 894 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo();
920 » if (!pDictionary)return FALSE; 895 » if (!pDictionary)
896 return FALSE;
921 897
922 if (vp.IsGetting()) 898 if (vp.IsGetting())
923 { 899 {
924 vp << pDictionary->GetUnicodeText("CreationDate"); 900 vp << pDictionary->GetUnicodeText("CreationDate");
925 return TRUE;
926 } 901 }
927 else 902 else
928 { 903 {
929 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 904 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
905 return FALSE;
930 906
931 » » CFX_WideString csCreationDate; 907 CFX_WideString csCreationDate;
932 » » vp >> csCreationDate; 908 vp >> csCreationDate;
933 » » pDictionary->SetAtString("CreationDate", PDF_EncodeText(csCreati onDate)); 909 pDictionary->SetAtString("CreationDate", PDF_EncodeText(csCreationDate)) ;
934 » » m_pDocument->SetChangeMark(); 910 m_pDocument->SetChangeMark();
935 911 }
936 » » return TRUE; 912 return TRUE;
937 » }
938 } 913 }
939 914
940 FX_BOOL Document::creator(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 915 FX_BOOL Document::creator(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
941 { 916 {
942 » ASSERT(m_pDocument != NULL); 917 » CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo();
918 » if (!pDictionary)
919 return FALSE;
943 920
944 » CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo(); 921 if (vp.IsGetting())
945 » if (!pDictionary)return FALSE; 922 {
923 vp << pDictionary->GetUnicodeText("Creator");
924 }
925 else
926 {
927 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
928 return FALSE;
946 929
947 » if (vp.IsGetting()) 930 CFX_WideString csCreator;
948 » { 931 vp >> csCreator;
949 » » vp << pDictionary->GetUnicodeText("Creator"); 932 pDictionary->SetAtString("Creator", PDF_EncodeText(csCreator));
950 » » return TRUE; 933 m_pDocument->SetChangeMark();
951 » } 934 }
952 » else 935 return TRUE;
953 » {
954 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE;
955
956 » » CFX_WideString csCreator;
957 » » vp >> csCreator;
958 » » pDictionary->SetAtString("Creator", PDF_EncodeText(csCreator));
959 » » m_pDocument->SetChangeMark();
960 » » return TRUE;
961 » }
962 } 936 }
963 937
964 FX_BOOL Document::delay(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror) 938 FX_BOOL Document::delay(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror)
965 { 939 {
966 if (vp.IsGetting()) 940 if (vp.IsGetting())
967 { 941 {
968 vp << m_bDelay; 942 vp << m_bDelay;
969 return TRUE;
970 } 943 }
971 else 944 else
972 { 945 {
973 ASSERT(m_pDocument != NULL); 946 ASSERT(m_pDocument != NULL);
974 947
975 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 948 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE;
976 949
977 bool b; 950 bool b;
978 vp >> b; 951 vp >> b;
979 952
(...skipping 12 matching lines...) Expand all
992 { 965 {
993 if (CJS_DelayData* pData = m_DelayData.GetAt(i)) 966 if (CJS_DelayData* pData = m_DelayData.GetAt(i))
994 { 967 {
995 Field::DoDelay(m_pDocument, pData); 968 Field::DoDelay(m_pDocument, pData);
996 delete m_DelayData.GetAt(i); 969 delete m_DelayData.GetAt(i);
997 } 970 }
998 } 971 }
999 m_DelayData.RemoveAll(); 972 m_DelayData.RemoveAll();
1000 } 973 }
1001 974
1002 return TRUE;
1003 } 975 }
976 return TRUE;
1004 } 977 }
1005 978
1006 FX_BOOL Document::keywords(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 979 FX_BOOL Document::keywords(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1007 { 980 {
1008 ASSERT(m_pDocument != NULL);
1009
1010 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo(); 981 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo();
1011 » if (!pDictionary)return FALSE; 982 if (!pDictionary)
1012 983 return FALSE;
1013 » if (vp.IsGetting()) 984
1014 » { 985 if (vp.IsGetting())
1015 » » vp << pDictionary->GetUnicodeText("Keywords"); 986 {
1016 » » return TRUE; 987 vp << pDictionary->GetUnicodeText("Keywords");
1017 » } 988 }
1018 » else 989 else
1019 » { 990 {
1020 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 991 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
1021 992 return FALSE;
1022 » » CFX_WideString csKeywords; 993
1023 » » vp >> csKeywords; 994 CFX_WideString csKeywords;
1024 » » pDictionary->SetAtString("Keywords", PDF_EncodeText(csKeywords)) ; 995 vp >> csKeywords;
1025 » » m_pDocument->SetChangeMark(); 996 pDictionary->SetAtString("Keywords", PDF_EncodeText(csKeywords));
1026 » » return TRUE; 997 m_pDocument->SetChangeMark();
1027 » } 998 }
999 return TRUE;
1028 } 1000 }
1029 1001
1030 FX_BOOL Document::modDate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1002 FX_BOOL Document::modDate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1031 { 1003 {
1032 ASSERT(m_pDocument != NULL);
1033
1034 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo(); 1004 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo();
1035 » if (!pDictionary)return FALSE; 1005 if (!pDictionary)
1036 1006 return FALSE;
1037 » if (vp.IsGetting()) 1007
1038 » { 1008 if (vp.IsGetting())
1039 » » vp << pDictionary->GetUnicodeText("ModDate"); 1009 {
1040 » » return TRUE; 1010 vp << pDictionary->GetUnicodeText("ModDate");
1041 » } 1011 }
1042 » else 1012 else
1043 » { 1013 {
1044 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 1014 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
1045 1015 return FALSE;
1046 » » CFX_WideString csmodDate; 1016
1047 » » vp >> csmodDate; 1017 CFX_WideString csmodDate;
1048 » » pDictionary->SetAtString("ModDate", PDF_EncodeText(csmodDate)); 1018 vp >> csmodDate;
1049 » » m_pDocument->SetChangeMark(); 1019 pDictionary->SetAtString("ModDate", PDF_EncodeText(csmodDate));
1050 » » return TRUE; 1020 m_pDocument->SetChangeMark();
1051 » } 1021 }
1022 return TRUE;
1052 } 1023 }
1053 1024
1054 FX_BOOL Document::producer(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1025 FX_BOOL Document::producer(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1055 { 1026 {
1056 ASSERT(m_pDocument != NULL);
1057
1058 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo(); 1027 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo();
1059 » if (!pDictionary)return FALSE; 1028 if (!pDictionary)
1060 1029 return FALSE;
1061 » if (vp.IsGetting()) 1030
1062 » { 1031 if (vp.IsGetting())
1063 » » vp << pDictionary->GetUnicodeText("Producer"); 1032 {
1064 » » return TRUE; 1033 vp << pDictionary->GetUnicodeText("Producer");
1065 » } 1034 }
1066 » else 1035 else
1067 » { 1036 {
1068 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 1037 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
1069 1038 return FALSE;
1070 » » CFX_WideString csproducer; 1039
1071 » » vp >> csproducer; 1040 CFX_WideString csproducer;
1072 » » pDictionary->SetAtString("Producer", PDF_EncodeText(csproducer)) ; 1041 vp >> csproducer;
1073 » » m_pDocument->SetChangeMark(); 1042 pDictionary->SetAtString("Producer", PDF_EncodeText(csproducer));
1074 » » return TRUE; 1043 m_pDocument->SetChangeMark();
1075 » } 1044 }
1045 return TRUE;
1076 } 1046 }
1077 1047
1078 FX_BOOL Document::subject(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1048 FX_BOOL Document::subject(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1079 { 1049 {
1080 ASSERT(m_pDocument != NULL);
1081
1082 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo(); 1050 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo();
1083 » if (!pDictionary)return FALSE; 1051 if (!pDictionary)
1084 1052 return FALSE;
1085 » if (vp.IsGetting()) 1053
1086 » { 1054 if (vp.IsGetting())
1087 » » vp << pDictionary->GetUnicodeText("Subject"); 1055 {
1088 » » return TRUE; 1056 vp << pDictionary->GetUnicodeText("Subject");
1089 » } 1057 }
1090 » else 1058 else
1091 » { 1059 {
1092 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 1060 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
1093 1061 return FALSE;
1094 » » CFX_WideString cssubject; 1062
1095 » » vp >> cssubject; 1063 CFX_WideString cssubject;
1096 » » pDictionary->SetAtString("Subject", PDF_EncodeText(cssubject)); 1064 vp >> cssubject;
1097 » » m_pDocument->SetChangeMark(); 1065 pDictionary->SetAtString("Subject", PDF_EncodeText(cssubject));
1098 » » return TRUE; 1066 m_pDocument->SetChangeMark();
1099 » } 1067 }
1068 return TRUE;
1100 } 1069 }
1101 1070
1102 FX_BOOL Document::title(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror) 1071 FX_BOOL Document::title(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror)
1103 { 1072 {
1104 » ASSERT(m_pDocument != NULL); 1073 if (m_pDocument == NULL || m_pDocument->GetDocument() == NULL)
1105 1074 return FALSE;
1106 » if (m_pDocument == NULL || m_pDocument->GetDocument() == NULL)
1107 » » return FALSE;
1108 1075
1109 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo(); 1076 CPDF_Dictionary* pDictionary = m_pDocument->GetDocument()->GetPDFDoc()-> GetInfo();
1110 » if (!pDictionary)return FALSE; 1077 if (!pDictionary)
1111 1078 return FALSE;
1112 » if (vp.IsGetting()) 1079
1113 » { 1080 if (vp.IsGetting())
1114 » » vp << pDictionary->GetUnicodeText("Title"); 1081 {
1115 » » return TRUE; 1082 vp << pDictionary->GetUnicodeText("Title");
1116 » } 1083 }
1117 » else 1084 else
1118 » { 1085 {
1119 » » if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) return FALSE; 1086 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
1120 1087 return FALSE;
1121 » » CFX_WideString cstitle; 1088
1122 » » vp >> cstitle; 1089 CFX_WideString cstitle;
1123 » » pDictionary->SetAtString("Title", PDF_EncodeText(cstitle)); 1090 vp >> cstitle;
1124 » » m_pDocument->SetChangeMark(); 1091 pDictionary->SetAtString("Title", PDF_EncodeText(cstitle));
1125 » » return TRUE; 1092 m_pDocument->SetChangeMark();
1126 » } 1093 }
1094 return TRUE;
1127 } 1095 }
1128 1096
1129 FX_BOOL Document::numPages(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1097 FX_BOOL Document::numPages(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1130 { 1098 {
1131 » if (vp.IsSetting()) { 1099 if (vp.IsSetting()) {
1132 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 1100 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1133 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); 1101 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
1134 » » return FALSE; 1102 return FALSE;
1135 » } 1103 }
1136 » vp << m_pDocument->GetPageCount(); 1104 vp << m_pDocument->GetPageCount();
1137 » return TRUE; 1105 return TRUE;
1138 } 1106 }
1139 1107
1140 FX_BOOL Document::external(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1108 FX_BOOL Document::external(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1141 { 1109 {
1142 » //In Chrome case,should always return true. 1110 //In Chrome case,should always return true.
1143 » if (vp.IsGetting()) { 1111 if (vp.IsGetting()) {
1144 » » vp << TRUE; 1112 vp << TRUE;
1145 » } 1113 }
1146 » return TRUE; 1114 return TRUE;
1147 } 1115 }
1148 1116
1149 FX_BOOL Document::filesize(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1117 FX_BOOL Document::filesize(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1150 { 1118 {
1151 » if (vp.IsSetting()) { 1119 if (vp.IsSetting()) {
1152 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 1120 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1153 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); 1121 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
1154 » » return FALSE; 1122 return FALSE;
1155 » } 1123 }
1156 » vp << 0; 1124 vp << 0;
1157 » return TRUE; 1125 return TRUE;
1158 } 1126 }
1159 1127
1160 FX_BOOL Document::mouseX(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error) 1128 FX_BOOL Document::mouseX(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error)
1161 { 1129 {
1162 » return TRUE; 1130 return TRUE;
1163 } 1131 }
1164 1132
1165 FX_BOOL Document::mouseY(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error) 1133 FX_BOOL Document::mouseY(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error)
1166 { 1134 {
1167 » return TRUE; 1135 return TRUE;
1168 } 1136 }
1169 1137
1170 FX_BOOL Document::baseURL(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1138 FX_BOOL Document::baseURL(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1171 { 1139 {
1172 » if (vp.IsGetting()) 1140 if (vp.IsGetting())
1173 » { 1141 {
1174 » » vp << m_cwBaseURL; 1142 vp << m_cwBaseURL;
1175 » } 1143 }
1176 » else 1144 else
1177 » { 1145 {
1178 » » vp >> m_cwBaseURL; 1146 vp >> m_cwBaseURL;
1179 » } 1147 }
1180 » return TRUE; 1148 return TRUE;
1181 } 1149 }
1182 1150
1183 FX_BOOL Document::calculate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString & sError) 1151 FX_BOOL Document::calculate(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString & sError)
1184 { 1152 {
1185 » ASSERT(m_pDocument != NULL); 1153 ASSERT(m_pDocument != NULL);
1186 1154
1187 » CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInte rForm(); 1155 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterFor m();
1188 » ASSERT(pInterForm != NULL); 1156 ASSERT(pInterForm != NULL);
1189 1157
1190 » if (vp.IsGetting()) 1158 if (vp.IsGetting())
1191 » { 1159 {
1192 » » if (pInterForm->IsCalculateEnabled()) 1160 if (pInterForm->IsCalculateEnabled())
1193 » » » vp << true; 1161 vp << true;
1194 » » else 1162 else
1195 » » » vp << false; 1163 vp << false;
1196 » } 1164 }
1197 » else 1165 else
1198 » { 1166 {
1199 » » bool bCalculate; 1167 bool bCalculate;
1200 » » vp >> bCalculate; 1168 vp >> bCalculate;
1201 1169
1202 » » pInterForm->EnableCalculate(bCalculate); 1170 pInterForm->EnableCalculate(bCalculate);
1203 » } 1171 }
1204 1172
1205 » return TRUE; 1173 return TRUE;
1206 } 1174 }
1207 1175
1208 FX_BOOL Document::documentFileName(IFXJS_Context* cc, CJS_PropValue& vp, CFX_Wid eString& sError) 1176 FX_BOOL Document::documentFileName(IFXJS_Context* cc, CJS_PropValue& vp, CFX_Wid eString& sError)
1209 { 1177 {
1210 » if (vp.IsSetting()) { 1178 if (vp.IsSetting()) {
1211 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 1179 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1212 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); 1180 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
1213 » » return FALSE; 1181 return FALSE;
1214 » } 1182 }
1215 » CFX_WideString wsFilePath = m_pDocument->GetPath(); 1183 CFX_WideString wsFilePath = m_pDocument->GetPath();
1216 » int32_t i = wsFilePath.GetLength() - 1; 1184 int32_t i = wsFilePath.GetLength() - 1;
1217 » for ( ; i >= 0; i-- ) 1185 for ( ; i >= 0; i-- )
1218 » { 1186 {
1219 » » if ( wsFilePath.GetAt( i ) == L'\\' || wsFilePath.GetAt( i ) == L'/' ) 1187 if ( wsFilePath.GetAt( i ) == L'\\' || wsFilePath.GetAt( i ) == L'/' )
1220 » » » break; 1188 break;
1221 » } 1189 }
1222 » if ( i >= 0 && i < wsFilePath.GetLength() - 1 ) 1190 if ( i >= 0 && i < wsFilePath.GetLength() - 1 )
1223 » { 1191 {
1224 » » vp << ( wsFilePath.GetBuffer( wsFilePath.GetLength() ) + i + 1 ) ; 1192 vp << ( wsFilePath.GetBuffer( wsFilePath.GetLength() ) + i + 1 );
1225 » }else{ 1193 }else{
1226 » » vp << L""; 1194 vp << L"";
1227 » } 1195 }
1228 » return TRUE; 1196 return TRUE;
1229 } 1197 }
1230 1198
1231 CFX_WideString Document::ReversalStr(CFX_WideString cbFrom) 1199 CFX_WideString Document::ReversalStr(CFX_WideString cbFrom)
1232 { 1200 {
1233 » size_t iLength = cbFrom.GetLength(); 1201 size_t iLength = cbFrom.GetLength();
1234 pdfium::base::CheckedNumeric<size_t> iSize = sizeof(wchar_t); 1202 pdfium::base::CheckedNumeric<size_t> iSize = sizeof(wchar_t);
1235 » iSize *= (iLength + 1); 1203 iSize *= (iLength + 1);
1236 » wchar_t* pResult = (wchar_t*)malloc(iSize.ValueOrDie()); 1204 wchar_t* pResult = (wchar_t*)malloc(iSize.ValueOrDie());
1237 » wchar_t* pFrom = (wchar_t*)cbFrom.GetBuffer(iLength); 1205 wchar_t* pFrom = (wchar_t*)cbFrom.GetBuffer(iLength);
1238 1206
1239 » for (size_t i = 0; i < iLength; i++) 1207 for (size_t i = 0; i < iLength; i++)
1240 » { 1208 {
1241 » » pResult[i] = *(pFrom + iLength - i - 1); 1209 pResult[i] = *(pFrom + iLength - i - 1);
1242 » } 1210 }
1243 » pResult[iLength] = L'\0'; 1211 pResult[iLength] = L'\0';
1244 1212
1245 » cbFrom.ReleaseBuffer(); 1213 cbFrom.ReleaseBuffer();
1246 » CFX_WideString cbRet = CFX_WideString(pResult); 1214 CFX_WideString cbRet = CFX_WideString(pResult);
1247 » free(pResult); 1215 free(pResult);
1248 » pResult = NULL; 1216 pResult = NULL;
1249 » return cbRet; 1217 return cbRet;
1250 } 1218 }
1251 1219
1252 CFX_WideString Document::CutString(CFX_WideString cbFrom) 1220 CFX_WideString Document::CutString(CFX_WideString cbFrom)
1253 { 1221 {
1254 » size_t iLength = cbFrom.GetLength(); 1222 size_t iLength = cbFrom.GetLength();
1255 » pdfium::base::CheckedNumeric<size_t> iSize = sizeof(wchar_t); 1223 pdfium::base::CheckedNumeric<size_t> iSize = sizeof(wchar_t);
1256 » iSize *= (iLength + 1); 1224 iSize *= (iLength + 1);
1257 » wchar_t* pResult = (wchar_t*)malloc(iSize.ValueOrDie()); 1225 wchar_t* pResult = (wchar_t*)malloc(iSize.ValueOrDie());
1258 » wchar_t* pFrom = (wchar_t*)cbFrom.GetBuffer(iLength); 1226 wchar_t* pFrom = (wchar_t*)cbFrom.GetBuffer(iLength);
1259 1227
1260 » for (int i = 0; i < iLength; i++) 1228 for (int i = 0; i < iLength; i++)
1261 » { 1229 {
1262 » » if (pFrom[i] == L'\\' || pFrom[i] == L'/') 1230 if (pFrom[i] == L'\\' || pFrom[i] == L'/')
1263 » » { 1231 {
1264 » » » pResult[i] = L'\0'; 1232 pResult[i] = L'\0';
1265 » » » break; 1233 break;
1266 » » } 1234 }
1267 » » pResult[i] = pFrom[i]; 1235 pResult[i] = pFrom[i];
1268 » } 1236 }
1269 » pResult[iLength] = L'\0'; 1237 pResult[iLength] = L'\0';
1270 1238
1271 » cbFrom.ReleaseBuffer(); 1239 cbFrom.ReleaseBuffer();
1272 » CFX_WideString cbRet = CFX_WideString(pResult); 1240 CFX_WideString cbRet = CFX_WideString(pResult);
1273 » free(pResult); 1241 free(pResult);
1274 » pResult = NULL; 1242 pResult = NULL;
1275 » return cbRet; 1243 return cbRet;
1276 } 1244 }
1277 1245
1278 FX_BOOL Document::path(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr ror) 1246 FX_BOOL Document::path(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr ror)
1279 { 1247 {
1280 » if (vp.IsSetting()) { 1248 if (vp.IsSetting()) {
1281 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 1249 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1282 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); 1250 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
1283 » » return FALSE; 1251 return FALSE;
1284 » } 1252 }
1285 » vp << app::SysPathToPDFPath(m_pDocument->GetPath()); 1253 vp << app::SysPathToPDFPath(m_pDocument->GetPath());
1286 » return TRUE; 1254 return TRUE;
1287 } 1255 }
1288 1256
1289 FX_BOOL Document::pageWindowRect(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideS tring& sError) 1257 FX_BOOL Document::pageWindowRect(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideS tring& sError)
1290 { 1258 {
1291 » return TRUE; 1259 return TRUE;
1292 } 1260 }
1293 1261
1294 FX_BOOL Document::layout(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error) 1262 FX_BOOL Document::layout(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error)
1295 { 1263 {
1296 » return TRUE; 1264 return TRUE;
1297 } 1265 }
1298 1266
1299 FX_BOOL Document::addLink(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError) 1267 FX_BOOL Document::addLink(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError)
1300 { 1268 {
1301 » return TRUE; 1269 return TRUE;
1302 } 1270 }
1303 1271
1304 FX_BOOL Document::closeDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError) 1272 FX_BOOL Document::closeDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError)
1305 { 1273 {
1306 » ASSERT(m_pDocument != NULL); 1274 ASSERT(m_pDocument != NULL);
1307 » return TRUE; 1275 return TRUE;
1308 } 1276 }
1309 1277
1310 FX_BOOL Document::getPageBox(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError) 1278 FX_BOOL Document::getPageBox(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError)
1311 { 1279 {
1312 » return TRUE; 1280 return TRUE;
1313 } 1281 }
1314 1282
1315 FX_BOOL Document::getAnnot(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError) 1283 FX_BOOL Document::getAnnot(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError)
1316 { 1284 {
1317 » return TRUE; 1285 return TRUE;
1318 } 1286 }
1319 1287
1320 FX_BOOL Document::getAnnots(IFXJS_Context* cc, const CJS_Parameters& params, CJS _Value& vRet, CFX_WideString& sError) 1288 FX_BOOL Document::getAnnots(IFXJS_Context* cc, const CJS_Parameters& params, CJS _Value& vRet, CFX_WideString& sError)
1321 { 1289 {
1322 » vRet.SetNull(); 1290 vRet.SetNull();
1323 » return TRUE; 1291 return TRUE;
1324 } 1292 }
1325 1293
1326 FX_BOOL Document::getAnnot3D(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError) 1294 FX_BOOL Document::getAnnot3D(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError)
1327 { 1295 {
1328 » vRet.SetNull(); 1296 vRet.SetNull();
1329 » return TRUE; 1297 return TRUE;
1330 } 1298 }
1331 1299
1332 FX_BOOL Document::getAnnots3D(IFXJS_Context* cc, const CJS_Parameters& params, C JS_Value& vRet, CFX_WideString& sError) 1300 FX_BOOL Document::getAnnots3D(IFXJS_Context* cc, const CJS_Parameters& params, C JS_Value& vRet, CFX_WideString& sError)
1333 { 1301 {
1334 » vRet = VT_undefined; 1302 vRet = VT_undefined;
1335 » return TRUE; 1303 return TRUE;
1336 } 1304 }
1337 1305
1338 FX_BOOL Document::getOCGs(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError) 1306 FX_BOOL Document::getOCGs(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError)
1339 { 1307 {
1340 » return TRUE; 1308 return TRUE;
1341 } 1309 }
1342 1310
1343 FX_BOOL Document::getLinks(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError) 1311 FX_BOOL Document::getLinks(IFXJS_Context* cc, const CJS_Parameters& params, CJS_ Value& vRet, CFX_WideString& sError)
1344 { 1312 {
1345 » return TRUE; 1313 return TRUE;
1346 } 1314 }
1347 1315
1348 bool Document::IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect) 1316 bool Document::IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect)
1349 { 1317 {
1350 » if (rect.left <= LinkRect.left 1318 return (rect.left <= LinkRect.left &&
1351 » && rect.top <= LinkRect.top 1319 rect.top <= LinkRect.top &&
1352 » && rect.right >= LinkRect.right 1320 rect.right >= LinkRect.right &&
1353 » && rect.bottom >= LinkRect.bottom) 1321 rect.bottom >= LinkRect.bottom);
1354 » » return true;
1355 » else
1356 » » return false;
1357 } 1322 }
1358 1323
1359 void IconTree::InsertIconElement(IconElement* pNewIcon) 1324 void IconTree::InsertIconElement(IconElement* pNewIcon)
1360 { 1325 {
1361 » if (!pNewIcon)return; 1326 if (!pNewIcon)return;
1362 1327
1363 » if (m_pHead == NULL && m_pEnd == NULL) 1328 if (m_pHead == NULL && m_pEnd == NULL)
1364 » { 1329 {
1365 » » m_pHead = m_pEnd = pNewIcon; 1330 m_pHead = m_pEnd = pNewIcon;
1366 » » m_iLength++; 1331 m_iLength++;
1367 » } 1332 }
1368 » else 1333 else
1369 » { 1334 {
1370 » » m_pEnd->NextIcon = pNewIcon; 1335 m_pEnd->NextIcon = pNewIcon;
1371 » » m_pEnd = pNewIcon; 1336 m_pEnd = pNewIcon;
1372 » » m_iLength++; 1337 m_iLength++;
1373 » } 1338 }
1374 } 1339 }
1375 1340
1376 void IconTree::DeleteIconTree() 1341 void IconTree::DeleteIconTree()
1377 { 1342 {
1378 » if (!m_pHead || !m_pEnd)return; 1343 if (!m_pHead || !m_pEnd)return;
1379 1344
1380 » IconElement* pTemp = NULL; 1345 IconElement* pTemp = NULL;
1381 » while(m_pEnd != m_pHead) 1346 while(m_pEnd != m_pHead)
1382 » { 1347 {
1383 » » pTemp = m_pHead; 1348 pTemp = m_pHead;
1384 » » m_pHead = m_pHead->NextIcon; 1349 m_pHead = m_pHead->NextIcon;
1385 » » delete pTemp; 1350 delete pTemp;
1386 » } 1351 }
1387 1352
1388 » delete m_pEnd; 1353 delete m_pEnd;
1389 » m_pHead = NULL; 1354 m_pHead = NULL;
1390 » m_pEnd = NULL; 1355 m_pEnd = NULL;
1391 } 1356 }
1392 1357
1393 int IconTree::GetLength() 1358 int IconTree::GetLength()
1394 { 1359 {
1395 » return m_iLength; 1360 return m_iLength;
1396 } 1361 }
1397 1362
1398 IconElement* IconTree::operator [](int iIndex) 1363 IconElement* IconTree::operator [](int iIndex)
1399 { 1364 {
1400 » if (iIndex >= 0 && iIndex <= m_iLength) 1365 if (iIndex >= 0 && iIndex <= m_iLength)
1401 » { 1366 {
1402 » » IconElement* pTemp = m_pHead; 1367 IconElement* pTemp = m_pHead;
1403 » » for (int i = 0; i < iIndex; i++) 1368 for (int i = 0; i < iIndex; i++)
1404 » » { 1369 {
1405 » » » pTemp = pTemp->NextIcon; 1370 pTemp = pTemp->NextIcon;
1406 » » } 1371 }
1407 » » return pTemp; 1372 return pTemp;
1408 » } 1373 }
1409 » else 1374 return NULL;
1410 » » return NULL;
1411 } 1375 }
1412 1376
1413 void IconTree::DeleteIconElement(CFX_WideString swIconName) 1377 void IconTree::DeleteIconElement(CFX_WideString swIconName)
1414 { 1378 {
1415 IconElement* pTemp = m_pHead; 1379 IconElement* pTemp = m_pHead;
1416 int iLoopCount = m_iLength; 1380 int iLoopCount = m_iLength;
1417 for (int i = 0; i < iLoopCount - 1; i++) 1381 for (int i = 0; i < iLoopCount - 1; i++)
1418 { 1382 {
1419 if (pTemp == m_pEnd) 1383 if (pTemp == m_pEnd)
1420 break; 1384 break;
(...skipping 25 matching lines...) Expand all
1446 1410
1447 continue; 1411 continue;
1448 } 1412 }
1449 1413
1450 pTemp = pTemp->NextIcon; 1414 pTemp = pTemp->NextIcon;
1451 } 1415 }
1452 } 1416 }
1453 1417
1454 FX_BOOL Document::addIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError) 1418 FX_BOOL Document::addIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError)
1455 { 1419 {
1456 » CJS_Context* pContext = (CJS_Context*)cc; 1420 CJS_Context* pContext = (CJS_Context*)cc;
1457 » if (params.size() != 2) { 1421 if (params.size() != 2) {
1458 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1422 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1459 » » return FALSE; 1423 return FALSE;
1460 » } 1424 }
1461 1425
1462 » CFX_WideString swIconName = params[0].ToCFXWideString(); 1426 CFX_WideString swIconName = params[0].ToCFXWideString();
1463 » JSFXObject pJSIcon = params[1].ToV8Object(); 1427 JSFXObject pJSIcon = params[1].ToV8Object();
1464 1428
1465 » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 1429 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
1466 » if (JS_GetObjDefnID(pJSIcon) != JS_GetObjDefnID(*pRuntime, L"Icon")) { 1430 if (JS_GetObjDefnID(pJSIcon) != JS_GetObjDefnID(*pRuntime, L"Icon")) {
1467 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR); 1431 sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR);
1468 » » return FALSE; 1432 return FALSE;
1469 » } 1433 }
1470 1434
1471 » CJS_EmbedObj* pEmbedObj = params[1].ToCJSObject()->GetEmbedObject(); 1435 CJS_EmbedObj* pEmbedObj = params[1].ToCJSObject()->GetEmbedObject();
1472 » if (!pEmbedObj) { 1436 if (!pEmbedObj) {
1473 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR); 1437 sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR);
1474 » » return FALSE; 1438 return FALSE;
1475 » } 1439 }
1476 1440
1477 » Icon* pIcon = (Icon*)pEmbedObj; 1441 Icon* pIcon = (Icon*)pEmbedObj;
1478 » if (!m_pIconTree) 1442 if (!m_pIconTree)
1479 » » m_pIconTree = new IconTree(); 1443 m_pIconTree = new IconTree();
1480 1444
1481 » IconElement* pNewIcon = new IconElement(); 1445 IconElement* pNewIcon = new IconElement();
1482 » pNewIcon->IconName = swIconName; 1446 pNewIcon->IconName = swIconName;
1483 » pNewIcon->NextIcon = NULL; 1447 pNewIcon->NextIcon = NULL;
1484 » pNewIcon->IconStream = pIcon; 1448 pNewIcon->IconStream = pIcon;
1485 » m_pIconTree->InsertIconElement(pNewIcon); 1449 m_pIconTree->InsertIconElement(pNewIcon);
1486 » return TRUE; 1450 return TRUE;
1487 } 1451 }
1488 1452
1489 FX_BOOL Document::icons(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror) 1453 FX_BOOL Document::icons(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror)
1490 { 1454 {
1491 » if (vp.IsSetting()) { 1455 if (vp.IsSetting()) {
1492 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 1456 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1493 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); 1457 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
1494 » » return FALSE; 1458 return FALSE;
1495 » } 1459 }
1496 1460
1497 » if (!m_pIconTree) 1461 if (!m_pIconTree)
1498 » { 1462 {
1499 » » vp.SetNull(); 1463 vp.SetNull();
1500 » » return TRUE; 1464 return TRUE;
1501 » } 1465 }
1502 1466
1503 » CJS_Array Icons(m_isolate); 1467 CJS_Array Icons(m_isolate);
1504 » IconElement* pIconElement = NULL; 1468 IconElement* pIconElement = NULL;
1505 » int iIconTreeLength = m_pIconTree->GetLength(); 1469 int iIconTreeLength = m_pIconTree->GetLength();
1506 1470
1507 » CJS_Context* pContext = (CJS_Context *)cc; 1471 CJS_Context* pContext = (CJS_Context *)cc;
1508 » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 1472 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
1509 1473
1510 » for (int i = 0; i < iIconTreeLength; i++) 1474 for (int i = 0; i < iIconTreeLength; i++)
1511 » { 1475 {
1512 » » pIconElement = (*m_pIconTree)[i]; 1476 pIconElement = (*m_pIconTree)[i];
1513 1477
1514 » » JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_Ge tObjDefnID(*pRuntime, L"Icon")); 1478 JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefn ID(*pRuntime, L"Icon"));
1515 » » if (pObj.IsEmpty()) return FALSE; 1479 if (pObj.IsEmpty()) return FALSE;
1516 1480
1517 » » CJS_Icon * pJS_Icon = (CJS_Icon *)JS_GetPrivate(pObj); 1481 CJS_Icon * pJS_Icon = (CJS_Icon *)JS_GetPrivate(pObj);
1518 » » if (!pJS_Icon) return FALSE; 1482 if (!pJS_Icon) return FALSE;
1519 1483
1520 » » Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject(); 1484 Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject();
1521 » » if (!pIcon)return FALSE; 1485 if (!pIcon)return FALSE;
1522 1486
1523 » » pIcon->SetStream(pIconElement->IconStream->GetStream()); 1487 pIcon->SetStream(pIconElement->IconStream->GetStream());
1524 » » pIcon->SetIconName(pIconElement->IconName); 1488 pIcon->SetIconName(pIconElement->IconName);
1525 » » Icons.SetElement(i, CJS_Value(m_isolate,pJS_Icon)); 1489 Icons.SetElement(i, CJS_Value(m_isolate,pJS_Icon));
1526 » } 1490 }
1527 1491
1528 » vp << Icons; 1492 vp << Icons;
1529 » return TRUE; 1493 return TRUE;
1530 } 1494 }
1531 1495
1532 FX_BOOL Document::getIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError) 1496 FX_BOOL Document::getIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_V alue& vRet, CFX_WideString& sError)
1533 { 1497 {
1534 » CJS_Context* pContext = (CJS_Context *)cc; 1498 CJS_Context* pContext = (CJS_Context *)cc;
1535 » if (params.size() != 1) { 1499 if (params.size() != 1) {
1536 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1500 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1537 » » return FALSE; 1501 return FALSE;
1538 » } 1502 }
1539 1503
1540 » if(!m_pIconTree) 1504 if(!m_pIconTree)
1541 » » return FALSE; 1505 return FALSE;
1542 » CFX_WideString swIconName = params[0].ToCFXWideString(); 1506 CFX_WideString swIconName = params[0].ToCFXWideString();
1543 » int iIconCounts = m_pIconTree->GetLength(); 1507 int iIconCounts = m_pIconTree->GetLength();
1544 1508
1545 » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 1509 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
1546 1510
1547 » for (int i = 0; i < iIconCounts; i++) 1511 for (int i = 0; i < iIconCounts; i++)
1548 » { 1512 {
1549 » » if ((*m_pIconTree)[i]->IconName == swIconName) 1513 if ((*m_pIconTree)[i]->IconName == swIconName)
1550 » » { 1514 {
1551 » » » Icon* pRetIcon = (*m_pIconTree)[i]->IconStream; 1515 Icon* pRetIcon = (*m_pIconTree)[i]->IconStream;
1552 1516
1553 » » » JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContex t, JS_GetObjDefnID(*pRuntime, L"Icon")); 1517 JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObj DefnID(*pRuntime, L"Icon"));
1554 » » » if (pObj.IsEmpty()) return FALSE; 1518 if (pObj.IsEmpty()) return FALSE;
1555 1519
1556 » » » CJS_Icon * pJS_Icon = (CJS_Icon *)JS_GetPrivate(pObj); 1520 CJS_Icon * pJS_Icon = (CJS_Icon *)JS_GetPrivate(pObj);
1557 » » » if (!pJS_Icon) return FALSE; 1521 if (!pJS_Icon) return FALSE;
1558 1522
1559 » » » Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject(); 1523 Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject();
1560 » » » if (!pIcon)return FALSE; 1524 if (!pIcon)return FALSE;
1561 1525
1562 » » » pIcon->SetIconName(swIconName); 1526 pIcon->SetIconName(swIconName);
1563 » » » pIcon->SetStream(pRetIcon->GetStream()); 1527 pIcon->SetStream(pRetIcon->GetStream());
1564 » » » vRet = pJS_Icon; 1528 vRet = pJS_Icon;
1565 » » » return TRUE; 1529 return TRUE;
1566 » » } 1530 }
1567 » } 1531 }
1568 1532
1569 » return FALSE; 1533 return FALSE;
1570 } 1534 }
1571 1535
1572 FX_BOOL Document::removeIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError) 1536 FX_BOOL Document::removeIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJ S_Value& vRet, CFX_WideString& sError)
1573 { 1537 {
1574 CJS_Context* pContext = (CJS_Context *)cc; 1538 CJS_Context* pContext = (CJS_Context *)cc;
1575 if (params.size() != 1) { 1539 if (params.size() != 1) {
1576 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1540 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1577 return FALSE; 1541 return FALSE;
1578 } 1542 }
1579 1543
1580 if(!m_pIconTree) 1544 if(!m_pIconTree)
1581 return FALSE; 1545 return FALSE;
1582 CFX_WideString swIconName = params[0].ToCFXWideString(); 1546 CFX_WideString swIconName = params[0].ToCFXWideString();
1583 return TRUE; 1547 return TRUE;
1584 } 1548 }
1585 1549
1586 FX_BOOL Document::createDataObject(IFXJS_Context* cc, const CJS_Parameters& para ms, CJS_Value& vRet, CFX_WideString& sError) 1550 FX_BOOL Document::createDataObject(IFXJS_Context* cc, const CJS_Parameters& para ms, CJS_Value& vRet, CFX_WideString& sError)
1587 { 1551 {
1588 // Unsafe, not implemented. 1552 // Unsafe, not implemented.
1589 return TRUE; 1553 return TRUE;
1590 } 1554 }
1591 1555
1592 FX_BOOL Document::media(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror) 1556 FX_BOOL Document::media(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sE rror)
1593 { 1557 {
1594 » return TRUE; 1558 return TRUE;
1595 } 1559 }
1596 1560
1597 FX_BOOL Document::calculateNow(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) 1561 FX_BOOL Document::calculateNow(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
1598 { 1562 {
1599 » ASSERT(m_pDocument != NULL); 1563 ASSERT(m_pDocument != NULL);
1600 1564
1601 » if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || 1565 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) ||
1602 » » m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || 1566 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) ||
1603 » » m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) return FALSE; 1567 m_pDocument->GetPermissions(FPDFPERM_FILL_FORM))) return FALSE;
1604 1568
1605 » CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInte rForm(); 1569 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterFor m();
1606 » ASSERT(pInterForm != NULL); 1570 ASSERT(pInterForm != NULL);
1607 » pInterForm->OnCalculate(); 1571 pInterForm->OnCalculate();
1608 » return TRUE; 1572 return TRUE;
1609 } 1573 }
1610 1574
1611 FX_BOOL Document::Collab(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error) 1575 FX_BOOL Document::Collab(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& s Error)
1612 { 1576 {
1613 » return TRUE; 1577 return TRUE;
1614 } 1578 }
1615 1579
1616 FX_BOOL Document::getPageNthWord(IFXJS_Context* cc, const CJS_Parameters& params , CJS_Value& vRet, CFX_WideString& sError) 1580 FX_BOOL Document::getPageNthWord(IFXJS_Context* cc, const CJS_Parameters& params , CJS_Value& vRet, CFX_WideString& sError)
1617 { 1581 {
1618 » ASSERT(m_pDocument != NULL); 1582 ASSERT(m_pDocument != NULL);
1619 1583
1620 » if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; 1584 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE;
1621 1585
1622 » int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0; 1586 int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0;
1623 » int nWordNo = params.GetSize() > 1 ? params[1].ToInt() : 0; 1587 int nWordNo = params.GetSize() > 1 ? params[1].ToInt() : 0;
1624 » bool bStrip = params.GetSize() > 2 ? params[2].ToBool() : true; 1588 bool bStrip = params.GetSize() > 2 ? params[2].ToBool() : true;
1625 1589
1626 CPDF_Document* pDocument = m_pDocument->GetDocument()->GetPDFDoc(); 1590 CPDF_Document* pDocument = m_pDocument->GetDocument()->GetPDFDoc();
1627 » if (!pDocument) return FALSE; 1591 » if (!pDocument)
1628 1592 return FALSE;
1629 » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 1593
1630 » if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) 1594 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1631 » { 1595 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount())
1632 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); 1596 {
1633 » » return FALSE; 1597 sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
1634 » } 1598 return FALSE;
1635 1599 }
1636 » CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); 1600
1637 » if (!pPageDict) return FALSE; 1601 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo);
1638 1602 if (!pPageDict) return FALSE;
1639 » CPDF_Page page; 1603
1640 » page.Load(pDocument, pPageDict); 1604 CPDF_Page page;
1641 » page.StartParse(); 1605 page.Load(pDocument, pPageDict);
1642 » page.ParseContent(); 1606 page.StartParse();
1643 1607 page.ParseContent();
1644 » FX_POSITION pos = page.GetFirstObjectPosition(); 1608
1645 1609 FX_POSITION pos = page.GetFirstObjectPosition();
1646 » int nWords = 0; 1610
1647 1611 int nWords = 0;
1648 » CFX_WideString swRet; 1612
1649 1613 CFX_WideString swRet;
1650 » while (pos) 1614
1651 » { 1615 while (pos)
1652 » » if (CPDF_PageObject* pPageObj = page.GetNextObject(pos)) 1616 {
1653 » » { 1617 if (CPDF_PageObject* pPageObj = page.GetNextObject(pos))
1654 » » » if (pPageObj->m_Type == PDFPAGE_TEXT) 1618 {
1655 » » » { 1619 if (pPageObj->m_Type == PDFPAGE_TEXT)
1656 » » » » int nObjWords = CountWords((CPDF_TextObject*)pPa geObj); 1620 {
1657 1621 int nObjWords = CountWords((CPDF_TextObject*)pPageObj);
1658 » » » » if (nWords + nObjWords >= nWordNo) 1622
1659 » » » » { 1623 if (nWords + nObjWords >= nWordNo)
1660 » » » » » swRet = GetObjWordStr((CPDF_TextObject*) pPageObj, nWordNo - nWords); 1624 {
1661 » » » » » break; 1625 swRet = GetObjWordStr((CPDF_TextObject*)pPageObj, nWordNo - nWords);
1662 » » » » } 1626 break;
1663 1627 }
1664 » » » » nWords += nObjWords; 1628
1665 » » » } 1629 nWords += nObjWords;
1666 » » } 1630 }
1667 » } 1631 }
1668 1632 }
1669 » if (bStrip) 1633
1670 » { 1634 if (bStrip)
1671 » » swRet.TrimLeft(); 1635 {
1672 » » swRet.TrimRight(); 1636 swRet.TrimLeft();
1673 » } 1637 swRet.TrimRight();
1674 1638 }
1675 » vRet = swRet.c_str(); 1639
1676 » return TRUE; 1640 vRet = swRet.c_str();
1641 return TRUE;
1677 } 1642 }
1678 1643
1679 FX_BOOL Document::getPageNthWordQuads(IFXJS_Context* cc, const CJS_Parameters& p arams, CJS_Value& vRet, CFX_WideString& sError) 1644 FX_BOOL Document::getPageNthWordQuads(IFXJS_Context* cc, const CJS_Parameters& p arams, CJS_Value& vRet, CFX_WideString& sError)
1680 { 1645 {
1681 » ASSERT(m_pDocument != NULL); 1646 ASSERT(m_pDocument != NULL);
1682 1647
1683 » if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; 1648 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE;
1684 1649
1685 » return FALSE; 1650 return FALSE;
1686 } 1651 }
1687 1652
1688 FX_BOOL Document::getPageNumWords(IFXJS_Context* cc, const CJS_Parameters& param s, CJS_Value& vRet, CFX_WideString& sError) 1653 FX_BOOL Document::getPageNumWords(IFXJS_Context* cc, const CJS_Parameters& param s, CJS_Value& vRet, CFX_WideString& sError)
1689 { 1654 {
1690 » ASSERT(m_pDocument != NULL); 1655 ASSERT(m_pDocument != NULL);
1691 1656
1692 » if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; 1657 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE;
1693 1658
1694 » int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0; 1659 int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0;
1695
1696 CPDF_Document* pDocument = m_pDocument->GetDocument()->GetPDFDoc(); 1660 CPDF_Document* pDocument = m_pDocument->GetDocument()->GetPDFDoc();
1697 » ASSERT(pDocument != NULL); 1661 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1698 1662 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount())
1699 » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 1663 {
1700 » if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) 1664 sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
1701 » { 1665 return FALSE;
1702 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR); 1666 }
1703 » » return FALSE; 1667
1704 » } 1668 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo);
1705 1669 if (!pPageDict) return FALSE;
1706 » CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); 1670
1707 » if (!pPageDict) return FALSE; 1671 CPDF_Page page;
1708 1672 page.Load(pDocument, pPageDict);
1709 » CPDF_Page page; 1673 page.StartParse();
1710 » page.Load(pDocument, pPageDict); 1674 page.ParseContent();
1711 » page.StartParse(); 1675
1712 » page.ParseContent(); 1676 FX_POSITION pos = page.GetFirstObjectPosition();
1713 1677
1714 » FX_POSITION pos = page.GetFirstObjectPosition(); 1678 int nWords = 0;
1715 1679
1716 » int nWords = 0; 1680 while (pos)
1717 1681 {
1718 » while (pos) 1682 if (CPDF_PageObject* pPageObj = page.GetNextObject(pos))
1719 » { 1683 {
1720 » » if (CPDF_PageObject* pPageObj = page.GetNextObject(pos)) 1684 if (pPageObj->m_Type == PDFPAGE_TEXT)
1721 » » { 1685 {
1722 » » » if (pPageObj->m_Type == PDFPAGE_TEXT) 1686 CPDF_TextObject* pTextObj = (CPDF_TextObject*)pPageObj;
1723 » » » { 1687 nWords += CountWords(pTextObj);
1724 » » » » CPDF_TextObject* pTextObj = (CPDF_TextObject*)pP ageObj; 1688 }
1725 » » » » nWords += CountWords(pTextObj); 1689 }
1726 » » » } 1690 }
1727 » » } 1691
1728 » } 1692 vRet = nWords;
1729 1693
1730 » vRet = nWords; 1694 return TRUE;
1731
1732 » return TRUE;
1733 } 1695 }
1734 1696
1735 FX_BOOL Document::getPrintParams(IFXJS_Context* cc, const CJS_Parameters& params , CJS_Value& vRet, CFX_WideString& sError) 1697 FX_BOOL Document::getPrintParams(IFXJS_Context* cc, const CJS_Parameters& params , CJS_Value& vRet, CFX_WideString& sError)
1736 { 1698 {
1737 » CJS_Context* pContext = (CJS_Context*)cc; 1699 CJS_Context* pContext = (CJS_Context*)cc;
1738 » CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 1700 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
1739 » JSFXObject pRetObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDe fnID(*pRuntime, L"PrintParamsObj")); 1701 JSFXObject pRetObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID (*pRuntime, L"PrintParamsObj"));
1740 1702
1741 » // Not implemented yet. 1703 // Not implemented yet.
1742 1704
1743 » vRet = pRetObj; 1705 vRet = pRetObj;
1744 » return TRUE; 1706 return TRUE;
1745 } 1707 }
1746 1708
1747 #define ISLATINWORD(u)» (u != 0x20 && u <= 0x28FF) 1709 #define ISLATINWORD(u) (u != 0x20 && u <= 0x28FF)
1748 1710
1749 int» Document::CountWords(CPDF_TextObject* pTextObj) 1711 int Document::CountWords(CPDF_TextObject* pTextObj)
1750 { 1712 {
1751 » if (!pTextObj) return 0; 1713 if (!pTextObj) return 0;
1752 1714
1753 » int nWords = 0; 1715 int nWords = 0;
1754 1716
1755 » CPDF_Font* pFont = pTextObj->GetFont(); 1717 CPDF_Font* pFont = pTextObj->GetFont();
1756 » if (!pFont) return 0; 1718 if (!pFont) return 0;
1757 1719
1758 » FX_BOOL bIsLatin = FALSE; 1720 FX_BOOL bIsLatin = FALSE;
1759 1721
1760 » for (int i=0, sz=pTextObj->CountChars(); i<sz; i++) 1722 for (int i=0, sz=pTextObj->CountChars(); i<sz; i++)
1761 » { 1723 {
1762 » » FX_DWORD charcode = -1; 1724 FX_DWORD charcode = -1;
1763 » » FX_FLOAT kerning; 1725 FX_FLOAT kerning;
1764 1726
1765 » » pTextObj->GetCharInfo(i, charcode, kerning); 1727 pTextObj->GetCharInfo(i, charcode, kerning);
1766 » » CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode); 1728 CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode);
1767 1729
1768 » » FX_WORD unicode = 0; 1730 FX_WORD unicode = 0;
1769 » » if (swUnicode.GetLength() > 0) 1731 if (swUnicode.GetLength() > 0)
1770 » » » unicode = swUnicode[0]; 1732 unicode = swUnicode[0];
1771 1733
1772 » » if (ISLATINWORD(unicode) && bIsLatin) 1734 if (ISLATINWORD(unicode) && bIsLatin)
1773 » » » continue; 1735 continue;
1774 1736
1775 » » bIsLatin = ISLATINWORD(unicode); 1737 bIsLatin = ISLATINWORD(unicode);
1776 » » if (unicode != 0x20) 1738 if (unicode != 0x20)
1777 » » » nWords++; 1739 nWords++;
1778 » } 1740 }
1779 1741
1780 » return nWords; 1742 return nWords;
1781 } 1743 }
1782 1744
1783 CFX_WideString Document::GetObjWordStr(CPDF_TextObject* pTextObj, int nWordIndex ) 1745 CFX_WideString Document::GetObjWordStr(CPDF_TextObject* pTextObj, int nWordIndex )
1784 { 1746 {
1785 » ASSERT(pTextObj != NULL); 1747 ASSERT(pTextObj != NULL);
1786 1748
1787 » CFX_WideString swRet; 1749 CFX_WideString swRet;
1788 1750
1789 » CPDF_Font* pFont = pTextObj->GetFont(); 1751 CPDF_Font* pFont = pTextObj->GetFont();
1790 » if (!pFont) return L""; 1752 if (!pFont) return L"";
1791 1753
1792 » int nWords = 0; 1754 int nWords = 0;
1793 » FX_BOOL bIsLatin = FALSE; 1755 FX_BOOL bIsLatin = FALSE;
1794 1756
1795 » for (int i=0, sz=pTextObj->CountChars(); i<sz; i++) 1757 for (int i=0, sz=pTextObj->CountChars(); i<sz; i++)
1796 » { 1758 {
1797 » » FX_DWORD charcode = -1; 1759 FX_DWORD charcode = -1;
1798 » » FX_FLOAT kerning; 1760 FX_FLOAT kerning;
1799 1761
1800 » » pTextObj->GetCharInfo(i, charcode, kerning); 1762 pTextObj->GetCharInfo(i, charcode, kerning);
1801 » » CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode); 1763 CFX_WideString swUnicode = pFont->UnicodeFromCharCode(charcode);
1802 1764
1803 » » FX_WORD unicode = 0; 1765 FX_WORD unicode = 0;
1804 » » if (swUnicode.GetLength() > 0) 1766 if (swUnicode.GetLength() > 0)
1805 » » » unicode = swUnicode[0]; 1767 unicode = swUnicode[0];
1806 1768
1807 » » if (ISLATINWORD(unicode) && bIsLatin) 1769 if (ISLATINWORD(unicode) && bIsLatin)
1808 » » { 1770 {
1809 » » } 1771 }
1810 » » else 1772 else
1811 » » { 1773 {
1812 » » » bIsLatin = ISLATINWORD(unicode); 1774 bIsLatin = ISLATINWORD(unicode);
1813 » » » if (unicode != 0x20) 1775 if (unicode != 0x20)
1814 » » » » nWords++; 1776 nWords++;
1815 » » } 1777 }
1816 1778
1817 » » if (nWords-1 == nWordIndex) 1779 if (nWords-1 == nWordIndex)
1818 » » » swRet += unicode; 1780 swRet += unicode;
1819 » } 1781 }
1820 1782
1821 » return swRet; 1783 return swRet;
1822 } 1784 }
1823 1785
1824 FX_BOOL Document::zoom(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr ror) 1786 FX_BOOL Document::zoom(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sEr ror)
1825 { 1787 {
1826 1788
1827 » return TRUE; 1789 return TRUE;
1828 } 1790 }
1829 1791
1830 /** 1792 /**
1831 (none,» NoVary) 1793 (none, NoVary)
1832 (fitP,» FitPage) 1794 (fitP, FitPage)
1833 (fitW,» FitWidth) 1795 (fitW, FitWidth)
1834 (fitH,» FitHeight) 1796 (fitH, FitHeight)
1835 (fitV,» FitVisibleWidth) 1797 (fitV, FitVisibleWidth)
1836 (pref,» Preferred) 1798 (pref, Preferred)
1837 (refW,» ReflowWidth) 1799 (refW, ReflowWidth)
1838 */ 1800 */
1839 1801
1840 FX_BOOL Document::zoomType(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) 1802 FX_BOOL Document::zoomType(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1841 { 1803 {
1842 » return TRUE; 1804 return TRUE;
1843 } 1805 }
1844 1806
1845 FX_BOOL Document::deletePages(IFXJS_Context* cc, const CJS_Parameters& params, C JS_Value& vRet, CFX_WideString& sError) 1807 FX_BOOL Document::deletePages(IFXJS_Context* cc, const CJS_Parameters& params, C JS_Value& vRet, CFX_WideString& sError)
1846 { 1808 {
1847 v8::Isolate* isolate = GetIsolate(cc); 1809 v8::Isolate* isolate = GetIsolate(cc);
1848 ASSERT(m_pDocument != NULL); 1810 ASSERT(m_pDocument != NULL);
1849 1811
1850 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || 1812 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) ||
1851 m_pDocument->GetPermissions(FPDFPERM_ASSEMBLE))) return FALSE; 1813 m_pDocument->GetPermissions(FPDFPERM_ASSEMBLE))) return FALSE;
1852 1814
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
1914 } 1876 }
1915 1877
1916 FX_BOOL Document::getURL(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Va lue& vRet, CFX_WideString& sError) 1878 FX_BOOL Document::getURL(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Va lue& vRet, CFX_WideString& sError)
1917 { 1879 {
1918 // Unsafe, not supported. 1880 // Unsafe, not supported.
1919 return TRUE; 1881 return TRUE;
1920 } 1882 }
1921 1883
1922 void Document::AddDelayData(CJS_DelayData* pData) 1884 void Document::AddDelayData(CJS_DelayData* pData)
1923 { 1885 {
1924 » m_DelayData.Add(pData); 1886 m_DelayData.Add(pData);
1925 } 1887 }
1926 1888
1927 void Document::DoFieldDelay(const CFX_WideString& sFieldName, int nControlIndex) 1889 void Document::DoFieldDelay(const CFX_WideString& sFieldName, int nControlIndex)
1928 { 1890 {
1929 CFX_DWordArray DelArray; 1891 CFX_DWordArray DelArray;
1930 1892
1931 for (int i=0,sz=m_DelayData.GetSize(); i<sz; i++) 1893 for (int i=0,sz=m_DelayData.GetSize(); i<sz; i++)
1932 { 1894 {
1933 if (CJS_DelayData* pData = m_DelayData.GetAt(i)) 1895 if (CJS_DelayData* pData = m_DelayData.GetAt(i))
1934 { 1896 {
1935 if (pData->sFieldName == sFieldName && pData->nControlIn dex == nControlIndex) 1897 if (pData->sFieldName == sFieldName && pData->nControlIn dex == nControlIndex)
1936 { 1898 {
1937 Field::DoDelay(m_pDocument, pData); 1899 Field::DoDelay(m_pDocument, pData);
1938 delete pData; 1900 delete pData;
1939 m_DelayData.SetAt(i, NULL); 1901 m_DelayData.SetAt(i, NULL);
1940 DelArray.Add(i); 1902 DelArray.Add(i);
1941 } 1903 }
1942 } 1904 }
1943 } 1905 }
1944 1906
1945 for (int j=DelArray.GetSize()-1; j>=0; j--) 1907 for (int j=DelArray.GetSize()-1; j>=0; j--)
1946 { 1908 {
1947 m_DelayData.RemoveAt(DelArray[j]); 1909 m_DelayData.RemoveAt(DelArray[j]);
1948 } 1910 }
1949 } 1911 }
1950 1912
1951 void Document::AddDelayAnnotData(CJS_AnnotObj *pData) 1913 void Document::AddDelayAnnotData(CJS_AnnotObj *pData)
1952 { 1914 {
1953 » m_DelayAnnotData.Add(pData); 1915 m_DelayAnnotData.Add(pData);
1954 } 1916 }
1955 1917
1956 void Document::DoAnnotDelay() 1918 void Document::DoAnnotDelay()
1957 { 1919 {
1958 » CFX_DWordArray DelArray; 1920 CFX_DWordArray DelArray;
1959 1921
1960 » for (int j=DelArray.GetSize()-1; j>=0; j--) 1922 for (int j=DelArray.GetSize()-1; j>=0; j--)
1961 » { 1923 {
1962 » » m_DelayData.RemoveAt(DelArray[j]); 1924 m_DelayData.RemoveAt(DelArray[j]);
1963 » } 1925 }
1964 } 1926 }
1965 1927
1966 CJS_Document* Document::GetCJSDoc() const 1928 CJS_Document* Document::GetCJSDoc() const
1967 { 1929 {
1968 » return static_cast<CJS_Document*>(m_pJSObject); 1930 return static_cast<CJS_Document*>(m_pJSObject);
1969 } 1931 }
1970
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