| OLD | NEW | 
|     1 // Copyright 2016 PDFium Authors. All rights reserved. |     1 // Copyright 2016 PDFium Authors. All rights reserved. | 
|     2 // Use of this source code is governed by a BSD-style license that can be |     2 // Use of this source code is governed by a BSD-style license that can be | 
|     3 // found in the LICENSE file. |     3 // found in the LICENSE file. | 
|     4  |     4  | 
|     5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |     5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
|     6  |     6  | 
|     7 #include "fpdfsdk/include/cpdfsdk_widget.h" |     7 #include "fpdfsdk/include/cpdfsdk_widget.h" | 
|     8  |     8  | 
|     9 #include <memory> |     9 #include <memory> | 
|    10  |    10  | 
| (...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   732   return m_bAppModified; |   732   return m_bAppModified; | 
|   733 } |   733 } | 
|   734  |   734  | 
|   735 #ifdef PDF_ENABLE_XFA |   735 #ifdef PDF_ENABLE_XFA | 
|   736 void CPDFSDK_Widget::ResetAppearance(FX_BOOL bValueChanged) { |   736 void CPDFSDK_Widget::ResetAppearance(FX_BOOL bValueChanged) { | 
|   737   switch (GetFieldType()) { |   737   switch (GetFieldType()) { | 
|   738     case FIELDTYPE_TEXTFIELD: |   738     case FIELDTYPE_TEXTFIELD: | 
|   739     case FIELDTYPE_COMBOBOX: { |   739     case FIELDTYPE_COMBOBOX: { | 
|   740       FX_BOOL bFormatted = FALSE; |   740       FX_BOOL bFormatted = FALSE; | 
|   741       CFX_WideString sValue = OnFormat(bFormatted); |   741       CFX_WideString sValue = OnFormat(bFormatted); | 
|   742       ResetAppearance(bFormatted ? sValue.c_str() : nullptr, TRUE); |   742       ResetAppearance(bFormatted ? &sValue : nullptr, TRUE); | 
|   743       break; |   743       break; | 
|   744     } |   744     } | 
|   745     default: |   745     default: | 
|   746       ResetAppearance(nullptr, FALSE); |   746       ResetAppearance(nullptr, FALSE); | 
|   747       break; |   747       break; | 
|   748   } |   748   } | 
|   749 } |   749 } | 
|   750 #endif  // PDF_ENABLE_XFA |   750 #endif  // PDF_ENABLE_XFA | 
|   751  |   751  | 
|   752 void CPDFSDK_Widget::ResetAppearance(const FX_WCHAR* sValue, |   752 void CPDFSDK_Widget::ResetAppearance(const CFX_WideString* sValue, | 
|   753                                      FX_BOOL bValueChanged) { |   753                                      FX_BOOL bValueChanged) { | 
|   754   SetAppModified(); |   754   SetAppModified(); | 
|   755  |   755  | 
|   756   m_nAppAge++; |   756   m_nAppAge++; | 
|   757   if (m_nAppAge > 999999) |   757   if (m_nAppAge > 999999) | 
|   758     m_nAppAge = 0; |   758     m_nAppAge = 0; | 
|   759   if (bValueChanged) |   759   if (bValueChanged) | 
|   760     m_nValueAge++; |   760     m_nValueAge++; | 
|   761  |   761  | 
|   762   int nFieldType = GetFieldType(); |   762   int nFieldType = GetFieldType(); | 
| (...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1346  |  1346  | 
|  1347   WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_ON, |  1347   WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_ON, | 
|  1348                   pControl->GetCheckedAPState()); |  1348                   pControl->GetCheckedAPState()); | 
|  1349   WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_OFF, "Off"); |  1349   WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_OFF, "Off"); | 
|  1350  |  1350  | 
|  1351   CFX_ByteString csAS = GetAppState(); |  1351   CFX_ByteString csAS = GetAppState(); | 
|  1352   if (csAS.IsEmpty()) |  1352   if (csAS.IsEmpty()) | 
|  1353     SetAppState("Off"); |  1353     SetAppState("Off"); | 
|  1354 } |  1354 } | 
|  1355  |  1355  | 
|  1356 void CPDFSDK_Widget::ResetAppearance_ComboBox(const FX_WCHAR* sValue) { |  1356 void CPDFSDK_Widget::ResetAppearance_ComboBox(const CFX_WideString* sValue) { | 
|  1357   CPDF_FormControl* pControl = GetFormControl(); |  1357   CPDF_FormControl* pControl = GetFormControl(); | 
|  1358   CPDF_FormField* pField = pControl->GetField(); |  1358   CPDF_FormField* pField = pControl->GetField(); | 
|  1359   CFX_ByteTextBuf sBody, sLines; |  1359   CFX_ByteTextBuf sBody, sLines; | 
|  1360  |  1360  | 
|  1361   CFX_FloatRect rcClient = GetClientRect(); |  1361   CFX_FloatRect rcClient = GetClientRect(); | 
|  1362   CFX_FloatRect rcButton = rcClient; |  1362   CFX_FloatRect rcButton = rcClient; | 
|  1363   rcButton.left = rcButton.right - 13; |  1363   rcButton.left = rcButton.right - 13; | 
|  1364   rcButton.Normalize(); |  1364   rcButton.Normalize(); | 
|  1365  |  1365  | 
|  1366   std::unique_ptr<CFX_Edit> pEdit(new CFX_Edit); |  1366   std::unique_ptr<CFX_Edit> pEdit(new CFX_Edit); | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
|  1380  |  1380  | 
|  1381   FX_FLOAT fFontSize = GetFontSize(); |  1381   FX_FLOAT fFontSize = GetFontSize(); | 
|  1382   if (IsFloatZero(fFontSize)) |  1382   if (IsFloatZero(fFontSize)) | 
|  1383     pEdit->SetAutoFontSize(TRUE, TRUE); |  1383     pEdit->SetAutoFontSize(TRUE, TRUE); | 
|  1384   else |  1384   else | 
|  1385     pEdit->SetFontSize(fFontSize); |  1385     pEdit->SetFontSize(fFontSize); | 
|  1386  |  1386  | 
|  1387   pEdit->Initialize(); |  1387   pEdit->Initialize(); | 
|  1388  |  1388  | 
|  1389   if (sValue) { |  1389   if (sValue) { | 
|  1390     pEdit->SetText(sValue); |  1390     pEdit->SetText(*sValue); | 
|  1391   } else { |  1391   } else { | 
|  1392     int32_t nCurSel = pField->GetSelectedIndex(0); |  1392     int32_t nCurSel = pField->GetSelectedIndex(0); | 
|  1393  |  | 
|  1394     if (nCurSel < 0) |  1393     if (nCurSel < 0) | 
|  1395       pEdit->SetText(pField->GetValue().c_str()); |  1394       pEdit->SetText(pField->GetValue().c_str()); | 
|  1396     else |  1395     else | 
|  1397       pEdit->SetText(pField->GetOptionLabel(nCurSel).c_str()); |  1396       pEdit->SetText(pField->GetOptionLabel(nCurSel).c_str()); | 
|  1398   } |  1397   } | 
|  1399  |  1398  | 
|  1400   CFX_FloatRect rcContent = pEdit->GetContentRect(); |  1399   CFX_FloatRect rcContent = pEdit->GetContentRect(); | 
|  1401  |  1400  | 
|  1402   CFX_ByteString sEdit = |  1401   CFX_ByteString sEdit = | 
|  1403       CPWL_Utils::GetEditAppStream(pEdit.get(), CFX_FloatPoint(0.0f, 0.0f)); |  1402       CPWL_Utils::GetEditAppStream(pEdit.get(), CFX_FloatPoint(0.0f, 0.0f)); | 
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1505           << " " << rcClient.Height() << " re\nW\nn\n"; |  1504           << " " << rcClient.Height() << " re\nW\nn\n"; | 
|  1506     sBody << sList << "Q\nEMC\n"; |  1505     sBody << sList << "Q\nEMC\n"; | 
|  1507   } |  1506   } | 
|  1508  |  1507  | 
|  1509   CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() + |  1508   CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() + | 
|  1510                        sLines.AsStringC() + sBody.AsStringC(); |  1509                        sLines.AsStringC() + sBody.AsStringC(); | 
|  1511  |  1510  | 
|  1512   WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP); |  1511   WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP); | 
|  1513 } |  1512 } | 
|  1514  |  1513  | 
|  1515 void CPDFSDK_Widget::ResetAppearance_TextField(const FX_WCHAR* sValue) { |  1514 void CPDFSDK_Widget::ResetAppearance_TextField(const CFX_WideString* sValue) { | 
|  1516   CPDF_FormControl* pControl = GetFormControl(); |  1515   CPDF_FormControl* pControl = GetFormControl(); | 
|  1517   CPDF_FormField* pField = pControl->GetField(); |  1516   CPDF_FormField* pField = pControl->GetField(); | 
|  1518   CFX_ByteTextBuf sBody, sLines; |  1517   CFX_ByteTextBuf sBody, sLines; | 
|  1519  |  1518  | 
|  1520   std::unique_ptr<CFX_Edit> pEdit(new CFX_Edit); |  1519   std::unique_ptr<CFX_Edit> pEdit(new CFX_Edit); | 
|  1521   pEdit->EnableRefresh(FALSE); |  1520   pEdit->EnableRefresh(FALSE); | 
|  1522  |  1521  | 
|  1523   CPDFSDK_Document* pDoc = m_pInterForm->GetDocument(); |  1522   CPDFSDK_Document* pDoc = m_pInterForm->GetDocument(); | 
|  1524   CPDFDoc_Environment* pEnv = pDoc->GetEnv(); |  1523   CPDFDoc_Environment* pEnv = pDoc->GetEnv(); | 
|  1525  |  1524  | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
|  1547   } |  1546   } | 
|  1548  |  1547  | 
|  1549   int nMaxLen = pField->GetMaxLen(); |  1548   int nMaxLen = pField->GetMaxLen(); | 
|  1550   FX_BOOL bCharArray = (dwFieldFlags >> 24) & 1; |  1549   FX_BOOL bCharArray = (dwFieldFlags >> 24) & 1; | 
|  1551   FX_FLOAT fFontSize = GetFontSize(); |  1550   FX_FLOAT fFontSize = GetFontSize(); | 
|  1552  |  1551  | 
|  1553 #ifdef PDF_ENABLE_XFA |  1552 #ifdef PDF_ENABLE_XFA | 
|  1554   CFX_WideString sValueTmp; |  1553   CFX_WideString sValueTmp; | 
|  1555   if (!sValue && GetMixXFAWidget()) { |  1554   if (!sValue && GetMixXFAWidget()) { | 
|  1556     sValueTmp = GetValue(TRUE); |  1555     sValueTmp = GetValue(TRUE); | 
|  1557     sValue = sValueTmp.c_str(); |  1556     sValue = &sValueTmp; | 
|  1558   } |  1557   } | 
|  1559 #endif  // PDF_ENABLE_XFA |  1558 #endif  // PDF_ENABLE_XFA | 
|  1560  |  1559  | 
|  1561   if (nMaxLen > 0) { |  1560   if (nMaxLen > 0) { | 
|  1562     if (bCharArray) { |  1561     if (bCharArray) { | 
|  1563       pEdit->SetCharArray(nMaxLen); |  1562       pEdit->SetCharArray(nMaxLen); | 
|  1564  |  1563  | 
|  1565       if (IsFloatZero(fFontSize)) { |  1564       if (IsFloatZero(fFontSize)) { | 
|  1566         fFontSize = CPWL_Edit::GetCharArrayAutoFontSize(font_map.GetPDFFont(0), |  1565         fFontSize = CPWL_Edit::GetCharArrayAutoFontSize(font_map.GetPDFFont(0), | 
|  1567                                                         rcClient, nMaxLen); |  1566                                                         rcClient, nMaxLen); | 
|  1568       } |  1567       } | 
|  1569     } else { |  1568     } else { | 
|  1570       if (sValue) |  1569       if (sValue) | 
|  1571         nMaxLen = wcslen((const wchar_t*)sValue); |  1570         nMaxLen = sValue->GetLength(); | 
|  1572       pEdit->SetLimitChar(nMaxLen); |  1571       pEdit->SetLimitChar(nMaxLen); | 
|  1573     } |  1572     } | 
|  1574   } |  1573   } | 
|  1575  |  1574  | 
|  1576   if (IsFloatZero(fFontSize)) |  1575   if (IsFloatZero(fFontSize)) | 
|  1577     pEdit->SetAutoFontSize(TRUE, TRUE); |  1576     pEdit->SetAutoFontSize(TRUE, TRUE); | 
|  1578   else |  1577   else | 
|  1579     pEdit->SetFontSize(fFontSize); |  1578     pEdit->SetFontSize(fFontSize); | 
|  1580  |  1579  | 
|  1581   pEdit->Initialize(); |  1580   pEdit->Initialize(); | 
|  1582  |  1581  | 
|  1583   if (sValue) |  1582   if (sValue) | 
|  1584     pEdit->SetText(sValue); |  1583     pEdit->SetText(*sValue); | 
|  1585   else |  1584   else | 
|  1586     pEdit->SetText(pField->GetValue().c_str()); |  1585     pEdit->SetText(pField->GetValue().c_str()); | 
|  1587  |  1586  | 
|  1588   CFX_FloatRect rcContent = pEdit->GetContentRect(); |  1587   CFX_FloatRect rcContent = pEdit->GetContentRect(); | 
|  1589  |  1588  | 
|  1590   CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream( |  1589   CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream( | 
|  1591       pEdit.get(), CFX_FloatPoint(0.0f, 0.0f), nullptr, !bCharArray, subWord); |  1590       pEdit.get(), CFX_FloatPoint(0.0f, 0.0f), nullptr, !bCharArray, subWord); | 
|  1592  |  1591  | 
|  1593   if (sEdit.GetLength() > 0) { |  1592   if (sEdit.GetLength() > 0) { | 
|  1594     sBody << "/Tx BMC\n" |  1593     sBody << "/Tx BMC\n" | 
| (...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1946     return FALSE; |  1945     return FALSE; | 
|  1947  |  1946  | 
|  1948   if (!IsVisible()) |  1947   if (!IsVisible()) | 
|  1949     return FALSE; |  1948     return FALSE; | 
|  1950  |  1949  | 
|  1951   if ((GetFieldFlags() & FIELDFLAG_READONLY) == FIELDFLAG_READONLY) |  1950   if ((GetFieldFlags() & FIELDFLAG_READONLY) == FIELDFLAG_READONLY) | 
|  1952     return FALSE; |  1951     return FALSE; | 
|  1953  |  1952  | 
|  1954   return TRUE; |  1953   return TRUE; | 
|  1955 } |  1954 } | 
| OLD | NEW |