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

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

Issue 2400473002: Start proxying CPDFSDK_Document methods through 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
« no previous file with comments | « fpdfsdk/javascript/Document.cpp ('k') | fpdfsdk/javascript/PublicMethods.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 "fpdfsdk/javascript/Field.h" 7 #include "fpdfsdk/javascript/Field.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 } 210 }
211 211
212 FX_BOOL Field::AttachField(Document* pDocument, 212 FX_BOOL Field::AttachField(Document* pDocument,
213 const CFX_WideString& csFieldName) { 213 const CFX_WideString& csFieldName) {
214 m_pJSDoc = pDocument; 214 m_pJSDoc = pDocument;
215 m_pDocument.Reset(pDocument->GetReaderDoc()); 215 m_pDocument.Reset(pDocument->GetReaderDoc());
216 m_bCanSet = m_pDocument->GetPermissions(FPDFPERM_FILL_FORM) || 216 m_bCanSet = m_pDocument->GetPermissions(FPDFPERM_FILL_FORM) ||
217 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || 217 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) ||
218 m_pDocument->GetPermissions(FPDFPERM_MODIFY); 218 m_pDocument->GetPermissions(FPDFPERM_MODIFY);
219 219
220 CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm(); 220 CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetEnv()->GetInterForm();
221 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm(); 221 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
222 CFX_WideString swFieldNameTemp = csFieldName; 222 CFX_WideString swFieldNameTemp = csFieldName;
223 swFieldNameTemp.Replace(L"..", L"."); 223 swFieldNameTemp.Replace(L"..", L".");
224 224
225 if (pInterForm->CountFields(swFieldNameTemp) <= 0) { 225 if (pInterForm->CountFields(swFieldNameTemp) <= 0) {
226 std::wstring strFieldName; 226 std::wstring strFieldName;
227 int iControlNo = -1; 227 int iControlNo = -1;
228 ParseFieldName(swFieldNameTemp.c_str(), strFieldName, iControlNo); 228 ParseFieldName(swFieldNameTemp.c_str(), strFieldName, iControlNo);
229 if (iControlNo == -1) 229 if (iControlNo == -1)
230 return FALSE; 230 return FALSE;
231 231
232 m_FieldName = strFieldName.c_str(); 232 m_FieldName = strFieldName.c_str();
233 m_nFormControlIndex = iControlNo; 233 m_nFormControlIndex = iControlNo;
234 return TRUE; 234 return TRUE;
235 } 235 }
236 236
237 m_FieldName = swFieldNameTemp; 237 m_FieldName = swFieldNameTemp;
238 m_nFormControlIndex = -1; 238 m_nFormControlIndex = -1;
239 239
240 return TRUE; 240 return TRUE;
241 } 241 }
242 242
243 std::vector<CPDF_FormField*> Field::GetFormFields( 243 std::vector<CPDF_FormField*> Field::GetFormFields(
244 CPDFSDK_Document* pDocument, 244 CPDFSDK_Document* pDocument,
245 const CFX_WideString& csFieldName) { 245 const CFX_WideString& csFieldName) {
246 std::vector<CPDF_FormField*> fields; 246 std::vector<CPDF_FormField*> fields;
247 CPDFSDK_InterForm* pReaderInterForm = pDocument->GetInterForm(); 247 CPDFSDK_InterForm* pReaderInterForm = pDocument->GetEnv()->GetInterForm();
248 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm(); 248 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm();
249 for (int i = 0, sz = pInterForm->CountFields(csFieldName); i < sz; ++i) { 249 for (int i = 0, sz = pInterForm->CountFields(csFieldName); i < sz; ++i) {
250 if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName)) 250 if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName))
251 fields.push_back(pFormField); 251 fields.push_back(pFormField);
252 } 252 }
253 return fields; 253 return fields;
254 } 254 }
255 255
256 std::vector<CPDF_FormField*> Field::GetFormFields( 256 std::vector<CPDF_FormField*> Field::GetFormFields(
257 const CFX_WideString& csFieldName) const { 257 const CFX_WideString& csFieldName) const {
258 return Field::GetFormFields(m_pDocument.Get(), csFieldName); 258 return Field::GetFormFields(m_pDocument.Get(), csFieldName);
259 } 259 }
260 260
261 void Field::UpdateFormField(CPDFSDK_Document* pDocument, 261 void Field::UpdateFormField(CPDFSDK_Document* pDocument,
262 CPDF_FormField* pFormField, 262 CPDF_FormField* pFormField,
263 FX_BOOL bChangeMark, 263 FX_BOOL bChangeMark,
264 FX_BOOL bResetAP, 264 FX_BOOL bResetAP,
265 FX_BOOL bRefresh) { 265 FX_BOOL bRefresh) {
266 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); 266 CPDFSDK_InterForm* pInterForm = pDocument->GetEnv()->GetInterForm();
267 267
268 if (bResetAP) { 268 if (bResetAP) {
269 std::vector<CPDFSDK_Widget*> widgets; 269 std::vector<CPDFSDK_Widget*> widgets;
270 pInterForm->GetWidgets(pFormField, &widgets); 270 pInterForm->GetWidgets(pFormField, &widgets);
271 271
272 int nFieldType = pFormField->GetFieldType(); 272 int nFieldType = pFormField->GetFieldType();
273 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD) { 273 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD) {
274 for (CPDFSDK_Annot* pAnnot : widgets) { 274 for (CPDFSDK_Annot* pAnnot : widgets) {
275 FX_BOOL bFormatted = FALSE; 275 FX_BOOL bFormatted = FALSE;
276 CPDFSDK_Annot::ObservedPtr pObserved(pAnnot); 276 CPDFSDK_Annot::ObservedPtr pObserved(pAnnot);
(...skipping 12 matching lines...) Expand all
289 } 289 }
290 290
291 if (bRefresh) { 291 if (bRefresh) {
292 // Refresh the widget list. The calls in |bResetAP| may have caused widgets 292 // Refresh the widget list. The calls in |bResetAP| may have caused widgets
293 // to be removed from the list. We need to call |GetWidgets| again to be 293 // to be removed from the list. We need to call |GetWidgets| again to be
294 // sure none of the widgets have been deleted. 294 // sure none of the widgets have been deleted.
295 std::vector<CPDFSDK_Widget*> widgets; 295 std::vector<CPDFSDK_Widget*> widgets;
296 pInterForm->GetWidgets(pFormField, &widgets); 296 pInterForm->GetWidgets(pFormField, &widgets);
297 297
298 for (CPDFSDK_Widget* pWidget : widgets) { 298 for (CPDFSDK_Widget* pWidget : widgets) {
299 CPDFSDK_Document* pDoc = pWidget->GetInterForm()->GetDocument(); 299 CPDFSDK_Document* pDoc =
300 pWidget->GetInterForm()->GetFormFillEnv()->GetSDKDocument();
300 pDoc->UpdateAllViews(nullptr, pWidget); 301 pDoc->UpdateAllViews(nullptr, pWidget);
301 } 302 }
302 } 303 }
303 304
304 if (bChangeMark) 305 if (bChangeMark)
305 pDocument->SetChangeMark(); 306 pDocument->SetChangeMark();
306 } 307 }
307 308
308 void Field::UpdateFormControl(CPDFSDK_Document* pDocument, 309 void Field::UpdateFormControl(CPDFSDK_Document* pDocument,
309 CPDF_FormControl* pFormControl, 310 CPDF_FormControl* pFormControl,
310 FX_BOOL bChangeMark, 311 FX_BOOL bChangeMark,
311 FX_BOOL bResetAP, 312 FX_BOOL bResetAP,
312 FX_BOOL bRefresh) { 313 FX_BOOL bRefresh) {
313 ASSERT(pFormControl); 314 ASSERT(pFormControl);
314 315
315 CPDFSDK_InterForm* pForm = pDocument->GetInterForm(); 316 CPDFSDK_InterForm* pForm = pDocument->GetEnv()->GetInterForm();
316 CPDFSDK_Widget* pWidget = pForm->GetWidget(pFormControl, false); 317 CPDFSDK_Widget* pWidget = pForm->GetWidget(pFormControl, false);
317 318
318 if (pWidget) { 319 if (pWidget) {
319 if (bResetAP) { 320 if (bResetAP) {
320 int nFieldType = pWidget->GetFieldType(); 321 int nFieldType = pWidget->GetFieldType();
321 if (nFieldType == FIELDTYPE_COMBOBOX || 322 if (nFieldType == FIELDTYPE_COMBOBOX ||
322 nFieldType == FIELDTYPE_TEXTFIELD) { 323 nFieldType == FIELDTYPE_TEXTFIELD) {
323 FX_BOOL bFormatted = FALSE; 324 FX_BOOL bFormatted = FALSE;
324 CFX_WideString sValue = pWidget->OnFormat(bFormatted); 325 CFX_WideString sValue = pWidget->OnFormat(bFormatted);
325 pWidget->ResetAppearance(bFormatted ? &sValue : nullptr, FALSE); 326 pWidget->ResetAppearance(bFormatted ? &sValue : nullptr, FALSE);
326 } else { 327 } else {
327 pWidget->ResetAppearance(nullptr, FALSE); 328 pWidget->ResetAppearance(nullptr, FALSE);
328 } 329 }
329 } 330 }
330 331
331 if (bRefresh) { 332 if (bRefresh) {
332 CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm(); 333 CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm();
333 CPDFSDK_Document* pDoc = pInterForm->GetDocument(); 334 CPDFSDK_Document* pDoc = pInterForm->GetFormFillEnv()->GetSDKDocument();
334 pDoc->UpdateAllViews(nullptr, pWidget); 335 pDoc->UpdateAllViews(nullptr, pWidget);
335 } 336 }
336 } 337 }
337 338
338 if (bChangeMark) 339 if (bChangeMark)
339 pDocument->SetChangeMark(); 340 pDocument->SetChangeMark();
340 } 341 }
341 342
342 CPDFSDK_Widget* Field::GetWidget(CPDFSDK_Document* pDocument, 343 CPDFSDK_Widget* Field::GetWidget(CPDFSDK_Document* pDocument,
343 CPDF_FormControl* pFormControl, 344 CPDF_FormControl* pFormControl,
344 bool createIfNeeded) { 345 bool createIfNeeded) {
345 CPDFSDK_InterForm* pInterForm = 346 CPDFSDK_InterForm* pInterForm =
346 static_cast<CPDFSDK_InterForm*>(pDocument->GetInterForm()); 347 static_cast<CPDFSDK_InterForm*>(pDocument->GetEnv()->GetInterForm());
347 return pInterForm ? pInterForm->GetWidget(pFormControl, createIfNeeded) 348 return pInterForm ? pInterForm->GetWidget(pFormControl, createIfNeeded)
348 : nullptr; 349 : nullptr;
349 } 350 }
350 351
351 FX_BOOL Field::ValueIsOccur(CPDF_FormField* pFormField, 352 FX_BOOL Field::ValueIsOccur(CPDF_FormField* pFormField,
352 CFX_WideString csOptLabel) { 353 CFX_WideString csOptLabel) {
353 for (int i = 0, sz = pFormField->CountOptions(); i < sz; i++) { 354 for (int i = 0, sz = pFormField->CountOptions(); i < sz; i++) {
354 if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0) 355 if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0)
355 return TRUE; 356 return TRUE;
356 } 357 }
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
849 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 850 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
850 if (FieldArray.empty()) 851 if (FieldArray.empty())
851 return FALSE; 852 return FALSE;
852 853
853 CPDF_FormField* pFormField = FieldArray[0]; 854 CPDF_FormField* pFormField = FieldArray[0];
854 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && 855 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX &&
855 pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) { 856 pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) {
856 return FALSE; 857 return FALSE;
857 } 858 }
858 859
859 CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm(); 860 CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetEnv()->GetInterForm();
860 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm(); 861 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
861 vp << (int32_t)pInterForm->FindFieldInCalculationOrder(pFormField); 862 vp << (int32_t)pInterForm->FindFieldInCalculationOrder(pFormField);
862 } 863 }
863 864
864 return TRUE; 865 return TRUE;
865 } 866 }
866 867
867 void Field::SetCalcOrderIndex(CPDFSDK_Document* pDocument, 868 void Field::SetCalcOrderIndex(CPDFSDK_Document* pDocument,
868 const CFX_WideString& swFieldName, 869 const CFX_WideString& swFieldName,
869 int nControlIndex, 870 int nControlIndex,
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
1252 Field::SetDisplay(m_pDocument.Get(), m_FieldName, m_nFormControlIndex, 1253 Field::SetDisplay(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
1253 nVP); 1254 nVP);
1254 } 1255 }
1255 } else { 1256 } else {
1256 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 1257 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1257 if (FieldArray.empty()) 1258 if (FieldArray.empty())
1258 return FALSE; 1259 return FALSE;
1259 1260
1260 CPDF_FormField* pFormField = FieldArray[0]; 1261 CPDF_FormField* pFormField = FieldArray[0];
1261 ASSERT(pFormField); 1262 ASSERT(pFormField);
1262 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); 1263 CPDFSDK_InterForm* pInterForm = m_pDocument->GetEnv()->GetInterForm();
1263 CPDFSDK_Widget* pWidget = 1264 CPDFSDK_Widget* pWidget =
1264 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true); 1265 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true);
1265 if (!pWidget) 1266 if (!pWidget)
1266 return FALSE; 1267 return FALSE;
1267 1268
1268 uint32_t dwFlag = pWidget->GetFlags(); 1269 uint32_t dwFlag = pWidget->GetFlags();
1269 1270
1270 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag) { 1271 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag) {
1271 vp << (int32_t)1; 1272 vp << (int32_t)1;
1272 } else { 1273 } else {
1273 if (ANNOTFLAG_PRINT & dwFlag) { 1274 if (ANNOTFLAG_PRINT & dwFlag) {
1274 if (ANNOTFLAG_NOVIEW & dwFlag) { 1275 if (ANNOTFLAG_NOVIEW & dwFlag) {
1275 vp << (int32_t)3; 1276 vp << (int32_t)3;
1276 } else { 1277 } else {
1277 vp << (int32_t)0; 1278 vp << (int32_t)0;
1278 } 1279 }
1279 } else { 1280 } else {
1280 vp << (int32_t)2; 1281 vp << (int32_t)2;
1281 } 1282 }
1282 } 1283 }
1283 } 1284 }
1284 1285
1285 return TRUE; 1286 return TRUE;
1286 } 1287 }
1287 1288
1288 void Field::SetDisplay(CPDFSDK_Document* pDocument, 1289 void Field::SetDisplay(CPDFSDK_Document* pDocument,
1289 const CFX_WideString& swFieldName, 1290 const CFX_WideString& swFieldName,
1290 int nControlIndex, 1291 int nControlIndex,
1291 int number) { 1292 int number) {
1292 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); 1293 CPDFSDK_InterForm* pInterForm = pDocument->GetEnv()->GetInterForm();
1293 std::vector<CPDF_FormField*> FieldArray = 1294 std::vector<CPDF_FormField*> FieldArray =
1294 GetFormFields(pDocument, swFieldName); 1295 GetFormFields(pDocument, swFieldName);
1295 for (CPDF_FormField* pFormField : FieldArray) { 1296 for (CPDF_FormField* pFormField : FieldArray) {
1296 if (nControlIndex < 0) { 1297 if (nControlIndex < 0) {
1297 bool bAnySet = false; 1298 bool bAnySet = false;
1298 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { 1299 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {
1299 CPDF_FormControl* pFormControl = pFormField->GetControl(i); 1300 CPDF_FormControl* pFormControl = pFormField->GetControl(i);
1300 ASSERT(pFormControl); 1301 ASSERT(pFormControl);
1301 1302
1302 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl, true); 1303 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl, true);
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
1516 Field::SetHidden(m_pDocument.Get(), m_FieldName, m_nFormControlIndex, 1517 Field::SetHidden(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
1517 bVP); 1518 bVP);
1518 } 1519 }
1519 } else { 1520 } else {
1520 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 1521 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1521 if (FieldArray.empty()) 1522 if (FieldArray.empty())
1522 return FALSE; 1523 return FALSE;
1523 1524
1524 CPDF_FormField* pFormField = FieldArray[0]; 1525 CPDF_FormField* pFormField = FieldArray[0];
1525 ASSERT(pFormField); 1526 ASSERT(pFormField);
1526 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); 1527 CPDFSDK_InterForm* pInterForm = m_pDocument->GetEnv()->GetInterForm();
1527 CPDFSDK_Widget* pWidget = 1528 CPDFSDK_Widget* pWidget =
1528 pInterForm->GetWidget(GetSmartFieldControl(pFormField), false); 1529 pInterForm->GetWidget(GetSmartFieldControl(pFormField), false);
1529 if (!pWidget) 1530 if (!pWidget)
1530 return FALSE; 1531 return FALSE;
1531 1532
1532 uint32_t dwFlags = pWidget->GetFlags(); 1533 uint32_t dwFlags = pWidget->GetFlags();
1533 1534
1534 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags) 1535 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags)
1535 vp << true; 1536 vp << true;
1536 else 1537 else
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
1629 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 1630 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1630 if (FieldArray.empty()) 1631 if (FieldArray.empty())
1631 return FALSE; 1632 return FALSE;
1632 1633
1633 CPDF_FormField* pFormField = FieldArray[0]; 1634 CPDF_FormField* pFormField = FieldArray[0];
1634 ASSERT(pFormField); 1635 ASSERT(pFormField);
1635 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 1636 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
1636 if (!pFormControl) 1637 if (!pFormControl)
1637 return FALSE; 1638 return FALSE;
1638 1639
1639 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); 1640 CPDFSDK_InterForm* pInterForm = m_pDocument->GetEnv()->GetInterForm();
1640 if (!pFormField->CountControls()) 1641 if (!pFormField->CountControls())
1641 return FALSE; 1642 return FALSE;
1642 1643
1643 CPDFSDK_Widget* pWidget = 1644 CPDFSDK_Widget* pWidget =
1644 pInterForm->GetWidget(pFormField->GetControl(0), false); 1645 pInterForm->GetWidget(pFormField->GetControl(0), false);
1645 if (!pWidget) 1646 if (!pWidget)
1646 return FALSE; 1647 return FALSE;
1647 1648
1648 vp << (int32_t)pWidget->GetBorderWidth(); 1649 vp << (int32_t)pWidget->GetBorderWidth();
1649 } 1650 }
1650 1651
1651 return TRUE; 1652 return TRUE;
1652 } 1653 }
1653 1654
1654 void Field::SetLineWidth(CPDFSDK_Document* pDocument, 1655 void Field::SetLineWidth(CPDFSDK_Document* pDocument,
1655 const CFX_WideString& swFieldName, 1656 const CFX_WideString& swFieldName,
1656 int nControlIndex, 1657 int nControlIndex,
1657 int number) { 1658 int number) {
1658 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); 1659 CPDFSDK_InterForm* pInterForm = pDocument->GetEnv()->GetInterForm();
1659 std::vector<CPDF_FormField*> FieldArray = 1660 std::vector<CPDF_FormField*> FieldArray =
1660 GetFormFields(pDocument, swFieldName); 1661 GetFormFields(pDocument, swFieldName);
1661 for (CPDF_FormField* pFormField : FieldArray) { 1662 for (CPDF_FormField* pFormField : FieldArray) {
1662 if (nControlIndex < 0) { 1663 if (nControlIndex < 0) {
1663 FX_BOOL bSet = FALSE; 1664 FX_BOOL bSet = FALSE;
1664 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { 1665 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {
1665 CPDF_FormControl* pFormControl = pFormField->GetControl(i); 1666 CPDF_FormControl* pFormControl = pFormField->GetControl(i);
1666 ASSERT(pFormControl); 1667 ASSERT(pFormControl);
1667 1668
1668 if (CPDFSDK_Widget* pWidget = 1669 if (CPDFSDK_Widget* pWidget =
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1821 1822
1822 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 1823 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1823 if (FieldArray.empty()) 1824 if (FieldArray.empty())
1824 return FALSE; 1825 return FALSE;
1825 1826
1826 CPDF_FormField* pFormField = FieldArray[0]; 1827 CPDF_FormField* pFormField = FieldArray[0];
1827 if (!pFormField) 1828 if (!pFormField)
1828 return FALSE; 1829 return FALSE;
1829 1830
1830 std::vector<CPDFSDK_Widget*> widgets; 1831 std::vector<CPDFSDK_Widget*> widgets;
1831 m_pDocument->GetInterForm()->GetWidgets(pFormField, &widgets); 1832 m_pDocument->GetEnv()->GetInterForm()->GetWidgets(pFormField, &widgets);
1832 1833
1833 if (widgets.empty()) { 1834 if (widgets.empty()) {
1834 vp << (int32_t)-1; 1835 vp << (int32_t)-1;
1835 return TRUE; 1836 return TRUE;
1836 } 1837 }
1837 1838
1838 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1839 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1839 CJS_Array PageArray; 1840 CJS_Array PageArray;
1840 for (size_t i = 0; i < widgets.size(); ++i) { 1841 for (size_t i = 0; i < widgets.size(); ++i) {
1841 CPDFSDK_PageView* pPageView = widgets[i]->GetPageView(); 1842 CPDFSDK_PageView* pPageView = widgets[i]->GetPageView();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1889 void Field::SetPassword(CPDFSDK_Document* pDocument, 1890 void Field::SetPassword(CPDFSDK_Document* pDocument,
1890 const CFX_WideString& swFieldName, 1891 const CFX_WideString& swFieldName,
1891 int nControlIndex, 1892 int nControlIndex,
1892 bool b) { 1893 bool b) {
1893 // Not supported. 1894 // Not supported.
1894 } 1895 }
1895 1896
1896 FX_BOOL Field::print(IJS_Context* cc, 1897 FX_BOOL Field::print(IJS_Context* cc,
1897 CJS_PropValue& vp, 1898 CJS_PropValue& vp,
1898 CFX_WideString& sError) { 1899 CFX_WideString& sError) {
1899 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); 1900 CPDFSDK_InterForm* pInterForm = m_pDocument->GetEnv()->GetInterForm();
1900 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 1901 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
1901 if (FieldArray.empty()) 1902 if (FieldArray.empty())
1902 return FALSE; 1903 return FALSE;
1903 1904
1904 if (vp.IsSetting()) { 1905 if (vp.IsSetting()) {
1905 if (!m_bCanSet) 1906 if (!m_bCanSet)
1906 return FALSE; 1907 return FALSE;
1907 1908
1908 bool bVP; 1909 bool bVP;
1909 vp >> bVP; 1910 vp >> bVP;
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
2055 } else { 2056 } else {
2056 Field::SetRect(m_pDocument.Get(), m_FieldName, m_nFormControlIndex, 2057 Field::SetRect(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
2057 crRect); 2058 crRect);
2058 } 2059 }
2059 } else { 2060 } else {
2060 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 2061 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
2061 if (FieldArray.empty()) 2062 if (FieldArray.empty())
2062 return FALSE; 2063 return FALSE;
2063 2064
2064 CPDF_FormField* pFormField = FieldArray[0]; 2065 CPDF_FormField* pFormField = FieldArray[0];
2065 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); 2066 CPDFSDK_InterForm* pInterForm = m_pDocument->GetEnv()->GetInterForm();
2066 CPDFSDK_Widget* pWidget = 2067 CPDFSDK_Widget* pWidget =
2067 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true); 2068 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true);
2068 if (!pWidget) 2069 if (!pWidget)
2069 return FALSE; 2070 return FALSE;
2070 2071
2071 CFX_FloatRect crRect = pWidget->GetRect(); 2072 CFX_FloatRect crRect = pWidget->GetRect();
2072 Upper_Leftx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.left)); 2073 Upper_Leftx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.left));
2073 Upper_Lefty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.top)); 2074 Upper_Lefty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.top));
2074 Lower_Rightx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.right)); 2075 Lower_Rightx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.right));
2075 Lower_Righty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.bottom)); 2076 Lower_Righty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.bottom));
2076 2077
2077 CJS_Array rcArray; 2078 CJS_Array rcArray;
2078 rcArray.SetElement(pRuntime, 0, Upper_Leftx); 2079 rcArray.SetElement(pRuntime, 0, Upper_Leftx);
2079 rcArray.SetElement(pRuntime, 1, Upper_Lefty); 2080 rcArray.SetElement(pRuntime, 1, Upper_Lefty);
2080 rcArray.SetElement(pRuntime, 2, Lower_Rightx); 2081 rcArray.SetElement(pRuntime, 2, Lower_Rightx);
2081 rcArray.SetElement(pRuntime, 3, Lower_Righty); 2082 rcArray.SetElement(pRuntime, 3, Lower_Righty);
2082 vp << rcArray; 2083 vp << rcArray;
2083 } 2084 }
2084 return TRUE; 2085 return TRUE;
2085 } 2086 }
2086 2087
2087 void Field::SetRect(CPDFSDK_Document* pDocument, 2088 void Field::SetRect(CPDFSDK_Document* pDocument,
2088 const CFX_WideString& swFieldName, 2089 const CFX_WideString& swFieldName,
2089 int nControlIndex, 2090 int nControlIndex,
2090 const CFX_FloatRect& rect) { 2091 const CFX_FloatRect& rect) {
2091 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); 2092 CPDFSDK_InterForm* pInterForm = pDocument->GetEnv()->GetInterForm();
2092 std::vector<CPDF_FormField*> FieldArray = 2093 std::vector<CPDF_FormField*> FieldArray =
2093 GetFormFields(pDocument, swFieldName); 2094 GetFormFields(pDocument, swFieldName);
2094 for (CPDF_FormField* pFormField : FieldArray) { 2095 for (CPDF_FormField* pFormField : FieldArray) {
2095 if (nControlIndex < 0) { 2096 if (nControlIndex < 0) {
2096 FX_BOOL bSet = FALSE; 2097 FX_BOOL bSet = FALSE;
2097 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { 2098 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {
2098 CPDF_FormControl* pFormControl = pFormField->GetControl(i); 2099 CPDF_FormControl* pFormControl = pFormField->GetControl(i);
2099 ASSERT(pFormControl); 2100 ASSERT(pFormControl);
2100 2101
2101 if (CPDFSDK_Widget* pWidget = 2102 if (CPDFSDK_Widget* pWidget =
(...skipping 1088 matching lines...) Expand 10 before | Expand all | Expand 10 after
3190 CFX_WideString& sError) { 3191 CFX_WideString& sError) {
3191 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); 3192 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
3192 if (FieldArray.empty()) 3193 if (FieldArray.empty())
3193 return FALSE; 3194 return FALSE;
3194 3195
3195 CPDF_FormField* pFormField = FieldArray[0]; 3196 CPDF_FormField* pFormField = FieldArray[0];
3196 int32_t nCount = pFormField->CountControls(); 3197 int32_t nCount = pFormField->CountControls();
3197 if (nCount < 1) 3198 if (nCount < 1)
3198 return FALSE; 3199 return FALSE;
3199 3200
3200 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); 3201 CPDFSDK_InterForm* pInterForm = m_pDocument->GetEnv()->GetInterForm();
3201 CPDFSDK_Widget* pWidget = nullptr; 3202 CPDFSDK_Widget* pWidget = nullptr;
3202 if (nCount == 1) { 3203 if (nCount == 1) {
3203 pWidget = pInterForm->GetWidget(pFormField->GetControl(0), false); 3204 pWidget = pInterForm->GetWidget(pFormField->GetControl(0), false);
3204 } else { 3205 } else {
3205 CPDFSDK_FormFillEnvironment* pEnv = m_pDocument->GetEnv(); 3206 CPDFSDK_FormFillEnvironment* pEnv = m_pDocument->GetEnv();
3206 UnderlyingPageType* pPage = UnderlyingFromFPDFPage( 3207 UnderlyingPageType* pPage = UnderlyingFromFPDFPage(
3207 pEnv->GetCurrentPage(m_pDocument->GetUnderlyingDocument())); 3208 pEnv->GetCurrentPage(m_pDocument->GetUnderlyingDocument()));
3208 if (!pPage) 3209 if (!pPage)
3209 return FALSE; 3210 return FALSE;
3210 if (CPDFSDK_PageView* pCurPageView = 3211 if (CPDFSDK_PageView* pCurPageView =
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
3492 } 3493 }
3493 } 3494 }
3494 3495
3495 void Field::AddField(CPDFSDK_Document* pDocument, 3496 void Field::AddField(CPDFSDK_Document* pDocument,
3496 int nPageIndex, 3497 int nPageIndex,
3497 int nFieldType, 3498 int nFieldType,
3498 const CFX_WideString& sName, 3499 const CFX_WideString& sName,
3499 const CFX_FloatRect& rcCoords) { 3500 const CFX_FloatRect& rcCoords) {
3500 // Not supported. 3501 // Not supported.
3501 } 3502 }
OLDNEW
« no previous file with comments | « fpdfsdk/javascript/Document.cpp ('k') | fpdfsdk/javascript/PublicMethods.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698