| OLD | NEW |
| 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/include/fsdk_baseform.h" | 7 #include "fpdfsdk/include/fsdk_baseform.h" |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 452 | 452 |
| 453 pFormField->SetValue(L"", TRUE); | 453 pFormField->SetValue(L"", TRUE); |
| 454 } break; | 454 } break; |
| 455 } | 455 } |
| 456 } | 456 } |
| 457 } | 457 } |
| 458 #endif // PDF_ENABLE_XFA | 458 #endif // PDF_ENABLE_XFA |
| 459 | 459 |
| 460 FX_BOOL CPDFSDK_Widget::IsWidgetAppearanceValid( | 460 FX_BOOL CPDFSDK_Widget::IsWidgetAppearanceValid( |
| 461 CPDF_Annot::AppearanceMode mode) { | 461 CPDF_Annot::AppearanceMode mode) { |
| 462 CPDF_Dictionary* pAP = m_pAnnot->GetAnnotDict()->GetDict("AP"); | 462 CPDF_Dictionary* pAP = m_pAnnot->GetAnnotDict()->GetDictBy("AP"); |
| 463 if (!pAP) | 463 if (!pAP) |
| 464 return FALSE; | 464 return FALSE; |
| 465 | 465 |
| 466 // Choose the right sub-ap | 466 // Choose the right sub-ap |
| 467 const FX_CHAR* ap_entry = "N"; | 467 const FX_CHAR* ap_entry = "N"; |
| 468 if (mode == CPDF_Annot::Down) | 468 if (mode == CPDF_Annot::Down) |
| 469 ap_entry = "D"; | 469 ap_entry = "D"; |
| 470 else if (mode == CPDF_Annot::Rollover) | 470 else if (mode == CPDF_Annot::Rollover) |
| 471 ap_entry = "R"; | 471 ap_entry = "R"; |
| 472 if (!pAP->KeyExist(ap_entry)) | 472 if (!pAP->KeyExist(ap_entry)) |
| 473 ap_entry = "N"; | 473 ap_entry = "N"; |
| 474 | 474 |
| 475 // Get the AP stream or subdirectory | 475 // Get the AP stream or subdirectory |
| 476 CPDF_Object* psub = pAP->GetElementValue(ap_entry); | 476 CPDF_Object* psub = pAP->GetElementValue(ap_entry); |
| 477 if (!psub) | 477 if (!psub) |
| 478 return FALSE; | 478 return FALSE; |
| 479 | 479 |
| 480 int nFieldType = GetFieldType(); | 480 int nFieldType = GetFieldType(); |
| 481 switch (nFieldType) { | 481 switch (nFieldType) { |
| 482 case FIELDTYPE_PUSHBUTTON: | 482 case FIELDTYPE_PUSHBUTTON: |
| 483 case FIELDTYPE_COMBOBOX: | 483 case FIELDTYPE_COMBOBOX: |
| 484 case FIELDTYPE_LISTBOX: | 484 case FIELDTYPE_LISTBOX: |
| 485 case FIELDTYPE_TEXTFIELD: | 485 case FIELDTYPE_TEXTFIELD: |
| 486 case FIELDTYPE_SIGNATURE: | 486 case FIELDTYPE_SIGNATURE: |
| 487 return psub->IsStream(); | 487 return psub->IsStream(); |
| 488 case FIELDTYPE_CHECKBOX: | 488 case FIELDTYPE_CHECKBOX: |
| 489 case FIELDTYPE_RADIOBUTTON: | 489 case FIELDTYPE_RADIOBUTTON: |
| 490 if (CPDF_Dictionary* pSubDict = psub->AsDictionary()) { | 490 if (CPDF_Dictionary* pSubDict = psub->AsDictionary()) { |
| 491 return pSubDict->GetStream(GetAppState()) != NULL; | 491 return pSubDict->GetStreamBy(GetAppState()) != NULL; |
| 492 } | 492 } |
| 493 return FALSE; | 493 return FALSE; |
| 494 } | 494 } |
| 495 return TRUE; | 495 return TRUE; |
| 496 } | 496 } |
| 497 | 497 |
| 498 int CPDFSDK_Widget::GetFieldType() const { | 498 int CPDFSDK_Widget::GetFieldType() const { |
| 499 return GetFormField()->GetFieldType(); | 499 return GetFormField()->GetFieldType(); |
| 500 } | 500 } |
| 501 | 501 |
| (...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 986 } | 986 } |
| 987 if (pControl->HasMKEntry("RI")) { | 987 if (pControl->HasMKEntry("RI")) { |
| 988 pRolloverIcon = pControl->GetRolloverIcon(); | 988 pRolloverIcon = pControl->GetRolloverIcon(); |
| 989 } | 989 } |
| 990 if (pControl->HasMKEntry("IX")) { | 990 if (pControl->HasMKEntry("IX")) { |
| 991 pDownIcon = pControl->GetDownIcon(); | 991 pDownIcon = pControl->GetDownIcon(); |
| 992 } | 992 } |
| 993 | 993 |
| 994 if (pNormalIcon) { | 994 if (pNormalIcon) { |
| 995 if (CPDF_Dictionary* pImageDict = pNormalIcon->GetDict()) { | 995 if (CPDF_Dictionary* pImageDict = pNormalIcon->GetDict()) { |
| 996 if (pImageDict->GetString("Name").IsEmpty()) | 996 if (pImageDict->GetStringBy("Name").IsEmpty()) |
| 997 pImageDict->SetAtString("Name", "ImgA"); | 997 pImageDict->SetAtString("Name", "ImgA"); |
| 998 } | 998 } |
| 999 } | 999 } |
| 1000 | 1000 |
| 1001 if (pRolloverIcon) { | 1001 if (pRolloverIcon) { |
| 1002 if (CPDF_Dictionary* pImageDict = pRolloverIcon->GetDict()) { | 1002 if (CPDF_Dictionary* pImageDict = pRolloverIcon->GetDict()) { |
| 1003 if (pImageDict->GetString("Name").IsEmpty()) | 1003 if (pImageDict->GetStringBy("Name").IsEmpty()) |
| 1004 pImageDict->SetAtString("Name", "ImgB"); | 1004 pImageDict->SetAtString("Name", "ImgB"); |
| 1005 } | 1005 } |
| 1006 } | 1006 } |
| 1007 | 1007 |
| 1008 if (pDownIcon) { | 1008 if (pDownIcon) { |
| 1009 if (CPDF_Dictionary* pImageDict = pDownIcon->GetDict()) { | 1009 if (CPDF_Dictionary* pImageDict = pDownIcon->GetDict()) { |
| 1010 if (pImageDict->GetString("Name").IsEmpty()) | 1010 if (pImageDict->GetStringBy("Name").IsEmpty()) |
| 1011 pImageDict->SetAtString("Name", "ImgC"); | 1011 pImageDict->SetAtString("Name", "ImgC"); |
| 1012 } | 1012 } |
| 1013 } | 1013 } |
| 1014 | 1014 |
| 1015 CPDF_IconFit iconFit = pControl->GetIconFit(); | 1015 CPDF_IconFit iconFit = pControl->GetIconFit(); |
| 1016 | 1016 |
| 1017 CPDFSDK_Document* pDoc = m_pInterForm->GetDocument(); | 1017 CPDFSDK_Document* pDoc = m_pInterForm->GetDocument(); |
| 1018 CPDFDoc_Environment* pEnv = pDoc->GetEnv(); | 1018 CPDFDoc_Environment* pEnv = pDoc->GetEnv(); |
| 1019 | 1019 |
| 1020 CBA_FontMap font_map(this, pEnv->GetSysHandler()); | 1020 CBA_FontMap font_map(this, pEnv->GetSysHandler()); |
| (...skipping 818 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1839 crFill = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); | 1839 crFill = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); |
| 1840 | 1840 |
| 1841 return crFill; | 1841 return crFill; |
| 1842 } | 1842 } |
| 1843 | 1843 |
| 1844 void CPDFSDK_Widget::AddImageToAppearance(const CFX_ByteString& sAPType, | 1844 void CPDFSDK_Widget::AddImageToAppearance(const CFX_ByteString& sAPType, |
| 1845 CPDF_Stream* pImage) { | 1845 CPDF_Stream* pImage) { |
| 1846 CPDF_Document* pDoc = m_pPageView->GetPDFDocument(); | 1846 CPDF_Document* pDoc = m_pPageView->GetPDFDocument(); |
| 1847 ASSERT(pDoc); | 1847 ASSERT(pDoc); |
| 1848 | 1848 |
| 1849 CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDict("AP"); | 1849 CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDictBy("AP"); |
| 1850 CPDF_Stream* pStream = pAPDict->GetStream(sAPType); | 1850 CPDF_Stream* pStream = pAPDict->GetStreamBy(sAPType); |
| 1851 CPDF_Dictionary* pStreamDict = pStream->GetDict(); | 1851 CPDF_Dictionary* pStreamDict = pStream->GetDict(); |
| 1852 CFX_ByteString sImageAlias = "IMG"; | 1852 CFX_ByteString sImageAlias = "IMG"; |
| 1853 | 1853 |
| 1854 if (CPDF_Dictionary* pImageDict = pImage->GetDict()) { | 1854 if (CPDF_Dictionary* pImageDict = pImage->GetDict()) { |
| 1855 sImageAlias = pImageDict->GetString("Name"); | 1855 sImageAlias = pImageDict->GetStringBy("Name"); |
| 1856 if (sImageAlias.IsEmpty()) | 1856 if (sImageAlias.IsEmpty()) |
| 1857 sImageAlias = "IMG"; | 1857 sImageAlias = "IMG"; |
| 1858 } | 1858 } |
| 1859 | 1859 |
| 1860 CPDF_Dictionary* pStreamResList = pStreamDict->GetDict("Resources"); | 1860 CPDF_Dictionary* pStreamResList = pStreamDict->GetDictBy("Resources"); |
| 1861 if (!pStreamResList) { | 1861 if (!pStreamResList) { |
| 1862 pStreamResList = new CPDF_Dictionary(); | 1862 pStreamResList = new CPDF_Dictionary(); |
| 1863 pStreamDict->SetAt("Resources", pStreamResList); | 1863 pStreamDict->SetAt("Resources", pStreamResList); |
| 1864 } | 1864 } |
| 1865 | 1865 |
| 1866 if (pStreamResList) { | 1866 if (pStreamResList) { |
| 1867 CPDF_Dictionary* pXObject = new CPDF_Dictionary; | 1867 CPDF_Dictionary* pXObject = new CPDF_Dictionary; |
| 1868 pXObject->SetAtReference(sImageAlias, pDoc, pImage); | 1868 pXObject->SetAtReference(sImageAlias, pDoc, pImage); |
| 1869 pStreamResList->SetAt("XObject", pXObject); | 1869 pStreamResList->SetAt("XObject", pXObject); |
| 1870 } | 1870 } |
| 1871 } | 1871 } |
| 1872 | 1872 |
| 1873 void CPDFSDK_Widget::RemoveAppearance(const CFX_ByteString& sAPType) { | 1873 void CPDFSDK_Widget::RemoveAppearance(const CFX_ByteString& sAPType) { |
| 1874 if (CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDict("AP")) { | 1874 if (CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDictBy("AP")) { |
| 1875 pAPDict->RemoveAt(sAPType); | 1875 pAPDict->RemoveAt(sAPType); |
| 1876 } | 1876 } |
| 1877 } | 1877 } |
| 1878 | 1878 |
| 1879 FX_BOOL CPDFSDK_Widget::OnAAction(CPDF_AAction::AActionType type, | 1879 FX_BOOL CPDFSDK_Widget::OnAAction(CPDF_AAction::AActionType type, |
| 1880 PDFSDK_FieldAction& data, | 1880 PDFSDK_FieldAction& data, |
| 1881 CPDFSDK_PageView* pPageView) { | 1881 CPDFSDK_PageView* pPageView) { |
| 1882 CPDFSDK_Document* pDocument = pPageView->GetSDKDocument(); | 1882 CPDFSDK_Document* pDocument = pPageView->GetSDKDocument(); |
| 1883 CPDFDoc_Environment* pEnv = pDocument->GetEnv(); | 1883 CPDFDoc_Environment* pEnv = pDocument->GetEnv(); |
| 1884 | 1884 |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2071 if (it != m_Map.end()) | 2071 if (it != m_Map.end()) |
| 2072 pWidget = it->second; | 2072 pWidget = it->second; |
| 2073 | 2073 |
| 2074 if (pWidget) | 2074 if (pWidget) |
| 2075 return pWidget; | 2075 return pWidget; |
| 2076 | 2076 |
| 2077 CPDF_Dictionary* pControlDict = pControl->GetWidget(); | 2077 CPDF_Dictionary* pControlDict = pControl->GetWidget(); |
| 2078 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); | 2078 CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); |
| 2079 CPDFSDK_PageView* pPage = nullptr; | 2079 CPDFSDK_PageView* pPage = nullptr; |
| 2080 | 2080 |
| 2081 if (CPDF_Dictionary* pPageDict = pControlDict->GetDict("P")) { | 2081 if (CPDF_Dictionary* pPageDict = pControlDict->GetDictBy("P")) { |
| 2082 int nPageIndex = pDocument->GetPageIndex(pPageDict->GetObjNum()); | 2082 int nPageIndex = pDocument->GetPageIndex(pPageDict->GetObjNum()); |
| 2083 if (nPageIndex >= 0) { | 2083 if (nPageIndex >= 0) { |
| 2084 pPage = m_pDocument->GetPageView(nPageIndex); | 2084 pPage = m_pDocument->GetPageView(nPageIndex); |
| 2085 } | 2085 } |
| 2086 } | 2086 } |
| 2087 | 2087 |
| 2088 if (!pPage) { | 2088 if (!pPage) { |
| 2089 int nPageIndex = GetPageIndexByAnnotDict(pDocument, pControlDict); | 2089 int nPageIndex = GetPageIndexByAnnotDict(pDocument, pControlDict); |
| 2090 if (nPageIndex >= 0) { | 2090 if (nPageIndex >= 0) { |
| 2091 pPage = m_pDocument->GetPageView(nPageIndex); | 2091 pPage = m_pDocument->GetPageView(nPageIndex); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2119 } | 2119 } |
| 2120 } | 2120 } |
| 2121 | 2121 |
| 2122 int CPDFSDK_InterForm::GetPageIndexByAnnotDict( | 2122 int CPDFSDK_InterForm::GetPageIndexByAnnotDict( |
| 2123 CPDF_Document* pDocument, | 2123 CPDF_Document* pDocument, |
| 2124 CPDF_Dictionary* pAnnotDict) const { | 2124 CPDF_Dictionary* pAnnotDict) const { |
| 2125 ASSERT(pAnnotDict); | 2125 ASSERT(pAnnotDict); |
| 2126 | 2126 |
| 2127 for (int i = 0, sz = pDocument->GetPageCount(); i < sz; i++) { | 2127 for (int i = 0, sz = pDocument->GetPageCount(); i < sz; i++) { |
| 2128 if (CPDF_Dictionary* pPageDict = pDocument->GetPage(i)) { | 2128 if (CPDF_Dictionary* pPageDict = pDocument->GetPage(i)) { |
| 2129 if (CPDF_Array* pAnnots = pPageDict->GetArray("Annots")) { | 2129 if (CPDF_Array* pAnnots = pPageDict->GetArrayBy("Annots")) { |
| 2130 for (int j = 0, jsz = pAnnots->GetCount(); j < jsz; j++) { | 2130 for (int j = 0, jsz = pAnnots->GetCount(); j < jsz; j++) { |
| 2131 CPDF_Object* pDict = pAnnots->GetElementValue(j); | 2131 CPDF_Object* pDict = pAnnots->GetElementValue(j); |
| 2132 if (pAnnotDict == pDict) { | 2132 if (pAnnotDict == pDict) { |
| 2133 return i; | 2133 return i; |
| 2134 } | 2134 } |
| 2135 } | 2135 } |
| 2136 } | 2136 } |
| 2137 } | 2137 } |
| 2138 } | 2138 } |
| 2139 | 2139 |
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2443 | 2443 |
| 2444 FX_BOOL CPDFSDK_InterForm::FDFToURLEncodedData(CFX_WideString csFDFFile, | 2444 FX_BOOL CPDFSDK_InterForm::FDFToURLEncodedData(CFX_WideString csFDFFile, |
| 2445 CFX_WideString csTxtFile) { | 2445 CFX_WideString csTxtFile) { |
| 2446 return TRUE; | 2446 return TRUE; |
| 2447 } | 2447 } |
| 2448 | 2448 |
| 2449 FX_BOOL CPDFSDK_InterForm::FDFToURLEncodedData(uint8_t*& pBuf, | 2449 FX_BOOL CPDFSDK_InterForm::FDFToURLEncodedData(uint8_t*& pBuf, |
| 2450 FX_STRSIZE& nBufSize) { | 2450 FX_STRSIZE& nBufSize) { |
| 2451 CFDF_Document* pFDF = CFDF_Document::ParseMemory(pBuf, nBufSize); | 2451 CFDF_Document* pFDF = CFDF_Document::ParseMemory(pBuf, nBufSize); |
| 2452 if (pFDF) { | 2452 if (pFDF) { |
| 2453 CPDF_Dictionary* pMainDict = pFDF->GetRoot()->GetDict("FDF"); | 2453 CPDF_Dictionary* pMainDict = pFDF->GetRoot()->GetDictBy("FDF"); |
| 2454 if (!pMainDict) | 2454 if (!pMainDict) |
| 2455 return FALSE; | 2455 return FALSE; |
| 2456 | 2456 |
| 2457 // Get fields | 2457 // Get fields |
| 2458 CPDF_Array* pFields = pMainDict->GetArray("Fields"); | 2458 CPDF_Array* pFields = pMainDict->GetArrayBy("Fields"); |
| 2459 if (!pFields) | 2459 if (!pFields) |
| 2460 return FALSE; | 2460 return FALSE; |
| 2461 | 2461 |
| 2462 CFX_ByteTextBuf fdfEncodedData; | 2462 CFX_ByteTextBuf fdfEncodedData; |
| 2463 | 2463 |
| 2464 for (FX_DWORD i = 0; i < pFields->GetCount(); i++) { | 2464 for (FX_DWORD i = 0; i < pFields->GetCount(); i++) { |
| 2465 CPDF_Dictionary* pField = pFields->GetDict(i); | 2465 CPDF_Dictionary* pField = pFields->GetDictAt(i); |
| 2466 if (!pField) | 2466 if (!pField) |
| 2467 continue; | 2467 continue; |
| 2468 CFX_WideString name; | 2468 CFX_WideString name; |
| 2469 name = pField->GetUnicodeText("T"); | 2469 name = pField->GetUnicodeTextBy("T"); |
| 2470 CFX_ByteString name_b = CFX_ByteString::FromUnicode(name); | 2470 CFX_ByteString name_b = CFX_ByteString::FromUnicode(name); |
| 2471 CFX_ByteString csBValue = pField->GetString("V"); | 2471 CFX_ByteString csBValue = pField->GetStringBy("V"); |
| 2472 CFX_WideString csWValue = PDF_DecodeText(csBValue); | 2472 CFX_WideString csWValue = PDF_DecodeText(csBValue); |
| 2473 CFX_ByteString csValue_b = CFX_ByteString::FromUnicode(csWValue); | 2473 CFX_ByteString csValue_b = CFX_ByteString::FromUnicode(csWValue); |
| 2474 | 2474 |
| 2475 fdfEncodedData = fdfEncodedData << name_b.GetBuffer(name_b.GetLength()); | 2475 fdfEncodedData = fdfEncodedData << name_b.GetBuffer(name_b.GetLength()); |
| 2476 name_b.ReleaseBuffer(); | 2476 name_b.ReleaseBuffer(); |
| 2477 fdfEncodedData = fdfEncodedData << "="; | 2477 fdfEncodedData = fdfEncodedData << "="; |
| 2478 fdfEncodedData = fdfEncodedData | 2478 fdfEncodedData = fdfEncodedData |
| 2479 << csValue_b.GetBuffer(csValue_b.GetLength()); | 2479 << csValue_b.GetBuffer(csValue_b.GetLength()); |
| 2480 csValue_b.ReleaseBuffer(); | 2480 csValue_b.ReleaseBuffer(); |
| 2481 if (i != pFields->GetCount() - 1) | 2481 if (i != pFields->GetCount() - 1) |
| (...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2739 } | 2739 } |
| 2740 | 2740 |
| 2741 CBA_AnnotIterator::CBA_AnnotIterator(CPDFSDK_PageView* pPageView, | 2741 CBA_AnnotIterator::CBA_AnnotIterator(CPDFSDK_PageView* pPageView, |
| 2742 const CFX_ByteString& sType, | 2742 const CFX_ByteString& sType, |
| 2743 const CFX_ByteString& sSubType) | 2743 const CFX_ByteString& sSubType) |
| 2744 : m_pPageView(pPageView), | 2744 : m_pPageView(pPageView), |
| 2745 m_sType(sType), | 2745 m_sType(sType), |
| 2746 m_sSubType(sSubType), | 2746 m_sSubType(sSubType), |
| 2747 m_nTabs(BAI_STRUCTURE) { | 2747 m_nTabs(BAI_STRUCTURE) { |
| 2748 CPDF_Page* pPDFPage = m_pPageView->GetPDFPage(); | 2748 CPDF_Page* pPDFPage = m_pPageView->GetPDFPage(); |
| 2749 CFX_ByteString sTabs = pPDFPage->m_pFormDict->GetString("Tabs"); | 2749 CFX_ByteString sTabs = pPDFPage->m_pFormDict->GetStringBy("Tabs"); |
| 2750 | 2750 |
| 2751 if (sTabs == "R") { | 2751 if (sTabs == "R") { |
| 2752 m_nTabs = BAI_ROW; | 2752 m_nTabs = BAI_ROW; |
| 2753 } else if (sTabs == "C") { | 2753 } else if (sTabs == "C") { |
| 2754 m_nTabs = BAI_COLUMN; | 2754 m_nTabs = BAI_COLUMN; |
| 2755 } else { | 2755 } else { |
| 2756 m_nTabs = BAI_STRUCTURE; | 2756 m_nTabs = BAI_STRUCTURE; |
| 2757 } | 2757 } |
| 2758 | 2758 |
| 2759 GenerateResults(); | 2759 GenerateResults(); |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2954 break; | 2954 break; |
| 2955 } | 2955 } |
| 2956 } | 2956 } |
| 2957 } | 2957 } |
| 2958 | 2958 |
| 2959 CPDF_Rect CBA_AnnotIterator::GetAnnotRect(CPDFSDK_Annot* pAnnot) { | 2959 CPDF_Rect CBA_AnnotIterator::GetAnnotRect(CPDFSDK_Annot* pAnnot) { |
| 2960 CPDF_Rect rcAnnot; | 2960 CPDF_Rect rcAnnot; |
| 2961 pAnnot->GetPDFAnnot()->GetRect(rcAnnot); | 2961 pAnnot->GetPDFAnnot()->GetRect(rcAnnot); |
| 2962 return rcAnnot; | 2962 return rcAnnot; |
| 2963 } | 2963 } |
| OLD | NEW |