blob: bf1a0c48774f724d81844d2277fba62b073d444b [file] [log] [blame]
Tom Sepezcf22eb82015-05-12 17:28:08 -07001// Copyright 2015 PDFium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// This "C" (not "C++") file ensures that the public headers compile
6// and link for "C" (and not just "C++").
7
8#include <stdio.h>
9
Dan Sinclairf766ad22016-03-14 13:51:24 -040010#include "fpdfsdk/fpdfview_c_api_test.h"
Tom Sepezcf22eb82015-05-12 17:28:08 -070011
Jane Liu4fd9a472017-06-01 18:56:09 -040012#include "public/fpdf_annot.h"
Jane Liu53aafa92017-07-12 19:55:02 -040013#include "public/fpdf_attachment.h"
Henrique Nakashima077f6432017-10-16 13:32:01 -040014#include "public/fpdf_catalog.h"
Lei Zhangb4e7f302015-11-06 15:52:32 -080015#include "public/fpdf_dataavail.h"
16#include "public/fpdf_doc.h"
17#include "public/fpdf_edit.h"
18#include "public/fpdf_ext.h"
19#include "public/fpdf_flatten.h"
20#include "public/fpdf_formfill.h"
21#include "public/fpdf_fwlevent.h"
22#include "public/fpdf_ppo.h"
23#include "public/fpdf_progressive.h"
24#include "public/fpdf_save.h"
25#include "public/fpdf_searchex.h"
thestig9067fd62016-11-23 14:10:06 -080026#include "public/fpdf_structtree.h"
Lei Zhangb4e7f302015-11-06 15:52:32 -080027#include "public/fpdf_sysfontinfo.h"
28#include "public/fpdf_text.h"
29#include "public/fpdf_transformpage.h"
30#include "public/fpdfview.h"
Tom Sepezcf22eb82015-05-12 17:28:08 -070031
32// Scheme for avoiding LTO out of existence, warnings, etc.
33typedef void (*fnptr)(void); // Legal generic function type for casts.
34fnptr g_c_api_test_fnptr = NULL; // Extern, so can't know it doesn't change.
35#define CHK(x) if ((fnptr)(x) == g_c_api_test_fnptr) return 0
36
37// Function to call from gtest harness to ensure linker resolution.
38int CheckPDFiumCApi() {
Jane Liu53aafa92017-07-12 19:55:02 -040039 // fpdf_annot.h
Jane Liu262cf462017-06-09 11:36:37 -040040 CHK(FPDFAnnot_IsSupportedSubtype);
41 CHK(FPDFPage_CreateAnnot);
Jane Liu4fd9a472017-06-01 18:56:09 -040042 CHK(FPDFPage_GetAnnotCount);
43 CHK(FPDFPage_GetAnnot);
Jane Liud1ed1ce2017-08-24 12:31:10 -040044 CHK(FPDFPage_GetAnnotIndex);
Jane Liue10509a2017-06-20 16:47:41 -040045 CHK(FPDFPage_CloseAnnot);
Jane Liu8ce58f52017-06-29 13:40:22 -040046 CHK(FPDFPage_RemoveAnnot);
Jane Liu4fd9a472017-06-01 18:56:09 -040047 CHK(FPDFAnnot_GetSubtype);
Jane Liu7a9a38b2017-07-11 13:47:37 -040048 CHK(FPDFAnnot_IsObjectSupportedSubtype);
Jane Liu36567742017-07-06 11:13:35 -040049 CHK(FPDFAnnot_UpdateObject);
50 CHK(FPDFAnnot_AppendObject);
51 CHK(FPDFAnnot_GetObjectCount);
52 CHK(FPDFAnnot_GetObject);
Jane Liu7a9a38b2017-07-11 13:47:37 -040053 CHK(FPDFAnnot_RemoveObject);
Jane Liu262cf462017-06-09 11:36:37 -040054 CHK(FPDFAnnot_SetColor);
Jane Liu4fd9a472017-06-01 18:56:09 -040055 CHK(FPDFAnnot_GetColor);
Jane Liu262cf462017-06-09 11:36:37 -040056 CHK(FPDFAnnot_HasAttachmentPoints);
57 CHK(FPDFAnnot_SetAttachmentPoints);
Jane Liu4fd9a472017-06-01 18:56:09 -040058 CHK(FPDFAnnot_GetAttachmentPoints);
Jane Liu262cf462017-06-09 11:36:37 -040059 CHK(FPDFAnnot_SetRect);
Jane Liu4fd9a472017-06-01 18:56:09 -040060 CHK(FPDFAnnot_GetRect);
Jane Liu2e1a32b2017-07-06 12:01:25 -040061 CHK(FPDFAnnot_HasKey);
62 CHK(FPDFAnnot_SetStringValue);
63 CHK(FPDFAnnot_GetStringValue);
Jane Liu300bb272017-08-21 14:37:53 -040064 CHK(FPDFAnnot_GetLinkedAnnot);
Jane Liub137e752017-07-05 15:04:33 -040065 CHK(FPDFAnnot_GetFlags);
66 CHK(FPDFAnnot_SetFlags);
Diana Gage7e0c05d2017-07-19 17:33:33 -070067 CHK(FPDFAnnot_GetFormFieldFlags);
Diana Gage40870db2017-07-19 18:16:03 -070068 CHK(FPDFAnnot_GetFormFieldAtPoint);
Jane Liu4fd9a472017-06-01 18:56:09 -040069
Jane Liu53aafa92017-07-12 19:55:02 -040070 // fpdf_attachment.h
71 CHK(FPDFDoc_GetAttachmentCount);
Jane Liu54a42142017-07-24 16:40:54 -040072 CHK(FPDFDoc_AddAttachment);
Jane Liu18ae06d2017-07-18 10:15:16 -040073 CHK(FPDFDoc_GetAttachment);
74 CHK(FPDFAttachment_GetName);
75 CHK(FPDFAttachment_HasKey);
76 CHK(FPDFAttachment_GetValueType);
Jane Liu54a42142017-07-24 16:40:54 -040077 CHK(FPDFAttachment_SetStringValue);
Jane Liu18ae06d2017-07-18 10:15:16 -040078 CHK(FPDFAttachment_GetStringValue);
Jane Liu54a42142017-07-24 16:40:54 -040079 CHK(FPDFAttachment_SetFile);
Jane Liu18ae06d2017-07-18 10:15:16 -040080 CHK(FPDFAttachment_GetFile);
Jane Liu53aafa92017-07-12 19:55:02 -040081
Henrique Nakashima077f6432017-10-16 13:32:01 -040082 // fpdf_catalog.h
83 CHK(FPDFCatalog_IsTagged);
84
Tom Sepezcf22eb82015-05-12 17:28:08 -070085 // fpdf_dataavail.h
86 CHK(FPDFAvail_Create);
87 CHK(FPDFAvail_Destroy);
88 CHK(FPDFAvail_IsDocAvail);
89 CHK(FPDFAvail_GetDocument);
90 CHK(FPDFAvail_GetFirstPageNum);
91 CHK(FPDFAvail_IsPageAvail);
92 CHK(FPDFAvail_IsFormAvail);
93 CHK(FPDFAvail_IsLinearized);
94
95 // fpdf_doc.h
96 CHK(FPDFBookmark_GetFirstChild);
97 CHK(FPDFBookmark_GetNextSibling);
98 CHK(FPDFBookmark_GetTitle);
99 CHK(FPDFBookmark_Find);
100 CHK(FPDFBookmark_GetDest);
101 CHK(FPDFBookmark_GetAction);
102 CHK(FPDFAction_GetType);
103 CHK(FPDFAction_GetDest);
Lei Zhange0947b32015-09-17 14:51:48 -0700104 CHK(FPDFAction_GetFilePath);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700105 CHK(FPDFAction_GetURIPath);
106 CHK(FPDFDest_GetPageIndex);
dsinclairc59fa882016-11-08 06:55:40 -0800107 CHK(FPDFDest_GetLocationInPage);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700108 CHK(FPDFLink_GetLinkAtPoint);
Lei Zhangbdf72c32015-08-14 19:24:08 -0700109 CHK(FPDFLink_GetLinkZOrderAtPoint);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700110 CHK(FPDFLink_GetDest);
111 CHK(FPDFLink_GetAction);
112 CHK(FPDFLink_Enumerate);
113 CHK(FPDFLink_GetAnnotRect);
114 CHK(FPDFLink_CountQuadPoints);
115 CHK(FPDFLink_GetQuadPoints);
116 CHK(FPDF_GetMetaText);
dsinclair6bdb56c2016-12-06 09:53:27 -0800117 CHK(FPDF_GetPageLabel);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700118
119 // fpdf_edit.h
120 CHK(FPDF_CreateNewDocument);
121 CHK(FPDFPage_New);
122 CHK(FPDFPage_Delete);
123 CHK(FPDFPage_GetRotation);
124 CHK(FPDFPage_SetRotation);
125 CHK(FPDFPage_InsertObject);
126 CHK(FPDFPage_CountObject);
Miklos Vajna92627612017-09-25 12:59:29 +0200127 CHK(FPDFPage_CountObjects);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700128 CHK(FPDFPage_GetObject);
129 CHK(FPDFPage_HasTransparency);
130 CHK(FPDFPage_GenerateContent);
Jane Liu2e5f0ae2017-08-08 15:23:27 -0400131 CHK(FPDFPageObj_Destroy);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700132 CHK(FPDFPageObj_HasTransparency);
wileyryad9dc9622017-05-31 14:12:49 -0500133 CHK(FPDFPageObj_GetBounds);
Miklos Vajna14233192017-04-03 16:02:39 +0200134 CHK(FPDFPageObj_GetType);
wileyryad9dc9622017-05-31 14:12:49 -0500135 CHK(FPDFPageObj_SetBlendMode);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700136 CHK(FPDFPageObj_Transform);
137 CHK(FPDFPage_TransformAnnots);
Lei Zhangcbd89572017-03-15 17:35:47 -0700138 CHK(FPDFPageObj_NewImageObj);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700139 CHK(FPDFImageObj_LoadJpegFile);
Nicolas Penabe90aae2017-02-27 10:41:41 -0500140 CHK(FPDFImageObj_LoadJpegFileInline);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700141 CHK(FPDFImageObj_SetMatrix);
142 CHK(FPDFImageObj_SetBitmap);
Jane Liu28fb7ba2017-08-02 21:45:57 -0400143 CHK(FPDFImageObj_GetBitmap);
Jane Liu548334e2017-08-03 16:33:40 -0400144 CHK(FPDFImageObj_GetImageDataDecoded);
145 CHK(FPDFImageObj_GetImageDataRaw);
Jane Liube63ab92017-08-09 14:09:34 -0400146 CHK(FPDFImageObj_GetImageFilterCount);
147 CHK(FPDFImageObj_GetImageFilter);
Jane Liuca898292017-08-16 11:25:35 -0400148 CHK(FPDFImageObj_GetImageMetadata);
Nicolas Pena55e026b2017-02-07 14:59:23 -0500149 CHK(FPDFPageObj_CreateNewPath);
150 CHK(FPDFPageObj_CreateNewRect);
151 CHK(FPDFPath_SetStrokeColor);
Jane Liu3b057432017-06-19 10:44:01 -0400152 CHK(FPDFPath_GetStrokeColor);
Nicolas Penabe90aae2017-02-27 10:41:41 -0500153 CHK(FPDFPath_SetStrokeWidth);
Nicolas Pena55e026b2017-02-07 14:59:23 -0500154 CHK(FPDFPath_SetFillColor);
Miklos Vajnaed4705b2017-04-05 09:24:50 +0200155 CHK(FPDFPath_GetFillColor);
Miklos Vajna0150a542017-09-21 21:46:56 +0200156 CHK(FPDFPath_CountSegments);
Miklos Vajna36eed872017-09-20 22:52:43 +0200157 CHK(FPDFPath_GetPathSegment);
158 CHK(FPDFPathSegment_GetPoint);
159 CHK(FPDFPathSegment_GetType);
160 CHK(FPDFPathSegment_GetClose);
Nicolas Pena55e026b2017-02-07 14:59:23 -0500161 CHK(FPDFPath_MoveTo);
162 CHK(FPDFPath_LineTo);
163 CHK(FPDFPath_BezierTo);
164 CHK(FPDFPath_Close);
165 CHK(FPDFPath_SetDrawMode);
wileyryad9dc9622017-05-31 14:12:49 -0500166 CHK(FPDFPath_SetLineCap);
167 CHK(FPDFPath_SetLineJoin);
Nicolas Penabe90aae2017-02-27 10:41:41 -0500168 CHK(FPDFPageObj_NewTextObj);
169 CHK(FPDFText_SetText);
wileyryad9dc9622017-05-31 14:12:49 -0500170 CHK(FPDFText_SetFillColor);
Nicolas Penad03ca422017-03-06 13:54:33 -0500171 CHK(FPDFText_LoadFont);
Nicolas Penab3161852017-05-02 14:12:50 -0400172 CHK(FPDFFont_Close);
173 CHK(FPDFPageObj_CreateTextObj);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700174
175 // fpdf_ext.h
176 CHK(FSDK_SetUnSpObjProcessHandler);
177 CHK(FPDFDoc_GetPageMode);
178
179 // fpdf_flatten.h
180 CHK(FPDFPage_Flatten);
181
182 // fpdf_fwlevent.h - no exports.
183
184 // fpdf_formfill.h
185 CHK(FPDFDOC_InitFormFillEnvironment);
186 CHK(FPDFDOC_ExitFormFillEnvironment);
187 CHK(FORM_OnAfterLoadPage);
188 CHK(FORM_OnBeforeClosePage);
189 CHK(FORM_DoDocumentJSAction);
190 CHK(FORM_DoDocumentOpenAction);
191 CHK(FORM_DoDocumentAAction);
192 CHK(FORM_DoPageAAction);
193 CHK(FORM_OnMouseMove);
Lei Zhang63b01262017-08-31 08:54:46 -0700194 CHK(FORM_OnFocus);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700195 CHK(FORM_OnLButtonDown);
196 CHK(FORM_OnLButtonUp);
Tom Sepez51da0932015-11-25 16:05:49 -0800197#ifdef PDF_ENABLE_XFA
Tom Sepezcf22eb82015-05-12 17:28:08 -0700198 CHK(FORM_OnRButtonDown);
199 CHK(FORM_OnRButtonUp);
Tom Sepez51da0932015-11-25 16:05:49 -0800200#endif
Tom Sepezcf22eb82015-05-12 17:28:08 -0700201 CHK(FORM_OnKeyDown);
202 CHK(FORM_OnKeyUp);
203 CHK(FORM_OnChar);
Diana Gagedce2d722017-06-20 11:17:11 -0700204 CHK(FORM_GetSelectedText);
Diana Gageab390972017-07-28 17:07:39 -0700205 CHK(FORM_ReplaceSelection);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700206 CHK(FORM_ForceToKillFocus);
Lei Zhangbdf72c32015-08-14 19:24:08 -0700207 CHK(FPDFPage_HasFormFieldAtPoint);
Lei Zhangbdf72c32015-08-14 19:24:08 -0700208 CHK(FPDFPage_FormFieldZOrderAtPoint);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700209 CHK(FPDF_SetFormFieldHighlightColor);
210 CHK(FPDF_SetFormFieldHighlightAlpha);
211 CHK(FPDF_RemoveFormFieldHighlight);
212 CHK(FPDF_FFLDraw);
213 CHK(FPDF_HasXFAField);
Ryan Harrisona74a6272017-10-16 10:57:48 -0400214#ifdef PDF_ENABLE_XFA
Tom Sepezcf22eb82015-05-12 17:28:08 -0700215 CHK(FPDF_LoadXFA);
216 CHK(FPDF_Widget_Undo);
217 CHK(FPDF_Widget_Redo);
218 CHK(FPDF_Widget_SelectAll);
219 CHK(FPDF_Widget_Copy);
220 CHK(FPDF_Widget_Cut);
221 CHK(FPDF_Widget_Paste);
222 CHK(FPDF_Widget_ReplaceSpellCheckWord);
223 CHK(FPDF_Widget_GetSpellCheckWords);
224 CHK(FPDF_StringHandleCounts);
225 CHK(FPDF_StringHandleGetStringByIndex);
226 CHK(FPDF_StringHandleRelease);
227 CHK(FPDF_StringHandleAddString);
Tom Sepez51da0932015-11-25 16:05:49 -0800228#endif
Tom Sepezcf22eb82015-05-12 17:28:08 -0700229
230 // fpdf_ppo.h
231 CHK(FPDF_ImportPages);
232 CHK(FPDF_CopyViewerPreferences);
233
234 // fpdf_progressive.h
235 CHK(FPDF_RenderPageBitmap_Start);
236 CHK(FPDF_RenderPage_Continue);
237 CHK(FPDF_RenderPage_Close);
238
239 // fpdf_save.h
240 CHK(FPDF_SaveAsCopy);
241 CHK(FPDF_SaveWithVersion);
242
243 // fpdf_searchex.h
244 CHK(FPDFText_GetCharIndexFromTextIndex);
Nicolas Pena5c1961d2017-03-10 11:59:17 -0500245 CHK(FPDFText_GetTextIndexFromCharIndex);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700246
thestig9067fd62016-11-23 14:10:06 -0800247 // fpdf_structtree.h
248 CHK(FPDF_StructTree_GetForPage);
249 CHK(FPDF_StructTree_Close);
250 CHK(FPDF_StructTree_CountChildren);
251 CHK(FPDF_StructTree_GetChildAtIndex);
252 CHK(FPDF_StructElement_GetAltText);
Dan Sinclair29479f62017-04-04 10:48:19 -0400253 CHK(FPDF_StructElement_GetType);
thestig9067fd62016-11-23 14:10:06 -0800254 CHK(FPDF_StructElement_CountChildren);
255 CHK(FPDF_StructElement_GetChildAtIndex);
256
Tom Sepezcf22eb82015-05-12 17:28:08 -0700257 // fpdf_sysfontinfo.h
258 CHK(FPDF_GetDefaultTTFMap);
259 CHK(FPDF_AddInstalledFont);
260 CHK(FPDF_SetSystemFontInfo);
261 CHK(FPDF_GetDefaultSystemFontInfo);
npm788217d2016-11-08 16:48:36 -0800262 CHK(FPDF_FreeDefaultSystemFontInfo);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700263
264 // fpdf_text.h
265 CHK(FPDFText_LoadPage);
266 CHK(FPDFText_ClosePage);
267 CHK(FPDFText_CountChars);
268 CHK(FPDFText_GetUnicode);
269 CHK(FPDFText_GetFontSize);
270 CHK(FPDFText_GetCharBox);
Andrew Weintraubd3002342017-08-11 11:36:51 -0400271 CHK(FPDFText_GetCharOrigin);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700272 CHK(FPDFText_GetCharIndexAtPos);
273 CHK(FPDFText_GetText);
274 CHK(FPDFText_CountRects);
275 CHK(FPDFText_GetRect);
276 CHK(FPDFText_GetBoundedText);
277 CHK(FPDFText_FindStart);
278 CHK(FPDFText_FindNext);
279 CHK(FPDFText_FindPrev);
280 CHK(FPDFText_GetSchResultIndex);
281 CHK(FPDFText_GetSchCount);
282 CHK(FPDFText_FindClose);
283 CHK(FPDFLink_LoadWebLinks);
284 CHK(FPDFLink_CountWebLinks);
285 CHK(FPDFLink_GetURL);
286 CHK(FPDFLink_CountRects);
287 CHK(FPDFLink_GetRect);
288 CHK(FPDFLink_CloseWebLinks);
289
290 // fpdf_transformpage.h
291 CHK(FPDFPage_SetMediaBox);
292 CHK(FPDFPage_SetCropBox);
293 CHK(FPDFPage_GetMediaBox);
294 CHK(FPDFPage_GetCropBox);
295 CHK(FPDFPage_TransFormWithClip);
296 CHK(FPDFPageObj_TransformClipPath);
297 CHK(FPDF_CreateClipPath);
298 CHK(FPDF_DestroyClipPath);
299 CHK(FPDFPage_InsertClipPath);
300
301 // fpdfview.h
302 CHK(FPDF_InitLibrary);
Lei Zhang6f62d532015-09-23 15:31:44 -0700303 CHK(FPDF_InitLibraryWithConfig);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700304 CHK(FPDF_DestroyLibrary);
305 CHK(FPDF_SetSandBoxPolicy);
306 CHK(FPDF_LoadDocument);
307 CHK(FPDF_LoadMemDocument);
308 CHK(FPDF_LoadCustomDocument);
309 CHK(FPDF_GetFileVersion);
310 CHK(FPDF_GetLastError);
311 CHK(FPDF_GetDocPermissions);
312 CHK(FPDF_GetSecurityHandlerRevision);
313 CHK(FPDF_GetPageCount);
314 CHK(FPDF_LoadPage);
315 CHK(FPDF_GetPageWidth);
316 CHK(FPDF_GetPageHeight);
317 CHK(FPDF_GetPageSizeByIndex);
318 CHK(FPDF_RenderPageBitmap);
thestiga78ba602016-11-23 15:25:48 -0800319 CHK(FPDF_RenderPageBitmapWithMatrix);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700320 CHK(FPDF_ClosePage);
321 CHK(FPDF_CloseDocument);
322 CHK(FPDF_DeviceToPage);
323 CHK(FPDF_PageToDevice);
324 CHK(FPDFBitmap_Create);
325 CHK(FPDFBitmap_CreateEx);
Jane Liu28fb7ba2017-08-02 21:45:57 -0400326 CHK(FPDFBitmap_GetFormat);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700327 CHK(FPDFBitmap_FillRect);
328 CHK(FPDFBitmap_GetBuffer);
329 CHK(FPDFBitmap_GetWidth);
330 CHK(FPDFBitmap_GetHeight);
331 CHK(FPDFBitmap_GetStride);
332 CHK(FPDFBitmap_Destroy);
333 CHK(FPDF_VIEWERREF_GetPrintScaling);
334 CHK(FPDF_VIEWERREF_GetNumCopies);
335 CHK(FPDF_VIEWERREF_GetPrintPageRange);
336 CHK(FPDF_VIEWERREF_GetDuplex);
thestig04bebfe2016-11-04 16:07:25 -0700337 CHK(FPDF_VIEWERREF_GetName);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700338 CHK(FPDF_CountNamedDests);
339 CHK(FPDF_GetNamedDestByName);
340 CHK(FPDF_GetNamedDest);
Tom Sepez51da0932015-11-25 16:05:49 -0800341#ifdef PDF_ENABLE_XFA
Tom Sepezcf22eb82015-05-12 17:28:08 -0700342 CHK(FPDF_BStr_Init);
343 CHK(FPDF_BStr_Set);
344 CHK(FPDF_BStr_Clear);
Tom Sepez51da0932015-11-25 16:05:49 -0800345#endif
Tom Sepezcf22eb82015-05-12 17:28:08 -0700346
347 return 1;
348}
349
350#undef CHK