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

Side by Side Diff: fpdfsdk/javascript/Field.cpp

Issue 2410893002: Merge CPDFSDK_Document into CPDFSDK_FormFillEnvironment (Closed)
Patch Set: Rebase to master Created 4 years, 2 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
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 "fpdfsdk/javascript/Field.h" 7 #include "fpdfsdk/javascript/Field.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
11 #include <string> 11 #include <string>
12 #include <vector> 12 #include <vector>
13 13
14 #include "core/fpdfapi/font/cpdf_font.h" 14 #include "core/fpdfapi/font/cpdf_font.h"
15 #include "core/fpdfapi/page/cpdf_page.h" 15 #include "core/fpdfapi/page/cpdf_page.h"
16 #include "core/fpdfapi/parser/cpdf_document.h" 16 #include "core/fpdfapi/parser/cpdf_document.h"
17 #include "core/fpdfdoc/cpdf_interform.h" 17 #include "core/fpdfdoc/cpdf_interform.h"
18 #include "fpdfsdk/cpdfsdk_document.h"
19 #include "fpdfsdk/cpdfsdk_formfillenvironment.h" 18 #include "fpdfsdk/cpdfsdk_formfillenvironment.h"
20 #include "fpdfsdk/cpdfsdk_interform.h" 19 #include "fpdfsdk/cpdfsdk_interform.h"
21 #include "fpdfsdk/cpdfsdk_pageview.h" 20 #include "fpdfsdk/cpdfsdk_pageview.h"
22 #include "fpdfsdk/cpdfsdk_widget.h" 21 #include "fpdfsdk/cpdfsdk_widget.h"
23 #include "fpdfsdk/javascript/Document.h" 22 #include "fpdfsdk/javascript/Document.h"
24 #include "fpdfsdk/javascript/Icon.h" 23 #include "fpdfsdk/javascript/Icon.h"
25 #include "fpdfsdk/javascript/JS_Define.h" 24 #include "fpdfsdk/javascript/JS_Define.h"
26 #include "fpdfsdk/javascript/JS_EventHandler.h" 25 #include "fpdfsdk/javascript/JS_EventHandler.h"
27 #include "fpdfsdk/javascript/JS_Object.h" 26 #include "fpdfsdk/javascript/JS_Object.h"
28 #include "fpdfsdk/javascript/JS_Value.h" 27 #include "fpdfsdk/javascript/JS_Value.h"
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 return; 205 return;
207 } 206 }
208 } 207 }
209 strFieldName = strFieldNameParsed.substr(0, iStart); 208 strFieldName = strFieldNameParsed.substr(0, iStart);
210 } 209 }
211 210
212 FX_BOOL Field::AttachField(Document* pDocument, 211 FX_BOOL Field::AttachField(Document* pDocument,
213 const CFX_WideString& csFieldName) { 212 const CFX_WideString& csFieldName) {
214 m_pJSDoc = pDocument; 213 m_pJSDoc = pDocument;
215 m_pFormFillEnv.Reset(pDocument->GetFormFillEnv()); 214 m_pFormFillEnv.Reset(pDocument->GetFormFillEnv());
216 m_bCanSet = 215 m_bCanSet = m_pFormFillEnv->GetPermissions(FPDFPERM_FILL_FORM) ||
217 m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_FILL_FORM) || 216 m_pFormFillEnv->GetPermissions(FPDFPERM_ANNOT_FORM) ||
218 m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_ANNOT_FORM) || 217 m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY);
219 m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_MODIFY);
220 218
221 CPDFSDK_InterForm* pRDInterForm = 219 CPDFSDK_InterForm* pRDInterForm = m_pFormFillEnv->GetInterForm();
222 m_pFormFillEnv->GetSDKDocument()->GetInterForm();
223 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm(); 220 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
224 CFX_WideString swFieldNameTemp = csFieldName; 221 CFX_WideString swFieldNameTemp = csFieldName;
225 swFieldNameTemp.Replace(L"..", L"."); 222 swFieldNameTemp.Replace(L"..", L".");
226 223
227 if (pInterForm->CountFields(swFieldNameTemp) <= 0) { 224 if (pInterForm->CountFields(swFieldNameTemp) <= 0) {
228 std::wstring strFieldName; 225 std::wstring strFieldName;
229 int iControlNo = -1; 226 int iControlNo = -1;
230 ParseFieldName(swFieldNameTemp.c_str(), strFieldName, iControlNo); 227 ParseFieldName(swFieldNameTemp.c_str(), strFieldName, iControlNo);
231 if (iControlNo == -1) 228 if (iControlNo == -1)
232 return FALSE; 229 return FALSE;
233 230
234 m_FieldName = strFieldName.c_str(); 231 m_FieldName = strFieldName.c_str();
235 m_nFormControlIndex = iControlNo; 232 m_nFormControlIndex = iControlNo;
236 return TRUE; 233 return TRUE;
237 } 234 }
238 235
239 m_FieldName = swFieldNameTemp; 236 m_FieldName = swFieldNameTemp;
240 m_nFormControlIndex = -1; 237 m_nFormControlIndex = -1;
241 238
242 return TRUE; 239 return TRUE;
243 } 240 }
244 241
245 std::vector<CPDF_FormField*> Field::GetFormFields( 242 std::vector<CPDF_FormField*> Field::GetFormFields(
246 CPDFSDK_FormFillEnvironment* pFormFillEnv, 243 CPDFSDK_FormFillEnvironment* pFormFillEnv,
247 const CFX_WideString& csFieldName) { 244 const CFX_WideString& csFieldName) {
248 std::vector<CPDF_FormField*> fields; 245 std::vector<CPDF_FormField*> fields;
249 CPDFSDK_InterForm* pReaderInterForm = 246 CPDFSDK_InterForm* pReaderInterForm = pFormFillEnv->GetInterForm();
250 pFormFillEnv->GetSDKDocument()->GetInterForm();
251 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm(); 247 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm();
252 for (int i = 0, sz = pInterForm->CountFields(csFieldName); i < sz; ++i) { 248 for (int i = 0, sz = pInterForm->CountFields(csFieldName); i < sz; ++i) {
253 if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName)) 249 if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName))
254 fields.push_back(pFormField); 250 fields.push_back(pFormField);
255 } 251 }
256 return fields; 252 return fields;
257 } 253 }
258 254
259 std::vector<CPDF_FormField*> Field::GetFormFields( 255 std::vector<CPDF_FormField*> Field::GetFormFields(
260 const CFX_WideString& csFieldName) const { 256 const CFX_WideString& csFieldName) const {
261 return Field::GetFormFields(m_pFormFillEnv.Get(), csFieldName); 257 return Field::GetFormFields(m_pFormFillEnv.Get(), csFieldName);
262 } 258 }
263 259
264 void Field::UpdateFormField(CPDFSDK_FormFillEnvironment* pFormFillEnv, 260 void Field::UpdateFormField(CPDFSDK_FormFillEnvironment* pFormFillEnv,
265 CPDF_FormField* pFormField, 261 CPDF_FormField* pFormField,
266 FX_BOOL bChangeMark, 262 FX_BOOL bChangeMark,
267 FX_BOOL bResetAP, 263 FX_BOOL bResetAP,
268 FX_BOOL bRefresh) { 264 FX_BOOL bRefresh) {
269 CPDFSDK_InterForm* pInterForm = 265 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm();
270 pFormFillEnv->GetSDKDocument()->GetInterForm();
271 266
272 if (bResetAP) { 267 if (bResetAP) {
273 std::vector<CPDFSDK_Widget*> widgets; 268 std::vector<CPDFSDK_Widget*> widgets;
274 pInterForm->GetWidgets(pFormField, &widgets); 269 pInterForm->GetWidgets(pFormField, &widgets);
275 270
276 int nFieldType = pFormField->GetFieldType(); 271 int nFieldType = pFormField->GetFieldType();
277 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD) { 272 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD) {
278 for (CPDFSDK_Annot* pAnnot : widgets) { 273 for (CPDFSDK_Annot* pAnnot : widgets) {
279 FX_BOOL bFormatted = FALSE; 274 FX_BOOL bFormatted = FALSE;
280 CPDFSDK_Annot::ObservedPtr pObserved(pAnnot); 275 CPDFSDK_Annot::ObservedPtr pObserved(pAnnot);
(...skipping 13 matching lines...) Expand all
294 289
295 if (bRefresh) { 290 if (bRefresh) {
296 // Refresh the widget list. The calls in |bResetAP| may have caused widgets 291 // Refresh the widget list. The calls in |bResetAP| may have caused widgets
297 // to be removed from the list. We need to call |GetWidgets| again to be 292 // to be removed from the list. We need to call |GetWidgets| again to be
298 // sure none of the widgets have been deleted. 293 // sure none of the widgets have been deleted.
299 std::vector<CPDFSDK_Widget*> widgets; 294 std::vector<CPDFSDK_Widget*> widgets;
300 pInterForm->GetWidgets(pFormField, &widgets); 295 pInterForm->GetWidgets(pFormField, &widgets);
301 296
302 // TODO(dsinclair): Determine if all widgets share the same 297 // TODO(dsinclair): Determine if all widgets share the same
303 // CPDFSDK_InterForm. If that's the case, we can move the code to 298 // CPDFSDK_InterForm. If that's the case, we can move the code to
304 // |GetSDKDocument| out of the loop. 299 // |GetFormFillEnv| out of the loop.
305 for (CPDFSDK_Widget* pWidget : widgets) { 300 for (CPDFSDK_Widget* pWidget : widgets) {
306 pWidget->GetInterForm() 301 pWidget->GetInterForm()
307 ->GetFormFillEnv() 302 ->GetFormFillEnv()
308 ->GetSDKDocument()
309 ->UpdateAllViews(nullptr, pWidget); 303 ->UpdateAllViews(nullptr, pWidget);
310 } 304 }
311 } 305 }
312 306
313 if (bChangeMark) 307 if (bChangeMark)
314 pFormFillEnv->GetSDKDocument()->SetChangeMark(); 308 pFormFillEnv->SetChangeMark();
315 } 309 }
316 310
317 void Field::UpdateFormControl(CPDFSDK_FormFillEnvironment* pFormFillEnv, 311 void Field::UpdateFormControl(CPDFSDK_FormFillEnvironment* pFormFillEnv,
318 CPDF_FormControl* pFormControl, 312 CPDF_FormControl* pFormControl,
319 FX_BOOL bChangeMark, 313 FX_BOOL bChangeMark,
320 FX_BOOL bResetAP, 314 FX_BOOL bResetAP,
321 FX_BOOL bRefresh) { 315 FX_BOOL bRefresh) {
322 ASSERT(pFormControl); 316 ASSERT(pFormControl);
323 317
324 CPDFSDK_InterForm* pForm = pFormFillEnv->GetSDKDocument()->GetInterForm(); 318 CPDFSDK_InterForm* pForm = pFormFillEnv->GetInterForm();
325 CPDFSDK_Widget* pWidget = pForm->GetWidget(pFormControl, false); 319 CPDFSDK_Widget* pWidget = pForm->GetWidget(pFormControl, false);
326 320
327 if (pWidget) { 321 if (pWidget) {
328 if (bResetAP) { 322 if (bResetAP) {
329 int nFieldType = pWidget->GetFieldType(); 323 int nFieldType = pWidget->GetFieldType();
330 if (nFieldType == FIELDTYPE_COMBOBOX || 324 if (nFieldType == FIELDTYPE_COMBOBOX ||
331 nFieldType == FIELDTYPE_TEXTFIELD) { 325 nFieldType == FIELDTYPE_TEXTFIELD) {
332 FX_BOOL bFormatted = FALSE; 326 FX_BOOL bFormatted = FALSE;
333 CFX_WideString sValue = pWidget->OnFormat(bFormatted); 327 CFX_WideString sValue = pWidget->OnFormat(bFormatted);
334 pWidget->ResetAppearance(bFormatted ? &sValue : nullptr, FALSE); 328 pWidget->ResetAppearance(bFormatted ? &sValue : nullptr, FALSE);
335 } else { 329 } else {
336 pWidget->ResetAppearance(nullptr, FALSE); 330 pWidget->ResetAppearance(nullptr, FALSE);
337 } 331 }
338 } 332 }
339 333
340 if (bRefresh) { 334 if (bRefresh) {
341 CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm(); 335 CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm();
342 pInterForm->GetFormFillEnv()->GetSDKDocument()->UpdateAllViews(nullptr, 336 pInterForm->GetFormFillEnv()->UpdateAllViews(nullptr, pWidget);
343 pWidget);
344 } 337 }
345 } 338 }
346 339
347 if (bChangeMark) 340 if (bChangeMark)
348 pFormFillEnv->GetSDKDocument()->SetChangeMark(); 341 pFormFillEnv->SetChangeMark();
349 } 342 }
350 343
351 CPDFSDK_Widget* Field::GetWidget(CPDFSDK_FormFillEnvironment* pFormFillEnv, 344 CPDFSDK_Widget* Field::GetWidget(CPDFSDK_FormFillEnvironment* pFormFillEnv,
352 CPDF_FormControl* pFormControl, 345 CPDF_FormControl* pFormControl,
353 bool createIfNeeded) { 346 bool createIfNeeded) {
354 CPDFSDK_InterForm* pInterForm = static_cast<CPDFSDK_InterForm*>( 347 CPDFSDK_InterForm* pInterForm =
355 pFormFillEnv->GetSDKDocument()->GetInterForm()); 348 static_cast<CPDFSDK_InterForm*>(pFormFillEnv->GetInterForm());
356 return pInterForm ? pInterForm->GetWidget(pFormControl, createIfNeeded) 349 return pInterForm ? pInterForm->GetWidget(pFormControl, createIfNeeded)
357 : nullptr; 350 : nullptr;
358 } 351 }
359 352
360 FX_BOOL Field::ValueIsOccur(CPDF_FormField* pFormField, 353 FX_BOOL Field::ValueIsOccur(CPDF_FormField* pFormField,
361 CFX_WideString csOptLabel) { 354 CFX_WideString csOptLabel) {
362 for (int i = 0, sz = pFormField->CountOptions(); i < sz; i++) { 355 for (int i = 0, sz = pFormField->CountOptions(); i < sz; i++) {
363 if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0) 356 if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0)
364 return TRUE; 357 return TRUE;
365 } 358 }
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 851 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
859 if (FieldArray.empty()) 852 if (FieldArray.empty())
860 return FALSE; 853 return FALSE;
861 854
862 CPDF_FormField* pFormField = FieldArray[0]; 855 CPDF_FormField* pFormField = FieldArray[0];
863 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && 856 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX &&
864 pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) { 857 pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) {
865 return FALSE; 858 return FALSE;
866 } 859 }
867 860
868 CPDFSDK_InterForm* pRDInterForm = 861 CPDFSDK_InterForm* pRDInterForm = m_pFormFillEnv->GetInterForm();
869 m_pFormFillEnv->GetSDKDocument()->GetInterForm();
870 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm(); 862 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
871 vp << (int32_t)pInterForm->FindFieldInCalculationOrder(pFormField); 863 vp << (int32_t)pInterForm->FindFieldInCalculationOrder(pFormField);
872 } 864 }
873 865
874 return TRUE; 866 return TRUE;
875 } 867 }
876 868
877 void Field::SetCalcOrderIndex(CPDFSDK_FormFillEnvironment* pFormFillEnv, 869 void Field::SetCalcOrderIndex(CPDFSDK_FormFillEnvironment* pFormFillEnv,
878 const CFX_WideString& swFieldName, 870 const CFX_WideString& swFieldName,
879 int nControlIndex, 871 int nControlIndex,
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 Field::SetDisplay(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, 1255 Field::SetDisplay(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex,
1264 nVP); 1256 nVP);
1265 } 1257 }
1266 } else { 1258 } else {
1267 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 1259 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1268 if (FieldArray.empty()) 1260 if (FieldArray.empty())
1269 return FALSE; 1261 return FALSE;
1270 1262
1271 CPDF_FormField* pFormField = FieldArray[0]; 1263 CPDF_FormField* pFormField = FieldArray[0];
1272 ASSERT(pFormField); 1264 ASSERT(pFormField);
1273 CPDFSDK_InterForm* pInterForm = 1265 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
1274 m_pFormFillEnv->GetSDKDocument()->GetInterForm();
1275 CPDFSDK_Widget* pWidget = 1266 CPDFSDK_Widget* pWidget =
1276 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true); 1267 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true);
1277 if (!pWidget) 1268 if (!pWidget)
1278 return FALSE; 1269 return FALSE;
1279 1270
1280 uint32_t dwFlag = pWidget->GetFlags(); 1271 uint32_t dwFlag = pWidget->GetFlags();
1281 1272
1282 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag) { 1273 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag) {
1283 vp << (int32_t)1; 1274 vp << (int32_t)1;
1284 } else { 1275 } else {
1285 if (ANNOTFLAG_PRINT & dwFlag) { 1276 if (ANNOTFLAG_PRINT & dwFlag) {
1286 if (ANNOTFLAG_NOVIEW & dwFlag) { 1277 if (ANNOTFLAG_NOVIEW & dwFlag) {
1287 vp << (int32_t)3; 1278 vp << (int32_t)3;
1288 } else { 1279 } else {
1289 vp << (int32_t)0; 1280 vp << (int32_t)0;
1290 } 1281 }
1291 } else { 1282 } else {
1292 vp << (int32_t)2; 1283 vp << (int32_t)2;
1293 } 1284 }
1294 } 1285 }
1295 } 1286 }
1296 1287
1297 return TRUE; 1288 return TRUE;
1298 } 1289 }
1299 1290
1300 void Field::SetDisplay(CPDFSDK_FormFillEnvironment* pFormFillEnv, 1291 void Field::SetDisplay(CPDFSDK_FormFillEnvironment* pFormFillEnv,
1301 const CFX_WideString& swFieldName, 1292 const CFX_WideString& swFieldName,
1302 int nControlIndex, 1293 int nControlIndex,
1303 int number) { 1294 int number) {
1304 CPDFSDK_InterForm* pInterForm = 1295 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm();
1305 pFormFillEnv->GetSDKDocument()->GetInterForm();
1306 std::vector<CPDF_FormField*> FieldArray = 1296 std::vector<CPDF_FormField*> FieldArray =
1307 GetFormFields(pFormFillEnv, swFieldName); 1297 GetFormFields(pFormFillEnv, swFieldName);
1308 for (CPDF_FormField* pFormField : FieldArray) { 1298 for (CPDF_FormField* pFormField : FieldArray) {
1309 if (nControlIndex < 0) { 1299 if (nControlIndex < 0) {
1310 bool bAnySet = false; 1300 bool bAnySet = false;
1311 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { 1301 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {
1312 CPDF_FormControl* pFormControl = pFormField->GetControl(i); 1302 CPDF_FormControl* pFormControl = pFormField->GetControl(i);
1313 ASSERT(pFormControl); 1303 ASSERT(pFormControl);
1314 1304
1315 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl, true); 1305 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl, true);
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
1529 Field::SetHidden(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, 1519 Field::SetHidden(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex,
1530 bVP); 1520 bVP);
1531 } 1521 }
1532 } else { 1522 } else {
1533 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 1523 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1534 if (FieldArray.empty()) 1524 if (FieldArray.empty())
1535 return FALSE; 1525 return FALSE;
1536 1526
1537 CPDF_FormField* pFormField = FieldArray[0]; 1527 CPDF_FormField* pFormField = FieldArray[0];
1538 ASSERT(pFormField); 1528 ASSERT(pFormField);
1539 CPDFSDK_InterForm* pInterForm = 1529 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
1540 m_pFormFillEnv->GetSDKDocument()->GetInterForm();
1541 CPDFSDK_Widget* pWidget = 1530 CPDFSDK_Widget* pWidget =
1542 pInterForm->GetWidget(GetSmartFieldControl(pFormField), false); 1531 pInterForm->GetWidget(GetSmartFieldControl(pFormField), false);
1543 if (!pWidget) 1532 if (!pWidget)
1544 return FALSE; 1533 return FALSE;
1545 1534
1546 uint32_t dwFlags = pWidget->GetFlags(); 1535 uint32_t dwFlags = pWidget->GetFlags();
1547 1536
1548 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags) 1537 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags)
1549 vp << true; 1538 vp << true;
1550 else 1539 else
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
1643 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 1632 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1644 if (FieldArray.empty()) 1633 if (FieldArray.empty())
1645 return FALSE; 1634 return FALSE;
1646 1635
1647 CPDF_FormField* pFormField = FieldArray[0]; 1636 CPDF_FormField* pFormField = FieldArray[0];
1648 ASSERT(pFormField); 1637 ASSERT(pFormField);
1649 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 1638 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
1650 if (!pFormControl) 1639 if (!pFormControl)
1651 return FALSE; 1640 return FALSE;
1652 1641
1653 CPDFSDK_InterForm* pInterForm = 1642 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
1654 m_pFormFillEnv->GetSDKDocument()->GetInterForm();
1655 if (!pFormField->CountControls()) 1643 if (!pFormField->CountControls())
1656 return FALSE; 1644 return FALSE;
1657 1645
1658 CPDFSDK_Widget* pWidget = 1646 CPDFSDK_Widget* pWidget =
1659 pInterForm->GetWidget(pFormField->GetControl(0), false); 1647 pInterForm->GetWidget(pFormField->GetControl(0), false);
1660 if (!pWidget) 1648 if (!pWidget)
1661 return FALSE; 1649 return FALSE;
1662 1650
1663 vp << (int32_t)pWidget->GetBorderWidth(); 1651 vp << (int32_t)pWidget->GetBorderWidth();
1664 } 1652 }
1665 1653
1666 return TRUE; 1654 return TRUE;
1667 } 1655 }
1668 1656
1669 void Field::SetLineWidth(CPDFSDK_FormFillEnvironment* pFormFillEnv, 1657 void Field::SetLineWidth(CPDFSDK_FormFillEnvironment* pFormFillEnv,
1670 const CFX_WideString& swFieldName, 1658 const CFX_WideString& swFieldName,
1671 int nControlIndex, 1659 int nControlIndex,
1672 int number) { 1660 int number) {
1673 CPDFSDK_InterForm* pInterForm = 1661 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm();
1674 pFormFillEnv->GetSDKDocument()->GetInterForm();
1675 std::vector<CPDF_FormField*> FieldArray = 1662 std::vector<CPDF_FormField*> FieldArray =
1676 GetFormFields(pFormFillEnv, swFieldName); 1663 GetFormFields(pFormFillEnv, swFieldName);
1677 for (CPDF_FormField* pFormField : FieldArray) { 1664 for (CPDF_FormField* pFormField : FieldArray) {
1678 if (nControlIndex < 0) { 1665 if (nControlIndex < 0) {
1679 FX_BOOL bSet = FALSE; 1666 FX_BOOL bSet = FALSE;
1680 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { 1667 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {
1681 CPDF_FormControl* pFormControl = pFormField->GetControl(i); 1668 CPDF_FormControl* pFormControl = pFormField->GetControl(i);
1682 ASSERT(pFormControl); 1669 ASSERT(pFormControl);
1683 1670
1684 if (CPDFSDK_Widget* pWidget = 1671 if (CPDFSDK_Widget* pWidget =
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1837 1824
1838 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 1825 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1839 if (FieldArray.empty()) 1826 if (FieldArray.empty())
1840 return FALSE; 1827 return FALSE;
1841 1828
1842 CPDF_FormField* pFormField = FieldArray[0]; 1829 CPDF_FormField* pFormField = FieldArray[0];
1843 if (!pFormField) 1830 if (!pFormField)
1844 return FALSE; 1831 return FALSE;
1845 1832
1846 std::vector<CPDFSDK_Widget*> widgets; 1833 std::vector<CPDFSDK_Widget*> widgets;
1847 m_pFormFillEnv->GetSDKDocument()->GetInterForm()->GetWidgets(pFormField, 1834 m_pFormFillEnv->GetInterForm()->GetWidgets(pFormField, &widgets);
1848 &widgets);
1849 1835
1850 if (widgets.empty()) { 1836 if (widgets.empty()) {
1851 vp << (int32_t)-1; 1837 vp << (int32_t)-1;
1852 return TRUE; 1838 return TRUE;
1853 } 1839 }
1854 1840
1855 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1841 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1856 CJS_Array PageArray; 1842 CJS_Array PageArray;
1857 for (size_t i = 0; i < widgets.size(); ++i) { 1843 for (size_t i = 0; i < widgets.size(); ++i) {
1858 CPDFSDK_PageView* pPageView = widgets[i]->GetPageView(); 1844 CPDFSDK_PageView* pPageView = widgets[i]->GetPageView();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1906 void Field::SetPassword(CPDFSDK_FormFillEnvironment* pFormFillEnv, 1892 void Field::SetPassword(CPDFSDK_FormFillEnvironment* pFormFillEnv,
1907 const CFX_WideString& swFieldName, 1893 const CFX_WideString& swFieldName,
1908 int nControlIndex, 1894 int nControlIndex,
1909 bool b) { 1895 bool b) {
1910 // Not supported. 1896 // Not supported.
1911 } 1897 }
1912 1898
1913 FX_BOOL Field::print(IJS_Context* cc, 1899 FX_BOOL Field::print(IJS_Context* cc,
1914 CJS_PropValue& vp, 1900 CJS_PropValue& vp,
1915 CFX_WideString& sError) { 1901 CFX_WideString& sError) {
1916 CPDFSDK_InterForm* pInterForm = 1902 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
1917 m_pFormFillEnv->GetSDKDocument()->GetInterForm();
1918 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 1903 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1919 if (FieldArray.empty()) 1904 if (FieldArray.empty())
1920 return FALSE; 1905 return FALSE;
1921 1906
1922 if (vp.IsSetting()) { 1907 if (vp.IsSetting()) {
1923 if (!m_bCanSet) 1908 if (!m_bCanSet)
1924 return FALSE; 1909 return FALSE;
1925 1910
1926 bool bVP; 1911 bool bVP;
1927 vp >> bVP; 1912 vp >> bVP;
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
2073 } else { 2058 } else {
2074 Field::SetRect(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, 2059 Field::SetRect(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex,
2075 crRect); 2060 crRect);
2076 } 2061 }
2077 } else { 2062 } else {
2078 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 2063 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2079 if (FieldArray.empty()) 2064 if (FieldArray.empty())
2080 return FALSE; 2065 return FALSE;
2081 2066
2082 CPDF_FormField* pFormField = FieldArray[0]; 2067 CPDF_FormField* pFormField = FieldArray[0];
2083 CPDFSDK_InterForm* pInterForm = 2068 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
2084 m_pFormFillEnv->GetSDKDocument()->GetInterForm();
2085 CPDFSDK_Widget* pWidget = 2069 CPDFSDK_Widget* pWidget =
2086 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true); 2070 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true);
2087 if (!pWidget) 2071 if (!pWidget)
2088 return FALSE; 2072 return FALSE;
2089 2073
2090 CFX_FloatRect crRect = pWidget->GetRect(); 2074 CFX_FloatRect crRect = pWidget->GetRect();
2091 Upper_Leftx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.left)); 2075 Upper_Leftx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.left));
2092 Upper_Lefty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.top)); 2076 Upper_Lefty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.top));
2093 Lower_Rightx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.right)); 2077 Lower_Rightx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.right));
2094 Lower_Righty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.bottom)); 2078 Lower_Righty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.bottom));
2095 2079
2096 CJS_Array rcArray; 2080 CJS_Array rcArray;
2097 rcArray.SetElement(pRuntime, 0, Upper_Leftx); 2081 rcArray.SetElement(pRuntime, 0, Upper_Leftx);
2098 rcArray.SetElement(pRuntime, 1, Upper_Lefty); 2082 rcArray.SetElement(pRuntime, 1, Upper_Lefty);
2099 rcArray.SetElement(pRuntime, 2, Lower_Rightx); 2083 rcArray.SetElement(pRuntime, 2, Lower_Rightx);
2100 rcArray.SetElement(pRuntime, 3, Lower_Righty); 2084 rcArray.SetElement(pRuntime, 3, Lower_Righty);
2101 vp << rcArray; 2085 vp << rcArray;
2102 } 2086 }
2103 return TRUE; 2087 return TRUE;
2104 } 2088 }
2105 2089
2106 void Field::SetRect(CPDFSDK_FormFillEnvironment* pFormFillEnv, 2090 void Field::SetRect(CPDFSDK_FormFillEnvironment* pFormFillEnv,
2107 const CFX_WideString& swFieldName, 2091 const CFX_WideString& swFieldName,
2108 int nControlIndex, 2092 int nControlIndex,
2109 const CFX_FloatRect& rect) { 2093 const CFX_FloatRect& rect) {
2110 CPDFSDK_InterForm* pInterForm = 2094 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm();
2111 pFormFillEnv->GetSDKDocument()->GetInterForm();
2112 std::vector<CPDF_FormField*> FieldArray = 2095 std::vector<CPDF_FormField*> FieldArray =
2113 GetFormFields(pFormFillEnv, swFieldName); 2096 GetFormFields(pFormFillEnv, swFieldName);
2114 for (CPDF_FormField* pFormField : FieldArray) { 2097 for (CPDF_FormField* pFormField : FieldArray) {
2115 if (nControlIndex < 0) { 2098 if (nControlIndex < 0) {
2116 FX_BOOL bSet = FALSE; 2099 FX_BOOL bSet = FALSE;
2117 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { 2100 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {
2118 CPDF_FormControl* pFormControl = pFormField->GetControl(i); 2101 CPDF_FormControl* pFormControl = pFormField->GetControl(i);
2119 ASSERT(pFormControl); 2102 ASSERT(pFormControl);
2120 2103
2121 if (CPDFSDK_Widget* pWidget = 2104 if (CPDFSDK_Widget* pWidget =
(...skipping 1087 matching lines...) Expand 10 before | Expand all | Expand 10 after
3209 CFX_WideString& sError) { 3192 CFX_WideString& sError) {
3210 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 3193 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
3211 if (FieldArray.empty()) 3194 if (FieldArray.empty())
3212 return FALSE; 3195 return FALSE;
3213 3196
3214 CPDF_FormField* pFormField = FieldArray[0]; 3197 CPDF_FormField* pFormField = FieldArray[0];
3215 int32_t nCount = pFormField->CountControls(); 3198 int32_t nCount = pFormField->CountControls();
3216 if (nCount < 1) 3199 if (nCount < 1)
3217 return FALSE; 3200 return FALSE;
3218 3201
3219 CPDFSDK_InterForm* pInterForm = 3202 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
3220 m_pFormFillEnv->GetSDKDocument()->GetInterForm();
3221 CPDFSDK_Widget* pWidget = nullptr; 3203 CPDFSDK_Widget* pWidget = nullptr;
3222 if (nCount == 1) { 3204 if (nCount == 1) {
3223 pWidget = pInterForm->GetWidget(pFormField->GetControl(0), false); 3205 pWidget = pInterForm->GetWidget(pFormField->GetControl(0), false);
3224 } else { 3206 } else {
3225 UnderlyingPageType* pPage = 3207 UnderlyingPageType* pPage =
3226 UnderlyingFromFPDFPage(m_pFormFillEnv->GetCurrentPage( 3208 UnderlyingFromFPDFPage(m_pFormFillEnv->GetCurrentPage(
3227 m_pFormFillEnv->GetUnderlyingDocument())); 3209 m_pFormFillEnv->GetUnderlyingDocument()));
3228 if (!pPage) 3210 if (!pPage)
3229 return FALSE; 3211 return FALSE;
3230 if (CPDFSDK_PageView* pCurPageView = 3212 if (CPDFSDK_PageView* pCurPageView =
3231 m_pFormFillEnv->GetSDKDocument()->GetPageView(pPage, true)) { 3213 m_pFormFillEnv->GetPageView(pPage, true)) {
3232 for (int32_t i = 0; i < nCount; i++) { 3214 for (int32_t i = 0; i < nCount; i++) {
3233 if (CPDFSDK_Widget* pTempWidget = 3215 if (CPDFSDK_Widget* pTempWidget =
3234 pInterForm->GetWidget(pFormField->GetControl(i), false)) { 3216 pInterForm->GetWidget(pFormField->GetControl(i), false)) {
3235 if (pTempWidget->GetPDFPage() == pCurPageView->GetPDFPage()) { 3217 if (pTempWidget->GetPDFPage() == pCurPageView->GetPDFPage()) {
3236 pWidget = pTempWidget; 3218 pWidget = pTempWidget;
3237 break; 3219 break;
3238 } 3220 }
3239 } 3221 }
3240 } 3222 }
3241 } 3223 }
3242 } 3224 }
3243 3225
3244 if (pWidget) { 3226 if (pWidget) {
3245 CPDFSDK_Annot::ObservedPtr pObserved(pWidget); 3227 CPDFSDK_Annot::ObservedPtr pObserved(pWidget);
3246 m_pFormFillEnv->GetSDKDocument()->SetFocusAnnot(&pObserved); 3228 m_pFormFillEnv->SetFocusAnnot(&pObserved);
3247 } 3229 }
3248 3230
3249 return TRUE; 3231 return TRUE;
3250 } 3232 }
3251 3233
3252 FX_BOOL Field::setItems(IJS_Context* cc, 3234 FX_BOOL Field::setItems(IJS_Context* cc,
3253 const std::vector<CJS_Value>& params, 3235 const std::vector<CJS_Value>& params,
3254 CJS_Value& vRet, 3236 CJS_Value& vRet,
3255 CFX_WideString& sError) { 3237 CFX_WideString& sError) {
3256 return TRUE; 3238 return TRUE;
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
3513 } 3495 }
3514 } 3496 }
3515 3497
3516 void Field::AddField(CPDFSDK_FormFillEnvironment* pFormFillEnv, 3498 void Field::AddField(CPDFSDK_FormFillEnvironment* pFormFillEnv,
3517 int nPageIndex, 3499 int nPageIndex,
3518 int nFieldType, 3500 int nFieldType,
3519 const CFX_WideString& sName, 3501 const CFX_WideString& sName,
3520 const CFX_FloatRect& rcCoords) { 3502 const CFX_FloatRect& rcCoords) {
3521 // Not supported. 3503 // Not supported.
3522 } 3504 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698