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/cpdfsdk_widget.h" | 7 #include "fpdfsdk/cpdfsdk_widget.h" |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
| 11 #include "core/fpdfapi/parser/cpdf_array.h" |
11 #include "core/fpdfapi/parser/cpdf_dictionary.h" | 12 #include "core/fpdfapi/parser/cpdf_dictionary.h" |
12 #include "core/fpdfapi/parser/cpdf_document.h" | 13 #include "core/fpdfapi/parser/cpdf_document.h" |
| 14 #include "core/fpdfapi/parser/cpdf_reference.h" |
13 #include "core/fpdfapi/parser/cpdf_stream.h" | 15 #include "core/fpdfapi/parser/cpdf_stream.h" |
| 16 #include "core/fpdfapi/parser/cpdf_string.h" |
14 #include "core/fpdfdoc/cpdf_defaultappearance.h" | 17 #include "core/fpdfdoc/cpdf_defaultappearance.h" |
15 #include "core/fpdfdoc/cpdf_formcontrol.h" | 18 #include "core/fpdfdoc/cpdf_formcontrol.h" |
16 #include "core/fpdfdoc/cpdf_formfield.h" | 19 #include "core/fpdfdoc/cpdf_formfield.h" |
17 #include "core/fpdfdoc/cpdf_iconfit.h" | 20 #include "core/fpdfdoc/cpdf_iconfit.h" |
18 #include "core/fpdfdoc/cpdf_interform.h" | 21 #include "core/fpdfdoc/cpdf_interform.h" |
19 #include "core/fxge/cfx_graphstatedata.h" | 22 #include "core/fxge/cfx_graphstatedata.h" |
20 #include "core/fxge/cfx_pathdata.h" | 23 #include "core/fxge/cfx_pathdata.h" |
21 #include "core/fxge/cfx_renderdevice.h" | 24 #include "core/fxge/cfx_renderdevice.h" |
22 #include "fpdfsdk/cpdfsdk_formfillenvironment.h" | 25 #include "fpdfsdk/cpdfsdk_formfillenvironment.h" |
23 #include "fpdfsdk/cpdfsdk_interform.h" | 26 #include "fpdfsdk/cpdfsdk_interform.h" |
(...skipping 935 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
959 | 962 |
960 if (pControl->HasMKEntry("RI")) | 963 if (pControl->HasMKEntry("RI")) |
961 pRolloverIcon = pControl->GetRolloverIcon(); | 964 pRolloverIcon = pControl->GetRolloverIcon(); |
962 | 965 |
963 if (pControl->HasMKEntry("IX")) | 966 if (pControl->HasMKEntry("IX")) |
964 pDownIcon = pControl->GetDownIcon(); | 967 pDownIcon = pControl->GetDownIcon(); |
965 | 968 |
966 if (pNormalIcon) { | 969 if (pNormalIcon) { |
967 if (CPDF_Dictionary* pImageDict = pNormalIcon->GetDict()) { | 970 if (CPDF_Dictionary* pImageDict = pNormalIcon->GetDict()) { |
968 if (pImageDict->GetStringFor("Name").IsEmpty()) | 971 if (pImageDict->GetStringFor("Name").IsEmpty()) |
969 pImageDict->SetStringFor("Name", "ImgA"); | 972 pImageDict->SetNewFor<CPDF_String>("Name", "ImgA", false); |
970 } | 973 } |
971 } | 974 } |
972 | 975 |
973 if (pRolloverIcon) { | 976 if (pRolloverIcon) { |
974 if (CPDF_Dictionary* pImageDict = pRolloverIcon->GetDict()) { | 977 if (CPDF_Dictionary* pImageDict = pRolloverIcon->GetDict()) { |
975 if (pImageDict->GetStringFor("Name").IsEmpty()) | 978 if (pImageDict->GetStringFor("Name").IsEmpty()) |
976 pImageDict->SetStringFor("Name", "ImgB"); | 979 pImageDict->SetNewFor<CPDF_String>("Name", "ImgB", false); |
977 } | 980 } |
978 } | 981 } |
979 | 982 |
980 if (pDownIcon) { | 983 if (pDownIcon) { |
981 if (CPDF_Dictionary* pImageDict = pDownIcon->GetDict()) { | 984 if (CPDF_Dictionary* pImageDict = pDownIcon->GetDict()) { |
982 if (pImageDict->GetStringFor("Name").IsEmpty()) | 985 if (pImageDict->GetStringFor("Name").IsEmpty()) |
983 pImageDict->SetStringFor("Name", "ImgC"); | 986 pImageDict->SetNewFor<CPDF_String>("Name", "ImgC", false); |
984 } | 987 } |
985 } | 988 } |
986 | 989 |
987 CPDF_IconFit iconFit = pControl->GetIconFit(); | 990 CPDF_IconFit iconFit = pControl->GetIconFit(); |
988 | 991 |
989 CBA_FontMap font_map(this, m_pInterForm->GetFormFillEnv()->GetSysHandler()); | 992 CBA_FontMap font_map(this, m_pInterForm->GetFormFillEnv()->GetSysHandler()); |
990 font_map.SetAPType("N"); | 993 font_map.SetAPType("N"); |
991 | 994 |
992 CFX_ByteString csAP = | 995 CFX_ByteString csAP = |
993 CPWL_Utils::GetRectFillAppStream(rcWindow, crBackground) + | 996 CPWL_Utils::GetRectFillAppStream(rcWindow, crBackground) + |
(...skipping 803 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1797 CFX_ByteString sImageAlias = "IMG"; | 1800 CFX_ByteString sImageAlias = "IMG"; |
1798 | 1801 |
1799 if (CPDF_Dictionary* pImageDict = pImage->GetDict()) { | 1802 if (CPDF_Dictionary* pImageDict = pImage->GetDict()) { |
1800 sImageAlias = pImageDict->GetStringFor("Name"); | 1803 sImageAlias = pImageDict->GetStringFor("Name"); |
1801 if (sImageAlias.IsEmpty()) | 1804 if (sImageAlias.IsEmpty()) |
1802 sImageAlias = "IMG"; | 1805 sImageAlias = "IMG"; |
1803 } | 1806 } |
1804 | 1807 |
1805 CPDF_Document* pDoc = m_pPageView->GetPDFDocument(); | 1808 CPDF_Document* pDoc = m_pPageView->GetPDFDocument(); |
1806 CPDF_Dictionary* pStreamResList = pStreamDict->GetDictFor("Resources"); | 1809 CPDF_Dictionary* pStreamResList = pStreamDict->GetDictFor("Resources"); |
1807 if (!pStreamResList) { | 1810 if (!pStreamResList) |
1808 pStreamResList = new CPDF_Dictionary(pDoc->GetByteStringPool()); | 1811 pStreamResList = pStreamDict->SetNewFor<CPDF_Dictionary>("Resources"); |
1809 pStreamDict->SetFor("Resources", pStreamResList); | |
1810 } | |
1811 | 1812 |
1812 CPDF_Dictionary* pXObject = new CPDF_Dictionary(pDoc->GetByteStringPool()); | 1813 CPDF_Dictionary* pXObject = |
1813 pXObject->SetReferenceFor(sImageAlias, pDoc, pImage->GetObjNum()); | 1814 pStreamResList->SetNewFor<CPDF_Dictionary>("XObject"); |
1814 pStreamResList->SetFor("XObject", pXObject); | 1815 pXObject->SetNewFor<CPDF_Reference>(sImageAlias, pDoc, pImage->GetObjNum()); |
1815 } | 1816 } |
1816 | 1817 |
1817 void CPDFSDK_Widget::RemoveAppearance(const CFX_ByteString& sAPType) { | 1818 void CPDFSDK_Widget::RemoveAppearance(const CFX_ByteString& sAPType) { |
1818 if (CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDictFor("AP")) | 1819 if (CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDictFor("AP")) |
1819 pAPDict->RemoveFor(sAPType); | 1820 pAPDict->RemoveFor(sAPType); |
1820 } | 1821 } |
1821 | 1822 |
1822 bool CPDFSDK_Widget::OnAAction(CPDF_AAction::AActionType type, | 1823 bool CPDFSDK_Widget::OnAAction(CPDF_AAction::AActionType type, |
1823 PDFSDK_FieldAction& data, | 1824 PDFSDK_FieldAction& data, |
1824 CPDFSDK_PageView* pPageView) { | 1825 CPDFSDK_PageView* pPageView) { |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1922 return false; | 1923 return false; |
1923 | 1924 |
1924 if (!IsVisible()) | 1925 if (!IsVisible()) |
1925 return false; | 1926 return false; |
1926 | 1927 |
1927 if ((GetFieldFlags() & FIELDFLAG_READONLY) == FIELDFLAG_READONLY) | 1928 if ((GetFieldFlags() & FIELDFLAG_READONLY) == FIELDFLAG_READONLY) |
1928 return false; | 1929 return false; |
1929 | 1930 |
1930 return true; | 1931 return true; |
1931 } | 1932 } |
OLD | NEW |