1 // 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 
10 #include "fpdfsdk/fpdfview_c_api_test.h"
11 
12 #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"
23 #include "public/fpdf_structtree.h"
24 #include "public/fpdf_sysfontinfo.h"
25 #include "public/fpdf_text.h"
26 #include "public/fpdf_transformpage.h"
27 #include "public/fpdfview.h"
28 
29 // Scheme for avoiding LTO out of existence, warnings, etc.
30 typedef void (*fnptr)(void);  // Legal generic function type for casts.
31 fnptr 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.
CheckPDFiumCApi()35 int 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);
55     CHK(FPDFAction_GetFilePath);
56     CHK(FPDFAction_GetURIPath);
57     CHK(FPDFDest_GetPageIndex);
58     CHK(FPDFDest_GetLocationInPage);
59     CHK(FPDFLink_GetLinkAtPoint);
60     CHK(FPDFLink_GetLinkZOrderAtPoint);
61     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);
68     CHK(FPDF_GetPageLabel);
69 
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);
84     CHK(FPDFPageObj_NewImgeObj);
85     CHK(FPDFImageObj_LoadJpegFile);
86     CHK(FPDFImageObj_LoadJpegFileInline);
87     CHK(FPDFImageObj_SetMatrix);
88     CHK(FPDFImageObj_SetBitmap);
89     CHK(FPDFPageObj_CreateNewPath);
90     CHK(FPDFPageObj_CreateNewRect);
91     CHK(FPDFPath_SetStrokeColor);
92     CHK(FPDFPath_SetStrokeWidth);
93     CHK(FPDFPath_SetFillColor);
94     CHK(FPDFPath_MoveTo);
95     CHK(FPDFPath_LineTo);
96     CHK(FPDFPath_BezierTo);
97     CHK(FPDFPath_Close);
98     CHK(FPDFPath_SetDrawMode);
99     CHK(FPDFPageObj_NewTextObj);
100     CHK(FPDFText_SetText);
101     CHK(FPDFText_LoadType1Font);
102 
103     // fpdf_ext.h
104     CHK(FSDK_SetUnSpObjProcessHandler);
105     CHK(FPDFDoc_GetPageMode);
106 
107     // fpdf_flatten.h
108     CHK(FPDFPage_Flatten);
109 
110     // fpdf_fwlevent.h - no exports.
111 
112     // fpdf_formfill.h
113     CHK(FPDFDOC_InitFormFillEnvironment);
114     CHK(FPDFDOC_ExitFormFillEnvironment);
115     CHK(FORM_OnAfterLoadPage);
116     CHK(FORM_OnBeforeClosePage);
117     CHK(FORM_DoDocumentJSAction);
118     CHK(FORM_DoDocumentOpenAction);
119     CHK(FORM_DoDocumentAAction);
120     CHK(FORM_DoPageAAction);
121     CHK(FORM_OnMouseMove);
122     CHK(FORM_OnLButtonDown);
123     CHK(FORM_OnLButtonUp);
124 #ifdef PDF_ENABLE_XFA
125     CHK(FORM_OnRButtonDown);
126     CHK(FORM_OnRButtonUp);
127 #endif
128     CHK(FORM_OnKeyDown);
129     CHK(FORM_OnKeyUp);
130     CHK(FORM_OnChar);
131     CHK(FORM_ForceToKillFocus);
132     CHK(FPDFPage_HasFormFieldAtPoint);
133     CHK(FPDPage_HasFormFieldAtPoint);  // DEPRECATED. Remove in the future.
134     CHK(FPDFPage_FormFieldZOrderAtPoint);
135     CHK(FPDF_SetFormFieldHighlightColor);
136     CHK(FPDF_SetFormFieldHighlightAlpha);
137     CHK(FPDF_RemoveFormFieldHighlight);
138     CHK(FPDF_FFLDraw);
139 #ifdef PDF_ENABLE_XFA
140     CHK(FPDF_HasXFAField);
141     CHK(FPDF_LoadXFA);
142     CHK(FPDF_Widget_Undo);
143     CHK(FPDF_Widget_Redo);
144     CHK(FPDF_Widget_SelectAll);
145     CHK(FPDF_Widget_Copy);
146     CHK(FPDF_Widget_Cut);
147     CHK(FPDF_Widget_Paste);
148     CHK(FPDF_Widget_ReplaceSpellCheckWord);
149     CHK(FPDF_Widget_GetSpellCheckWords);
150     CHK(FPDF_StringHandleCounts);
151     CHK(FPDF_StringHandleGetStringByIndex);
152     CHK(FPDF_StringHandleRelease);
153     CHK(FPDF_StringHandleAddString);
154 #endif
155 
156     // fpdf_ppo.h
157     CHK(FPDF_ImportPages);
158     CHK(FPDF_CopyViewerPreferences);
159 
160     // fpdf_progressive.h
161     CHK(FPDF_RenderPageBitmap_Start);
162     CHK(FPDF_RenderPage_Continue);
163     CHK(FPDF_RenderPage_Close);
164 
165     // fpdf_save.h
166     CHK(FPDF_SaveAsCopy);
167     CHK(FPDF_SaveWithVersion);
168 
169     // fpdf_searchex.h
170     CHK(FPDFText_GetCharIndexFromTextIndex);
171 
172     // fpdf_structtree.h
173     CHK(FPDF_StructTree_GetForPage);
174     CHK(FPDF_StructTree_Close);
175     CHK(FPDF_StructTree_CountChildren);
176     CHK(FPDF_StructTree_GetChildAtIndex);
177     CHK(FPDF_StructElement_GetAltText);
178     CHK(FPDF_StructElement_CountChildren);
179     CHK(FPDF_StructElement_GetChildAtIndex);
180 
181     // fpdf_sysfontinfo.h
182     CHK(FPDF_GetDefaultTTFMap);
183     CHK(FPDF_AddInstalledFont);
184     CHK(FPDF_SetSystemFontInfo);
185     CHK(FPDF_GetDefaultSystemFontInfo);
186     CHK(FPDF_FreeDefaultSystemFontInfo);
187 
188     // fpdf_text.h
189     CHK(FPDFText_LoadPage);
190     CHK(FPDFText_ClosePage);
191     CHK(FPDFText_CountChars);
192     CHK(FPDFText_GetUnicode);
193     CHK(FPDFText_GetFontSize);
194     CHK(FPDFText_GetCharBox);
195     CHK(FPDFText_GetCharIndexAtPos);
196     CHK(FPDFText_GetText);
197     CHK(FPDFText_CountRects);
198     CHK(FPDFText_GetRect);
199     CHK(FPDFText_GetBoundedText);
200     CHK(FPDFText_FindStart);
201     CHK(FPDFText_FindNext);
202     CHK(FPDFText_FindPrev);
203     CHK(FPDFText_GetSchResultIndex);
204     CHK(FPDFText_GetSchCount);
205     CHK(FPDFText_FindClose);
206     CHK(FPDFLink_LoadWebLinks);
207     CHK(FPDFLink_CountWebLinks);
208     CHK(FPDFLink_GetURL);
209     CHK(FPDFLink_CountRects);
210     CHK(FPDFLink_GetRect);
211     CHK(FPDFLink_CloseWebLinks);
212 
213     // fpdf_transformpage.h
214     CHK(FPDFPage_SetMediaBox);
215     CHK(FPDFPage_SetCropBox);
216     CHK(FPDFPage_GetMediaBox);
217     CHK(FPDFPage_GetCropBox);
218     CHK(FPDFPage_TransFormWithClip);
219     CHK(FPDFPageObj_TransformClipPath);
220     CHK(FPDF_CreateClipPath);
221     CHK(FPDF_DestroyClipPath);
222     CHK(FPDFPage_InsertClipPath);
223 
224     // fpdfview.h
225     CHK(FPDF_InitLibrary);
226     CHK(FPDF_InitLibraryWithConfig);
227     CHK(FPDF_DestroyLibrary);
228     CHK(FPDF_SetSandBoxPolicy);
229     CHK(FPDF_LoadDocument);
230     CHK(FPDF_LoadMemDocument);
231     CHK(FPDF_LoadCustomDocument);
232     CHK(FPDF_GetFileVersion);
233     CHK(FPDF_GetLastError);
234     CHK(FPDF_GetDocPermissions);
235     CHK(FPDF_GetSecurityHandlerRevision);
236     CHK(FPDF_GetPageCount);
237     CHK(FPDF_LoadPage);
238     CHK(FPDF_GetPageWidth);
239     CHK(FPDF_GetPageHeight);
240     CHK(FPDF_GetPageSizeByIndex);
241     CHK(FPDF_RenderPageBitmap);
242     CHK(FPDF_RenderPageBitmapWithMatrix);
243     CHK(FPDF_ClosePage);
244     CHK(FPDF_CloseDocument);
245     CHK(FPDF_DeviceToPage);
246     CHK(FPDF_PageToDevice);
247     CHK(FPDFBitmap_Create);
248     CHK(FPDFBitmap_CreateEx);
249     CHK(FPDFBitmap_FillRect);
250     CHK(FPDFBitmap_GetBuffer);
251     CHK(FPDFBitmap_GetWidth);
252     CHK(FPDFBitmap_GetHeight);
253     CHK(FPDFBitmap_GetStride);
254     CHK(FPDFBitmap_Destroy);
255     CHK(FPDF_VIEWERREF_GetPrintScaling);
256     CHK(FPDF_VIEWERREF_GetNumCopies);
257     CHK(FPDF_VIEWERREF_GetPrintPageRange);
258     CHK(FPDF_VIEWERREF_GetDuplex);
259     CHK(FPDF_VIEWERREF_GetName);
260     CHK(FPDF_CountNamedDests);
261     CHK(FPDF_GetNamedDestByName);
262     CHK(FPDF_GetNamedDest);
263 #ifdef PDF_ENABLE_XFA
264     CHK(FPDF_BStr_Init);
265     CHK(FPDF_BStr_Set);
266     CHK(FPDF_BStr_Clear);
267 #endif
268 
269     return 1;
270 }
271 
272 #undef CHK
273