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

Side by Side Diff: fpdfsdk/src/fpdftext.cpp

Issue 1265503005: clang-format all pdfium code. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: sigh Created 5 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 "../../core/include/fpdfdoc/fpdf_doc.h" 7 #include "../../core/include/fpdfdoc/fpdf_doc.h"
8 #include "../../core/include/fpdftext/fpdf_text.h" 8 #include "../../core/include/fpdftext/fpdf_text.h"
9 #include "../../public/fpdf_text.h" 9 #include "../../public/fpdf_text.h"
10 10
11 #ifdef _WIN32 11 #ifdef _WIN32
12 #include <tchar.h> 12 #include <tchar.h>
13 #endif 13 #endif
14 14
15 » // jabdelmalek: commented out to build on Linux. Not used. 15 // jabdelmalek: commented out to build on Linux. Not used.
16 » // extern HANDLE g_hModule; 16 // extern HANDLE g_hModule;
17 17
18 DLLEXPORT FPDF_TEXTPAGE STDCALL FPDFText_LoadPage(FPDF_PAGE page) 18 DLLEXPORT FPDF_TEXTPAGE STDCALL FPDFText_LoadPage(FPDF_PAGE page) {
19 { 19 if (!page)
20 » if (!page) return NULL; 20 return NULL;
21 » IPDF_TextPage* textpage=NULL; 21 IPDF_TextPage* textpage = NULL;
22 » CPDF_ViewerPreferences viewRef(((CPDF_Page*)page)->m_pDocument); 22 CPDF_ViewerPreferences viewRef(((CPDF_Page*)page)->m_pDocument);
23 » textpage=IPDF_TextPage::CreateTextPage((CPDF_Page*)page,viewRef.IsDirect ionR2L()); 23 textpage =
24 » textpage->ParseTextPage(); 24 IPDF_TextPage::CreateTextPage((CPDF_Page*)page, viewRef.IsDirectionR2L());
25 » return textpage; 25 textpage->ParseTextPage();
26 } 26 return textpage;
27 DLLEXPORT void STDCALL FPDFText_ClosePage(FPDF_TEXTPAGE text_page) 27 }
28 { 28 DLLEXPORT void STDCALL FPDFText_ClosePage(FPDF_TEXTPAGE text_page) {
29 delete (IPDF_TextPage*)text_page; 29 delete (IPDF_TextPage*)text_page;
30 } 30 }
31 DLLEXPORT int STDCALL FPDFText_CountChars(FPDF_TEXTPAGE text_page) 31 DLLEXPORT int STDCALL FPDFText_CountChars(FPDF_TEXTPAGE text_page) {
32 { 32 if (!text_page)
33 » if (!text_page) return» -1; 33 return -1;
34 » IPDF_TextPage* textpage=(IPDF_TextPage*)text_page; 34 IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
35 » return textpage->CountChars(); 35 return textpage->CountChars();
36 } 36 }
37 DLLEXPORT unsigned int STDCALL FPDFText_GetUnicode(FPDF_TEXTPAGE text_page, int index) 37 DLLEXPORT unsigned int STDCALL FPDFText_GetUnicode(FPDF_TEXTPAGE text_page,
38 { 38 int index) {
39 » if (!text_page) return -1; 39 if (!text_page)
40 » IPDF_TextPage* textpage=(IPDF_TextPage*)text_page; 40 return -1;
41 41 IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
42 » if (index<0 || index>=textpage->CountChars()) return 0; 42
43 43 if (index < 0 || index >= textpage->CountChars())
44 » FPDF_CHAR_INFO» charinfo; 44 return 0;
45 » textpage->GetCharInfo(index,charinfo); 45
46 » return charinfo.m_Unicode; 46 FPDF_CHAR_INFO charinfo;
47 } 47 textpage->GetCharInfo(index, charinfo);
48 DLLEXPORT double STDCALL FPDFText_GetFontSize(FPDF_TEXTPAGE text_page, int index ) 48 return charinfo.m_Unicode;
49 { 49 }
50 » if (!text_page) return 0; 50 DLLEXPORT double STDCALL FPDFText_GetFontSize(FPDF_TEXTPAGE text_page,
51 » IPDF_TextPage* textpage=(IPDF_TextPage*)text_page; 51 int index) {
52 52 if (!text_page)
53 » if (index<0 || index>=textpage->CountChars()) return 0; 53 return 0;
54 54 IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
55 » FPDF_CHAR_INFO» charinfo; 55
56 » textpage->GetCharInfo(index,charinfo); 56 if (index < 0 || index >= textpage->CountChars())
57 » return charinfo.m_FontSize; 57 return 0;
58 } 58
59 59 FPDF_CHAR_INFO charinfo;
60 DLLEXPORT void STDCALL FPDFText_GetCharBox(FPDF_TEXTPAGE text_page, int index,do uble* left, 60 textpage->GetCharInfo(index, charinfo);
61 » » » » » » » » » » » » » double* right, double* bottom, double* top) 61 return charinfo.m_FontSize;
62 { 62 }
63 » if (!text_page) return; 63
64 » IPDF_TextPage* textpage=(IPDF_TextPage*)text_page; 64 DLLEXPORT void STDCALL FPDFText_GetCharBox(FPDF_TEXTPAGE text_page,
65 65 int index,
66 » if (index<0 || index>=textpage->CountChars()) return ; 66 double* left,
67 » FPDF_CHAR_INFO» charinfo; 67 double* right,
68 » textpage->GetCharInfo(index,charinfo); 68 double* bottom,
69 » *left=charinfo.m_CharBox.left; 69 double* top) {
70 » *right=charinfo.m_CharBox.right; 70 if (!text_page)
71 » *bottom=charinfo.m_CharBox.bottom; 71 return;
72 » *top=charinfo.m_CharBox.top; 72 IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
73 } 73
74 74 if (index < 0 || index >= textpage->CountChars())
75 //select 75 return;
76 DLLEXPORT int STDCALL FPDFText_GetCharIndexAtPos(FPDF_TEXTPAGE text_page,double x,double y,double xTorelance,double yTorelance) 76 FPDF_CHAR_INFO charinfo;
77 { 77 textpage->GetCharInfo(index, charinfo);
78 » if (!text_page) return -3; 78 *left = charinfo.m_CharBox.left;
79 » IPDF_TextPage* textpage=(IPDF_TextPage*)text_page; 79 *right = charinfo.m_CharBox.right;
80 » return textpage->GetIndexAtPos((FX_FLOAT)x,(FX_FLOAT)y,(FX_FLOAT)xTorela nce,(FX_FLOAT)yTorelance); 80 *bottom = charinfo.m_CharBox.bottom;
81 } 81 *top = charinfo.m_CharBox.top;
82 82 }
83 DLLEXPORT int STDCALL FPDFText_GetText(FPDF_TEXTPAGE text_page,int start,int cou nt,unsigned short* result) 83
84 { 84 // select
85 » if (!text_page) return 0; 85 DLLEXPORT int STDCALL FPDFText_GetCharIndexAtPos(FPDF_TEXTPAGE text_page,
86 » IPDF_TextPage* textpage=(IPDF_TextPage*)text_page; 86 double x,
87 87 double y,
88 » if (start>=textpage->CountChars()) return 0; 88 double xTorelance,
89 89 double yTorelance) {
90 » CFX_WideString str=textpage->GetPageText(start,count); 90 if (!text_page)
91 » if(str.GetLength()>count) 91 return -3;
92 » » str = str.Left(count); 92 IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
93 93 return textpage->GetIndexAtPos((FX_FLOAT)x, (FX_FLOAT)y, (FX_FLOAT)xTorelance,
94 » CFX_ByteString cbUTF16str = str.UTF16LE_Encode(); 94 (FX_FLOAT)yTorelance);
95 » FXSYS_memcpy(result,cbUTF16str.GetBuffer(cbUTF16str.GetLength()),cbUTF16 str.GetLength()); 95 }
96 » cbUTF16str.ReleaseBuffer(cbUTF16str.GetLength()); 96
97 97 DLLEXPORT int STDCALL FPDFText_GetText(FPDF_TEXTPAGE text_page,
98 » return cbUTF16str.GetLength()/sizeof(unsigned short); 98 int start,
99 } 99 int count,
100 100 unsigned short* result) {
101 DLLEXPORT int STDCALL FPDFText_CountRects(FPDF_TEXTPAGE text_page,int start,int count) 101 if (!text_page)
102 { 102 return 0;
103 » if (!text_page) return 0; 103 IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
104 » IPDF_TextPage* textpage=(IPDF_TextPage*)text_page; 104
105 » return» textpage->CountRects(start,count); 105 if (start >= textpage->CountChars())
106 106 return 0;
107 } 107
108 DLLEXPORT void STDCALL FPDFText_GetRect(FPDF_TEXTPAGE text_page,int rect_index, double* left,double* top, 108 CFX_WideString str = textpage->GetPageText(start, count);
109 » » » » » » » » » » double* right, double* bottom) 109 if (str.GetLength() > count)
110 { 110 str = str.Left(count);
111 » if (!text_page) return; 111
112 » IPDF_TextPage* textpage=(IPDF_TextPage*)text_page; 112 CFX_ByteString cbUTF16str = str.UTF16LE_Encode();
113 » CFX_FloatRect» rect; 113 FXSYS_memcpy(result, cbUTF16str.GetBuffer(cbUTF16str.GetLength()),
114 » textpage->GetRect(rect_index,rect.left,rect.top,rect.right,rect.bottom); 114 cbUTF16str.GetLength());
115 » *left=rect.left; 115 cbUTF16str.ReleaseBuffer(cbUTF16str.GetLength());
116 » *top=rect.top; 116
117 » *right=rect.right; 117 return cbUTF16str.GetLength() / sizeof(unsigned short);
118 » *bottom=rect.bottom; 118 }
119 } 119
120 120 DLLEXPORT int STDCALL FPDFText_CountRects(FPDF_TEXTPAGE text_page,
121 DLLEXPORT int STDCALL FPDFText_GetBoundedText(FPDF_TEXTPAGE text_page,double lef t, double top, 121 int start,
122 » » » » » » » » » » » double right, double bottom,unsigned short* buffer,int buflen) 122 int count) {
123 { 123 if (!text_page)
124 » if (!text_page) return 0; 124 return 0;
125 » IPDF_TextPage* textpage=(IPDF_TextPage*)text_page; 125 IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
126 » CFX_FloatRect rect((FX_FLOAT)left,(FX_FLOAT)bottom,(FX_FLOAT)right,(FX_F LOAT)top); 126 return textpage->CountRects(start, count);
127 » CFX_WideString str=textpage->GetTextByRect(rect); 127 }
128 128 DLLEXPORT void STDCALL FPDFText_GetRect(FPDF_TEXTPAGE text_page,
129 » if (buflen<=0 || buffer==NULL) 129 int rect_index,
130 » { 130 double* left,
131 » » return str.GetLength(); 131 double* top,
132 » } 132 double* right,
133 133 double* bottom) {
134 » CFX_ByteString cbUTF16Str = str.UTF16LE_Encode(); 134 if (!text_page)
135 » int len = cbUTF16Str.GetLength()/sizeof(unsigned short); 135 return;
136 » int size = buflen > len ? len : buflen; 136 IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
137 » FXSYS_memcpy(buffer,cbUTF16Str.GetBuffer(size*sizeof(unsigned short)),si ze*sizeof(unsigned short)); 137 CFX_FloatRect rect;
138 » cbUTF16Str.ReleaseBuffer(size*sizeof(unsigned short)); 138 textpage->GetRect(rect_index, rect.left, rect.top, rect.right, rect.bottom);
139 139 *left = rect.left;
140 » return size; 140 *top = rect.top;
141 141 *right = rect.right;
142 } 142 *bottom = rect.bottom;
143 143 }
144 //Search 144
145 DLLEXPORT int STDCALL FPDFText_GetBoundedText(FPDF_TEXTPAGE text_page,
146 double left,
147 double top,
148 double right,
149 double bottom,
150 unsigned short* buffer,
151 int buflen) {
152 if (!text_page)
153 return 0;
154 IPDF_TextPage* textpage = (IPDF_TextPage*)text_page;
155 CFX_FloatRect rect((FX_FLOAT)left, (FX_FLOAT)bottom, (FX_FLOAT)right,
156 (FX_FLOAT)top);
157 CFX_WideString str = textpage->GetTextByRect(rect);
158
159 if (buflen <= 0 || buffer == NULL) {
160 return str.GetLength();
161 }
162
163 CFX_ByteString cbUTF16Str = str.UTF16LE_Encode();
164 int len = cbUTF16Str.GetLength() / sizeof(unsigned short);
165 int size = buflen > len ? len : buflen;
166 FXSYS_memcpy(buffer, cbUTF16Str.GetBuffer(size * sizeof(unsigned short)),
167 size * sizeof(unsigned short));
168 cbUTF16Str.ReleaseBuffer(size * sizeof(unsigned short));
169
170 return size;
171 }
172
173 // Search
145 //-1 for end 174 //-1 for end
146 DLLEXPORT FPDF_SCHHANDLE STDCALL FPDFText_FindStart(FPDF_TEXTPAGE text_page,FPDF _WIDESTRING findwhat,unsigned long flags,int start_index) 175 DLLEXPORT FPDF_SCHHANDLE STDCALL FPDFText_FindStart(FPDF_TEXTPAGE text_page,
147 { 176 FPDF_WIDESTRING findwhat,
148 » if (!text_page) return NULL; 177 unsigned long flags,
149 » IPDF_TextPageFind* textpageFind=NULL; 178 int start_index) {
150 » textpageFind=IPDF_TextPageFind::CreatePageFind((IPDF_TextPage*)text_page ); 179 if (!text_page)
151 » FX_STRSIZE len = CFX_WideString::WStringLength(findwhat); 180 return NULL;
152 » textpageFind->FindFirst(CFX_WideString::FromUTF16LE(findwhat, len),flags ,start_index); 181 IPDF_TextPageFind* textpageFind = NULL;
153 » return textpageFind; 182 textpageFind = IPDF_TextPageFind::CreatePageFind((IPDF_TextPage*)text_page);
154 } 183 FX_STRSIZE len = CFX_WideString::WStringLength(findwhat);
155 DLLEXPORT FPDF_BOOL» STDCALL FPDFText_FindNext(FPDF_SCHHANDLE handle) 184 textpageFind->FindFirst(CFX_WideString::FromUTF16LE(findwhat, len), flags,
156 { 185 start_index);
157 » if (!handle) return FALSE; 186 return textpageFind;
158 » IPDF_TextPageFind* textpageFind=(IPDF_TextPageFind*)handle; 187 }
159 » return» textpageFind->FindNext(); 188 DLLEXPORT FPDF_BOOL STDCALL FPDFText_FindNext(FPDF_SCHHANDLE handle) {
160 } 189 if (!handle)
161 DLLEXPORT FPDF_BOOL STDCALL FPDFText_FindPrev(FPDF_SCHHANDLE handle) 190 return FALSE;
162 { 191 IPDF_TextPageFind* textpageFind = (IPDF_TextPageFind*)handle;
163 » if (!handle) return FALSE; 192 return textpageFind->FindNext();
164 » IPDF_TextPageFind* textpageFind=(IPDF_TextPageFind*)handle; 193 }
165 » return» textpageFind->FindPrev(); 194 DLLEXPORT FPDF_BOOL STDCALL FPDFText_FindPrev(FPDF_SCHHANDLE handle) {
166 } 195 if (!handle)
167 DLLEXPORT int STDCALL FPDFText_GetSchResultIndex(FPDF_SCHHANDLE handle) 196 return FALSE;
168 { 197 IPDF_TextPageFind* textpageFind = (IPDF_TextPageFind*)handle;
169 » if (!handle) return 0; 198 return textpageFind->FindPrev();
170 » IPDF_TextPageFind* textpageFind=(IPDF_TextPageFind*)handle; 199 }
171 » return textpageFind->GetCurOrder(); 200 DLLEXPORT int STDCALL FPDFText_GetSchResultIndex(FPDF_SCHHANDLE handle) {
172 } 201 if (!handle)
173 DLLEXPORT int STDCALL FPDFText_GetSchCount(FPDF_SCHHANDLE handle) 202 return 0;
174 { 203 IPDF_TextPageFind* textpageFind = (IPDF_TextPageFind*)handle;
175 » if (!handle) return 0; 204 return textpageFind->GetCurOrder();
176 » IPDF_TextPageFind* textpageFind=(IPDF_TextPageFind*)handle; 205 }
177 » return textpageFind->GetMatchedCount(); 206 DLLEXPORT int STDCALL FPDFText_GetSchCount(FPDF_SCHHANDLE handle) {
178 } 207 if (!handle)
179 DLLEXPORT void STDCALL FPDFText_FindClose(FPDF_SCHHANDLE handle) 208 return 0;
180 { 209 IPDF_TextPageFind* textpageFind = (IPDF_TextPageFind*)handle;
181 » if (!handle) return; 210 return textpageFind->GetMatchedCount();
182 » IPDF_TextPageFind* textpageFind=(IPDF_TextPageFind*)handle; 211 }
183 » delete» textpageFind; 212 DLLEXPORT void STDCALL FPDFText_FindClose(FPDF_SCHHANDLE handle) {
184 » handle=NULL; 213 if (!handle)
185 } 214 return;
186 215 IPDF_TextPageFind* textpageFind = (IPDF_TextPageFind*)handle;
187 //web link 216 delete textpageFind;
188 DLLEXPORT FPDF_PAGELINK STDCALL FPDFLink_LoadWebLinks(FPDF_TEXTPAGE text_page) 217 handle = NULL;
189 { 218 }
190 » if (!text_page) return NULL; 219
191 » IPDF_LinkExtract* pageLink=NULL; 220 // web link
192 » pageLink=IPDF_LinkExtract::CreateLinkExtract(); 221 DLLEXPORT FPDF_PAGELINK STDCALL FPDFLink_LoadWebLinks(FPDF_TEXTPAGE text_page) {
193 » pageLink->ExtractLinks((IPDF_TextPage*)text_page); 222 if (!text_page)
194 » return pageLink; 223 return NULL;
195 } 224 IPDF_LinkExtract* pageLink = NULL;
196 DLLEXPORT int STDCALL FPDFLink_CountWebLinks(FPDF_PAGELINK link_page) 225 pageLink = IPDF_LinkExtract::CreateLinkExtract();
197 { 226 pageLink->ExtractLinks((IPDF_TextPage*)text_page);
198 » if (!link_page) return 0; 227 return pageLink;
199 » IPDF_LinkExtract* pageLink=(IPDF_LinkExtract*)link_page; 228 }
200 » return» pageLink->CountLinks(); 229 DLLEXPORT int STDCALL FPDFLink_CountWebLinks(FPDF_PAGELINK link_page) {
201 } 230 if (!link_page)
202 DLLEXPORT int STDCALL FPDFLink_GetURL(FPDF_PAGELINK link_page,int link_index, un signed short* buffer,int buflen) 231 return 0;
203 { 232 IPDF_LinkExtract* pageLink = (IPDF_LinkExtract*)link_page;
204 » if (!link_page) return 0; 233 return pageLink->CountLinks();
205 » IPDF_LinkExtract* pageLink=(IPDF_LinkExtract*)link_page; 234 }
206 » CFX_WideString url=pageLink->GetURL(link_index); 235 DLLEXPORT int STDCALL FPDFLink_GetURL(FPDF_PAGELINK link_page,
207 236 int link_index,
208 » CFX_ByteString cbUTF16URL = url.UTF16LE_Encode(); 237 unsigned short* buffer,
209 » int len= cbUTF16URL.GetLength()/sizeof(unsigned short); 238 int buflen) {
210 » if (buffer==NULL || buflen<=0) 239 if (!link_page)
211 » » return len; 240 return 0;
212 » int size=len<buflen ? len :buflen; 241 IPDF_LinkExtract* pageLink = (IPDF_LinkExtract*)link_page;
213 » if (size>0) 242 CFX_WideString url = pageLink->GetURL(link_index);
214 » { 243
215 » » FXSYS_memcpy(buffer,cbUTF16URL.GetBuffer(size*sizeof(unsigned sh ort)),size*sizeof(unsigned short)); 244 CFX_ByteString cbUTF16URL = url.UTF16LE_Encode();
216 » » cbUTF16URL.ReleaseBuffer(size*sizeof(unsigned short)); 245 int len = cbUTF16URL.GetLength() / sizeof(unsigned short);
217 » } 246 if (buffer == NULL || buflen <= 0)
218 » return size; 247 return len;
219 } 248 int size = len < buflen ? len : buflen;
220 DLLEXPORT int STDCALL FPDFLink_CountRects(FPDF_PAGELINK link_page,int link_index ) 249 if (size > 0) {
221 { 250 FXSYS_memcpy(buffer, cbUTF16URL.GetBuffer(size * sizeof(unsigned short)),
222 » if (!link_page) return 0; 251 size * sizeof(unsigned short));
223 » IPDF_LinkExtract* pageLink=(IPDF_LinkExtract*)link_page; 252 cbUTF16URL.ReleaseBuffer(size * sizeof(unsigned short));
224 » CFX_RectArray rectArray; 253 }
225 » pageLink->GetRects(link_index,rectArray); 254 return size;
226 » return rectArray.GetSize(); 255 }
227 } 256 DLLEXPORT int STDCALL FPDFLink_CountRects(FPDF_PAGELINK link_page,
228 DLLEXPORT void STDCALL FPDFLink_GetRect(FPDF_PAGELINK link_page,int link_index, int rect_index, double* left, 257 int link_index) {
229 » » » » » » » » » » double* top,double* right, double* bottom) 258 if (!link_page)
230 { 259 return 0;
231 » if (!link_page) return; 260 IPDF_LinkExtract* pageLink = (IPDF_LinkExtract*)link_page;
232 » IPDF_LinkExtract* pageLink=(IPDF_LinkExtract*)link_page; 261 CFX_RectArray rectArray;
233 » CFX_RectArray rectArray; 262 pageLink->GetRects(link_index, rectArray);
234 » pageLink->GetRects(link_index,rectArray); 263 return rectArray.GetSize();
235 » if (rect_index >= 0 && rect_index < rectArray.GetSize()) { 264 }
236 » » CFX_FloatRect rect=rectArray.GetAt(rect_index); 265 DLLEXPORT void STDCALL FPDFLink_GetRect(FPDF_PAGELINK link_page,
237 » » *left=rect.left; 266 int link_index,
238 » » *right=rect.right; 267 int rect_index,
239 » » *top=rect.top; 268 double* left,
240 » » *bottom=rect.bottom; 269 double* top,
241 » } 270 double* right,
242 } 271 double* bottom) {
243 DLLEXPORT void» STDCALL»FPDFLink_CloseWebLinks(FPDF_PAGELINK link_page) 272 if (!link_page)
244 { 273 return;
245 delete (IPDF_LinkExtract*)link_page; 274 IPDF_LinkExtract* pageLink = (IPDF_LinkExtract*)link_page;
246 } 275 CFX_RectArray rectArray;
247 276 pageLink->GetRects(link_index, rectArray);
277 if (rect_index >= 0 && rect_index < rectArray.GetSize()) {
278 CFX_FloatRect rect = rectArray.GetAt(rect_index);
279 *left = rect.left;
280 *right = rect.right;
281 *top = rect.top;
282 *bottom = rect.bottom;
283 }
284 }
285 DLLEXPORT void STDCALL FPDFLink_CloseWebLinks(FPDF_PAGELINK link_page) {
286 delete (IPDF_LinkExtract*)link_page;
287 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698