1// Copyright 2014 PDFium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7#include "../../include/javascript/JavaScript.h" 8#include "../../include/javascript/IJavaScript.h" 9#include "../../include/javascript/JS_Define.h" 10#include "../../include/javascript/JS_Object.h" 11#include "../../include/javascript/JS_Value.h" 12#include "../../include/javascript/Field.h" 13#include "../../include/javascript/JS_EventHandler.h" 14//#include "../include/JS_ResMgr.h" 15#include "../../include/javascript/JS_Context.h" 16#include "../../include/javascript/JS_Runtime.h" 17#include "../../include/javascript/Document.h" 18#include "../../include/javascript/color.h" 19#include "../../include/javascript/PublicMethods.h" 20#include "../../include/javascript/Icon.h" 21 22 23/* ---------------------- Field ---------------------- */ 24 25BEGIN_JS_STATIC_CONST(CJS_Field) 26END_JS_STATIC_CONST() 27 28BEGIN_JS_STATIC_PROP(CJS_Field) 29 JS_STATIC_PROP_ENTRY(alignment) 30 JS_STATIC_PROP_ENTRY(borderStyle) 31 JS_STATIC_PROP_ENTRY(buttonAlignX) 32 JS_STATIC_PROP_ENTRY(buttonAlignY) 33 JS_STATIC_PROP_ENTRY(buttonFitBounds) 34 JS_STATIC_PROP_ENTRY(buttonPosition) 35 JS_STATIC_PROP_ENTRY(buttonScaleHow) 36 JS_STATIC_PROP_ENTRY(buttonScaleWhen) 37 JS_STATIC_PROP_ENTRY(calcOrderIndex) 38 JS_STATIC_PROP_ENTRY(charLimit) 39 JS_STATIC_PROP_ENTRY(comb) 40 JS_STATIC_PROP_ENTRY(commitOnSelChange) 41 JS_STATIC_PROP_ENTRY(currentValueIndices) 42 JS_STATIC_PROP_ENTRY(defaultStyle) 43 JS_STATIC_PROP_ENTRY(defaultValue) 44 JS_STATIC_PROP_ENTRY(doNotScroll) 45 JS_STATIC_PROP_ENTRY(doNotSpellCheck) 46 JS_STATIC_PROP_ENTRY(delay) 47 JS_STATIC_PROP_ENTRY(display) 48 JS_STATIC_PROP_ENTRY(doc) 49 JS_STATIC_PROP_ENTRY(editable) 50 JS_STATIC_PROP_ENTRY(exportValues) 51 JS_STATIC_PROP_ENTRY(hidden) 52 JS_STATIC_PROP_ENTRY(fileSelect) 53 JS_STATIC_PROP_ENTRY(fillColor) 54 JS_STATIC_PROP_ENTRY(lineWidth) 55 JS_STATIC_PROP_ENTRY(highlight) 56 JS_STATIC_PROP_ENTRY(multiline) 57 JS_STATIC_PROP_ENTRY(multipleSelection) 58 JS_STATIC_PROP_ENTRY(name) 59 JS_STATIC_PROP_ENTRY(numItems) 60 JS_STATIC_PROP_ENTRY(page) 61 JS_STATIC_PROP_ENTRY(password) 62 JS_STATIC_PROP_ENTRY(print) 63 JS_STATIC_PROP_ENTRY(radiosInUnison) 64 JS_STATIC_PROP_ENTRY(readonly) 65 JS_STATIC_PROP_ENTRY(rect) 66 JS_STATIC_PROP_ENTRY(required) 67 JS_STATIC_PROP_ENTRY(richText) 68 JS_STATIC_PROP_ENTRY(richValue) 69 JS_STATIC_PROP_ENTRY(rotation) 70 JS_STATIC_PROP_ENTRY(strokeColor) 71 JS_STATIC_PROP_ENTRY(style) 72 JS_STATIC_PROP_ENTRY(submitName) 73 JS_STATIC_PROP_ENTRY(textColor) 74 JS_STATIC_PROP_ENTRY(textFont) 75 JS_STATIC_PROP_ENTRY(textSize) 76 JS_STATIC_PROP_ENTRY(type) 77 JS_STATIC_PROP_ENTRY(userName) 78 JS_STATIC_PROP_ENTRY(value) 79 JS_STATIC_PROP_ENTRY(valueAsString) 80 JS_STATIC_PROP_ENTRY(source) 81END_JS_STATIC_PROP() 82 83BEGIN_JS_STATIC_METHOD(CJS_Field) 84 JS_STATIC_METHOD_ENTRY(browseForFileToSubmit, 0) 85 JS_STATIC_METHOD_ENTRY(buttonGetCaption, 1) 86 JS_STATIC_METHOD_ENTRY(buttonGetIcon, 1) 87 JS_STATIC_METHOD_ENTRY(buttonImportIcon, 0) 88 JS_STATIC_METHOD_ENTRY(buttonSetCaption, 2) 89 JS_STATIC_METHOD_ENTRY(buttonSetIcon, 2) 90 JS_STATIC_METHOD_ENTRY(checkThisBox, 2) 91 JS_STATIC_METHOD_ENTRY(clearItems, 0) 92 JS_STATIC_METHOD_ENTRY(defaultIsChecked, 2) 93 JS_STATIC_METHOD_ENTRY(deleteItemAt, 1) 94 JS_STATIC_METHOD_ENTRY(getArray , 0) 95 JS_STATIC_METHOD_ENTRY(getItemAt, 0) 96 JS_STATIC_METHOD_ENTRY(getLock, 0) 97 JS_STATIC_METHOD_ENTRY(insertItemAt, 0) 98 JS_STATIC_METHOD_ENTRY(isBoxChecked, 1) 99 JS_STATIC_METHOD_ENTRY(isDefaultChecked, 1) 100 JS_STATIC_METHOD_ENTRY(setAction, 2) 101 JS_STATIC_METHOD_ENTRY(setFocus, 0) 102 JS_STATIC_METHOD_ENTRY(setItems, 1) 103 JS_STATIC_METHOD_ENTRY(setLock, 0) 104 JS_STATIC_METHOD_ENTRY(signatureGetModifications, 0) 105 JS_STATIC_METHOD_ENTRY(signatureGetSeedValue, 0) 106 JS_STATIC_METHOD_ENTRY(signatureInfo, 0) 107 JS_STATIC_METHOD_ENTRY(signatureSetSeedValue, 0) 108 JS_STATIC_METHOD_ENTRY(signatureSign, 0) 109 JS_STATIC_METHOD_ENTRY(signatureValidate, 0) 110END_JS_STATIC_METHOD() 111 112IMPLEMENT_JS_CLASS(CJS_Field, Field) 113 114FX_BOOL CJS_Field::InitInstance(IFXJS_Context* cc) 115{ 116 CJS_Context* pContext = (CJS_Context*)cc; 117 ASSERT(pContext != NULL); 118 119 Field* pField = (Field*)GetEmbedObject(); 120 ASSERT(pField != NULL); 121 122 pField->SetIsolate(pContext->GetJSRuntime()->GetIsolate()); 123 124 return TRUE; 125}; 126 127Field::Field(CJS_Object* pJSObject): CJS_EmbedObj(pJSObject), 128 m_pJSDoc(NULL), 129 m_pDocument(NULL), 130 m_nFormControlIndex(-1), 131 m_bCanSet(FALSE), 132 m_bDelay(FALSE), 133 m_isolate(NULL) 134{ 135} 136 137Field::~Field() 138{ 139} 140 141//note: iControlNo = -1, means not a widget. 142void Field::ParseFieldName(const std::wstring &strFieldNameParsed,std::wstring &strFieldName,int & iControlNo) 143{ 144 int iStart = strFieldNameParsed.find_last_of(L'.'); 145 if (iStart == -1) 146 { 147 strFieldName = strFieldNameParsed; 148 iControlNo = -1; 149 return; 150 } 151 std::wstring suffixal = strFieldNameParsed.substr(iStart+1); 152 iControlNo = FXSYS_wtoi((FX_LPCWSTR)suffixal.c_str()); 153 if (iControlNo == 0) 154 { 155 int iStart; 156 while((iStart = suffixal.find_last_of(L" ")) != -1) 157 { 158 suffixal.erase(iStart,1); 159 } 160 161 if (suffixal.compare(L"0") != 0) 162 { 163 strFieldName = strFieldNameParsed; 164 iControlNo = -1; 165 return; 166 } 167 168 } 169 strFieldName = strFieldNameParsed.substr(0,iStart); 170} 171 172FX_BOOL Field::AttachField(Document* pDocument, const CFX_WideString& csFieldName) 173{ 174 ASSERT(pDocument != NULL); 175 m_pJSDoc = pDocument; 176 177 m_pDocument = pDocument->GetReaderDoc(); 178 ASSERT(m_pDocument != NULL); 179 180 m_bCanSet = m_pDocument->GetPermissions(FPDFPERM_FILL_FORM) || 181 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) || 182 m_pDocument->GetPermissions(FPDFPERM_MODIFY); 183 184 CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm(); 185 ASSERT(pRDInterForm != NULL); 186 187 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm(); 188 ASSERT(pInterForm != NULL); 189 190 CFX_WideString swFieldNameTemp = csFieldName; 191 swFieldNameTemp.Replace((FX_LPCWSTR)L"..", (FX_LPCWSTR)L"."); 192 193 if (pInterForm->CountFields(swFieldNameTemp) <= 0) 194 { 195 std::wstring strFieldName; 196 int iControlNo = -1; 197 ParseFieldName((wchar_t*)(FX_LPCWSTR)swFieldNameTemp, strFieldName, iControlNo); 198 if (iControlNo == -1) return FALSE; 199 200 m_FieldName = strFieldName.c_str(); 201 m_nFormControlIndex = iControlNo; 202 return TRUE; 203 } 204 205 m_FieldName = swFieldNameTemp; 206 m_nFormControlIndex = -1; 207 208 return TRUE; 209} 210 211void Field::GetFormFields(CPDFSDK_Document* pDocument, const CFX_WideString& csFieldName, CFX_PtrArray& FieldArray) 212{ 213 ASSERT(pDocument != NULL); 214 215 CPDFSDK_InterForm* pReaderInterForm = pDocument->GetInterForm(); 216 ASSERT(pReaderInterForm != NULL); 217 218 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm(); 219 ASSERT(pInterForm != NULL); 220 221 ASSERT(FieldArray.GetSize() == 0); 222 223 for (int i=0,sz=pInterForm->CountFields(csFieldName); i<sz; i++) 224 { 225 if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName)) 226 FieldArray.Add((void*)pFormField); 227 } 228} 229 230void Field::GetFormFields(const CFX_WideString& csFieldName, CFX_PtrArray& FieldArray) 231{ 232 ASSERT(m_pDocument != NULL); 233 234 Field::GetFormFields(m_pDocument, csFieldName, FieldArray); 235} 236 237void Field::UpdateFormField(CPDFSDK_Document* pDocument, CPDF_FormField* pFormField, 238 FX_BOOL bChangeMark, FX_BOOL bResetAP, FX_BOOL bRefresh) 239{ 240 ASSERT(pDocument != NULL); 241 ASSERT(pFormField != NULL); 242 243 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm(); 244 ASSERT(pInterForm != NULL); 245 246 CFX_PtrArray widgets; 247 pInterForm->GetWidgets(pFormField, widgets); 248 249 if (bResetAP) 250 { 251 int nFieldType = pFormField->GetFieldType(); 252 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD) 253 { 254 for (int i=0,sz=widgets.GetSize(); i<sz; i++) 255 { 256 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i); 257 ASSERT(pWidget != NULL); 258 259 FX_BOOL bFormated = FALSE; 260 CFX_WideString sValue = pWidget->OnFormat(0, bFormated); 261 if (bFormated) 262 pWidget->ResetAppearance(sValue, FALSE); 263 else 264 pWidget->ResetAppearance(NULL, FALSE); 265 } 266 } 267 else 268 { 269 for (int i=0,sz=widgets.GetSize(); i<sz; i++) 270 { 271 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i); 272 ASSERT(pWidget != NULL); 273 274 pWidget->ResetAppearance(NULL, FALSE); 275 } 276 } 277 } 278 279 if (bRefresh) 280 { 281 for (int i=0,sz=widgets.GetSize(); i<sz; i++) 282 { 283 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i); 284 ASSERT(pWidget != NULL); 285 286 CPDFSDK_InterForm * pInterForm = pWidget->GetInterForm(); 287 CPDFSDK_Document* pDoc = pInterForm->GetDocument(); 288// CReader_Page* pPage = pWidget->GetPage(); 289 ASSERT(pDoc != NULL); 290 pDoc->UpdateAllViews(NULL, pWidget); 291 } 292 } 293 294 if (bChangeMark) 295 pDocument->SetChangeMark(); 296} 297 298void Field::UpdateFormControl(CPDFSDK_Document* pDocument, CPDF_FormControl* pFormControl, 299 FX_BOOL bChangeMark, FX_BOOL bResetAP, FX_BOOL bRefresh) 300{ 301 ASSERT(pDocument != NULL); 302 ASSERT(pFormControl != NULL); 303 304 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm(); 305 ASSERT(pInterForm != NULL); 306 307 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl); 308 309 if (pWidget) 310 { 311 if (bResetAP) 312 { 313 int nFieldType = pWidget->GetFieldType(); 314 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD) 315 { 316 FX_BOOL bFormated = FALSE; 317 CFX_WideString sValue = pWidget->OnFormat(0, bFormated); 318 if (bFormated) 319 pWidget->ResetAppearance(sValue, FALSE); 320 else 321 pWidget->ResetAppearance(NULL, FALSE); 322 } 323 else 324 { 325 pWidget->ResetAppearance(NULL, FALSE); 326 } 327 } 328 329 if (bRefresh) 330 { 331 CPDFSDK_InterForm * pInterForm = pWidget->GetInterForm(); 332 CPDFSDK_Document* pDoc = pInterForm->GetDocument(); 333 ASSERT(pDoc != NULL); 334 pDoc->UpdateAllViews(NULL, pWidget); 335 } 336 337 } 338 339 if (bChangeMark) 340 pDocument->SetChangeMark(); 341} 342 343CPDFSDK_Widget* Field::GetWidget(CPDFSDK_Document* pDocument, CPDF_FormControl* pFormControl) 344{ 345 ASSERT(pDocument != NULL); 346 ASSERT(pFormControl != NULL); 347 348 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm(); 349 ASSERT(pInterForm != NULL); 350 351 return pInterForm->GetWidget(pFormControl); 352} 353 354FX_BOOL Field::ValueIsOccur(CPDF_FormField* pFormField, CFX_WideString csOptLabel) 355{ 356 ASSERT(pFormField != NULL); 357 358 for (int i=0,sz = pFormField->CountOptions(); i < sz; i++) 359 { 360 if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0) 361 return TRUE; 362 } 363 364 return FALSE; 365} 366 367CPDF_FormControl* Field::GetSmartFieldControl(CPDF_FormField* pFormField) 368{ 369 ASSERT(pFormField != NULL); 370 if(!pFormField->CountControls() || m_nFormControlIndex>=pFormField->CountControls()) return NULL; 371 372 if (m_nFormControlIndex<0) 373 return pFormField->GetControl(0); 374 else 375 return pFormField->GetControl(m_nFormControlIndex); 376} 377 378/* ---------------------------------------- property ---------------------------------------- */ 379 380FX_BOOL Field::alignment(OBJ_PROP_PARAMS) 381{ 382 ASSERT(m_pDocument != NULL); 383 384 if (vp.IsSetting()) 385 { 386 if (!m_bCanSet) return FALSE; 387 388 CFX_ByteString alignStr; 389 vp >> alignStr; 390 391 if (m_bDelay) 392 { 393 AddDelay_String(FP_ALIGNMENT, alignStr); 394 } 395 else 396 { 397 Field::SetAlignment(m_pDocument, m_FieldName, m_nFormControlIndex, alignStr); 398 } 399 } 400 else 401 { 402 CFX_PtrArray FieldArray; 403 GetFormFields(m_FieldName, FieldArray); 404 if (FieldArray.GetSize() <= 0) return FALSE; 405 406 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 407 ASSERT(pFormField != NULL); 408 409 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 410 return FALSE; 411 412 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 413 if (!pFormControl)return FALSE; 414 415 switch (pFormControl->GetControlAlignment()) 416 { 417 case 1: 418 vp << (FX_LPCWSTR)L"center"; 419 break; 420 case 0: 421 vp << (FX_LPCWSTR)L"left"; 422 break; 423 case 2: 424 vp << (FX_LPCWSTR)L"right"; 425 break; 426 default: 427 vp << (FX_LPCWSTR)L""; 428 } 429 } 430 431 return TRUE; 432} 433 434void Field::SetAlignment(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, 435 const CFX_ByteString& string) 436{ 437 //Not supported. 438} 439 440FX_BOOL Field::borderStyle(OBJ_PROP_PARAMS) 441{ 442 ASSERT(m_pDocument != NULL); 443 444 if (vp.IsSetting()) 445 { 446 if (!m_bCanSet) return FALSE; 447 448 CFX_ByteString strType = ""; 449 vp >> strType; 450 451 if (m_bDelay) 452 { 453 AddDelay_String(FP_BORDERSTYLE, strType); 454 } 455 else 456 { 457 Field::SetBorderStyle(m_pDocument, m_FieldName, m_nFormControlIndex, strType); 458 } 459 } 460 else 461 { 462 CFX_PtrArray FieldArray; 463 GetFormFields(m_FieldName, FieldArray); 464 if (FieldArray.GetSize() <= 0) return FALSE; 465 466 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 467 if (!pFormField) return FALSE; 468 469 CPDFSDK_Widget* pWidget = GetWidget(m_pDocument, GetSmartFieldControl(pFormField)); 470 if (!pWidget) return FALSE; 471 472 int nBorderstyle = pWidget->GetBorderStyle(); 473 474 switch (nBorderstyle) 475 { 476 case BBS_SOLID: 477 vp << (FX_LPCWSTR)L"solid"; 478 break; 479 case BBS_DASH: 480 vp << (FX_LPCWSTR)L"dashed"; 481 break; 482 case BBS_BEVELED: 483 vp << (FX_LPCWSTR)L"beveled"; 484 break; 485 case BBS_INSET: 486 vp << (FX_LPCWSTR)L"inset"; 487 break; 488 case BBS_UNDERLINE: 489 vp << (FX_LPCWSTR)L"underline"; 490 break; 491 default: 492 vp << (FX_LPCWSTR)L""; 493 break; 494 } 495 } 496 497 return TRUE; 498} 499 500void Field::SetBorderStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, 501 const CFX_ByteString& string) 502{ 503 ASSERT(pDocument != NULL); 504 505 int nBorderStyle = 0; 506 507 if (string == "solid") 508 nBorderStyle = BBS_SOLID; 509 else if (string == "beveled") 510 nBorderStyle = BBS_BEVELED; 511 else if (string == "dashed") 512 nBorderStyle = BBS_DASH; 513 else if (string == "inset") 514 nBorderStyle = BBS_INSET; 515 else if (string == "underline") 516 nBorderStyle = BBS_UNDERLINE; 517 else return; 518 519 CFX_PtrArray FieldArray; 520 GetFormFields(pDocument, swFieldName, FieldArray); 521 522 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++) 523 { 524 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i); 525 ASSERT(pFormField != NULL); 526 527 if (nControlIndex < 0) 528 { 529 FX_BOOL bSet = FALSE; 530 for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++) 531 { 532 if (CPDFSDK_Widget* pWidget = GetWidget(pDocument, pFormField->GetControl(j))) 533 { 534 if (pWidget->GetBorderStyle() != nBorderStyle) 535 { 536 pWidget->SetBorderStyle(nBorderStyle); 537 bSet = TRUE; 538 } 539 } 540 } 541 if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE); 542 } 543 else 544 { 545 if(nControlIndex >= pFormField->CountControls()) return; 546 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex)) 547 { 548 if (CPDFSDK_Widget* pWidget = GetWidget(pDocument, pFormControl)) 549 { 550 if (pWidget->GetBorderStyle() != nBorderStyle) 551 { 552 pWidget->SetBorderStyle(nBorderStyle); 553 UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE); 554 } 555 } 556 } 557 } 558 } 559} 560 561FX_BOOL Field::buttonAlignX(OBJ_PROP_PARAMS) 562{ 563 ASSERT(m_pDocument != NULL); 564 565 if (vp.IsSetting()) 566 { 567 if (!m_bCanSet) return FALSE; 568 569 int nVP; 570 vp >> nVP; 571 572 if (m_bDelay) 573 { 574 AddDelay_Int(FP_BUTTONALIGNX, nVP); 575 } 576 else 577 { 578 Field::SetButtonAlignX(m_pDocument, m_FieldName, m_nFormControlIndex, nVP); 579 } 580 } 581 else 582 { 583 CFX_PtrArray FieldArray; 584 GetFormFields(m_FieldName,FieldArray); 585 if (FieldArray.GetSize() <= 0) return FALSE; 586 587 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 588 ASSERT(pFormField != NULL); 589 590 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 591 return FALSE; 592 593 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 594 if (!pFormControl)return FALSE; 595 596 CPDF_IconFit IconFit = pFormControl->GetIconFit(); 597 598 FX_FLOAT fLeft,fBottom; 599 IconFit.GetIconPosition(fLeft,fBottom); 600 601 vp << (FX_INT32)fLeft; 602 } 603 604 return TRUE; 605} 606 607void Field::SetButtonAlignX(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number) 608{ 609 //Not supported. 610} 611 612FX_BOOL Field::buttonAlignY(OBJ_PROP_PARAMS) 613{ 614 ASSERT(m_pDocument != NULL); 615 616 if (vp.IsSetting()) 617 { 618 if (!m_bCanSet) return FALSE; 619 620 int nVP; 621 vp >> nVP; 622 623 if (m_bDelay) 624 { 625 AddDelay_Int(FP_BUTTONALIGNY, nVP); 626 } 627 else 628 { 629 Field::SetButtonAlignY(m_pDocument, m_FieldName, m_nFormControlIndex, nVP); 630 } 631 } 632 else 633 { 634 CFX_PtrArray FieldArray; 635 GetFormFields(m_FieldName,FieldArray); 636 if (FieldArray.GetSize() <= 0) return FALSE; 637 638 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 639 ASSERT(pFormField != NULL); 640 641 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 642 return FALSE; 643 644 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 645 if (!pFormControl)return FALSE; 646 647 CPDF_IconFit IconFit = pFormControl->GetIconFit(); 648 649 FX_FLOAT fLeft,fBottom; 650 IconFit.GetIconPosition(fLeft,fBottom); 651 652 vp << (FX_INT32)fBottom; 653 } 654 655 return TRUE; 656} 657 658void Field::SetButtonAlignY(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number) 659{ 660 //Not supported. 661} 662 663FX_BOOL Field::buttonFitBounds(OBJ_PROP_PARAMS) 664{ 665 ASSERT(m_pDocument != NULL); 666 667 if (vp.IsSetting()) 668 { 669 if (!m_bCanSet) return FALSE; 670 671 bool bVP; 672 vp >> bVP; 673 674 if (m_bDelay) 675 { 676 AddDelay_Bool(FP_BUTTONFITBOUNDS, bVP); 677 } 678 else 679 { 680 Field::SetButtonFitBounds(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 681 } 682 } 683 else 684 { 685 CFX_PtrArray FieldArray; 686 GetFormFields(m_FieldName,FieldArray); 687 if (FieldArray.GetSize() <= 0) return FALSE; 688 689 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 690 ASSERT(pFormField != NULL); 691 692 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 693 return FALSE; 694 695 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 696 if (!pFormControl)return FALSE; 697 698 CPDF_IconFit IconFit = pFormControl->GetIconFit(); 699 vp << IconFit.GetFittingBounds(); 700 } 701 702 return TRUE; 703} 704 705void Field::SetButtonFitBounds(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b) 706{ 707 //Not supported. 708} 709 710FX_BOOL Field::buttonPosition(OBJ_PROP_PARAMS) 711{ 712 ASSERT(m_pDocument != NULL); 713 714 if (vp.IsSetting()) 715 { 716 if (!m_bCanSet) return FALSE; 717 718 int nVP; 719 vp >> nVP; 720 721 if (m_bDelay) 722 { 723 AddDelay_Int(FP_BUTTONPOSITION, nVP); 724 } 725 else 726 { 727 Field::SetButtonPosition(m_pDocument, m_FieldName, m_nFormControlIndex, nVP); 728 } 729 } 730 else 731 { 732 CFX_PtrArray FieldArray; 733 GetFormFields(m_FieldName,FieldArray); 734 if (FieldArray.GetSize() <= 0) return FALSE; 735 736 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 737 ASSERT(pFormField != NULL); 738 739 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 740 return FALSE; 741 742 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 743 if (!pFormControl)return FALSE; 744 745 vp << pFormControl->GetTextPosition(); 746 } 747 return TRUE; 748} 749 750void Field::SetButtonPosition(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number) 751{ 752 //Not supported. 753} 754 755FX_BOOL Field::buttonScaleHow(OBJ_PROP_PARAMS) 756{ 757 ASSERT(m_pDocument != NULL); 758 759 if (vp.IsSetting()) 760 { 761 if (!m_bCanSet) return FALSE; 762 763 int nVP; 764 vp >> nVP; 765 766 if (m_bDelay) 767 { 768 AddDelay_Int(FP_BUTTONSCALEHOW, nVP); 769 } 770 else 771 { 772 Field::SetButtonScaleHow(m_pDocument, m_FieldName, m_nFormControlIndex, nVP); 773 } 774 } 775 else 776 { 777 CFX_PtrArray FieldArray; 778 GetFormFields(m_FieldName, FieldArray); 779 if (FieldArray.GetSize() <= 0) return FALSE; 780 781 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 782 ASSERT(pFormField != NULL); 783 784 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 785 return FALSE; 786 787 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 788 if (!pFormControl)return FALSE; 789 790 CPDF_IconFit IconFit = pFormControl->GetIconFit(); 791 if (IconFit.IsProportionalScale()) 792 vp << (FX_INT32)0; 793 else 794 vp << (FX_INT32)1; 795 } 796 797 return TRUE; 798} 799 800void Field::SetButtonScaleHow(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number) 801{ 802 //Not supported. 803} 804 805FX_BOOL Field::buttonScaleWhen(OBJ_PROP_PARAMS) 806{ 807 ASSERT(m_pDocument != NULL); 808 809 if (vp.IsSetting()) 810 { 811 if (!m_bCanSet) return FALSE; 812 813 int nVP; 814 vp >> nVP; 815 816 if (m_bDelay) 817 { 818 AddDelay_Int(FP_BUTTONSCALEWHEN, nVP); 819 } 820 else 821 { 822 Field::SetButtonScaleWhen(m_pDocument, m_FieldName, m_nFormControlIndex, nVP); 823 } 824 } 825 else 826 { 827 CFX_PtrArray FieldArray; 828 GetFormFields(m_FieldName,FieldArray); 829 if (FieldArray.GetSize() <= 0) return FALSE; 830 831 CPDF_FormField* pFormField = (CPDF_FormField*) FieldArray.ElementAt(0); 832 ASSERT(pFormField != NULL); 833 834 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 835 return FALSE; 836 837 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 838 if (!pFormControl) return FALSE; 839 840 CPDF_IconFit IconFit = pFormControl->GetIconFit(); 841 int ScaleM = IconFit.GetScaleMethod(); 842 switch (ScaleM) 843 { 844 case CPDF_IconFit::Always : 845 vp << (FX_INT32) CPDF_IconFit::Always; 846 break; 847 case CPDF_IconFit::Bigger : 848 vp << (FX_INT32) CPDF_IconFit::Bigger; 849 break; 850 case CPDF_IconFit::Never : 851 vp << (FX_INT32) CPDF_IconFit::Never; 852 break; 853 case CPDF_IconFit::Smaller : 854 vp << (FX_INT32) CPDF_IconFit::Smaller; 855 break; 856 } 857 } 858 859 return TRUE; 860} 861 862void Field::SetButtonScaleWhen(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number) 863{ 864 //Not supported. 865} 866 867FX_BOOL Field::calcOrderIndex(OBJ_PROP_PARAMS) 868{ 869 ASSERT(m_pDocument != NULL); 870 871 if (vp.IsSetting()) 872 { 873 if (!m_bCanSet) return FALSE; 874 875 int nVP; 876 vp >> nVP; 877 878 if (m_bDelay) 879 { 880 AddDelay_Int(FP_CALCORDERINDEX, nVP); 881 } 882 else 883 { 884 Field::SetCalcOrderIndex(m_pDocument, m_FieldName, m_nFormControlIndex, nVP); 885 } 886 } 887 else 888 { 889 CFX_PtrArray FieldArray; 890 GetFormFields(m_FieldName, FieldArray); 891 if (FieldArray.GetSize() <= 0) return FALSE; 892 893 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 894 ASSERT(pFormField != NULL); 895 896 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 897 return FALSE; 898 899 CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm(); 900 ASSERT(pRDInterForm != NULL); 901 902 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm(); 903 ASSERT(pInterForm != NULL); 904 905 vp << (FX_INT32)pInterForm->FindFieldInCalculationOrder(pFormField); 906 } 907 908 return TRUE; 909} 910 911void Field::SetCalcOrderIndex(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number) 912{ 913 //Not supported. 914} 915 916FX_BOOL Field::charLimit(OBJ_PROP_PARAMS) 917{ 918 ASSERT(m_pDocument != NULL); 919 920 if (vp.IsSetting()) 921 { 922 if (!m_bCanSet) return FALSE; 923 924 int nVP; 925 vp >> nVP; 926 927 if (m_bDelay) 928 { 929 AddDelay_Int(FP_CHARLIMIT, nVP); 930 } 931 else 932 { 933 Field::SetCharLimit(m_pDocument, m_FieldName, m_nFormControlIndex, nVP); 934 } 935 } 936 else 937 { 938 CFX_PtrArray FieldArray; 939 GetFormFields(m_FieldName, FieldArray); 940 if (FieldArray.GetSize() <= 0) return FALSE; 941 942 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 943 ASSERT(pFormField != NULL); 944 945 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 946 return FALSE; 947 948 vp << (FX_INT32)pFormField->GetMaxLen(); 949 } 950 return TRUE; 951} 952 953void Field::SetCharLimit(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number) 954{ 955 //Not supported. 956} 957 958FX_BOOL Field::comb(OBJ_PROP_PARAMS) 959{ 960 ASSERT(m_pDocument != NULL); 961 962 if (vp.IsSetting()) 963 { 964 if (!m_bCanSet) return FALSE; 965 966 bool bVP; 967 vp >> bVP; 968 969 if (m_bDelay) 970 { 971 AddDelay_Bool(FP_COMB, bVP); 972 } 973 else 974 { 975 Field::SetComb(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 976 } 977 } 978 else 979 { 980 CFX_PtrArray FieldArray; 981 GetFormFields(m_FieldName,FieldArray); 982 if (FieldArray.GetSize() <= 0) return FALSE; 983 984 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 985 ASSERT(pFormField != NULL); 986 987 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 988 return FALSE; 989 990 if (pFormField->GetFieldFlags() & FIELDFLAG_COMB) 991 vp << true; 992 else 993 vp << false; 994 } 995 996 return TRUE; 997} 998 999void Field::SetComb(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b) 1000{ 1001 //Not supported. 1002} 1003 1004FX_BOOL Field::commitOnSelChange(OBJ_PROP_PARAMS) 1005{ 1006 ASSERT(m_pDocument != NULL); 1007 1008 if (vp.IsSetting()) 1009 { 1010 if (!m_bCanSet) return FALSE; 1011 1012 bool bVP; 1013 vp >> bVP; 1014 1015 if (m_bDelay) 1016 { 1017 AddDelay_Bool(FP_COMMITONSELCHANGE, bVP); 1018 } 1019 else 1020 { 1021 Field::SetCommitOnSelChange(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 1022 } 1023 } 1024 else 1025 { 1026 CFX_PtrArray FieldArray; 1027 GetFormFields(m_FieldName,FieldArray); 1028 if (FieldArray.GetSize() <= 0) return FALSE; 1029 1030 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1031 ASSERT(pFormField != NULL); 1032 1033 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_LISTBOX) 1034 return FALSE; 1035 1036 if (pFormField->GetFieldFlags() & FIELDFLAG_COMMITONSELCHANGE) 1037 vp << true; 1038 else 1039 vp << false; 1040 } 1041 1042 return TRUE; 1043} 1044 1045void Field::SetCommitOnSelChange(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b) 1046{ 1047 //Not supported. 1048} 1049 1050FX_BOOL Field::currentValueIndices(OBJ_PROP_PARAMS) 1051{ 1052 ASSERT(m_pDocument != NULL); 1053 1054 if (vp.IsSetting()) 1055 { 1056 if (!m_bCanSet) return FALSE; 1057 1058 CFX_DWordArray array; 1059 1060 if (vp.GetType() == VT_number) 1061 { 1062 int iSelecting = 0; 1063 vp >> iSelecting; 1064 array.Add(iSelecting); 1065 } 1066 else if (vp.IsArrayObject()) 1067 { 1068 CJS_Array SelArray(m_isolate); 1069 CJS_Value SelValue(m_isolate); 1070 int iSelecting; 1071 vp >> SelArray; 1072 for (int i=0,sz=SelArray.GetLength(); i<sz; i++) 1073 { 1074 SelArray.GetElement(i,SelValue); 1075 iSelecting = (FX_INT32)SelValue; 1076 array.Add(iSelecting); 1077 } 1078 } 1079 1080 if (m_bDelay) 1081 { 1082 AddDelay_WordArray(FP_CURRENTVALUEINDICES, array); 1083 } 1084 else 1085 { 1086 Field::SetCurrentValueIndices(m_pDocument, m_FieldName, m_nFormControlIndex, array); 1087 } 1088 } 1089 else 1090 { 1091 CFX_PtrArray FieldArray; 1092 GetFormFields(m_FieldName,FieldArray); 1093 if (FieldArray.GetSize() <= 0) return FALSE; 1094 1095 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1096 ASSERT(pFormField != NULL); 1097 1098 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_LISTBOX) 1099 return FALSE; 1100 1101 if (pFormField->CountSelectedItems() == 1) 1102 vp << pFormField->GetSelectedIndex(0); 1103 else if (pFormField->CountSelectedItems() > 1) 1104 { 1105 CJS_Array SelArray(m_isolate); 1106 for (int i=0,sz=pFormField->CountSelectedItems(); i<sz; i++) 1107 { 1108 SelArray.SetElement(i, CJS_Value(m_isolate,pFormField->GetSelectedIndex(i))); 1109 } 1110 vp << SelArray; 1111 } 1112 else 1113 vp << -1; 1114 } 1115 1116 return TRUE; 1117} 1118 1119void Field::SetCurrentValueIndices(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, 1120 const CFX_DWordArray& array) 1121{ 1122 ASSERT(pDocument != NULL); 1123 1124 CFX_PtrArray FieldArray; 1125 GetFormFields(pDocument, swFieldName, FieldArray); 1126 1127 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++) 1128 { 1129 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i); 1130 ASSERT(pFormField != NULL); 1131 1132 int nFieldType = pFormField->GetFieldType(); 1133 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_LISTBOX) 1134 { 1135 FX_DWORD dwFieldFlags = pFormField->GetFieldFlags(); 1136 pFormField->ClearSelection(TRUE); 1137 1138 for (int i=0,sz=array.GetSize(); i<sz; i++) 1139 { 1140 if (i>0 && !(dwFieldFlags & (1<<21))) 1141 { 1142 break; 1143 } 1144 1145 int iSelecting = (FX_INT32)array.GetAt(i); 1146 if (iSelecting < pFormField->CountOptions() && !pFormField->IsItemSelected(iSelecting)) 1147 pFormField->SetItemSelection(iSelecting, TRUE); 1148 1149 } 1150 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE); 1151 } 1152 } 1153} 1154 1155FX_BOOL Field::defaultStyle(OBJ_PROP_PARAMS) 1156{ 1157 // MQG sError = JSGetStringFromID(IDS_STRING_NOTSUPPORT); 1158 return FALSE; 1159 1160 if (vp.IsSetting()) 1161 { 1162 if (!m_bCanSet) return FALSE; 1163 1164 ; 1165 } 1166 else 1167 { 1168 ; 1169 } 1170 return TRUE; 1171} 1172 1173void Field::SetDefaultStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex) 1174{ 1175 //Not supported. 1176} 1177 1178FX_BOOL Field::defaultValue(OBJ_PROP_PARAMS) 1179{ 1180 ASSERT(m_pDocument != NULL); 1181 1182 if (vp.IsSetting()) 1183 { 1184 if (!m_bCanSet) return FALSE; 1185 1186 CFX_WideString WideStr; 1187 vp >> WideStr; 1188 1189 if (m_bDelay) 1190 { 1191 AddDelay_WideString(FP_DEFAULTVALUE, WideStr); 1192 } 1193 else 1194 { 1195 Field::SetDefaultValue(m_pDocument, m_FieldName, m_nFormControlIndex, WideStr); 1196 } 1197 } 1198 else 1199 { 1200 CFX_PtrArray FieldArray; 1201 GetFormFields(m_FieldName,FieldArray); 1202 if (FieldArray.GetSize() <= 0) return FALSE; 1203 1204 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1205 ASSERT(pFormField != NULL); 1206 1207 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON || 1208 pFormField->GetFieldType() == FIELDTYPE_SIGNATURE) 1209 return FALSE; 1210 1211 vp << pFormField->GetDefaultValue(); 1212 } 1213 return TRUE; 1214} 1215 1216void Field::SetDefaultValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, 1217 const CFX_WideString& string) 1218{ 1219 //Not supported. 1220} 1221 1222FX_BOOL Field::doNotScroll(OBJ_PROP_PARAMS) 1223{ 1224 ASSERT(m_pDocument != NULL); 1225 1226 if (vp.IsSetting()) 1227 { 1228 if (!m_bCanSet) return FALSE; 1229 1230 bool bVP; 1231 vp >> bVP; 1232 1233 if (m_bDelay) 1234 { 1235 AddDelay_Bool(FP_DONOTSCROLL, bVP); 1236 } 1237 else 1238 { 1239 Field::SetDoNotScroll(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 1240 } 1241 } 1242 else 1243 { 1244 CFX_PtrArray FieldArray; 1245 GetFormFields(m_FieldName,FieldArray); 1246 if (FieldArray.GetSize() <= 0) return FALSE; 1247 1248 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1249 ASSERT(pFormField != NULL); 1250 1251 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 1252 return FALSE; 1253 1254 if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSCROLL) 1255 vp << true; 1256 else 1257 vp << false; 1258 } 1259 1260 return TRUE; 1261} 1262 1263void Field::SetDoNotScroll(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b) 1264{ 1265 //Not supported. 1266} 1267 1268FX_BOOL Field::doNotSpellCheck(OBJ_PROP_PARAMS) 1269{ 1270 ASSERT(m_pDocument != NULL); 1271 1272 if (vp.IsSetting()) 1273 { 1274 if (!m_bCanSet) return FALSE; 1275 1276 bool bVP; 1277 vp >> bVP; 1278 } 1279 else 1280 { 1281 CFX_PtrArray FieldArray; 1282 GetFormFields(m_FieldName,FieldArray); 1283 if (FieldArray.GetSize() <= 0) return FALSE; 1284 1285 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1286 ASSERT(pFormField != NULL); 1287 1288 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD && 1289 pFormField->GetFieldType() != FIELDTYPE_COMBOBOX) 1290 return FALSE; 1291 1292 if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSPELLCHECK) 1293 vp << true; 1294 else 1295 vp << false; 1296 } 1297 1298 return TRUE; 1299} 1300 1301void Field::SetDelay(FX_BOOL bDelay) 1302{ 1303 m_bDelay = bDelay; 1304 1305 if (!m_bDelay) 1306 { 1307 if (m_pJSDoc) 1308 m_pJSDoc->DoFieldDelay(m_FieldName, m_nFormControlIndex); 1309 } 1310} 1311 1312FX_BOOL Field::delay(OBJ_PROP_PARAMS) 1313{ 1314 if (vp.IsSetting()) 1315 { 1316 if (!m_bCanSet) return FALSE; 1317 1318 bool bVP; 1319 vp >> bVP; 1320 1321 SetDelay(bVP); 1322 } 1323 else 1324 { 1325 vp << m_bDelay; 1326 } 1327 return TRUE; 1328} 1329 1330FX_BOOL Field::display(OBJ_PROP_PARAMS) 1331{ 1332 ASSERT(m_pDocument != NULL); 1333 1334 if (vp.IsSetting()) 1335 { 1336 if (!m_bCanSet) return FALSE; 1337 1338 int nVP; 1339 vp >> nVP; 1340 1341 if (m_bDelay) 1342 { 1343 AddDelay_Int(FP_DISPLAY, nVP); 1344 } 1345 else 1346 { 1347 Field::SetDisplay(m_pDocument, m_FieldName, m_nFormControlIndex, nVP); 1348 } 1349 } 1350 else 1351 { 1352 CFX_PtrArray FieldArray; 1353 GetFormFields(m_FieldName,FieldArray); 1354 if (FieldArray.GetSize() <= 0) return FALSE; 1355 1356 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1357 ASSERT(pFormField != NULL); 1358 1359 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); 1360 ASSERT(pInterForm != NULL); 1361 1362 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField)); 1363 if (!pWidget)return FALSE; 1364 1365 FX_DWORD dwFlag = pWidget->GetFlags(); 1366 1367 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag) 1368 { 1369 vp << (FX_INT32)1; 1370 } 1371 else 1372 { 1373 if (ANNOTFLAG_PRINT & dwFlag) 1374 { 1375 if (ANNOTFLAG_NOVIEW & dwFlag) 1376 { 1377 vp << (FX_INT32)3; 1378 } 1379 else 1380 { 1381 vp << (FX_INT32)0; 1382 } 1383 } 1384 else 1385 { 1386 vp << (FX_INT32)2; 1387 } 1388 } 1389 } 1390 1391 return TRUE; 1392} 1393 1394void Field::SetDisplay(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number) 1395{ 1396 ASSERT(pDocument != NULL); 1397 1398 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm(); 1399 ASSERT(pInterForm != NULL); 1400 1401 CFX_PtrArray FieldArray; 1402 GetFormFields(pDocument, swFieldName, FieldArray); 1403 1404 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++) 1405 { 1406 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i); 1407 ASSERT(pFormField != NULL); 1408 1409 if (nControlIndex < 0) 1410 { 1411 FX_BOOL bSet = FALSE; 1412 for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++) 1413 { 1414 CPDF_FormControl* pFormControl = pFormField->GetControl(j); 1415 ASSERT(pFormControl != NULL); 1416 1417 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) 1418 { 1419 FX_DWORD dwFlag = pWidget->GetFlags(); 1420 switch (number) 1421 { 1422 case 0: 1423 dwFlag &= (~ANNOTFLAG_INVISIBLE); 1424 dwFlag &= (~ANNOTFLAG_HIDDEN); 1425 dwFlag &= (~ANNOTFLAG_NOVIEW); 1426 dwFlag |= ANNOTFLAG_PRINT; 1427 break; 1428 case 1: 1429 dwFlag &= (~ANNOTFLAG_INVISIBLE); 1430 dwFlag &= (~ANNOTFLAG_NOVIEW); 1431 dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT); 1432 break; 1433 case 2: 1434 dwFlag &= (~ANNOTFLAG_INVISIBLE); 1435 dwFlag &= (~ANNOTFLAG_PRINT); 1436 dwFlag &= (~ANNOTFLAG_HIDDEN); 1437 dwFlag &= (~ANNOTFLAG_NOVIEW); 1438 break; 1439 case 3: 1440 dwFlag |= ANNOTFLAG_NOVIEW; 1441 dwFlag |= ANNOTFLAG_PRINT; 1442 dwFlag &= (~ANNOTFLAG_HIDDEN); 1443 break; 1444 } 1445 1446 if (dwFlag != pWidget->GetFlags()) 1447 { 1448 pWidget->SetFlags(dwFlag); 1449 bSet = TRUE; 1450 } 1451 } 1452 } 1453 1454 if (bSet) UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); 1455 } 1456 else 1457 { 1458 if(nControlIndex >= pFormField->CountControls()) return; 1459 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex)) 1460 { 1461 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) 1462 { 1463 1464 FX_DWORD dwFlag = pWidget->GetFlags(); 1465 switch (number) 1466 { 1467 case 0: 1468 dwFlag &= (~ANNOTFLAG_INVISIBLE); 1469 dwFlag &= (~ANNOTFLAG_HIDDEN); 1470 dwFlag &= (~ANNOTFLAG_NOVIEW); 1471 dwFlag |= ANNOTFLAG_PRINT; 1472 break; 1473 case 1: 1474 dwFlag &= (~ANNOTFLAG_INVISIBLE); 1475 dwFlag &= (~ANNOTFLAG_NOVIEW); 1476 dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT); 1477 break; 1478 case 2: 1479 dwFlag &= (~ANNOTFLAG_INVISIBLE); 1480 dwFlag &= (~ANNOTFLAG_PRINT); 1481 dwFlag &= (~ANNOTFLAG_HIDDEN); 1482 dwFlag &= (~ANNOTFLAG_NOVIEW); 1483 break; 1484 case 3: 1485 dwFlag |= ANNOTFLAG_NOVIEW; 1486 dwFlag |= ANNOTFLAG_PRINT; 1487 dwFlag &= (~ANNOTFLAG_HIDDEN); 1488 break; 1489 } 1490 if (dwFlag != pWidget->GetFlags()) 1491 { 1492 pWidget->SetFlags(dwFlag); 1493 UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE); 1494 } 1495 } 1496 } 1497 } 1498 } 1499} 1500 1501FX_BOOL Field::doc(OBJ_PROP_PARAMS) 1502{ 1503 ASSERT(m_pJSDoc != NULL); 1504 1505 if (!vp.IsGetting())return FALSE; 1506 1507 vp << (CJS_Object*)(*m_pJSDoc); 1508 1509 return TRUE; 1510} 1511 1512FX_BOOL Field::editable(OBJ_PROP_PARAMS) 1513{ 1514 ASSERT(m_pDocument != NULL); 1515 1516 if (vp.IsSetting()) 1517 { 1518 if (!m_bCanSet) return FALSE; 1519 1520 bool bVP; 1521 vp >> bVP; 1522 1523 } 1524 else 1525 { 1526 CFX_PtrArray FieldArray; 1527 GetFormFields(m_FieldName, FieldArray); 1528 if (FieldArray.GetSize() <= 0) return FALSE; 1529 1530 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1531 ASSERT(pFormField != NULL); 1532 1533 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX) 1534 return FALSE; 1535 1536 if (pFormField->GetFieldFlags() & FIELDFLAG_EDIT) 1537 vp << true; 1538 else 1539 vp << false; 1540 } 1541 1542 return TRUE; 1543} 1544 1545FX_BOOL Field::exportValues(OBJ_PROP_PARAMS) 1546{ 1547 ASSERT(m_pDocument != NULL); 1548 1549 CFX_PtrArray FieldArray; 1550 GetFormFields(m_FieldName,FieldArray); 1551 if (FieldArray.GetSize() <= 0) return FALSE; 1552 1553 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1554 ASSERT(pFormField != NULL); 1555 1556 if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX && 1557 pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON) 1558 return FALSE; 1559 1560 if (vp.IsSetting()) 1561 { 1562 if (!m_bCanSet) return FALSE; 1563 if (!vp.IsArrayObject())return FALSE; 1564 } 1565 else 1566 { 1567 CJS_Array ExportValusArray(m_isolate); 1568 1569 if (m_nFormControlIndex < 0) 1570 { 1571 for (int i=0,sz=pFormField->CountControls(); i<sz; i++) 1572 { 1573 CPDF_FormControl* pFormControl = pFormField->GetControl(i); 1574 ASSERT(pFormControl != NULL); 1575 1576 ExportValusArray.SetElement(i, CJS_Value(m_isolate,(FX_LPCWSTR)pFormControl->GetExportValue())); 1577 } 1578 } 1579 else 1580 { 1581 if(m_nFormControlIndex >= pFormField->CountControls()) return FALSE; 1582 CPDF_FormControl* pFormControl = pFormField->GetControl(m_nFormControlIndex); 1583 if (!pFormControl) return FALSE; 1584 1585 ExportValusArray.SetElement(0, CJS_Value(m_isolate,(FX_LPCWSTR)pFormControl->GetExportValue())); 1586 } 1587 1588 vp << ExportValusArray; 1589 } 1590 1591 return TRUE; 1592} 1593 1594FX_BOOL Field::fileSelect(OBJ_PROP_PARAMS) 1595{ 1596 ASSERT(m_pDocument != NULL); 1597 1598 CFX_PtrArray FieldArray; 1599 GetFormFields(m_FieldName, FieldArray); 1600 if (FieldArray.GetSize() <= 0) return FALSE; 1601 1602 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1603 ASSERT(pFormField != NULL); 1604 1605 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 1606 return FALSE; 1607 1608 if (vp.IsSetting()) 1609 { 1610 if (!m_bCanSet) return FALSE; 1611 1612 bool bVP; 1613 vp >> bVP; 1614 1615 } 1616 else 1617 { 1618 if (pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT) 1619 vp << true; 1620 else 1621 vp << false; 1622 } 1623 1624 return TRUE; 1625} 1626 1627FX_BOOL Field::fillColor(OBJ_PROP_PARAMS) 1628{ 1629 ASSERT(m_pDocument != NULL); 1630 1631 CJS_Array crArray(m_isolate); 1632 1633 CFX_PtrArray FieldArray; 1634 GetFormFields(m_FieldName,FieldArray); 1635 if (FieldArray.GetSize() <= 0) return FALSE; 1636 1637 if (vp.IsSetting()) 1638 { 1639 if (!m_bCanSet) return FALSE; 1640 if (!vp.IsArrayObject()) return FALSE; 1641 1642 vp >> crArray; 1643 1644 CPWL_Color color; 1645 color::ConvertArrayToPWLColor(crArray, color); 1646 1647 if (m_bDelay) 1648 { 1649 AddDelay_Color(FP_FILLCOLOR, color); 1650 } 1651 else 1652 { 1653 Field::SetFillColor(m_pDocument, m_FieldName, m_nFormControlIndex, color); 1654 } 1655 } 1656 else 1657 { 1658 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1659 ASSERT(pFormField != NULL); 1660 1661 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 1662 if (!pFormControl)return FALSE; 1663 1664 int iColorType; 1665 pFormControl->GetBackgroundColor(iColorType); 1666 1667 CPWL_Color color; 1668 1669 if (iColorType == COLORTYPE_TRANSPARENT) 1670 { 1671 color = CPWL_Color(COLORTYPE_TRANSPARENT); 1672 } 1673 else if (iColorType == COLORTYPE_GRAY) 1674 { 1675 color = CPWL_Color(COLORTYPE_GRAY, pFormControl->GetOriginalBackgroundColor(0)); 1676 } 1677 else if (iColorType == COLORTYPE_RGB) 1678 { 1679 color = CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBackgroundColor(0), 1680 pFormControl->GetOriginalBackgroundColor(1), 1681 pFormControl->GetOriginalBackgroundColor(2)); 1682 } 1683 else if (iColorType == COLORTYPE_CMYK) 1684 { 1685 color = CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBackgroundColor(0), 1686 pFormControl->GetOriginalBackgroundColor(1), 1687 pFormControl->GetOriginalBackgroundColor(2), 1688 pFormControl->GetOriginalBackgroundColor(3)); 1689 } 1690 else 1691 return FALSE; 1692 1693 color::ConvertPWLColorToArray(color, crArray); 1694 vp << crArray; 1695 } 1696 1697 return TRUE; 1698} 1699 1700void Field::SetFillColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color) 1701{ 1702 //Not supported. 1703} 1704 1705FX_BOOL Field::hidden(OBJ_PROP_PARAMS) 1706{ 1707 ASSERT(m_pDocument != NULL); 1708 1709 if (vp.IsSetting()) 1710 { 1711 if (!m_bCanSet) return FALSE; 1712 1713 bool bVP; 1714 vp >> bVP; 1715 1716 if (m_bDelay) 1717 { 1718 AddDelay_Bool(FP_HIDDEN, bVP); 1719 } 1720 else 1721 { 1722 Field::SetHidden(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 1723 } 1724 } 1725 else 1726 { 1727 CFX_PtrArray FieldArray; 1728 GetFormFields(m_FieldName,FieldArray); 1729 if (FieldArray.GetSize() <= 0) return FALSE; 1730 1731 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1732 ASSERT(pFormField != NULL); 1733 1734 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); 1735 ASSERT(pInterForm != NULL); 1736 1737 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField)); 1738 if (!pWidget) return FALSE; 1739 1740 FX_DWORD dwFlags = pWidget->GetFlags(); 1741 1742 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags) 1743 { 1744 vp << true; 1745 } 1746 else 1747 vp << false; 1748 } 1749 1750 return TRUE; 1751} 1752 1753void Field::SetHidden(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b) 1754{ 1755 ASSERT(pDocument != NULL); 1756 1757 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm(); 1758 ASSERT(pInterForm != NULL); 1759 1760 CFX_PtrArray FieldArray; 1761 GetFormFields(pDocument, swFieldName, FieldArray); 1762 1763 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++) 1764 { 1765 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i); 1766 ASSERT(pFormField != NULL); 1767 1768 if (nControlIndex < 0) 1769 { 1770 FX_BOOL bSet = FALSE; 1771 for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++) 1772 { 1773 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(j))) 1774 { 1775 FX_DWORD dwFlags = pWidget->GetFlags(); 1776 1777 if (b) 1778 { 1779 dwFlags &= (~ANNOTFLAG_INVISIBLE); 1780 dwFlags &= (~ANNOTFLAG_NOVIEW); 1781 dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT); 1782 } 1783 else 1784 { 1785 dwFlags &= (~ANNOTFLAG_INVISIBLE); 1786 dwFlags &= (~ANNOTFLAG_HIDDEN); 1787 dwFlags &= (~ANNOTFLAG_NOVIEW); 1788 dwFlags |= ANNOTFLAG_PRINT; 1789 } 1790 1791 if (dwFlags != pWidget->GetFlags()) 1792 { 1793 pWidget->SetFlags(dwFlags); 1794 bSet = TRUE; 1795 } 1796 } 1797 } 1798 1799 if (bSet) 1800 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); 1801 } 1802 else 1803 { 1804 if(nControlIndex >= pFormField->CountControls()) return; 1805 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex)) 1806 { 1807 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) 1808 { 1809 FX_DWORD dwFlags = pWidget->GetFlags(); 1810 1811 if (b) 1812 { 1813 dwFlags &= (~ANNOTFLAG_INVISIBLE); 1814 dwFlags &= (~ANNOTFLAG_NOVIEW); 1815 dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT); 1816 } 1817 else 1818 { 1819 dwFlags &= (~ANNOTFLAG_INVISIBLE); 1820 dwFlags &= (~ANNOTFLAG_HIDDEN); 1821 dwFlags &= (~ANNOTFLAG_NOVIEW); 1822 dwFlags |= ANNOTFLAG_PRINT; 1823 } 1824 1825 if (dwFlags != pWidget->GetFlags()) 1826 { 1827 pWidget->SetFlags(dwFlags); 1828 UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE); 1829 } 1830 } 1831 } 1832 } 1833 } 1834} 1835 1836FX_BOOL Field::highlight(OBJ_PROP_PARAMS) 1837{ 1838 ASSERT(m_pDocument != NULL); 1839 1840 if (vp.IsSetting()) 1841 { 1842 if (!m_bCanSet) return FALSE; 1843 1844 CFX_ByteString strMode; 1845 vp >> strMode; 1846 1847 if (m_bDelay) 1848 { 1849 AddDelay_String(FP_HIGHLIGHT, strMode); 1850 } 1851 else 1852 { 1853 Field::SetHighlight(m_pDocument, m_FieldName, m_nFormControlIndex, strMode); 1854 } 1855 } 1856 else 1857 { 1858 CFX_PtrArray FieldArray; 1859 GetFormFields(m_FieldName,FieldArray); 1860 if (FieldArray.GetSize() <= 0) return FALSE; 1861 1862 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1863 ASSERT(pFormField != NULL); 1864 1865 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 1866 return FALSE; 1867 1868 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 1869 if (!pFormControl) return FALSE; 1870 1871 int eHM = pFormControl->GetHighlightingMode(); 1872 switch (eHM) 1873 { 1874 case CPDF_FormControl::None: 1875 vp << (FX_LPCWSTR)L"none"; 1876 break; 1877 case CPDF_FormControl::Push: 1878 vp << (FX_LPCWSTR)L"push"; 1879 break; 1880 case CPDF_FormControl::Invert: 1881 vp << (FX_LPCWSTR)L"invert"; 1882 break; 1883 case CPDF_FormControl::Outline: 1884 vp << (FX_LPCWSTR)L"outline"; 1885 break; 1886 case CPDF_FormControl::Toggle: 1887 vp << (FX_LPCWSTR)L"toggle"; 1888 break; 1889 } 1890 } 1891 1892 return TRUE; 1893} 1894 1895void Field::SetHighlight(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string) 1896{ 1897 //Not supported. 1898} 1899 1900FX_BOOL Field::lineWidth(OBJ_PROP_PARAMS) 1901{ 1902 ASSERT(m_pDocument != NULL); 1903 1904 if (vp.IsSetting()) 1905 { 1906 if (!m_bCanSet) return FALSE; 1907 1908 int iWidth; 1909 vp >> iWidth; 1910 1911 if (m_bDelay) 1912 { 1913 AddDelay_Int(FP_LINEWIDTH, iWidth); 1914 } 1915 else 1916 { 1917 Field::SetLineWidth(m_pDocument, m_FieldName, m_nFormControlIndex, iWidth); 1918 } 1919 } 1920 else 1921 { 1922 CFX_PtrArray FieldArray; 1923 GetFormFields(m_FieldName,FieldArray); 1924 if (FieldArray.GetSize() <= 0) return FALSE; 1925 1926 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 1927 ASSERT(pFormField != NULL); 1928 1929 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 1930 if (!pFormControl) return FALSE; 1931 1932 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); 1933 ASSERT(pInterForm != NULL); 1934 1935 if(!pFormField->CountControls()) return FALSE; 1936 1937 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(0)); 1938 if (!pWidget) return FALSE; 1939 1940 vp << (FX_INT32)pWidget->GetBorderWidth(); 1941 } 1942 1943 return TRUE; 1944} 1945 1946void Field::SetLineWidth(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number) 1947{ 1948 ASSERT(pDocument != NULL); 1949 1950 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm(); 1951 ASSERT(pInterForm != NULL); 1952 1953 CFX_PtrArray FieldArray; 1954 GetFormFields(pDocument, swFieldName, FieldArray); 1955 1956 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++) 1957 { 1958 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i); 1959 ASSERT(pFormField != NULL); 1960 1961 if (nControlIndex < 0) 1962 { 1963 FX_BOOL bSet = FALSE; 1964 for (int j=0,jsz=pFormField->CountControls(); j<jsz; j++) 1965 { 1966 CPDF_FormControl* pFormControl = pFormField->GetControl(j); 1967 ASSERT(pFormControl != NULL); 1968 1969 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) 1970 { 1971 if (number != pWidget->GetBorderWidth()) 1972 { 1973 pWidget->SetBorderWidth(number); 1974 bSet = TRUE; 1975 } 1976 } 1977 } 1978 if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE); 1979 } 1980 else 1981 { 1982 if(nControlIndex >= pFormField->CountControls()) return; 1983 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex)) 1984 { 1985 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) 1986 { 1987 if (number != pWidget->GetBorderWidth()) 1988 { 1989 pWidget->SetBorderWidth(number); 1990 UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE); 1991 } 1992 } 1993 } 1994 } 1995 } 1996} 1997 1998FX_BOOL Field::multiline(OBJ_PROP_PARAMS) 1999{ 2000 ASSERT(m_pDocument != NULL); 2001 2002 if (vp.IsSetting()) 2003 { 2004 if (!m_bCanSet) return FALSE; 2005 2006 bool bVP; 2007 vp >> bVP; 2008 2009 if (m_bDelay) 2010 { 2011 AddDelay_Bool(FP_MULTILINE, bVP); 2012 } 2013 else 2014 { 2015 Field::SetMultiline(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 2016 } 2017 } 2018 else 2019 { 2020 CFX_PtrArray FieldArray; 2021 GetFormFields(m_FieldName, FieldArray); 2022 if (FieldArray.GetSize() <= 0) return FALSE; 2023 2024 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2025 ASSERT(pFormField != NULL); 2026 2027 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 2028 return FALSE; 2029 2030 if (pFormField->GetFieldFlags() & FIELDFLAG_MULTILINE) 2031 vp << true; 2032 else 2033 vp << false; 2034 } 2035 2036 return TRUE; 2037} 2038 2039void Field::SetMultiline(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b) 2040{ 2041 //Not supported. 2042} 2043 2044FX_BOOL Field::multipleSelection(OBJ_PROP_PARAMS) 2045{ 2046 ASSERT(m_pDocument != NULL); 2047 2048 if (vp.IsSetting()) 2049 { 2050 if (!m_bCanSet) return FALSE; 2051 2052 bool bVP; 2053 vp >> bVP; 2054 2055 if (m_bDelay) 2056 { 2057 AddDelay_Bool(FP_MULTIPLESELECTION, bVP); 2058 } 2059 else 2060 { 2061 Field::SetMultipleSelection(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 2062 } 2063 } 2064 else 2065 { 2066 CFX_PtrArray FieldArray; 2067 GetFormFields(m_FieldName,FieldArray); 2068 if (FieldArray.GetSize() <= 0) return FALSE; 2069 2070 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2071 ASSERT(pFormField != NULL); 2072 2073 if (pFormField->GetFieldType() != FIELDTYPE_LISTBOX) 2074 return FALSE; 2075 2076 if (pFormField->GetFieldFlags() & FIELDFLAG_MULTISELECT) 2077 vp << true; 2078 else 2079 vp << false; 2080 } 2081 2082 return TRUE; 2083} 2084 2085void Field::SetMultipleSelection(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b) 2086{ 2087 //Not supported. 2088} 2089 2090FX_BOOL Field::name(OBJ_PROP_PARAMS) 2091{ 2092 if (!vp.IsGetting()) return FALSE; 2093 2094 CFX_PtrArray FieldArray; 2095 GetFormFields(m_FieldName, FieldArray); 2096 if (FieldArray.GetSize() <= 0) return FALSE; 2097 2098 vp << m_FieldName; 2099 2100 return TRUE; 2101} 2102 2103FX_BOOL Field::numItems(OBJ_PROP_PARAMS) 2104{ 2105 CFX_PtrArray FieldArray; 2106 GetFormFields(m_FieldName, FieldArray); 2107 if (FieldArray.GetSize() <= 0) return FALSE; 2108 2109 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2110 ASSERT(pFormField != NULL); 2111 2112 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && 2113 pFormField->GetFieldType() != FIELDTYPE_LISTBOX) 2114 return FALSE; 2115 2116 if (!vp.IsGetting()) return FALSE; 2117 2118 vp << (FX_INT32)pFormField->CountOptions(); 2119 2120 return TRUE; 2121} 2122 2123FX_BOOL Field::page(OBJ_PROP_PARAMS) 2124{ 2125 if (!vp.IsGetting()) return FALSE; 2126 2127 CFX_PtrArray FieldArray; 2128 GetFormFields(m_FieldName, FieldArray); 2129 if (FieldArray.GetSize() <= 0) return FALSE; 2130 2131 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2132 if (!pFormField) return FALSE; 2133 2134 ASSERT(m_pDocument != NULL); 2135 2136 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); 2137 ASSERT(pInterForm != NULL); 2138 2139 CFX_PtrArray widgetArray; 2140 pInterForm->GetWidgets(pFormField, widgetArray); 2141 2142 if (widgetArray.GetSize() > 0) 2143 { 2144 CJS_Array PageArray(m_isolate); 2145 2146 for (int i=0,sz=widgetArray.GetSize(); i<sz; i++) 2147 { 2148 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgetArray.GetAt(i); 2149 ASSERT(pWidget != NULL); 2150 2151 CPDFSDK_PageView* pPageView = pWidget->GetPageView(); 2152 if(!pPageView) 2153 return FALSE; 2154 2155 PageArray.SetElement(i, CJS_Value(m_isolate,(FX_INT32)pPageView->GetPageIndex())); 2156 } 2157 2158 vp << PageArray; 2159 } 2160 else 2161 { 2162 vp << (FX_INT32) -1; 2163 } 2164 2165 return TRUE; 2166} 2167 2168FX_BOOL Field::password(OBJ_PROP_PARAMS) 2169{ 2170 ASSERT(m_pDocument != NULL); 2171 2172 if (vp.IsSetting()) 2173 { 2174 if (!m_bCanSet) return FALSE; 2175 2176 bool bVP; 2177 vp >> bVP; 2178 2179 if (m_bDelay) 2180 { 2181 AddDelay_Bool(FP_PASSWORD, bVP); 2182 } 2183 else 2184 { 2185 Field::SetPassword(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 2186 } 2187 } 2188 else 2189 { 2190 CFX_PtrArray FieldArray; 2191 GetFormFields(m_FieldName,FieldArray); 2192 if (FieldArray.GetSize() <= 0) return FALSE; 2193 2194 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2195 ASSERT(pFormField != NULL); 2196 2197 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 2198 return FALSE; 2199 2200 if (pFormField->GetFieldFlags() & FIELDFLAG_PASSWORD) 2201 vp << true; 2202 else 2203 vp << false; 2204 } 2205 2206 return TRUE; 2207} 2208 2209void Field::SetPassword(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b) 2210{ 2211 //Not supported. 2212} 2213 2214FX_BOOL Field::print(OBJ_PROP_PARAMS) 2215{ 2216 ASSERT(m_pDocument != NULL); 2217 2218 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); 2219 ASSERT(pInterForm != NULL); 2220 2221 CFX_PtrArray FieldArray; 2222 GetFormFields(m_FieldName, FieldArray); 2223 if (FieldArray.GetSize() <= 0) return FALSE; 2224 2225 if (vp.IsSetting()) 2226 { 2227 if (!m_bCanSet) return FALSE; 2228 2229 bool bVP; 2230 vp >> bVP; 2231 2232 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++) 2233 { 2234 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i); 2235 ASSERT(pFormField != NULL); 2236 2237 if (m_nFormControlIndex < 0) 2238 { 2239 FX_BOOL bSet = FALSE; 2240 for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++) 2241 { 2242 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(j))) 2243 { 2244 FX_DWORD dwFlags = pWidget->GetFlags(); 2245 if (bVP) 2246 dwFlags |= ANNOTFLAG_PRINT; 2247 else 2248 dwFlags &= ~ANNOTFLAG_PRINT; 2249 2250 if (dwFlags != pWidget->GetFlags()) 2251 { 2252 pWidget->SetFlags(dwFlags); 2253 bSet = TRUE; 2254 } 2255 } 2256 } 2257 2258 if (bSet) 2259 UpdateFormField(m_pDocument, pFormField, TRUE, FALSE, TRUE); 2260 } 2261 else 2262 { 2263 if(m_nFormControlIndex >= pFormField->CountControls()) return FALSE; 2264 if (CPDF_FormControl* pFormControl = pFormField->GetControl(m_nFormControlIndex)) 2265 { 2266 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) 2267 { 2268 FX_DWORD dwFlags = pWidget->GetFlags(); 2269 if (bVP) 2270 dwFlags |= ANNOTFLAG_PRINT; 2271 else 2272 dwFlags &= ~ANNOTFLAG_PRINT; 2273 2274 if (dwFlags != pWidget->GetFlags()) 2275 { 2276 pWidget->SetFlags(dwFlags); 2277 UpdateFormControl(m_pDocument, pFormField->GetControl(m_nFormControlIndex), TRUE, FALSE, TRUE); 2278 } 2279 } 2280 } 2281 } 2282 } 2283 } 2284 else 2285 { 2286 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2287 ASSERT(pFormField != NULL); 2288 2289 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField)); 2290 if (!pWidget) return FALSE; 2291 2292 if (pWidget->GetFlags() & ANNOTFLAG_PRINT) 2293 vp << true; 2294 else 2295 vp << false; 2296 } 2297 2298 return TRUE; 2299} 2300 2301FX_BOOL Field::radiosInUnison(OBJ_PROP_PARAMS) 2302{ 2303 ASSERT(m_pDocument != NULL); 2304 2305 CFX_PtrArray FieldArray; 2306 GetFormFields(m_FieldName,FieldArray); 2307 if (FieldArray.GetSize() <= 0) return FALSE; 2308 2309 if (vp.IsSetting()) 2310 { 2311 if (!m_bCanSet) return FALSE; 2312 2313 bool bVP; 2314 vp >> bVP; 2315 2316 } 2317 else 2318 { 2319 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2320 ASSERT(pFormField != NULL); 2321 2322 if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON) 2323 return FALSE; 2324 2325 if (pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON) 2326 vp << true; 2327 else 2328 vp << false; 2329 } 2330 2331 return TRUE; 2332} 2333 2334FX_BOOL Field::readonly(OBJ_PROP_PARAMS) 2335{ 2336 ASSERT(m_pDocument != NULL); 2337 2338 CFX_PtrArray FieldArray; 2339 GetFormFields(m_FieldName,FieldArray); 2340 if (FieldArray.GetSize() <= 0) return FALSE; 2341 2342 if (vp.IsSetting()) 2343 { 2344 if (!m_bCanSet) return FALSE; 2345 2346 bool bVP; 2347 vp >> bVP; 2348 2349 } 2350 else 2351 { 2352 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2353 ASSERT(pFormField != NULL); 2354 2355 if (pFormField->GetFieldFlags() & FIELDFLAG_READONLY) 2356 vp << true; 2357 else 2358 vp << false; 2359 } 2360 2361 return TRUE; 2362} 2363 2364FX_BOOL Field::rect(OBJ_PROP_PARAMS) 2365{ 2366 ASSERT(m_pDocument != NULL); 2367 2368 if (vp.IsSetting()) 2369 { 2370 if (!m_bCanSet) return FALSE; 2371 if (!vp.IsArrayObject())return FALSE; 2372 2373 CJS_Array rcArray(m_isolate); 2374 vp >> rcArray; 2375 CJS_Value Upper_Leftx(m_isolate), Upper_Lefty(m_isolate), Lower_Rightx(m_isolate), Lower_Righty(m_isolate); 2376 rcArray.GetElement(0, Upper_Leftx); 2377 rcArray.GetElement(1, Upper_Lefty); 2378 rcArray.GetElement(2, Lower_Rightx); 2379 rcArray.GetElement(3, Lower_Righty); 2380 2381 FX_FLOAT pArray[4] = {0.0f,0.0f,0.0f,0.0f}; 2382 pArray[0] = (FX_FLOAT)(FX_INT32)Upper_Leftx; 2383 pArray[1] = (FX_FLOAT)(FX_INT32)Lower_Righty; 2384 pArray[2] = (FX_FLOAT)(FX_INT32)Lower_Rightx; 2385 pArray[3] = (FX_FLOAT)(FX_INT32)Upper_Lefty; 2386 2387 CPDF_Rect crRect(pArray); 2388 2389 if (m_bDelay) 2390 { 2391 AddDelay_Rect(FP_RECT, crRect); 2392 } 2393 else 2394 { 2395 Field::SetRect(m_pDocument, m_FieldName, m_nFormControlIndex, crRect); 2396 } 2397 } 2398 else 2399 { 2400 CFX_PtrArray FieldArray; 2401 GetFormFields(m_FieldName,FieldArray); 2402 if (FieldArray.GetSize() <= 0) return FALSE; 2403 2404 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2405 ASSERT(pFormField != NULL); 2406 2407 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); 2408 ASSERT(pInterForm != NULL); 2409 2410 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField)); 2411 if (!pWidget) return FALSE; 2412 2413 CFX_FloatRect crRect = pWidget->GetRect(); 2414 CJS_Value Upper_Leftx(m_isolate),Upper_Lefty(m_isolate),Lower_Rightx(m_isolate),Lower_Righty(m_isolate); 2415 Upper_Leftx = (FX_INT32)crRect.left; 2416 Upper_Lefty = (FX_INT32)crRect.top; 2417 Lower_Rightx = (FX_INT32)crRect.right; 2418 Lower_Righty = (FX_INT32)crRect.bottom; 2419 2420 CJS_Array rcArray(m_isolate); 2421 rcArray.SetElement(0,Upper_Leftx); 2422 rcArray.SetElement(1,Upper_Lefty); 2423 rcArray.SetElement(2,Lower_Rightx); 2424 rcArray.SetElement(3,Lower_Righty); 2425 2426 vp << rcArray; 2427 } 2428 2429 return TRUE; 2430} 2431 2432void Field::SetRect(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPDF_Rect& rect) 2433{ 2434 ASSERT(pDocument != NULL); 2435 2436 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm(); 2437 ASSERT(pInterForm != NULL); 2438 2439 CFX_PtrArray FieldArray; 2440 GetFormFields(pDocument, swFieldName, FieldArray); 2441 2442 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++) 2443 { 2444 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i); 2445 ASSERT(pFormField != NULL); 2446 2447 if (nControlIndex < 0) 2448 { 2449 FX_BOOL bSet = FALSE; 2450 for (int i=0, sz=pFormField->CountControls(); i<sz; i++) 2451 { 2452 CPDF_FormControl* pFormControl = pFormField->GetControl(i); 2453 ASSERT(pFormControl != NULL); 2454 2455 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) 2456 { 2457 CPDF_Rect crRect = rect; 2458 2459 CPDF_Page* pPDFPage = pWidget->GetPDFPage(); 2460 ASSERT(pPDFPage != NULL); 2461 2462// CPDF_Page* pPDFPage = pPage->GetPage(); 2463// ASSERT(pPDFPage != NULL); 2464 2465 crRect.Intersect(pPDFPage->GetPageBBox()); 2466 2467 if (!crRect.IsEmpty()) 2468 { 2469 CPDF_Rect rcOld = pWidget->GetRect(); 2470 if (crRect.left != rcOld.left || 2471 crRect.right != rcOld.right || 2472 crRect.top != rcOld.top || 2473 crRect.bottom != rcOld.bottom) 2474 { 2475 pWidget->SetRect(crRect); 2476 bSet = TRUE; 2477 } 2478 } 2479 } 2480 } 2481 2482 if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE); 2483 } 2484 else 2485 { 2486 if(nControlIndex >= pFormField->CountControls()) return; 2487 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex)) 2488 { 2489 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) 2490 { 2491 CPDF_Rect crRect = rect; 2492 2493 CPDF_Page* pPDFPage = pWidget->GetPDFPage(); 2494 ASSERT(pPDFPage != NULL); 2495 2496// CPDF_Page* pPDFPage = pPage->GetPage(); 2497// ASSERT(pPDFPage != NULL); 2498 2499 crRect.Intersect(pPDFPage->GetPageBBox()); 2500 2501 if (!crRect.IsEmpty()) 2502 { 2503 CPDF_Rect rcOld = pWidget->GetRect(); 2504 if (crRect.left != rcOld.left || 2505 crRect.right != rcOld.right || 2506 crRect.top != rcOld.top || 2507 crRect.bottom != rcOld.bottom) 2508 { 2509 pWidget->SetRect(crRect); 2510 UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE); 2511 } 2512 } 2513 } 2514 } 2515 } 2516 } 2517} 2518 2519FX_BOOL Field::required(OBJ_PROP_PARAMS) 2520{ 2521 ASSERT(m_pDocument != NULL); 2522 2523 CFX_PtrArray FieldArray; 2524 GetFormFields(m_FieldName,FieldArray); 2525 if (FieldArray.GetSize() <= 0) return FALSE; 2526 2527 if (vp.IsSetting()) 2528 { 2529 if (!m_bCanSet) return FALSE; 2530 2531 2532 bool bVP; 2533 vp >> bVP; 2534 2535 } 2536 else 2537 { 2538 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2539 ASSERT(pFormField != NULL); 2540 2541 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON) 2542 return FALSE; 2543 2544 if (pFormField->GetFieldFlags() & FIELDFLAG_REQUIRED) 2545 vp << true; 2546 else 2547 vp << false; 2548 } 2549 2550 return TRUE; 2551} 2552 2553FX_BOOL Field::richText(OBJ_PROP_PARAMS) 2554{ 2555 ASSERT(m_pDocument != NULL); 2556 2557 if (vp.IsSetting()) 2558 { 2559 if (!m_bCanSet) return FALSE; 2560 2561 bool bVP; 2562 vp >> bVP; 2563 2564 if (m_bDelay) 2565 { 2566 AddDelay_Bool(FP_RICHTEXT, bVP); 2567 } 2568 else 2569 { 2570 Field::SetRichText(m_pDocument, m_FieldName, m_nFormControlIndex, bVP); 2571 } 2572 } 2573 else 2574 { 2575 CFX_PtrArray FieldArray; 2576 GetFormFields(m_FieldName,FieldArray); 2577 if (FieldArray.GetSize() <= 0) return FALSE; 2578 2579 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2580 ASSERT(pFormField != NULL); 2581 2582 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) 2583 return FALSE; 2584 2585 if (pFormField->GetFieldFlags() & FIELDFLAG_RICHTEXT) 2586 vp << true; 2587 else 2588 vp << false; 2589 } 2590 2591 return TRUE; 2592} 2593 2594void Field::SetRichText(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b) 2595{ 2596 //Not supported. 2597} 2598 2599FX_BOOL Field::richValue(OBJ_PROP_PARAMS) 2600{ 2601 return TRUE; 2602 if (vp.IsSetting()) 2603 { 2604 if (!m_bCanSet) return FALSE; 2605 ; 2606 } 2607 else 2608 { 2609 ; 2610 } 2611 return TRUE; 2612} 2613 2614void Field::SetRichValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex) 2615{ 2616 //Not supported. 2617} 2618 2619FX_BOOL Field::rotation(OBJ_PROP_PARAMS) 2620{ 2621 ASSERT(m_pDocument != NULL); 2622 2623 if (vp.IsSetting()) 2624 { 2625 if (!m_bCanSet) return FALSE; 2626 2627 int nVP; 2628 vp >> nVP; 2629 2630 if (m_bDelay) 2631 { 2632 AddDelay_Int(FP_ROTATION, nVP); 2633 } 2634 else 2635 { 2636 Field::SetRotation(m_pDocument, m_FieldName, m_nFormControlIndex, nVP); 2637 } 2638 } 2639 else 2640 { 2641 CFX_PtrArray FieldArray; 2642 GetFormFields(m_FieldName,FieldArray); 2643 if (FieldArray.GetSize() <= 0) return FALSE; 2644 2645 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2646 ASSERT(pFormField != NULL); 2647 2648 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 2649 if (!pFormControl)return FALSE; 2650 2651 vp << (FX_INT32)pFormControl->GetRotation(); 2652 } 2653 2654 return TRUE; 2655} 2656 2657void Field::SetRotation(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number) 2658{ 2659 //Not supported. 2660} 2661 2662FX_BOOL Field::strokeColor(OBJ_PROP_PARAMS) 2663{ 2664 ASSERT(m_pDocument != NULL); 2665 2666 if (vp.IsSetting()) 2667 { 2668 if (!m_bCanSet) return FALSE; 2669 2670 if (!vp.IsArrayObject())return FALSE; 2671 2672 CJS_Array crArray(m_isolate); 2673 vp >> crArray; 2674 2675 CPWL_Color color; 2676 color::ConvertArrayToPWLColor(crArray, color); 2677 2678 if (m_bDelay) 2679 { 2680 AddDelay_Color(FP_STROKECOLOR, color); 2681 } 2682 else 2683 { 2684 Field::SetStrokeColor(m_pDocument, m_FieldName, m_nFormControlIndex, color); 2685 } 2686 } 2687 else 2688 { 2689 CFX_PtrArray FieldArray; 2690 GetFormFields(m_FieldName,FieldArray); 2691 if (FieldArray.GetSize() <= 0) return FALSE; 2692 2693 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2694 ASSERT(pFormField != NULL); 2695 2696 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 2697 if (!pFormControl)return FALSE; 2698 2699 int iColorType; 2700 pFormControl->GetBorderColor(iColorType); 2701 2702 CPWL_Color color; 2703 2704 if (iColorType == COLORTYPE_TRANSPARENT) 2705 { 2706 color = CPWL_Color(COLORTYPE_TRANSPARENT); 2707 } 2708 else if (iColorType == COLORTYPE_GRAY) 2709 { 2710 color = CPWL_Color(COLORTYPE_GRAY, pFormControl->GetOriginalBorderColor(0)); 2711 } 2712 else if (iColorType == COLORTYPE_RGB) 2713 { 2714 color = CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBorderColor(0), 2715 pFormControl->GetOriginalBorderColor(1), 2716 pFormControl->GetOriginalBorderColor(2)); 2717 } 2718 else if (iColorType == COLORTYPE_CMYK) 2719 { 2720 color = CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBorderColor(0), 2721 pFormControl->GetOriginalBorderColor(1), 2722 pFormControl->GetOriginalBorderColor(2), 2723 pFormControl->GetOriginalBorderColor(3)); 2724 } 2725 else 2726 return FALSE; 2727 2728 CJS_Array crArray(m_isolate); 2729 color::ConvertPWLColorToArray(color, crArray); 2730 vp << crArray; 2731 } 2732 2733 return TRUE; 2734} 2735 2736void Field::SetStrokeColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color) 2737{ 2738 //Not supported. 2739} 2740 2741FX_BOOL Field::style(OBJ_PROP_PARAMS) 2742{ 2743 ASSERT(m_pDocument != NULL); 2744 2745 if (vp.IsSetting()) 2746 { 2747 if (!m_bCanSet) return FALSE; 2748 2749 CFX_ByteString csBCaption; 2750 vp >> csBCaption; 2751 2752 if (m_bDelay) 2753 { 2754 AddDelay_String(FP_STYLE, csBCaption); 2755 } 2756 else 2757 { 2758 Field::SetStyle(m_pDocument, m_FieldName, m_nFormControlIndex, csBCaption); 2759 } 2760 } 2761 else 2762 { 2763 CFX_PtrArray FieldArray; 2764 GetFormFields(m_FieldName,FieldArray); 2765 if (FieldArray.GetSize() <= 0) return FALSE; 2766 2767 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2768 ASSERT(pFormField != NULL); 2769 2770 if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON && 2771 pFormField->GetFieldType() != FIELDTYPE_CHECKBOX) 2772 return FALSE; 2773 2774 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 2775 if (!pFormControl) return FALSE; 2776 2777 CFX_WideString csWCaption = pFormControl->GetNormalCaption(); 2778 CFX_ByteString csBCaption; 2779 2780 switch (csWCaption[0]) 2781 { 2782 case L'l': 2783 csBCaption = "circle"; 2784 break; 2785 case L'8': 2786 csBCaption = "cross"; 2787 break; 2788 case L'u': 2789 csBCaption = "diamond"; 2790 break; 2791 case L'n': 2792 csBCaption = "square"; 2793 break; 2794 case L'H': 2795 csBCaption = "star"; 2796 break; 2797 default: //L'4' 2798 csBCaption = "check"; 2799 break; 2800 } 2801 vp << csBCaption; 2802 } 2803 2804 return TRUE; 2805} 2806 2807void Field::SetStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, 2808 const CFX_ByteString& string) 2809{ 2810 //Not supported. 2811} 2812 2813FX_BOOL Field::submitName(OBJ_PROP_PARAMS) 2814{ 2815 return TRUE; 2816} 2817 2818FX_BOOL Field::textColor(OBJ_PROP_PARAMS) 2819{ 2820 ASSERT(m_pDocument != NULL); 2821 2822 if (vp.IsSetting()) 2823 { 2824 if (!m_bCanSet) return FALSE; 2825 2826 CJS_Array crArray(m_isolate); 2827 if (!vp.IsArrayObject())return FALSE; 2828 vp >> crArray; 2829 2830 CPWL_Color color; 2831 color::ConvertArrayToPWLColor(crArray, color); 2832 2833 if (m_bDelay) 2834 { 2835 AddDelay_Color(FP_TEXTCOLOR, color); 2836 } 2837 else 2838 { 2839 Field::SetTextColor(m_pDocument, m_FieldName, m_nFormControlIndex, color); 2840 } 2841 } 2842 else 2843 { 2844 CFX_PtrArray FieldArray; 2845 GetFormFields(m_FieldName,FieldArray); 2846 if (FieldArray.GetSize() <= 0) return FALSE; 2847 2848 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2849 ASSERT(pFormField != NULL); 2850 2851 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 2852 if (!pFormControl)return FALSE; 2853 2854 int iColorType; 2855 FX_ARGB color; 2856 CPDF_DefaultAppearance FieldAppearance = pFormControl->GetDefaultAppearance(); 2857 FieldAppearance.GetColor(color, iColorType); 2858 FX_INT32 a,r,g,b; 2859 ArgbDecode(color, a, r, g, b); 2860 2861 CPWL_Color crRet = CPWL_Color(COLORTYPE_RGB, r / 255.0f, 2862 g / 255.0f, 2863 b / 255.0f); 2864 2865 if (iColorType == COLORTYPE_TRANSPARENT) 2866 crRet = CPWL_Color(COLORTYPE_TRANSPARENT); 2867 2868 CJS_Array crArray(m_isolate); 2869 color::ConvertPWLColorToArray(crRet, crArray); 2870 vp << crArray; 2871 } 2872 2873 return TRUE; 2874} 2875 2876void Field::SetTextColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color) 2877{ 2878 //Not supported. 2879} 2880 2881FX_BOOL Field::textFont(OBJ_PROP_PARAMS) 2882{ 2883 ASSERT(m_pDocument != NULL); 2884 2885 if (vp.IsSetting()) 2886 { 2887 if (!m_bCanSet) return FALSE; 2888 2889 CFX_ByteString csFontName; 2890 vp >> csFontName; 2891 if (csFontName.IsEmpty()) return FALSE; 2892 2893 if (m_bDelay) 2894 { 2895 AddDelay_String(FP_TEXTFONT, csFontName); 2896 } 2897 else 2898 { 2899 Field::SetTextFont(m_pDocument, m_FieldName, m_nFormControlIndex, csFontName); 2900 } 2901 } 2902 else 2903 { 2904 CFX_PtrArray FieldArray; 2905 GetFormFields(m_FieldName,FieldArray); 2906 if (FieldArray.GetSize() <= 0) return FALSE; 2907 2908 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2909 ASSERT(pFormField != NULL); 2910 2911 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 2912 if (!pFormControl)return FALSE; 2913 2914 int nFieldType = pFormField->GetFieldType(); 2915 2916 if (nFieldType == FIELDTYPE_PUSHBUTTON || 2917 nFieldType == FIELDTYPE_COMBOBOX || 2918 nFieldType == FIELDTYPE_LISTBOX || 2919 nFieldType == FIELDTYPE_TEXTFIELD) 2920 { 2921 CPDF_Font * pFont = pFormControl->GetDefaultControlFont(); 2922 if (!pFont) return FALSE; 2923 2924 vp << pFont->GetBaseFont(); 2925 } 2926 else 2927 return FALSE; 2928 } 2929 2930 return TRUE; 2931} 2932 2933void Field::SetTextFont(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string) 2934{ 2935 //Not supported. 2936} 2937 2938FX_BOOL Field::textSize(OBJ_PROP_PARAMS) 2939{ 2940 ASSERT(m_pDocument != NULL); 2941 2942 if (vp.IsSetting()) 2943 { 2944 if (!m_bCanSet) return FALSE; 2945 2946 int nVP; 2947 vp >> nVP; 2948 2949 if (m_bDelay) 2950 { 2951 AddDelay_Int(FP_TEXTSIZE, nVP); 2952 } 2953 else 2954 { 2955 Field::SetTextSize(m_pDocument, m_FieldName, m_nFormControlIndex, nVP); 2956 } 2957 } 2958 else 2959 { 2960 CFX_PtrArray FieldArray; 2961 GetFormFields(m_FieldName,FieldArray); 2962 if (FieldArray.GetSize() <= 0) return FALSE; 2963 2964 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2965 ASSERT(pFormField != NULL); 2966 2967 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 2968 if (!pFormControl)return FALSE; 2969 2970 CPDF_DefaultAppearance FieldAppearance = pFormControl->GetDefaultAppearance(); 2971 2972 CFX_ByteString csFontNameTag; 2973 FX_FLOAT fFontSize; 2974 FieldAppearance.GetFont(csFontNameTag,fFontSize); 2975 2976 vp << (int)fFontSize; 2977 } 2978 2979 return TRUE; 2980} 2981 2982void Field::SetTextSize(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number) 2983{ 2984 //Not supported. 2985} 2986 2987FX_BOOL Field::type(OBJ_PROP_PARAMS) 2988{ 2989 ASSERT(m_pDocument != NULL); 2990 2991 if (!vp.IsGetting()) return FALSE; 2992 2993 CFX_PtrArray FieldArray; 2994 GetFormFields(m_FieldName,FieldArray); 2995 if (FieldArray.GetSize() <= 0) return FALSE; 2996 2997 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 2998 ASSERT(pFormField != NULL); 2999 3000 switch (pFormField->GetFieldType()) 3001 { 3002 case FIELDTYPE_UNKNOWN: 3003 vp << (FX_LPCWSTR)L"unknown"; 3004 break; 3005 case FIELDTYPE_PUSHBUTTON: 3006 vp << (FX_LPCWSTR)L"button"; 3007 break; 3008 case FIELDTYPE_CHECKBOX: 3009 vp << (FX_LPCWSTR)L"checkbox"; 3010 break; 3011 case FIELDTYPE_RADIOBUTTON: 3012 vp << (FX_LPCWSTR)L"radiobutton"; 3013 break; 3014 case FIELDTYPE_COMBOBOX: 3015 vp << (FX_LPCWSTR)L"combobox"; 3016 break; 3017 case FIELDTYPE_LISTBOX: 3018 vp << (FX_LPCWSTR)L"listbox"; 3019 break; 3020 case FIELDTYPE_TEXTFIELD: 3021 vp << (FX_LPCWSTR)L"text"; 3022 break; 3023 case FIELDTYPE_SIGNATURE: 3024 vp << (FX_LPCWSTR)L"signature"; 3025 break; 3026 default : 3027 vp << (FX_LPCWSTR)L"unknown"; 3028 break; 3029 } 3030 3031 return TRUE; 3032} 3033 3034FX_BOOL Field::userName(OBJ_PROP_PARAMS) 3035{ 3036 ASSERT(m_pDocument != NULL); 3037 3038 if (vp.IsSetting()) 3039 { 3040 if (!m_bCanSet) return FALSE; 3041 3042 CFX_WideString swName; 3043 vp >> swName; 3044 3045 if (m_bDelay) 3046 { 3047 AddDelay_WideString(FP_USERNAME, swName); 3048 } 3049 else 3050 { 3051 Field::SetUserName(m_pDocument, m_FieldName, m_nFormControlIndex, swName); 3052 } 3053 } 3054 else 3055 { 3056 CFX_PtrArray FieldArray; 3057 GetFormFields(m_FieldName,FieldArray); 3058 if (FieldArray.GetSize() <= 0) return FALSE; 3059 3060 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3061 ASSERT(pFormField != NULL); 3062 3063 vp << (CFX_WideString)pFormField->GetAlternateName(); 3064 } 3065 3066 return TRUE; 3067} 3068 3069void Field::SetUserName(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_WideString& string) 3070{ 3071 //Not supported. 3072} 3073 3074FX_BOOL Field::value(OBJ_PROP_PARAMS) 3075{ 3076 ASSERT(m_pDocument != NULL); 3077 3078 if (vp.IsSetting()) 3079 { 3080 if (!m_bCanSet) return FALSE; 3081 3082 CJS_WideStringArray strArray; 3083 3084 if (vp.IsArrayObject()) 3085 { 3086 CJS_Array ValueArray(m_isolate); 3087 vp.ConvertToArray(ValueArray); 3088 for (int i = 0,sz = ValueArray.GetLength(); i < sz; i++) 3089 { 3090 CJS_Value ElementValue(m_isolate); 3091 ValueArray.GetElement(i, ElementValue); 3092 strArray.Add(ElementValue.operator CFX_WideString()); 3093 } 3094 } 3095 else 3096 { 3097 CFX_WideString swValue; 3098 vp >> swValue; 3099 3100 strArray.Add(swValue); 3101 } 3102 3103 if (m_bDelay) 3104 { 3105 AddDelay_WideStringArray(FP_VALUE, strArray); 3106 } 3107 else 3108 { 3109 Field::SetValue(m_pDocument, m_FieldName, m_nFormControlIndex, strArray); 3110 } 3111 } 3112 else 3113 { 3114 CFX_PtrArray FieldArray; 3115 GetFormFields(m_FieldName,FieldArray); 3116 if (FieldArray.GetSize() <= 0) return FALSE; 3117 3118 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3119 ASSERT(pFormField != NULL); 3120 3121 3122 3123 switch (pFormField->GetFieldType()) 3124 { 3125 case FIELDTYPE_PUSHBUTTON: 3126 return FALSE; 3127 case FIELDTYPE_COMBOBOX: 3128 case FIELDTYPE_TEXTFIELD: 3129 { 3130 CFX_WideString swValue = pFormField->GetValue(); 3131 3132 double dRet; 3133 FX_BOOL bDot; 3134 if (CJS_PublicMethods::ConvertStringToNumber(swValue,dRet,bDot)) 3135 { 3136 if (bDot) 3137 vp << dRet; 3138 else 3139 vp << dRet; 3140 } 3141 else 3142 vp << swValue; 3143 } 3144 break; 3145 case FIELDTYPE_LISTBOX: 3146 { 3147 if (pFormField->CountSelectedItems() > 1) 3148 { 3149 CJS_Array ValueArray(m_isolate); 3150 CJS_Value ElementValue(m_isolate); 3151 int iIndex; 3152 for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++) 3153 { 3154 iIndex = pFormField->GetSelectedIndex(i); 3155 ElementValue = pFormField->GetOptionValue(iIndex); 3156 if (FXSYS_wcslen((FX_LPCWSTR)ElementValue.operator CFX_WideString()) == 0) 3157 ElementValue = pFormField->GetOptionLabel(iIndex); 3158 ValueArray.SetElement(i, ElementValue); 3159 } 3160 vp << ValueArray; 3161 } 3162 else 3163 { 3164 CFX_WideString swValue = pFormField->GetValue(); 3165 3166 double dRet; 3167 FX_BOOL bDot; 3168 if (CJS_PublicMethods::ConvertStringToNumber(swValue,dRet,bDot)) 3169 { 3170 if (bDot) 3171 vp << dRet; 3172 else 3173 vp << dRet; 3174 } 3175 else 3176 vp << swValue; 3177 } 3178 } 3179 break; 3180 case FIELDTYPE_CHECKBOX: 3181 case FIELDTYPE_RADIOBUTTON: 3182 { 3183 FX_BOOL bFind = FALSE; 3184 for (int i = 0 , sz = pFormField->CountControls(); i < sz; i++) 3185 { 3186 if (pFormField->GetControl(i)->IsChecked()) 3187 { 3188 CFX_WideString swValue = pFormField->GetControl(i)->GetExportValue(); 3189 3190 double dRet; 3191 FX_BOOL bDot; 3192 if (CJS_PublicMethods::ConvertStringToNumber(swValue,dRet,bDot)) 3193 { 3194 if (bDot) 3195 vp << dRet; 3196 else 3197 vp << dRet; 3198 } 3199 else 3200 vp << swValue; 3201 3202 bFind = TRUE; 3203 break; 3204 } 3205 else 3206 continue; 3207 } 3208 if (!bFind) 3209 vp << (FX_LPCWSTR)L"Off"; 3210 } 3211 break; 3212 default: 3213 vp << pFormField->GetValue(); 3214 break; 3215 } 3216 } 3217 3218 return TRUE; 3219} 3220 3221void Field::SetValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, 3222 int nControlIndex, const CJS_WideStringArray& strArray) 3223{ 3224 ASSERT(pDocument != NULL); 3225 3226 if (strArray.GetSize() < 1) return; 3227 3228 CFX_PtrArray FieldArray; 3229 GetFormFields(pDocument, swFieldName, FieldArray); 3230 3231 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++) 3232 { 3233 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i); 3234 ASSERT(pFormField != NULL); 3235 3236 if (pFormField->GetFullName().Compare(swFieldName) != 0) 3237 continue; 3238 3239 switch (pFormField->GetFieldType()) 3240 { 3241 case FIELDTYPE_TEXTFIELD: 3242 case FIELDTYPE_COMBOBOX: 3243 if (pFormField->GetValue() != strArray.GetAt(0)) 3244 { 3245 CFX_WideString WideString = strArray.GetAt(0); 3246 pFormField->SetValue(strArray.GetAt(0), TRUE); 3247 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); 3248 } 3249 break; 3250 case FIELDTYPE_CHECKBOX: //mantis: 0004493 3251 case FIELDTYPE_RADIOBUTTON: 3252 { 3253 if (pFormField->GetValue() != strArray.GetAt(0)) 3254 { 3255 pFormField->SetValue(strArray.GetAt(0), TRUE); 3256 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); 3257 } 3258 } 3259 break; 3260 case FIELDTYPE_LISTBOX: 3261 { 3262 FX_BOOL bModified = FALSE; 3263 3264 for (int i=0,sz=strArray.GetSize(); i<sz; i++) 3265 { 3266 int iIndex = pFormField->FindOption(strArray.GetAt(i)); 3267 3268 if (!pFormField->IsItemSelected(iIndex)) 3269 { 3270 bModified = TRUE; 3271 break; 3272 } 3273 } 3274 3275 if (bModified) 3276 { 3277 pFormField->ClearSelection(TRUE); 3278 for (int i=0,sz=strArray.GetSize(); i<sz; i++) 3279 { 3280 int iIndex = pFormField->FindOption(strArray.GetAt(i)); 3281 pFormField->SetItemSelection(iIndex, TRUE, TRUE); 3282 } 3283 3284 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); 3285 } 3286 } 3287 break; 3288 default: 3289 break; 3290 } 3291 } 3292} 3293 3294FX_BOOL Field::valueAsString(OBJ_PROP_PARAMS) 3295{ 3296 ASSERT(m_pDocument != NULL); 3297 3298 if (!vp.IsGetting()) return FALSE; 3299 3300 CFX_PtrArray FieldArray; 3301 GetFormFields(m_FieldName,FieldArray); 3302 if (FieldArray.GetSize() <= 0) return FALSE; 3303 3304 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3305 ASSERT(pFormField != NULL); 3306 3307 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON) 3308 return FALSE; 3309 3310 if (pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) 3311 { 3312 if(!pFormField->CountControls()) return FALSE; 3313 3314 if (pFormField->GetControl(0)->IsChecked()) 3315 vp << (FX_LPCWSTR)L"Yes"; 3316 else 3317 vp << (FX_LPCWSTR)L"Off"; 3318 } 3319 else if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON && !(pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON)) 3320 { 3321 for (int i=0, sz=pFormField->CountControls(); i<sz; i++) 3322 { 3323 if (pFormField->GetControl(i)->IsChecked()) 3324 { 3325 vp << (FX_LPCWSTR)pFormField->GetControl(i)->GetExportValue(); 3326 break; 3327 } 3328 else 3329 vp << (FX_LPCWSTR)L"Off"; 3330 } 3331 } 3332 else if (pFormField->GetFieldType() == FIELDTYPE_LISTBOX && (pFormField->CountSelectedItems() > 1)) 3333 { 3334 vp << (FX_LPCWSTR)L""; 3335 } 3336 else 3337 vp << (FX_LPCWSTR)pFormField->GetValue(); 3338 3339 return TRUE; 3340} 3341 3342/* --------------------------------- methods --------------------------------- */ 3343 3344FX_BOOL Field::browseForFileToSubmit(OBJ_METHOD_PARAMS) 3345{ 3346 ASSERT(m_pDocument != NULL); 3347 3348 CFX_PtrArray FieldArray; 3349 GetFormFields(m_FieldName, FieldArray); 3350 if (FieldArray.GetSize() <= 0) return FALSE; 3351 3352 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3353 ASSERT(pFormField != NULL); 3354 3355 CPDFDoc_Environment* pApp = m_pDocument->GetEnv(); 3356 ASSERT(pApp != NULL); 3357 3358 if ((pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT) && 3359 (pFormField->GetFieldType() == FIELDTYPE_TEXTFIELD)) 3360 { 3361 CFX_WideString wsFileName = pApp->JS_fieldBrowse(); 3362 if(!wsFileName.IsEmpty()) 3363 { 3364 pFormField->SetValue(wsFileName); 3365 UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE); 3366 } 3367 } 3368 else 3369 return FALSE; 3370 3371 return TRUE; 3372} 3373 3374 3375FX_BOOL Field::buttonGetCaption(OBJ_METHOD_PARAMS) 3376{ 3377 ASSERT(m_pDocument != NULL); 3378 3379 int nface = 0; 3380 int iSize = params.size(); 3381 if ( iSize >= 1) 3382 nface = (FX_INT32) params[0]; 3383 3384 CFX_PtrArray FieldArray; 3385 GetFormFields(m_FieldName,FieldArray); 3386 if (FieldArray.GetSize() <= 0) return FALSE; 3387 3388 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3389 ASSERT(pFormField != NULL); 3390 3391 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 3392 return FALSE; 3393 3394 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 3395 if (!pFormControl)return FALSE; 3396 3397 if (nface == 0) 3398 vRet = pFormControl->GetNormalCaption(); 3399 else if (nface == 1) 3400 vRet = pFormControl->GetDownCaption(); 3401 else if (nface == 2) 3402 vRet = pFormControl->GetRolloverCaption(); 3403 else 3404 return FALSE; 3405 3406 return TRUE; 3407} 3408 3409//#pragma warning(disable: 4800) 3410 3411FX_BOOL Field::buttonGetIcon(OBJ_METHOD_PARAMS) 3412{ 3413 ASSERT(m_pDocument != NULL); 3414 3415 int nface = 0; 3416 int iSize = params.size(); 3417 if ( iSize >= 1) 3418 nface = (FX_INT32) params[0]; 3419 3420 CFX_PtrArray FieldArray; 3421 GetFormFields(m_FieldName,FieldArray); 3422 if (FieldArray.GetSize() <= 0) return FALSE; 3423 3424 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3425 ASSERT(pFormField != NULL); 3426 3427 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON) 3428 return FALSE; 3429 3430 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 3431 if (!pFormControl)return FALSE; 3432 3433 CJS_Context* pContext = (CJS_Context*)cc; 3434 ASSERT(pContext != NULL); 3435 3436 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 3437 ASSERT(pRuntime != NULL); 3438 3439 JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Icon")); 3440 ASSERT(pObj.IsEmpty() == FALSE); 3441 3442 CJS_Icon* pJS_Icon = (CJS_Icon*)JS_GetPrivate(pObj); 3443 ASSERT(pJS_Icon != NULL); 3444 3445 Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject(); 3446 ASSERT(pIcon != NULL); 3447 3448 CPDF_Stream* pIconStream = NULL; 3449 if (nface == 0) 3450 pIconStream = pFormControl->GetNormalIcon(); 3451 else if (nface == 1) 3452 pIconStream = pFormControl->GetDownIcon(); 3453 else if (nface == 2) 3454 pIconStream = pFormControl->GetRolloverIcon(); 3455 else 3456 return FALSE; 3457 3458 pIcon->SetStream(pIconStream); 3459 vRet = pJS_Icon; 3460 3461 return TRUE; 3462} 3463 3464//#pragma warning(default: 4800) 3465 3466FX_BOOL Field::buttonImportIcon(OBJ_METHOD_PARAMS) 3467{ 3468#if 0 3469 ASSERT(m_pDocument != NULL); 3470 3471 CFX_PtrArray FieldArray; 3472 GetFormFields(m_FieldName,FieldArray); 3473 if (FieldArray.GetSize() <= 0) return FALSE; 3474 3475 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3476 if (!pFormField)return FALSE; 3477 3478 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); 3479 ASSERT(pEnv); 3480 3481 CFX_WideString sIconFileName = pEnv->JS_fieldBrowse(); 3482 if (sIconFileName.IsEmpty()) 3483 { 3484 vRet = 1; 3485 return TRUE; 3486 } 3487 3488 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); 3489 ASSERT(pInterForm != NULL); 3490 3491 CPDF_Stream* pStream = pInterForm->LoadImageFromFile(sIconFileName); 3492 if (!pStream) 3493 { 3494 vRet = -1; 3495 return TRUE; 3496 } 3497 3498 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); 3499 if (!pFormControl)return FALSE; 3500 3501 pFormControl->SetNormalIcon(pStream); 3502 UpdateFormControl(m_pDocument, pFormControl, TRUE, TRUE, TRUE); 3503 3504 vRet = 0; 3505#endif // 0 3506 return TRUE; 3507} 3508 3509FX_BOOL Field::buttonSetCaption(OBJ_METHOD_PARAMS) 3510{ 3511 return FALSE; 3512} 3513 3514FX_BOOL Field::buttonSetIcon(OBJ_METHOD_PARAMS) 3515{ 3516 return FALSE; 3517} 3518 3519FX_BOOL Field::checkThisBox(OBJ_METHOD_PARAMS) 3520{ 3521 ASSERT(m_pDocument != NULL); 3522 3523 if (!m_bCanSet) return FALSE; 3524 3525 int iSize = params.size(); 3526 int nWidget = -1; 3527 if ( iSize >= 1) 3528 nWidget= (FX_INT32) params[0]; 3529 else 3530 return FALSE; 3531 FX_BOOL bCheckit = TRUE; 3532 if ( iSize >= 2) 3533 bCheckit = params[1]; 3534 3535 3536 CFX_PtrArray FieldArray; 3537 GetFormFields(m_FieldName,FieldArray); 3538 if (FieldArray.GetSize() <= 0) return FALSE; 3539 3540 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3541 ASSERT(pFormField != NULL); 3542 3543 if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX && pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON) 3544 return FALSE; 3545 if(nWidget <0 || nWidget >= pFormField->CountControls()) 3546 return FALSE; 3547 if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON) 3548 pFormField->CheckControl(nWidget, bCheckit, TRUE); 3549 else 3550 pFormField->CheckControl(nWidget, bCheckit, TRUE); 3551 3552 UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE); 3553 3554 return TRUE; 3555} 3556 3557FX_BOOL Field::clearItems(OBJ_METHOD_PARAMS) 3558{ 3559 return TRUE; 3560} 3561 3562FX_BOOL Field::defaultIsChecked(OBJ_METHOD_PARAMS) 3563{ 3564 ASSERT(m_pDocument != NULL); 3565 3566 if (!m_bCanSet) return FALSE; 3567 3568 int iSize = params.size(); 3569 int nWidget = -1; 3570 if ( iSize >= 1) 3571 nWidget= (FX_INT32) params[0]; 3572 else 3573 return FALSE; 3574 //FX_BOOL bIsDefaultChecked = TRUE; 3575 //if ( iSize >= 2) 3576 // bIsDefaultChecked = params[1]; 3577 3578 CFX_PtrArray FieldArray; 3579 GetFormFields(m_FieldName,FieldArray); 3580 if (FieldArray.GetSize() <= 0) return FALSE; 3581 3582 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3583 ASSERT(pFormField != NULL); 3584 3585 if(nWidget <0 || nWidget >= pFormField->CountControls()) 3586 { 3587 vRet = FALSE; 3588 return FALSE; 3589 } 3590 if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) 3591 || (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)) 3592 { 3593 3594 vRet = TRUE; 3595 } 3596 else 3597 vRet = FALSE; 3598 3599 return TRUE; 3600} 3601 3602FX_BOOL Field::deleteItemAt(OBJ_METHOD_PARAMS) 3603{ 3604 return TRUE; 3605} 3606 3607int JS_COMPARESTRING(CFX_WideString* ps1, CFX_WideString* ps2) 3608{ 3609 ASSERT(ps1 != NULL); 3610 ASSERT(ps2 != NULL); 3611 3612 return ps1->Compare(*ps2); 3613} 3614 3615 3616FX_BOOL Field::getArray(OBJ_METHOD_PARAMS) 3617{ 3618 ASSERT(m_pDocument != NULL); 3619 3620 CFX_PtrArray FieldArray; 3621 GetFormFields(m_FieldName,FieldArray); 3622 if (FieldArray.GetSize() <= 0) return FALSE; 3623 3624 CGW_ArrayTemplate<CFX_WideString*> swSort; 3625 3626 for (int i=0,sz=FieldArray.GetSize(); i<sz; i++) 3627 { 3628 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i); 3629 ASSERT(pFormField != NULL); 3630 3631 swSort.Add(new CFX_WideString(pFormField->GetFullName())); 3632 3633 } 3634 swSort.Sort(JS_COMPARESTRING); 3635 3636 CJS_Context* pContext = (CJS_Context*)cc; 3637 ASSERT(pContext != NULL); 3638 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 3639 ASSERT(pRuntime != NULL); 3640 3641 CJS_Array FormFieldArray(m_isolate); 3642 for (int j=0,jsz = swSort.GetSize(); j<jsz; j++) 3643 { 3644 CFX_WideString* pStr = swSort.GetAt(j); 3645 3646 JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Field")); 3647 ASSERT(pObj.IsEmpty() == FALSE); 3648 3649 CJS_Field* pJSField = (CJS_Field*)JS_GetPrivate(pObj); 3650 ASSERT(pJSField != NULL); 3651 3652 Field* pField = (Field*)pJSField->GetEmbedObject(); 3653 ASSERT(pField != NULL); 3654 3655 pField->AttachField(this->m_pJSDoc, *pStr); 3656 3657 CJS_Value FormFieldValue(m_isolate); 3658 FormFieldValue = pJSField; 3659 FormFieldArray.SetElement(j, FormFieldValue); 3660 3661 delete pStr; 3662 } 3663 3664 vRet = FormFieldArray; 3665 swSort.RemoveAll(); 3666 return TRUE; 3667} 3668 3669FX_BOOL Field::getItemAt(OBJ_METHOD_PARAMS) 3670{ 3671 ASSERT(m_pDocument != NULL); 3672 3673 int nIdx = -1; 3674 if (params.size() >=1) 3675 nIdx = (FX_INT32) params[0]; 3676 FX_BOOL bExport = TRUE; 3677 int iSize = params.size(); 3678 if ( iSize >= 2) 3679 { 3680 bExport =(FX_BOOL) params[1]; 3681 } 3682 3683 CFX_PtrArray FieldArray; 3684 GetFormFields(m_FieldName,FieldArray); 3685 if (FieldArray.GetSize() <= 0) return FALSE; 3686 3687 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3688 ASSERT(pFormField != NULL); 3689 3690 if ((pFormField->GetFieldType() == FIELDTYPE_LISTBOX) 3691 || (pFormField->GetFieldType() == FIELDTYPE_COMBOBOX)) 3692 { 3693 if (nIdx == -1 || nIdx > pFormField->CountOptions()) 3694 nIdx = pFormField->CountOptions() -1; 3695 if (bExport) 3696 { 3697 CFX_WideString strval = pFormField->GetOptionValue(nIdx); 3698 if (strval.IsEmpty()) 3699 vRet = pFormField->GetOptionLabel(nIdx); 3700 else 3701 vRet = strval; 3702 } 3703 else 3704 vRet = pFormField->GetOptionLabel(nIdx); 3705 } 3706 else 3707 return FALSE; 3708 3709 return TRUE; 3710} 3711 3712FX_BOOL Field::getLock(OBJ_METHOD_PARAMS) 3713{ 3714 return FALSE; 3715} 3716 3717FX_BOOL Field::insertItemAt(OBJ_METHOD_PARAMS) 3718{ 3719 return TRUE; 3720} 3721 3722FX_BOOL Field::isBoxChecked(OBJ_METHOD_PARAMS) 3723{ 3724 ASSERT(m_pDocument != NULL); 3725 3726 int nIndex = -1; 3727 if (params.size() >=1) 3728 nIndex = (FX_INT32) params[0]; 3729 3730 CFX_PtrArray FieldArray; 3731 GetFormFields(m_FieldName,FieldArray); 3732 if (FieldArray.GetSize() <= 0) return FALSE; 3733 3734 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3735 ASSERT(pFormField != NULL); 3736 3737 if(nIndex <0 || nIndex >= pFormField->CountControls()) 3738 { 3739 vRet = FALSE; 3740 return FALSE; 3741 } 3742 3743 if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) 3744 || (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)) 3745 { 3746 if (pFormField->GetControl(nIndex)->IsChecked() !=0 ) 3747 vRet = TRUE; 3748 else 3749 vRet = FALSE; 3750 } 3751 else 3752 vRet = FALSE; 3753 3754 return TRUE; 3755} 3756 3757FX_BOOL Field::isDefaultChecked(OBJ_METHOD_PARAMS) 3758{ 3759 ASSERT(m_pDocument != NULL); 3760 3761 int nIndex = -1; 3762 if (params.size() >=1) 3763 nIndex = (FX_INT32) params[0]; 3764 3765 CFX_PtrArray FieldArray; 3766 GetFormFields(m_FieldName,FieldArray); 3767 if (FieldArray.GetSize() <= 0) return FALSE; 3768 3769 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3770 ASSERT(pFormField != NULL); 3771 3772 if(nIndex <0 || nIndex >= pFormField->CountControls()) 3773 { 3774 vRet = FALSE; 3775 return FALSE; 3776 } 3777 if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX) 3778 || (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)) 3779 { 3780 if (pFormField->GetControl(nIndex)->IsDefaultChecked() != 0) 3781 vRet = TRUE; 3782 else 3783 vRet = FALSE; 3784 } 3785 else 3786 vRet = FALSE; 3787 3788 return TRUE; 3789} 3790 3791FX_BOOL Field::setAction(OBJ_METHOD_PARAMS) 3792{ 3793 return TRUE; 3794} 3795 3796FX_BOOL Field::setFocus(OBJ_METHOD_PARAMS) 3797{ 3798 ASSERT(m_pDocument != NULL); 3799 3800 CFX_PtrArray FieldArray; 3801 GetFormFields(m_FieldName,FieldArray); 3802 if (FieldArray.GetSize() <= 0) return FALSE; 3803 3804 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0); 3805 ASSERT(pFormField != NULL); 3806 3807 FX_INT32 nCount = pFormField->CountControls(); 3808 3809 if (nCount < 1) return FALSE; 3810 3811 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); 3812 ASSERT(pInterForm != NULL); 3813 3814 CPDFSDK_Widget* pWidget = NULL; 3815 if (nCount == 1) 3816 { 3817 pWidget = pInterForm->GetWidget(pFormField->GetControl(0)); 3818 } 3819 else 3820 { 3821 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); 3822 ASSERT(pEnv); 3823 CPDF_Page* pPage = (CPDF_Page*)pEnv->FFI_GetCurrentPage(m_pDocument->GetDocument()); 3824 if(!pPage) 3825 return FALSE; 3826 if (CPDFSDK_PageView* pCurPageView = m_pDocument->GetPageView(pPage)) 3827 { 3828 for (FX_INT32 i=0; i<nCount; i++) 3829 { 3830 if (CPDFSDK_Widget* pTempWidget = pInterForm->GetWidget(pFormField->GetControl(i))) 3831 { 3832 if (pTempWidget->GetPDFPage() == pCurPageView->GetPDFPage()) 3833 { 3834 pWidget = pTempWidget; 3835 break; 3836 } 3837 } 3838 } 3839 } 3840 } 3841 3842 if (pWidget) 3843 { 3844 m_pDocument->SetFocusAnnot(pWidget); 3845 } 3846 3847 return TRUE; 3848} 3849 3850FX_BOOL Field::setItems(OBJ_METHOD_PARAMS) 3851{ 3852 return TRUE; 3853} 3854 3855FX_BOOL Field::setLock(OBJ_METHOD_PARAMS) 3856{ 3857 return FALSE; 3858} 3859 3860FX_BOOL Field::signatureGetModifications(OBJ_METHOD_PARAMS) 3861{ 3862 return FALSE; 3863} 3864 3865FX_BOOL Field::signatureGetSeedValue(OBJ_METHOD_PARAMS) 3866{ 3867 return FALSE; 3868} 3869 3870FX_BOOL Field::signatureInfo(OBJ_METHOD_PARAMS) 3871{ 3872 return FALSE; 3873} 3874 3875FX_BOOL Field::signatureSetSeedValue(OBJ_METHOD_PARAMS) 3876{ 3877 return FALSE; 3878} 3879 3880FX_BOOL Field::signatureSign(OBJ_METHOD_PARAMS) 3881{ 3882 return FALSE; 3883} 3884 3885FX_BOOL Field::signatureValidate(OBJ_METHOD_PARAMS) 3886{ 3887 return FALSE; 3888} 3889 3890FX_BOOL Field::source(OBJ_PROP_PARAMS) 3891{ 3892 if (vp.IsGetting()) 3893 { 3894 vp << (CJS_Object*)NULL; 3895 } 3896 3897 return TRUE; 3898} 3899 3900/////////////////////////////////////////// delay ///////////////////////////////////////////// 3901 3902void Field::AddDelay_Int(enum FIELD_PROP prop, FX_INT32 n) 3903{ 3904 ASSERT(m_pJSDoc != NULL); 3905 3906 CJS_DelayData* pNewData = new CJS_DelayData; 3907 pNewData->sFieldName = m_FieldName; 3908 pNewData->nControlIndex = m_nFormControlIndex; 3909 pNewData->eProp = prop; 3910 pNewData->num = n; 3911 3912 m_pJSDoc->AddDelayData(pNewData); 3913} 3914 3915void Field::AddDelay_Bool(enum FIELD_PROP prop,bool b) 3916{ 3917 ASSERT(m_pJSDoc != NULL); 3918 3919 CJS_DelayData* pNewData = new CJS_DelayData; 3920 pNewData->sFieldName = m_FieldName; 3921 pNewData->nControlIndex = m_nFormControlIndex; 3922 pNewData->eProp = prop; 3923 pNewData->b = b; 3924 3925 m_pJSDoc->AddDelayData(pNewData); 3926} 3927 3928void Field::AddDelay_String(enum FIELD_PROP prop, const CFX_ByteString& string) 3929{ 3930 ASSERT(m_pJSDoc != NULL); 3931 3932 CJS_DelayData* pNewData = new CJS_DelayData; 3933 pNewData->sFieldName = m_FieldName; 3934 pNewData->nControlIndex = m_nFormControlIndex; 3935 pNewData->eProp = prop; 3936 pNewData->string = string; 3937 3938 m_pJSDoc->AddDelayData(pNewData); 3939} 3940 3941void Field::AddDelay_WideString(enum FIELD_PROP prop, const CFX_WideString& string) 3942{ 3943 ASSERT(m_pJSDoc != NULL); 3944 3945 CJS_DelayData* pNewData = new CJS_DelayData; 3946 pNewData->sFieldName = m_FieldName; 3947 pNewData->nControlIndex = m_nFormControlIndex; 3948 pNewData->eProp = prop; 3949 pNewData->widestring = string; 3950 3951 m_pJSDoc->AddDelayData(pNewData); 3952} 3953 3954void Field::AddDelay_Rect(enum FIELD_PROP prop, const CPDF_Rect& rect) 3955{ 3956 ASSERT(m_pJSDoc != NULL); 3957 3958 CJS_DelayData* pNewData = new CJS_DelayData; 3959 pNewData->sFieldName = m_FieldName; 3960 pNewData->nControlIndex = m_nFormControlIndex; 3961 pNewData->eProp = prop; 3962 pNewData->rect = rect; 3963 3964 m_pJSDoc->AddDelayData(pNewData); 3965} 3966 3967void Field::AddDelay_Color(enum FIELD_PROP prop, const CPWL_Color& color) 3968{ 3969 ASSERT(m_pJSDoc != NULL); 3970 3971 CJS_DelayData* pNewData = new CJS_DelayData; 3972 pNewData->sFieldName = m_FieldName; 3973 pNewData->nControlIndex = m_nFormControlIndex; 3974 pNewData->eProp = prop; 3975 pNewData->color = color; 3976 3977 m_pJSDoc->AddDelayData(pNewData); 3978} 3979 3980void Field::AddDelay_WordArray(enum FIELD_PROP prop, const CFX_DWordArray& array) 3981{ 3982 ASSERT(m_pJSDoc != NULL); 3983 3984 CJS_DelayData* pNewData = new CJS_DelayData; 3985 pNewData->sFieldName = m_FieldName; 3986 pNewData->nControlIndex = m_nFormControlIndex; 3987 pNewData->eProp = prop; 3988 3989 for (int i=0,sz=array.GetSize(); i<sz; i++) 3990 pNewData->wordarray.Add(array.GetAt(i)); 3991 3992 m_pJSDoc->AddDelayData(pNewData); 3993} 3994 3995void Field::AddDelay_WideStringArray(enum FIELD_PROP prop, const CJS_WideStringArray& array) 3996{ 3997 ASSERT(m_pJSDoc != NULL); 3998 3999 CJS_DelayData* pNewData = new CJS_DelayData; 4000 pNewData->sFieldName = m_FieldName; 4001 pNewData->nControlIndex = m_nFormControlIndex; 4002 pNewData->eProp = prop; 4003 for (int i=0,sz=array.GetSize(); i<sz; i++) 4004 pNewData->widestringarray.Add(array.GetAt(i)); 4005 4006 m_pJSDoc->AddDelayData(pNewData); 4007} 4008 4009void Field::DoDelay(CPDFSDK_Document* pDocument, CJS_DelayData* pData) 4010{ 4011 ASSERT(pDocument != NULL); 4012 ASSERT(pData != NULL); 4013 4014 switch (pData->eProp) 4015 { 4016 case FP_ALIGNMENT: 4017 Field::SetAlignment(pDocument, pData->sFieldName, pData->nControlIndex, pData->string); 4018 break; 4019 case FP_BORDERSTYLE: 4020 Field::SetBorderStyle(pDocument, pData->sFieldName, pData->nControlIndex, pData->string); 4021 break; 4022 case FP_BUTTONALIGNX: 4023 Field::SetButtonAlignX(pDocument, pData->sFieldName, pData->nControlIndex, pData->num); 4024 break; 4025 case FP_BUTTONALIGNY: 4026 Field::SetButtonAlignY(pDocument, pData->sFieldName, pData->nControlIndex, pData->num); 4027 break; 4028 case FP_BUTTONFITBOUNDS: 4029 Field::SetButtonFitBounds(pDocument, pData->sFieldName, pData->nControlIndex, pData->b); 4030 break; 4031 case FP_BUTTONPOSITION: 4032 Field::SetButtonPosition(pDocument, pData->sFieldName, pData->nControlIndex, pData->num); 4033 break; 4034 case FP_BUTTONSCALEHOW: 4035 Field::SetButtonScaleHow(pDocument, pData->sFieldName, pData->nControlIndex, pData->num); 4036 break; 4037 case FP_BUTTONSCALEWHEN: 4038 Field::SetButtonScaleWhen(pDocument, pData->sFieldName, pData->nControlIndex, pData->num); 4039 break; 4040 case FP_CALCORDERINDEX: 4041 Field::SetCalcOrderIndex(pDocument, pData->sFieldName, pData->nControlIndex, pData->num); 4042 break; 4043 case FP_CHARLIMIT: 4044 Field::SetCharLimit(pDocument, pData->sFieldName, pData->nControlIndex, pData->num); 4045 break; 4046 case FP_COMB: 4047 Field::SetComb(pDocument, pData->sFieldName, pData->nControlIndex, pData->b); 4048 break; 4049 case FP_COMMITONSELCHANGE: 4050 Field::SetCommitOnSelChange(pDocument, pData->sFieldName, pData->nControlIndex, pData->b); 4051 break; 4052 case FP_CURRENTVALUEINDICES: 4053 Field::SetCurrentValueIndices(pDocument, pData->sFieldName, pData->nControlIndex, pData->wordarray); 4054 break; 4055 case FP_DEFAULTVALUE: 4056 Field::SetDefaultValue(pDocument, pData->sFieldName, pData->nControlIndex, pData->widestring); 4057 break; 4058 case FP_DONOTSCROLL: 4059 Field::SetDoNotScroll(pDocument, pData->sFieldName, pData->nControlIndex, pData->b); 4060 break; 4061 case FP_DISPLAY: 4062 Field::SetDisplay(pDocument, pData->sFieldName, pData->nControlIndex, pData->num); 4063 break; 4064 case FP_FILLCOLOR: 4065 Field::SetFillColor(pDocument, pData->sFieldName, pData->nControlIndex, pData->color); 4066 break; 4067 case FP_HIDDEN: 4068 Field::SetHidden(pDocument, pData->sFieldName, pData->nControlIndex, pData->b); 4069 break; 4070 case FP_HIGHLIGHT: 4071 Field::SetHighlight(pDocument, pData->sFieldName, pData->nControlIndex, pData->string); 4072 break; 4073 case FP_LINEWIDTH: 4074 Field::SetLineWidth(pDocument, pData->sFieldName, pData->nControlIndex, pData->num); 4075 break; 4076 case FP_MULTILINE: 4077 Field::SetMultiline(pDocument, pData->sFieldName, pData->nControlIndex, pData->b); 4078 break; 4079 case FP_MULTIPLESELECTION: 4080 Field::SetMultipleSelection(pDocument, pData->sFieldName, pData->nControlIndex, pData->b); 4081 break; 4082 case FP_PASSWORD: 4083 Field::SetPassword(pDocument, pData->sFieldName, pData->nControlIndex, pData->b); 4084 break; 4085 case FP_RECT: 4086 Field::SetRect(pDocument, pData->sFieldName, pData->nControlIndex, pData->rect); 4087 break; 4088 case FP_RICHTEXT: 4089 Field::SetRichText(pDocument, pData->sFieldName, pData->nControlIndex, pData->b); 4090 break; 4091 case FP_RICHVALUE: 4092 break; 4093 case FP_ROTATION: 4094 Field::SetRotation(pDocument, pData->sFieldName, pData->nControlIndex, pData->num); 4095 break; 4096 case FP_STROKECOLOR: 4097 Field::SetStrokeColor(pDocument, pData->sFieldName, pData->nControlIndex, pData->color); 4098 break; 4099 case FP_STYLE: 4100 Field::SetStyle(pDocument, pData->sFieldName, pData->nControlIndex, pData->string); 4101 break; 4102 case FP_TEXTCOLOR: 4103 Field::SetTextColor(pDocument, pData->sFieldName, pData->nControlIndex, pData->color); 4104 break; 4105 case FP_TEXTFONT: 4106 Field::SetTextFont(pDocument, pData->sFieldName, pData->nControlIndex, pData->string); 4107 break; 4108 case FP_TEXTSIZE: 4109 Field::SetTextSize(pDocument, pData->sFieldName, pData->nControlIndex, pData->num); 4110 break; 4111 case FP_USERNAME: 4112 Field::SetUserName(pDocument, pData->sFieldName, pData->nControlIndex, pData->widestring); 4113 break; 4114 case FP_VALUE: 4115 Field::SetValue(pDocument, pData->sFieldName, pData->nControlIndex, pData->widestringarray); 4116 break; 4117 } 4118} 4119 4120#define JS_FIELD_MINWIDTH 1 4121#define JS_FIELD_MINHEIGHT 1 4122 4123void Field::AddField(CPDFSDK_Document* pDocument, int nPageIndex, int nFieldType, 4124 const CFX_WideString& sName, const CPDF_Rect& rcCoords) 4125{ 4126 //Not supported. 4127} 4128 4129