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

Side by Side Diff: core/src/fpdfdoc/doc_form.cpp

Issue 1171733003: Remove typdefs for pointer types in fx_system.h (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Manual fixes. Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/src/fpdfdoc/doc_basic.cpp ('k') | core/src/fpdfdoc/doc_link.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "../../include/fpdfdoc/fpdf_doc.h" 7 #include "../../include/fpdfdoc/fpdf_doc.h"
8 #include "../../include/fxcrt/fx_xml.h" 8 #include "../../include/fxcrt/fx_xml.h"
9 #include "doc_utils.h" 9 #include "doc_utils.h"
10 10
11 const int nMaxRecursion = 32; 11 const int nMaxRecursion = 32;
12 12
13 class _CFieldNameExtractor 13 class _CFieldNameExtractor
14 { 14 {
15 public: 15 public:
16 _CFieldNameExtractor(const CFX_WideString& full_name) 16 _CFieldNameExtractor(const CFX_WideString& full_name)
17 { 17 {
18 m_pStart = full_name.c_str(); 18 m_pStart = full_name.c_str();
19 m_pEnd = m_pStart + full_name.GetLength(); 19 m_pEnd = m_pStart + full_name.GetLength();
20 m_pCur = m_pStart; 20 m_pCur = m_pStart;
21 } 21 }
22 void GetNext(FX_LPCWSTR &pSubName, FX_STRSIZE& size) 22 void GetNext(const FX_WCHAR* &pSubName, FX_STRSIZE& size)
23 { 23 {
24 pSubName = m_pCur; 24 pSubName = m_pCur;
25 while (m_pCur < m_pEnd && m_pCur[0] != L'.') { 25 while (m_pCur < m_pEnd && m_pCur[0] != L'.') {
26 m_pCur++; 26 m_pCur++;
27 } 27 }
28 size = (FX_STRSIZE)(m_pCur - pSubName); 28 size = (FX_STRSIZE)(m_pCur - pSubName);
29 if (m_pCur < m_pEnd && m_pCur[0] == L'.') { 29 if (m_pCur < m_pEnd && m_pCur[0] == L'.') {
30 m_pCur++; 30 m_pCur++;
31 } 31 }
32 } 32 }
33 protected: 33 protected:
34 FX_LPCWSTR m_pStart; 34 const FX_WCHAR* m_pStart;
35 FX_LPCWSTR m_pEnd; 35 const FX_WCHAR* m_pEnd;
36 FX_LPCWSTR m_pCur; 36 const FX_WCHAR* m_pCur;
37 }; 37 };
38 class CFieldTree 38 class CFieldTree
39 { 39 {
40 public: 40 public:
41 struct _Node { 41 struct _Node {
42 _Node *parent; 42 _Node *parent;
43 CFX_PtrArray children; 43 CFX_PtrArray children;
44 CFX_WideString short_name; 44 CFX_WideString short_name;
45 CPDF_FormField *field_ptr; 45 CPDF_FormField *field_ptr;
46 int CountFields(int nLevel = 0) 46 int CountFields(int nLevel = 0)
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 _Node *pNode = (_Node *)ptr_array[i]; 152 _Node *pNode = (_Node *)ptr_array[i];
153 RemoveNode(pNode); 153 RemoveNode(pNode);
154 } 154 }
155 } 155 }
156 void CFieldTree::SetField(const CFX_WideString &full_name, CPDF_FormField *field _ptr) 156 void CFieldTree::SetField(const CFX_WideString &full_name, CPDF_FormField *field _ptr)
157 { 157 {
158 if (full_name == L"") { 158 if (full_name == L"") {
159 return; 159 return;
160 } 160 }
161 _CFieldNameExtractor name_extractor(full_name); 161 _CFieldNameExtractor name_extractor(full_name);
162 FX_LPCWSTR pName; 162 const FX_WCHAR* pName;
163 FX_STRSIZE nLength; 163 FX_STRSIZE nLength;
164 name_extractor.GetNext(pName, nLength); 164 name_extractor.GetNext(pName, nLength);
165 _Node *pNode = &m_Root, *pLast = NULL; 165 _Node *pNode = &m_Root, *pLast = NULL;
166 while (nLength > 0) { 166 while (nLength > 0) {
167 pLast = pNode; 167 pLast = pNode;
168 CFX_WideString name = CFX_WideString(pName, nLength); 168 CFX_WideString name = CFX_WideString(pName, nLength);
169 pNode = _Lookup(pLast, name); 169 pNode = _Lookup(pLast, name);
170 if (pNode == NULL) { 170 if (pNode == NULL) {
171 pNode = AddChild(pLast, name, NULL); 171 pNode = AddChild(pLast, name, NULL);
172 } 172 }
173 name_extractor.GetNext(pName, nLength); 173 name_extractor.GetNext(pName, nLength);
174 } 174 }
175 if (pNode != &m_Root) { 175 if (pNode != &m_Root) {
176 pNode->field_ptr = field_ptr; 176 pNode->field_ptr = field_ptr;
177 } 177 }
178 } 178 }
179 CPDF_FormField *CFieldTree::GetField(const CFX_WideString &full_name) 179 CPDF_FormField *CFieldTree::GetField(const CFX_WideString &full_name)
180 { 180 {
181 if (full_name == L"") { 181 if (full_name == L"") {
182 return NULL; 182 return NULL;
183 } 183 }
184 _CFieldNameExtractor name_extractor(full_name); 184 _CFieldNameExtractor name_extractor(full_name);
185 FX_LPCWSTR pName; 185 const FX_WCHAR* pName;
186 FX_STRSIZE nLength; 186 FX_STRSIZE nLength;
187 name_extractor.GetNext(pName, nLength); 187 name_extractor.GetNext(pName, nLength);
188 _Node *pNode = &m_Root, *pLast = NULL; 188 _Node *pNode = &m_Root, *pLast = NULL;
189 while (nLength > 0 && pNode) { 189 while (nLength > 0 && pNode) {
190 pLast = pNode; 190 pLast = pNode;
191 CFX_WideString name = CFX_WideString(pName, nLength); 191 CFX_WideString name = CFX_WideString(pName, nLength);
192 pNode = _Lookup(pLast, name); 192 pNode = _Lookup(pLast, name);
193 name_extractor.GetNext(pName, nLength); 193 name_extractor.GetNext(pName, nLength);
194 } 194 }
195 return pNode ? pNode->field_ptr : NULL; 195 return pNode ? pNode->field_ptr : NULL;
196 } 196 }
197 CPDF_FormField *CFieldTree::RemoveField(const CFX_WideString & full_name) 197 CPDF_FormField *CFieldTree::RemoveField(const CFX_WideString & full_name)
198 { 198 {
199 if (full_name == L"") { 199 if (full_name == L"") {
200 return NULL; 200 return NULL;
201 } 201 }
202 _CFieldNameExtractor name_extractor(full_name); 202 _CFieldNameExtractor name_extractor(full_name);
203 FX_LPCWSTR pName; 203 const FX_WCHAR* pName;
204 FX_STRSIZE nLength; 204 FX_STRSIZE nLength;
205 name_extractor.GetNext(pName, nLength); 205 name_extractor.GetNext(pName, nLength);
206 _Node *pNode = &m_Root, *pLast = NULL; 206 _Node *pNode = &m_Root, *pLast = NULL;
207 while (nLength > 0 && pNode) { 207 while (nLength > 0 && pNode) {
208 pLast = pNode; 208 pLast = pNode;
209 CFX_WideString name = CFX_WideString(pName, nLength); 209 CFX_WideString name = CFX_WideString(pName, nLength);
210 pNode = _Lookup(pLast, name); 210 pNode = _Lookup(pLast, name);
211 name_extractor.GetNext(pName, nLength); 211 name_extractor.GetNext(pName, nLength);
212 } 212 }
213 if (pNode && pNode != &m_Root) { 213 if (pNode && pNode != &m_Root) {
214 CFX_PtrArray& ptr_array = pLast->children; 214 CFX_PtrArray& ptr_array = pLast->children;
215 for (int i = 0; i < ptr_array.GetSize(); i ++) { 215 for (int i = 0; i < ptr_array.GetSize(); i ++) {
216 if (pNode == (_Node *)ptr_array[i]) { 216 if (pNode == (_Node *)ptr_array[i]) {
217 ptr_array.RemoveAt(i); 217 ptr_array.RemoveAt(i);
218 break; 218 break;
219 } 219 }
220 } 220 }
221 CPDF_FormField *pField = pNode->field_ptr; 221 CPDF_FormField *pField = pNode->field_ptr;
222 RemoveNode(pNode); 222 RemoveNode(pNode);
223 return pField; 223 return pField;
224 } 224 }
225 return NULL; 225 return NULL;
226 } 226 }
227 CFieldTree::_Node *CFieldTree::FindNode(const CFX_WideString& full_name) 227 CFieldTree::_Node *CFieldTree::FindNode(const CFX_WideString& full_name)
228 { 228 {
229 if (full_name == L"") { 229 if (full_name == L"") {
230 return NULL; 230 return NULL;
231 } 231 }
232 _CFieldNameExtractor name_extractor(full_name); 232 _CFieldNameExtractor name_extractor(full_name);
233 FX_LPCWSTR pName; 233 const FX_WCHAR* pName;
234 FX_STRSIZE nLength; 234 FX_STRSIZE nLength;
235 name_extractor.GetNext(pName, nLength); 235 name_extractor.GetNext(pName, nLength);
236 _Node *pNode = &m_Root, *pLast = NULL; 236 _Node *pNode = &m_Root, *pLast = NULL;
237 while (nLength > 0 && pNode) { 237 while (nLength > 0 && pNode) {
238 pLast = pNode; 238 pLast = pNode;
239 CFX_WideString name = CFX_WideString(pName, nLength); 239 CFX_WideString name = CFX_WideString(pName, nLength);
240 pNode = _Lookup(pLast, name); 240 pNode = _Lookup(pLast, name);
241 name_extractor.GetNext(pName, nLength); 241 name_extractor.GetNext(pName, nLength);
242 } 242 }
243 return pNode; 243 return pNode;
(...skipping 16 matching lines...) Expand all
260 } 260 }
261 int count = pFields->GetCount(); 261 int count = pFields->GetCount();
262 for (int i = 0; i < count; i ++) { 262 for (int i = 0; i < count; i ++) {
263 LoadField(pFields->GetDict(i)); 263 LoadField(pFields->GetDict(i));
264 } 264 }
265 } 265 }
266 CPDF_InterForm::~CPDF_InterForm() 266 CPDF_InterForm::~CPDF_InterForm()
267 { 267 {
268 FX_POSITION pos = m_ControlMap.GetStartPosition(); 268 FX_POSITION pos = m_ControlMap.GetStartPosition();
269 while (pos) { 269 while (pos) {
270 FX_LPVOID key, value; 270 void* key;
271 void* value;
271 m_ControlMap.GetNextAssoc(pos, key, value); 272 m_ControlMap.GetNextAssoc(pos, key, value);
272 delete (CPDF_FormControl*)value; 273 delete (CPDF_FormControl*)value;
273 } 274 }
274 if (m_pFieldTree != NULL) { 275 if (m_pFieldTree != NULL) {
275 int nCount = m_pFieldTree->m_Root.CountFields(); 276 int nCount = m_pFieldTree->m_Root.CountFields();
276 for (int i = 0; i < nCount; i++) { 277 for (int i = 0; i < nCount; i++) {
277 CPDF_FormField *pField = m_pFieldTree->m_Root.GetField(i); 278 CPDF_FormField *pField = m_pFieldTree->m_Root.GetField(i);
278 delete pField; 279 delete pField;
279 } 280 }
280 delete m_pFieldTree; 281 delete m_pFieldTree;
281 } 282 }
282 } 283 }
283 FX_BOOL CPDF_InterForm::m_bUpdateAP = TRUE; 284 FX_BOOL CPDF_InterForm::m_bUpdateAP = TRUE;
284 FX_BOOL CPDF_InterForm::UpdatingAPEnabled() 285 FX_BOOL CPDF_InterForm::UpdatingAPEnabled()
285 { 286 {
286 return m_bUpdateAP; 287 return m_bUpdateAP;
287 } 288 }
288 void CPDF_InterForm::EnableUpdateAP(FX_BOOL bUpdateAP) 289 void CPDF_InterForm::EnableUpdateAP(FX_BOOL bUpdateAP)
289 { 290 {
290 m_bUpdateAP = bUpdateAP; 291 m_bUpdateAP = bUpdateAP;
291 } 292 }
292 CFX_ByteString CPDF_InterForm::GenerateNewResourceName(const CPDF_Dictionary* pR esDict, FX_LPCSTR csType, int iMinLen, FX_LPCSTR csPrefix) 293 CFX_ByteString CPDF_InterForm::GenerateNewResourceName(const CPDF_Dictionary* pR esDict, const FX_CHAR* csType, int iMinLen, const FX_CHAR* csPrefix)
293 { 294 {
294 CFX_ByteString csStr = csPrefix; 295 CFX_ByteString csStr = csPrefix;
295 CFX_ByteString csBType = csType; 296 CFX_ByteString csBType = csType;
296 if (csStr.IsEmpty()) { 297 if (csStr.IsEmpty()) {
297 if (csBType == "ExtGState") { 298 if (csBType == "ExtGState") {
298 csStr = "GS"; 299 csStr = "GS";
299 } else if (csBType == "ColorSpace") { 300 } else if (csBType == "ColorSpace") {
300 csStr = "CS"; 301 csStr = "CS";
301 } else if (csBType == "Font") { 302 } else if (csBType == "Font") {
302 csStr = "ZiTi"; 303 csStr = "ZiTi";
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 } 467 }
467 CPDF_Font* pFont = NULL; 468 CPDF_Font* pFont = NULL;
468 if (csFontName == "ZapfDingbats") { 469 if (csFontName == "ZapfDingbats") {
469 pFont = ((CPDF_Document*)pDocument)->AddStandardFont(csFontName, NULL); 470 pFont = ((CPDF_Document*)pDocument)->AddStandardFont(csFontName, NULL);
470 } else { 471 } else {
471 CPDF_FontEncoding encoding(PDFFONT_ENCODING_WINANSI); 472 CPDF_FontEncoding encoding(PDFFONT_ENCODING_WINANSI);
472 pFont = ((CPDF_Document*)pDocument)->AddStandardFont(csFontName, &encodi ng); 473 pFont = ((CPDF_Document*)pDocument)->AddStandardFont(csFontName, &encodi ng);
473 } 474 }
474 return pFont; 475 return pFont;
475 } 476 }
476 CFX_ByteString CPDF_InterForm::GetNativeFont(uint8_t charSet, FX_LPVOID pLogFont ) 477 CFX_ByteString CPDF_InterForm::GetNativeFont(uint8_t charSet, void* pLogFont)
477 { 478 {
478 CFX_ByteString csFontName; 479 CFX_ByteString csFontName;
479 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ 480 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
480 LOGFONTA lf; 481 LOGFONTA lf;
481 FX_BOOL bRet; 482 FX_BOOL bRet;
482 if (charSet == ANSI_CHARSET) { 483 if (charSet == ANSI_CHARSET) {
483 csFontName = "Helvetica"; 484 csFontName = "Helvetica";
484 return csFontName; 485 return csFontName;
485 } 486 }
486 bRet = FALSE; 487 bRet = FALSE;
(...skipping 16 matching lines...) Expand all
503 if (bRet) { 504 if (bRet) {
504 if (pLogFont != NULL) { 505 if (pLogFont != NULL) {
505 memcpy(pLogFont, &lf, sizeof(LOGFONTA)); 506 memcpy(pLogFont, &lf, sizeof(LOGFONTA));
506 } 507 }
507 csFontName = lf.lfFaceName; 508 csFontName = lf.lfFaceName;
508 return csFontName; 509 return csFontName;
509 } 510 }
510 #endif 511 #endif
511 return csFontName; 512 return csFontName;
512 } 513 }
513 CFX_ByteString CPDF_InterForm::GetNativeFont(FX_LPVOID pLogFont) 514 CFX_ByteString CPDF_InterForm::GetNativeFont(void* pLogFont)
514 { 515 {
515 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ 516 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
516 uint8_t charSet = GetNativeCharSet(); 517 uint8_t charSet = GetNativeCharSet();
517 return GetNativeFont(charSet, pLogFont); 518 return GetNativeFont(charSet, pLogFont);
518 #else 519 #else
519 return CFX_ByteString(); 520 return CFX_ByteString();
520 #endif 521 #endif
521 } 522 }
522 uint8_t CPDF_InterForm::GetNativeCharSet() 523 uint8_t CPDF_InterForm::GetNativeCharSet()
523 { 524 {
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 FX_BOOL CPDF_InterForm::ValidateFieldName(const CPDF_FormControl* pControl, CFX_ WideString& csNewFieldName) 689 FX_BOOL CPDF_InterForm::ValidateFieldName(const CPDF_FormControl* pControl, CFX_ WideString& csNewFieldName)
689 { 690 {
690 if (pControl == NULL || csNewFieldName.IsEmpty()) { 691 if (pControl == NULL || csNewFieldName.IsEmpty()) {
691 return FALSE; 692 return FALSE;
692 } 693 }
693 CPDF_FormField* pField = ((CPDF_FormControl*)pControl)->GetField(); 694 CPDF_FormField* pField = ((CPDF_FormControl*)pControl)->GetField();
694 return ValidateFieldName(csNewFieldName, pField->GetFieldType(), pField, pCo ntrol); 695 return ValidateFieldName(csNewFieldName, pField->GetFieldType(), pField, pCo ntrol);
695 } 696 }
696 int CPDF_InterForm::CompareFieldName(const CFX_ByteString& name1, const CFX_Byte String& name2) 697 int CPDF_InterForm::CompareFieldName(const CFX_ByteString& name1, const CFX_Byte String& name2)
697 { 698 {
698 FX_LPCSTR ptr1 = name1, ptr2 = name2; 699 const FX_CHAR* ptr1 = name1;
700 const FX_CHAR* ptr2 = name2;
699 if (name1.GetLength() != name2.GetLength()) { 701 if (name1.GetLength() != name2.GetLength()) {
700 int i = 0; 702 int i = 0;
701 while (ptr1[i] == ptr2[i]) { 703 while (ptr1[i] == ptr2[i]) {
702 i ++; 704 i ++;
703 } 705 }
704 if (i == name1.GetLength()) { 706 if (i == name1.GetLength()) {
705 return 2; 707 return 2;
706 } 708 }
707 if (i == name2.GetLength()) { 709 if (i == name2.GetLength()) {
708 return 3; 710 return 3;
709 } 711 }
710 return 0; 712 return 0;
711 } else { 713 } else {
712 return name1 == name2 ? 1 : 0; 714 return name1 == name2 ? 1 : 0;
713 } 715 }
714 } 716 }
715 int CPDF_InterForm::CompareFieldName(const CFX_WideString& name1, const CFX_Wide String& name2) 717 int CPDF_InterForm::CompareFieldName(const CFX_WideString& name1, const CFX_Wide String& name2)
716 { 718 {
717 FX_LPCWSTR ptr1 = name1.c_str(); 719 const FX_WCHAR* ptr1 = name1.c_str();
718 FX_LPCWSTR ptr2 = name2.c_str(); 720 const FX_WCHAR* ptr2 = name2.c_str();
719 if (name1.GetLength() != name2.GetLength()) { 721 if (name1.GetLength() != name2.GetLength()) {
720 int i = 0; 722 int i = 0;
721 while (ptr1[i] == ptr2[i]) { 723 while (ptr1[i] == ptr2[i]) {
722 i ++; 724 i ++;
723 } 725 }
724 if (i == name1.GetLength()) { 726 if (i == name1.GetLength()) {
725 return 2; 727 return 2;
726 } 728 }
727 if (i == name2.GetLength()) { 729 if (i == name2.GetLength()) {
728 return 3; 730 return 3;
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 } 814 }
813 FX_BOOL CPDF_InterForm::IsValidFormControl(const void* pControl) 815 FX_BOOL CPDF_InterForm::IsValidFormControl(const void* pControl)
814 { 816 {
815 if (pControl == NULL) { 817 if (pControl == NULL) {
816 return FALSE; 818 return FALSE;
817 } 819 }
818 FX_POSITION pos = m_ControlMap.GetStartPosition(); 820 FX_POSITION pos = m_ControlMap.GetStartPosition();
819 while (pos) { 821 while (pos) {
820 CPDF_Dictionary* pWidgetDict = NULL; 822 CPDF_Dictionary* pWidgetDict = NULL;
821 void* pFormControl = NULL; 823 void* pFormControl = NULL;
822 m_ControlMap.GetNextAssoc(pos, (FX_LPVOID&)pWidgetDict, pFormControl); 824 m_ControlMap.GetNextAssoc(pos, (void*&)pWidgetDict, pFormControl);
823 if (pControl == pFormControl) { 825 if (pControl == pFormControl) {
824 return TRUE; 826 return TRUE;
825 } 827 }
826 } 828 }
827 return FALSE; 829 return FALSE;
828 } 830 }
829 int CPDF_InterForm::CountPageControls(CPDF_Page* pPage) const 831 int CPDF_InterForm::CountPageControls(CPDF_Page* pPage) const
830 { 832 {
831 CPDF_Array* pAnnotList = pPage->m_pFormDict->GetArray("Annots"); 833 CPDF_Array* pAnnotList = pPage->m_pFormDict->GetArray("Annots");
832 if (pAnnotList == NULL) { 834 if (pAnnotList == NULL) {
833 return 0; 835 return 0;
834 } 836 }
835 int count = 0; 837 int count = 0;
836 for (FX_DWORD i = 0; i < pAnnotList->GetCount(); i ++) { 838 for (FX_DWORD i = 0; i < pAnnotList->GetCount(); i ++) {
837 CPDF_Dictionary* pAnnot = pAnnotList->GetDict(i); 839 CPDF_Dictionary* pAnnot = pAnnotList->GetDict(i);
838 if (pAnnot == NULL) { 840 if (pAnnot == NULL) {
839 continue; 841 continue;
840 } 842 }
841 CPDF_FormControl* pControl; 843 CPDF_FormControl* pControl;
842 if (!m_ControlMap.Lookup(pAnnot, (FX_LPVOID&)pControl)) { 844 if (!m_ControlMap.Lookup(pAnnot, (void*&)pControl)) {
843 continue; 845 continue;
844 } 846 }
845 count ++; 847 count ++;
846 } 848 }
847 return count; 849 return count;
848 } 850 }
849 CPDF_FormControl* CPDF_InterForm::GetPageControl(CPDF_Page* pPage, int index) co nst 851 CPDF_FormControl* CPDF_InterForm::GetPageControl(CPDF_Page* pPage, int index) co nst
850 { 852 {
851 CPDF_Array* pAnnotList = pPage->m_pFormDict->GetArray("Annots"); 853 CPDF_Array* pAnnotList = pPage->m_pFormDict->GetArray("Annots");
852 if (pAnnotList == NULL) { 854 if (pAnnotList == NULL) {
853 return NULL; 855 return NULL;
854 } 856 }
855 int count = 0; 857 int count = 0;
856 for (FX_DWORD i = 0; i < pAnnotList->GetCount(); i ++) { 858 for (FX_DWORD i = 0; i < pAnnotList->GetCount(); i ++) {
857 CPDF_Dictionary* pAnnot = pAnnotList->GetDict(i); 859 CPDF_Dictionary* pAnnot = pAnnotList->GetDict(i);
858 if (pAnnot == NULL) { 860 if (pAnnot == NULL) {
859 continue; 861 continue;
860 } 862 }
861 CPDF_FormControl* pControl; 863 CPDF_FormControl* pControl;
862 if (!m_ControlMap.Lookup(pAnnot, (FX_LPVOID&)pControl)) { 864 if (!m_ControlMap.Lookup(pAnnot, (void*&)pControl)) {
863 continue; 865 continue;
864 } 866 }
865 if (index == count) { 867 if (index == count) {
866 return pControl; 868 return pControl;
867 } 869 }
868 count ++; 870 count ++;
869 } 871 }
870 return NULL; 872 return NULL;
871 } 873 }
872 CPDF_FormControl* CPDF_InterForm::GetControlAtPoint(CPDF_Page* pPage, FX_FLOAT p df_x, FX_FLOAT pdf_y) const 874 CPDF_FormControl* CPDF_InterForm::GetControlAtPoint(CPDF_Page* pPage, FX_FLOAT p df_x, FX_FLOAT pdf_y) const
873 { 875 {
874 CPDF_Array* pAnnotList = pPage->m_pFormDict->GetArray("Annots"); 876 CPDF_Array* pAnnotList = pPage->m_pFormDict->GetArray("Annots");
875 if (pAnnotList == NULL) { 877 if (pAnnotList == NULL) {
876 return NULL; 878 return NULL;
877 } 879 }
878 for (FX_DWORD i = pAnnotList->GetCount(); i > 0; i --) { 880 for (FX_DWORD i = pAnnotList->GetCount(); i > 0; i --) {
879 CPDF_Dictionary* pAnnot = pAnnotList->GetDict(i - 1); 881 CPDF_Dictionary* pAnnot = pAnnotList->GetDict(i - 1);
880 if (pAnnot == NULL) { 882 if (pAnnot == NULL) {
881 continue; 883 continue;
882 } 884 }
883 CPDF_FormControl* pControl; 885 CPDF_FormControl* pControl;
884 if (!m_ControlMap.Lookup(pAnnot, (FX_LPVOID&)pControl)) { 886 if (!m_ControlMap.Lookup(pAnnot, (void*&)pControl)) {
885 continue; 887 continue;
886 } 888 }
887 CFX_FloatRect rect = pControl->GetRect(); 889 CFX_FloatRect rect = pControl->GetRect();
888 if (rect.Contains(pdf_x, pdf_y)) { 890 if (rect.Contains(pdf_x, pdf_y)) {
889 return pControl; 891 return pControl;
890 } 892 }
891 } 893 }
892 return NULL; 894 return NULL;
893 } 895 }
894 CPDF_FormControl* CPDF_InterForm::GetControlByDict(CPDF_Dictionary* pWidgetDict) const 896 CPDF_FormControl* CPDF_InterForm::GetControlByDict(CPDF_Dictionary* pWidgetDict) const
895 { 897 {
896 CPDF_FormControl* pControl = NULL; 898 CPDF_FormControl* pControl = NULL;
897 m_ControlMap.Lookup(pWidgetDict, (FX_LPVOID&)pControl); 899 m_ControlMap.Lookup(pWidgetDict, (void*&)pControl);
898 return pControl; 900 return pControl;
899 } 901 }
900 FX_DWORD CPDF_InterForm::CountInternalFields(const CFX_WideString& csFieldName) const 902 FX_DWORD CPDF_InterForm::CountInternalFields(const CFX_WideString& csFieldName) const
901 { 903 {
902 if (m_pFormDict == NULL) { 904 if (m_pFormDict == NULL) {
903 return 0; 905 return 0;
904 } 906 }
905 CPDF_Array* pArray = m_pFormDict->GetArray("Fields"); 907 CPDF_Array* pArray = m_pFormDict->GetArray("Fields");
906 if (pArray == NULL) { 908 if (pArray == NULL) {
907 return 0; 909 return 0;
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
1195 m_pFormNotify->AfterFormReset(this); 1197 m_pFormNotify->AfterFormReset(this);
1196 } 1198 }
1197 return TRUE; 1199 return TRUE;
1198 } 1200 }
1199 void CPDF_InterForm::ReloadForm() 1201 void CPDF_InterForm::ReloadForm()
1200 { 1202 {
1201 FX_POSITION pos = m_ControlMap.GetStartPosition(); 1203 FX_POSITION pos = m_ControlMap.GetStartPosition();
1202 while (pos) { 1204 while (pos) {
1203 CPDF_Dictionary* pWidgetDict; 1205 CPDF_Dictionary* pWidgetDict;
1204 CPDF_FormControl* pControl; 1206 CPDF_FormControl* pControl;
1205 m_ControlMap.GetNextAssoc(pos, (FX_LPVOID&)pWidgetDict, (FX_LPVOID&)pCon trol); 1207 m_ControlMap.GetNextAssoc(pos, (void*&)pWidgetDict, (void*&)pControl);
1206 delete pControl; 1208 delete pControl;
1207 } 1209 }
1208 m_ControlMap.RemoveAll(); 1210 m_ControlMap.RemoveAll();
1209 int nCount = m_pFieldTree->m_Root.CountFields(); 1211 int nCount = m_pFieldTree->m_Root.CountFields();
1210 for (int k = 0; k < nCount; k ++) { 1212 for (int k = 0; k < nCount; k ++) {
1211 CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(k); 1213 CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(k);
1212 delete pField; 1214 delete pField;
1213 } 1215 }
1214 m_pFieldTree->RemoveAll(); 1216 m_pFieldTree->RemoveAll();
1215 if (m_pFormDict == NULL) { 1217 if (m_pFormDict == NULL) {
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
1458 if (pV != NULL) { 1460 if (pV != NULL) {
1459 pFieldDict->SetAt("V", pV->Clone(TRUE)); 1461 pFieldDict->SetAt("V", pV->Clone(TRUE));
1460 } 1462 }
1461 } 1463 }
1462 pFields->Add(pFieldDict); 1464 pFields->Add(pFieldDict);
1463 } 1465 }
1464 } 1466 }
1465 return pDoc; 1467 return pDoc;
1466 } 1468 }
1467 const struct _SupportFieldEncoding { 1469 const struct _SupportFieldEncoding {
1468 FX_LPCSTR m_name; 1470 const FX_CHAR* m_name;
1469 int32_t m_codePage; 1471 int32_t m_codePage;
1470 } g_fieldEncoding[] = { 1472 } g_fieldEncoding[] = {
1471 { "BigFive", 950 }, 1473 { "BigFive", 950 },
1472 { "GBK", 936 }, 1474 { "GBK", 936 },
1473 { "Shift-JIS", 932 }, 1475 { "Shift-JIS", 932 },
1474 { "UHC", 949 }, 1476 { "UHC", 949 },
1475 }; 1477 };
1476 static void FPDFDOC_FDF_GetFieldValue(CPDF_Dictionary *pFieldDict, CFX_WideStrin g &csValue, CFX_ByteString &bsEncoding) 1478 static void FPDFDOC_FDF_GetFieldValue(CPDF_Dictionary *pFieldDict, CFX_WideStrin g &csValue, CFX_ByteString &bsEncoding)
1477 { 1479 {
1478 ASSERT(pFieldDict != NULL); 1480 ASSERT(pFieldDict != NULL);
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1631 continue; 1633 continue;
1632 } 1634 }
1633 CPDF_FormControl* pControl = NULL; 1635 CPDF_FormControl* pControl = NULL;
1634 if (m_ControlMap.Lookup(pAnnotDict, (void*&)pControl)) { 1636 if (m_ControlMap.Lookup(pAnnotDict, (void*&)pControl)) {
1635 return iNewPage; 1637 return iNewPage;
1636 } 1638 }
1637 } 1639 }
1638 } while (TRUE); 1640 } while (TRUE);
1639 return -1; 1641 return -1;
1640 } 1642 }
OLDNEW
« no previous file with comments | « core/src/fpdfdoc/doc_basic.cpp ('k') | core/src/fpdfdoc/doc_link.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698