blob: b090319d86622ab88b12a451ada879f50f81cc2d [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
Lei Zhangb4e7f302015-11-06 15:52:32 -080012#include "public/fpdf_dataavail.h"
13#include "public/fpdf_doc.h"
14#include "public/fpdf_edit.h"
15#include "public/fpdf_ext.h"
16#include "public/fpdf_flatten.h"
17#include "public/fpdf_formfill.h"
18#include "public/fpdf_fwlevent.h"
19#include "public/fpdf_ppo.h"
20#include "public/fpdf_progressive.h"
21#include "public/fpdf_save.h"
22#include "public/fpdf_searchex.h"
thestig9067fd62016-11-23 14:10:06 -080023#include "public/fpdf_structtree.h"
Lei Zhangb4e7f302015-11-06 15:52:32 -080024#include "public/fpdf_sysfontinfo.h"
25#include "public/fpdf_text.h"
26#include "public/fpdf_transformpage.h"
27#include "public/fpdfview.h"
Tom Sepezcf22eb82015-05-12 17:28:08 -070028
29// Scheme for avoiding LTO out of existence, warnings, etc.
30typedef void (*fnptr)(void); // Legal generic function type for casts.
31fnptr g_c_api_test_fnptr = NULL; // Extern, so can't know it doesn't change.
32#define CHK(x) if ((fnptr)(x) == g_c_api_test_fnptr) return 0
33
34// Function to call from gtest harness to ensure linker resolution.
35int CheckPDFiumCApi() {
36 // fpdf_dataavail.h
37 CHK(FPDFAvail_Create);
38 CHK(FPDFAvail_Destroy);
39 CHK(FPDFAvail_IsDocAvail);
40 CHK(FPDFAvail_GetDocument);
41 CHK(FPDFAvail_GetFirstPageNum);
42 CHK(FPDFAvail_IsPageAvail);
43 CHK(FPDFAvail_IsFormAvail);
44 CHK(FPDFAvail_IsLinearized);
45
46 // fpdf_doc.h
47 CHK(FPDFBookmark_GetFirstChild);
48 CHK(FPDFBookmark_GetNextSibling);
49 CHK(FPDFBookmark_GetTitle);
50 CHK(FPDFBookmark_Find);
51 CHK(FPDFBookmark_GetDest);
52 CHK(FPDFBookmark_GetAction);
53 CHK(FPDFAction_GetType);
54 CHK(FPDFAction_GetDest);
Lei Zhange0947b32015-09-17 14:51:48 -070055 CHK(FPDFAction_GetFilePath);
Tom Sepezcf22eb82015-05-12 17:28:08 -070056 CHK(FPDFAction_GetURIPath);
57 CHK(FPDFDest_GetPageIndex);
dsinclairc59fa882016-11-08 06:55:40 -080058 CHK(FPDFDest_GetLocationInPage);
Tom Sepezcf22eb82015-05-12 17:28:08 -070059 CHK(FPDFLink_GetLinkAtPoint);
Lei Zhangbdf72c32015-08-14 19:24:08 -070060 CHK(FPDFLink_GetLinkZOrderAtPoint);
Tom Sepezcf22eb82015-05-12 17:28:08 -070061 CHK(FPDFLink_GetDest);
62 CHK(FPDFLink_GetAction);
63 CHK(FPDFLink_Enumerate);
64 CHK(FPDFLink_GetAnnotRect);
65 CHK(FPDFLink_CountQuadPoints);
66 CHK(FPDFLink_GetQuadPoints);
67 CHK(FPDF_GetMetaText);
dsinclair6bdb56c2016-12-06 09:53:27 -080068 CHK(FPDF_GetPageLabel);
Tom Sepezcf22eb82015-05-12 17:28:08 -070069
70 // fpdf_edit.h
71 CHK(FPDF_CreateNewDocument);
72 CHK(FPDFPage_New);
73 CHK(FPDFPage_Delete);
74 CHK(FPDFPage_GetRotation);
75 CHK(FPDFPage_SetRotation);
76 CHK(FPDFPage_InsertObject);
77 CHK(FPDFPage_CountObject);
78 CHK(FPDFPage_GetObject);
79 CHK(FPDFPage_HasTransparency);
80 CHK(FPDFPage_GenerateContent);
81 CHK(FPDFPageObj_HasTransparency);
82 CHK(FPDFPageObj_Transform);
83 CHK(FPDFPage_TransformAnnots);
Lei Zhangcbd89572017-03-15 17:35:47 -070084 CHK(FPDFPageObj_NewImageObj);
Tom Sepezcf22eb82015-05-12 17:28:08 -070085 CHK(FPDFPageObj_NewImgeObj);
86 CHK(FPDFImageObj_LoadJpegFile);
Nicolas Penabe90aae2017-02-27 10:41:41 -050087 CHK(FPDFImageObj_LoadJpegFileInline);
Tom Sepezcf22eb82015-05-12 17:28:08 -070088 CHK(FPDFImageObj_SetMatrix);
89 CHK(FPDFImageObj_SetBitmap);
Nicolas Pena55e026b2017-02-07 14:59:23 -050090 CHK(FPDFPageObj_CreateNewPath);
91 CHK(FPDFPageObj_CreateNewRect);
92 CHK(FPDFPath_SetStrokeColor);
Nicolas Penabe90aae2017-02-27 10:41:41 -050093 CHK(FPDFPath_SetStrokeWidth);
Nicolas Pena55e026b2017-02-07 14:59:23 -050094 CHK(FPDFPath_SetFillColor);
95 CHK(FPDFPath_MoveTo);
96 CHK(FPDFPath_LineTo);
97 CHK(FPDFPath_BezierTo);
98 CHK(FPDFPath_Close);
99 CHK(FPDFPath_SetDrawMode);
Nicolas Penabe90aae2017-02-27 10:41:41 -0500100 CHK(FPDFPageObj_NewTextObj);
101 CHK(FPDFText_SetText);
Nicolas Penad03ca422017-03-06 13:54:33 -0500102 CHK(FPDFText_LoadFont);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700103
104 // fpdf_ext.h
105 CHK(FSDK_SetUnSpObjProcessHandler);
106 CHK(FPDFDoc_GetPageMode);
107
108 // fpdf_flatten.h
109 CHK(FPDFPage_Flatten);
110
111 // fpdf_fwlevent.h - no exports.
112
113 // fpdf_formfill.h
114 CHK(FPDFDOC_InitFormFillEnvironment);
115 CHK(FPDFDOC_ExitFormFillEnvironment);
116 CHK(FORM_OnAfterLoadPage);
117 CHK(FORM_OnBeforeClosePage);
118 CHK(FORM_DoDocumentJSAction);
119 CHK(FORM_DoDocumentOpenAction);
120 CHK(FORM_DoDocumentAAction);
121 CHK(FORM_DoPageAAction);
122 CHK(FORM_OnMouseMove);
123 CHK(FORM_OnLButtonDown);
124 CHK(FORM_OnLButtonUp);
Tom Sepez51da0932015-11-25 16:05:49 -0800125#ifdef PDF_ENABLE_XFA
Tom Sepezcf22eb82015-05-12 17:28:08 -0700126 CHK(FORM_OnRButtonDown);
127 CHK(FORM_OnRButtonUp);
Tom Sepez51da0932015-11-25 16:05:49 -0800128#endif
Tom Sepezcf22eb82015-05-12 17:28:08 -0700129 CHK(FORM_OnKeyDown);
130 CHK(FORM_OnKeyUp);
131 CHK(FORM_OnChar);
132 CHK(FORM_ForceToKillFocus);
Lei Zhangbdf72c32015-08-14 19:24:08 -0700133 CHK(FPDFPage_HasFormFieldAtPoint);
134 CHK(FPDPage_HasFormFieldAtPoint); // DEPRECATED. Remove in the future.
135 CHK(FPDFPage_FormFieldZOrderAtPoint);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700136 CHK(FPDF_SetFormFieldHighlightColor);
137 CHK(FPDF_SetFormFieldHighlightAlpha);
138 CHK(FPDF_RemoveFormFieldHighlight);
139 CHK(FPDF_FFLDraw);
Tom Sepez51da0932015-11-25 16:05:49 -0800140#ifdef PDF_ENABLE_XFA
Tom Sepezcf22eb82015-05-12 17:28:08 -0700141 CHK(FPDF_HasXFAField);
142 CHK(FPDF_LoadXFA);
143 CHK(FPDF_Widget_Undo);
144 CHK(FPDF_Widget_Redo);
145 CHK(FPDF_Widget_SelectAll);
146 CHK(FPDF_Widget_Copy);
147 CHK(FPDF_Widget_Cut);
148 CHK(FPDF_Widget_Paste);
149 CHK(FPDF_Widget_ReplaceSpellCheckWord);
150 CHK(FPDF_Widget_GetSpellCheckWords);
151 CHK(FPDF_StringHandleCounts);
152 CHK(FPDF_StringHandleGetStringByIndex);
153 CHK(FPDF_StringHandleRelease);
154 CHK(FPDF_StringHandleAddString);
Tom Sepez51da0932015-11-25 16:05:49 -0800155#endif
Tom Sepezcf22eb82015-05-12 17:28:08 -0700156
157 // fpdf_ppo.h
158 CHK(FPDF_ImportPages);
159 CHK(FPDF_CopyViewerPreferences);
160
161 // fpdf_progressive.h
162 CHK(FPDF_RenderPageBitmap_Start);
163 CHK(FPDF_RenderPage_Continue);
164 CHK(FPDF_RenderPage_Close);
165
166 // fpdf_save.h
167 CHK(FPDF_SaveAsCopy);
168 CHK(FPDF_SaveWithVersion);
169
170 // fpdf_searchex.h
171 CHK(FPDFText_GetCharIndexFromTextIndex);
Nicolas Pena5c1961d2017-03-10 11:59:17 -0500172 CHK(FPDFText_GetTextIndexFromCharIndex);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700173
thestig9067fd62016-11-23 14:10:06 -0800174 // fpdf_structtree.h
175 CHK(FPDF_StructTree_GetForPage);
176 CHK(FPDF_StructTree_Close);
177 CHK(FPDF_StructTree_CountChildren);
178 CHK(FPDF_StructTree_GetChildAtIndex);
179 CHK(FPDF_StructElement_GetAltText);
180 CHK(FPDF_StructElement_CountChildren);
181 CHK(FPDF_StructElement_GetChildAtIndex);
182
Tom Sepezcf22eb82015-05-12 17:28:08 -0700183 // fpdf_sysfontinfo.h
184 CHK(FPDF_GetDefaultTTFMap);
185 CHK(FPDF_AddInstalledFont);
186 CHK(FPDF_SetSystemFontInfo);
187 CHK(FPDF_GetDefaultSystemFontInfo);
npm788217d2016-11-08 16:48:36 -0800188 CHK(FPDF_FreeDefaultSystemFontInfo);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700189
190 // fpdf_text.h
191 CHK(FPDFText_LoadPage);
192 CHK(FPDFText_ClosePage);
193 CHK(FPDFText_CountChars);
194 CHK(FPDFText_GetUnicode);
195 CHK(FPDFText_GetFontSize);
196 CHK(FPDFText_GetCharBox);
197 CHK(FPDFText_GetCharIndexAtPos);
198 CHK(FPDFText_GetText);
199 CHK(FPDFText_CountRects);
200 CHK(FPDFText_GetRect);
201 CHK(FPDFText_GetBoundedText);
202 CHK(FPDFText_FindStart);
203 CHK(FPDFText_FindNext);
204 CHK(FPDFText_FindPrev);
205 CHK(FPDFText_GetSchResultIndex);
206 CHK(FPDFText_GetSchCount);
207 CHK(FPDFText_FindClose);
208 CHK(FPDFLink_LoadWebLinks);
209 CHK(FPDFLink_CountWebLinks);
210 CHK(FPDFLink_GetURL);
211 CHK(FPDFLink_CountRects);
212 CHK(FPDFLink_GetRect);
213 CHK(FPDFLink_CloseWebLinks);
214
215 // fpdf_transformpage.h
216 CHK(FPDFPage_SetMediaBox);
217 CHK(FPDFPage_SetCropBox);
218 CHK(FPDFPage_GetMediaBox);
219 CHK(FPDFPage_GetCropBox);
220 CHK(FPDFPage_TransFormWithClip);
221 CHK(FPDFPageObj_TransformClipPath);
222 CHK(FPDF_CreateClipPath);
223 CHK(FPDF_DestroyClipPath);
224 CHK(FPDFPage_InsertClipPath);
225
226 // fpdfview.h
227 CHK(FPDF_InitLibrary);
Lei Zhang6f62d532015-09-23 15:31:44 -0700228 CHK(FPDF_InitLibraryWithConfig);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700229 CHK(FPDF_DestroyLibrary);
230 CHK(FPDF_SetSandBoxPolicy);
231 CHK(FPDF_LoadDocument);
232 CHK(FPDF_LoadMemDocument);
233 CHK(FPDF_LoadCustomDocument);
234 CHK(FPDF_GetFileVersion);
235 CHK(FPDF_GetLastError);
236 CHK(FPDF_GetDocPermissions);
237 CHK(FPDF_GetSecurityHandlerRevision);
238 CHK(FPDF_GetPageCount);
239 CHK(FPDF_LoadPage);
240 CHK(FPDF_GetPageWidth);
241 CHK(FPDF_GetPageHeight);
242 CHK(FPDF_GetPageSizeByIndex);
243 CHK(FPDF_RenderPageBitmap);
thestiga78ba602016-11-23 15:25:48 -0800244 CHK(FPDF_RenderPageBitmapWithMatrix);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700245 CHK(FPDF_ClosePage);
246 CHK(FPDF_CloseDocument);
247 CHK(FPDF_DeviceToPage);
248 CHK(FPDF_PageToDevice);
249 CHK(FPDFBitmap_Create);
250 CHK(FPDFBitmap_CreateEx);
251 CHK(FPDFBitmap_FillRect);
252 CHK(FPDFBitmap_GetBuffer);
253 CHK(FPDFBitmap_GetWidth);
254 CHK(FPDFBitmap_GetHeight);
255 CHK(FPDFBitmap_GetStride);
256 CHK(FPDFBitmap_Destroy);
257 CHK(FPDF_VIEWERREF_GetPrintScaling);
258 CHK(FPDF_VIEWERREF_GetNumCopies);
259 CHK(FPDF_VIEWERREF_GetPrintPageRange);
260 CHK(FPDF_VIEWERREF_GetDuplex);
thestig04bebfe2016-11-04 16:07:25 -0700261 CHK(FPDF_VIEWERREF_GetName);
Tom Sepezcf22eb82015-05-12 17:28:08 -0700262 CHK(FPDF_CountNamedDests);
263 CHK(FPDF_GetNamedDestByName);
264 CHK(FPDF_GetNamedDest);
Tom Sepez51da0932015-11-25 16:05:49 -0800265#ifdef PDF_ENABLE_XFA
Tom Sepezcf22eb82015-05-12 17:28:08 -0700266 CHK(FPDF_BStr_Init);
267 CHK(FPDF_BStr_Set);
268 CHK(FPDF_BStr_Clear);
Tom Sepez51da0932015-11-25 16:05:49 -0800269#endif
Tom Sepezcf22eb82015-05-12 17:28:08 -0700270
271 return 1;
272}
273
274#undef CHK