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

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

Issue 2260663002: Add initial Document::getAnnot support (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "fpdfsdk/javascript/Document.h" 7 #include "fpdfsdk/javascript/Document.h"
8 8
9 #include <vector> 9 #include <vector>
10 10
11 #include "core/fpdfapi/fpdf_font/include/cpdf_font.h" 11 #include "core/fpdfapi/fpdf_font/include/cpdf_font.h"
12 #include "core/fpdfapi/fpdf_page/include/cpdf_page.h" 12 #include "core/fpdfapi/fpdf_page/include/cpdf_page.h"
13 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" 13 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h"
14 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" 14 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h"
15 #include "core/fpdfapi/fpdf_parser/include/fpdf_parser_decode.h" 15 #include "core/fpdfapi/fpdf_parser/include/fpdf_parser_decode.h"
16 #include "core/fpdfdoc/include/cpdf_interform.h" 16 #include "core/fpdfdoc/include/cpdf_interform.h"
17 #include "core/fpdfdoc/include/cpdf_nametree.h" 17 #include "core/fpdfdoc/include/cpdf_nametree.h"
18 #include "fpdfsdk/include/cpdfsdk_interform.h" 18 #include "fpdfsdk/include/cpdfsdk_interform.h"
19 #include "fpdfsdk/include/cpdfsdk_widget.h" 19 #include "fpdfsdk/include/cpdfsdk_widget.h"
20 #include "fpdfsdk/include/cpdfsdk_annotiterator.h"
20 #include "fpdfsdk/include/fsdk_mgr.h" 21 #include "fpdfsdk/include/fsdk_mgr.h"
22 #include "fpdfsdk/javascript/Annot.h"
21 #include "fpdfsdk/javascript/Field.h" 23 #include "fpdfsdk/javascript/Field.h"
22 #include "fpdfsdk/javascript/Icon.h" 24 #include "fpdfsdk/javascript/Icon.h"
23 #include "fpdfsdk/javascript/JS_Define.h" 25 #include "fpdfsdk/javascript/JS_Define.h"
24 #include "fpdfsdk/javascript/JS_EventHandler.h" 26 #include "fpdfsdk/javascript/JS_EventHandler.h"
25 #include "fpdfsdk/javascript/JS_Object.h" 27 #include "fpdfsdk/javascript/JS_Object.h"
26 #include "fpdfsdk/javascript/JS_Value.h" 28 #include "fpdfsdk/javascript/JS_Value.h"
27 #include "fpdfsdk/javascript/app.h" 29 #include "fpdfsdk/javascript/app.h"
28 #include "fpdfsdk/javascript/cjs_context.h" 30 #include "fpdfsdk/javascript/cjs_context.h"
29 #include "fpdfsdk/javascript/cjs_runtime.h" 31 #include "fpdfsdk/javascript/cjs_runtime.h"
30 #include "fpdfsdk/javascript/resource.h" 32 #include "fpdfsdk/javascript/resource.h"
(...skipping 991 matching lines...) Expand 10 before | Expand all | Expand 10 after
1022 const std::vector<CJS_Value>& params, 1024 const std::vector<CJS_Value>& params,
1023 CJS_Value& vRet, 1025 CJS_Value& vRet,
1024 CFX_WideString& sError) { 1026 CFX_WideString& sError) {
1025 return TRUE; 1027 return TRUE;
1026 } 1028 }
1027 1029
1028 FX_BOOL Document::getAnnot(IJS_Context* cc, 1030 FX_BOOL Document::getAnnot(IJS_Context* cc,
1029 const std::vector<CJS_Value>& params, 1031 const std::vector<CJS_Value>& params,
1030 CJS_Value& vRet, 1032 CJS_Value& vRet,
1031 CFX_WideString& sError) { 1033 CFX_WideString& sError) {
1034 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
1035 if (params.size() != 2) {
1036 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1037 return FALSE;
1038 }
1039
1040 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
1041 int nPageNo = params[0].ToInt(pRuntime);
1042 CFX_WideString swAnnotName = params[1].ToCFXWideString(pRuntime);
1043
1044 CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(nPageNo);
1045 if (!pPageView)
1046 return FALSE;
1047
1048 CPDFSDK_AnnotIterator annotIterator(pPageView, false);
1049 CPDFSDK_BAAnnot* pSDKBAAnnot = nullptr;
1050 while (CPDFSDK_Annot* pSDKAnnotCur = annotIterator.Next()) {
1051 CPDFSDK_BAAnnot* pBAAnnot = static_cast<CPDFSDK_BAAnnot*>(pSDKAnnotCur);
1052 if (!pBAAnnot)
Lei Zhang 2016/08/19 00:56:32 Maybe this block from here down can just be:
tonikitoo 2016/08/19 02:39:31 Done.
1053 continue;
1054
1055 if (pBAAnnot->GetAnnotName() != swAnnotName)
1056 continue;
1057
1058 pSDKBAAnnot = pBAAnnot;
1059 break;
1060 }
1061
1062 if (!pSDKBAAnnot)
1063 return FALSE;
1064
1065 v8::Local<v8::Object> pObj =
1066 pRuntime->NewFxDynamicObj(CJS_Annot::g_nObjDefnID);
1067 if (pObj.IsEmpty())
1068 return FALSE;
1069
1070 CJS_Annot* pJS_Annot =
1071 static_cast<CJS_Annot*>(pRuntime->GetObjectPrivate(pObj));
1072 if (!pJS_Annot)
1073 return FALSE;
1074
1075 Annot* pAnnot = static_cast<Annot*>(pJS_Annot->GetEmbedObject());
1076 if (!pAnnot)
1077 return FALSE;
1078
1079 pAnnot->SetData(pSDKBAAnnot);
1080
1081 vRet = CJS_Value(pRuntime, pJS_Annot);
1032 return TRUE; 1082 return TRUE;
1033 } 1083 }
1034 1084
1035 FX_BOOL Document::getAnnots(IJS_Context* cc, 1085 FX_BOOL Document::getAnnots(IJS_Context* cc,
1036 const std::vector<CJS_Value>& params, 1086 const std::vector<CJS_Value>& params,
1037 CJS_Value& vRet, 1087 CJS_Value& vRet,
1038 CFX_WideString& sError) { 1088 CFX_WideString& sError) {
1039 vRet.SetNull(CJS_Runtime::FromContext(cc)); 1089 vRet.SetNull(CJS_Runtime::FromContext(cc));
1040 return TRUE; 1090 return TRUE;
1041 } 1091 }
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
1554 } 1604 }
1555 } 1605 }
1556 1606
1557 for (const auto& pData : DelayDataForFieldAndControlIndex) 1607 for (const auto& pData : DelayDataForFieldAndControlIndex)
1558 Field::DoDelay(m_pDocument, pData.get()); 1608 Field::DoDelay(m_pDocument, pData.get());
1559 } 1609 }
1560 1610
1561 CJS_Document* Document::GetCJSDoc() const { 1611 CJS_Document* Document::GetCJSDoc() const {
1562 return static_cast<CJS_Document*>(m_pJSObject); 1612 return static_cast<CJS_Document*>(m_pJSObject);
1563 } 1613 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698