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_annot.h" 13 #include "public/fpdf_attachment.h" 14 #include "public/fpdf_catalog.h" 15 #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" 26 #include "public/fpdf_structtree.h" 27 #include "public/fpdf_sysfontinfo.h" 28 #include "public/fpdf_text.h" 29 #include "public/fpdf_transformpage.h" 30 #include "public/fpdfview.h" 31 32 // Scheme for avoiding LTO out of existence, warnings, etc. 33 typedef void (*fnptr)(void); // Legal generic function type for casts. 34 fnptr 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. CheckPDFiumCApi()38int CheckPDFiumCApi() { 39 // fpdf_annot.h 40 CHK(FPDFAnnot_IsSupportedSubtype); 41 CHK(FPDFPage_CreateAnnot); 42 CHK(FPDFPage_GetAnnotCount); 43 CHK(FPDFPage_GetAnnot); 44 CHK(FPDFPage_GetAnnotIndex); 45 CHK(FPDFPage_CloseAnnot); 46 CHK(FPDFPage_RemoveAnnot); 47 CHK(FPDFAnnot_GetSubtype); 48 CHK(FPDFAnnot_IsObjectSupportedSubtype); 49 CHK(FPDFAnnot_UpdateObject); 50 CHK(FPDFAnnot_AppendObject); 51 CHK(FPDFAnnot_GetObjectCount); 52 CHK(FPDFAnnot_GetObject); 53 CHK(FPDFAnnot_RemoveObject); 54 CHK(FPDFAnnot_SetColor); 55 CHK(FPDFAnnot_GetColor); 56 CHK(FPDFAnnot_HasAttachmentPoints); 57 CHK(FPDFAnnot_SetAttachmentPoints); 58 CHK(FPDFAnnot_GetAttachmentPoints); 59 CHK(FPDFAnnot_SetRect); 60 CHK(FPDFAnnot_GetRect); 61 CHK(FPDFAnnot_HasKey); 62 CHK(FPDFAnnot_GetValueType); 63 CHK(FPDFAnnot_SetStringValue); 64 CHK(FPDFAnnot_GetStringValue); 65 CHK(FPDFAnnot_SetAP); 66 CHK(FPDFAnnot_GetAP); 67 CHK(FPDFAnnot_GetLinkedAnnot); 68 CHK(FPDFAnnot_GetFlags); 69 CHK(FPDFAnnot_SetFlags); 70 CHK(FPDFAnnot_GetFormFieldFlags); 71 CHK(FPDFAnnot_GetFormFieldAtPoint); 72 73 // fpdf_attachment.h 74 CHK(FPDFDoc_GetAttachmentCount); 75 CHK(FPDFDoc_AddAttachment); 76 CHK(FPDFDoc_GetAttachment); 77 CHK(FPDFDoc_DeleteAttachment); 78 CHK(FPDFAttachment_GetName); 79 CHK(FPDFAttachment_HasKey); 80 CHK(FPDFAttachment_GetValueType); 81 CHK(FPDFAttachment_SetStringValue); 82 CHK(FPDFAttachment_GetStringValue); 83 CHK(FPDFAttachment_SetFile); 84 CHK(FPDFAttachment_GetFile); 85 86 // fpdf_catalog.h 87 CHK(FPDFCatalog_IsTagged); 88 89 // fpdf_dataavail.h 90 CHK(FPDFAvail_Create); 91 CHK(FPDFAvail_Destroy); 92 CHK(FPDFAvail_IsDocAvail); 93 CHK(FPDFAvail_GetDocument); 94 CHK(FPDFAvail_GetFirstPageNum); 95 CHK(FPDFAvail_IsPageAvail); 96 CHK(FPDFAvail_IsFormAvail); 97 CHK(FPDFAvail_IsLinearized); 98 99 // fpdf_doc.h 100 CHK(FPDFBookmark_GetFirstChild); 101 CHK(FPDFBookmark_GetNextSibling); 102 CHK(FPDFBookmark_GetTitle); 103 CHK(FPDFBookmark_Find); 104 CHK(FPDFBookmark_GetDest); 105 CHK(FPDFBookmark_GetAction); 106 CHK(FPDFAction_GetType); 107 CHK(FPDFAction_GetDest); 108 CHK(FPDFAction_GetFilePath); 109 CHK(FPDFAction_GetURIPath); 110 CHK(FPDFDest_GetPageIndex); 111 CHK(FPDFDest_GetLocationInPage); 112 CHK(FPDFDest_GetView); 113 CHK(FPDFLink_GetLinkAtPoint); 114 CHK(FPDFLink_GetLinkZOrderAtPoint); 115 CHK(FPDFLink_GetDest); 116 CHK(FPDFLink_GetAction); 117 CHK(FPDFLink_Enumerate); 118 CHK(FPDFLink_GetAnnotRect); 119 CHK(FPDFLink_CountQuadPoints); 120 CHK(FPDFLink_GetQuadPoints); 121 CHK(FPDF_GetMetaText); 122 CHK(FPDF_GetPageLabel); 123 124 // fpdf_edit.h 125 CHK(FPDF_CreateNewDocument); 126 CHK(FPDFPage_New); 127 CHK(FPDFPage_Delete); 128 CHK(FPDFPage_GetRotation); 129 CHK(FPDFPage_SetRotation); 130 CHK(FPDFPage_InsertObject); 131 CHK(FPDFPage_CountObject); 132 CHK(FPDFPage_CountObjects); 133 CHK(FPDFPage_GetObject); 134 CHK(FPDFPage_HasTransparency); 135 CHK(FPDFPage_GenerateContent); 136 CHK(FPDFPageObj_Destroy); 137 CHK(FPDFPageObj_HasTransparency); 138 CHK(FPDFPageObj_GetBounds); 139 CHK(FPDFPageObj_GetType); 140 CHK(FPDFPageObj_SetBlendMode); 141 CHK(FPDFPageObj_Transform); 142 CHK(FPDFPage_TransformAnnots); 143 CHK(FPDFPageObj_NewImageObj); 144 CHK(FPDFImageObj_LoadJpegFile); 145 CHK(FPDFImageObj_LoadJpegFileInline); 146 CHK(FPDFImageObj_SetMatrix); 147 CHK(FPDFImageObj_SetBitmap); 148 CHK(FPDFImageObj_GetBitmap); 149 CHK(FPDFImageObj_GetImageDataDecoded); 150 CHK(FPDFImageObj_GetImageDataRaw); 151 CHK(FPDFImageObj_GetImageFilterCount); 152 CHK(FPDFImageObj_GetImageFilter); 153 CHK(FPDFImageObj_GetImageMetadata); 154 CHK(FPDFPageObj_CreateNewPath); 155 CHK(FPDFPageObj_CreateNewRect); 156 CHK(FPDFPath_SetStrokeColor); 157 CHK(FPDFPath_GetStrokeColor); 158 CHK(FPDFPath_SetStrokeWidth); 159 CHK(FPDFPath_SetFillColor); 160 CHK(FPDFPath_GetFillColor); 161 CHK(FPDFPath_CountSegments); 162 CHK(FPDFPath_GetPathSegment); 163 CHK(FPDFPathSegment_GetPoint); 164 CHK(FPDFPathSegment_GetType); 165 CHK(FPDFPathSegment_GetClose); 166 CHK(FPDFPath_MoveTo); 167 CHK(FPDFPath_LineTo); 168 CHK(FPDFPath_BezierTo); 169 CHK(FPDFPath_Close); 170 CHK(FPDFPath_SetDrawMode); 171 CHK(FPDFPath_SetLineCap); 172 CHK(FPDFPath_SetLineJoin); 173 CHK(FPDFPageObj_NewTextObj); 174 CHK(FPDFText_SetText); 175 CHK(FPDFText_SetFillColor); 176 CHK(FPDFText_LoadFont); 177 CHK(FPDFFont_Close); 178 CHK(FPDFPageObj_CreateTextObj); 179 180 // fpdf_ext.h 181 CHK(FSDK_SetUnSpObjProcessHandler); 182 CHK(FPDFDoc_GetPageMode); 183 184 // fpdf_flatten.h 185 CHK(FPDFPage_Flatten); 186 187 // fpdf_fwlevent.h - no exports. 188 189 // fpdf_formfill.h 190 CHK(FPDFDOC_InitFormFillEnvironment); 191 CHK(FPDFDOC_ExitFormFillEnvironment); 192 CHK(FORM_OnAfterLoadPage); 193 CHK(FORM_OnBeforeClosePage); 194 CHK(FORM_DoDocumentJSAction); 195 CHK(FORM_DoDocumentOpenAction); 196 CHK(FORM_DoDocumentAAction); 197 CHK(FORM_DoPageAAction); 198 CHK(FORM_OnMouseMove); 199 CHK(FORM_OnFocus); 200 CHK(FORM_OnLButtonDown); 201 CHK(FORM_OnLButtonUp); 202 #ifdef PDF_ENABLE_XFA 203 CHK(FORM_OnRButtonDown); 204 CHK(FORM_OnRButtonUp); 205 #endif 206 CHK(FORM_OnKeyDown); 207 CHK(FORM_OnKeyUp); 208 CHK(FORM_OnChar); 209 CHK(FORM_GetSelectedText); 210 CHK(FORM_ReplaceSelection); 211 CHK(FORM_ForceToKillFocus); 212 CHK(FPDFPage_HasFormFieldAtPoint); 213 CHK(FPDFPage_FormFieldZOrderAtPoint); 214 CHK(FPDF_SetFormFieldHighlightColor); 215 CHK(FPDF_SetFormFieldHighlightAlpha); 216 CHK(FPDF_RemoveFormFieldHighlight); 217 CHK(FPDF_FFLDraw); 218 #ifdef _SKIA_SUPPORT_ 219 CHK(FPDF_FFLRecord); 220 #endif 221 CHK(FPDF_GetFormType); 222 #ifdef PDF_ENABLE_XFA 223 CHK(FPDF_LoadXFA); 224 CHK(FPDF_Widget_Undo); 225 CHK(FPDF_Widget_Redo); 226 CHK(FPDF_Widget_SelectAll); 227 CHK(FPDF_Widget_Copy); 228 CHK(FPDF_Widget_Cut); 229 CHK(FPDF_Widget_Paste); 230 CHK(FPDF_Widget_ReplaceSpellCheckWord); 231 CHK(FPDF_Widget_GetSpellCheckWords); 232 CHK(FPDF_StringHandleCounts); 233 CHK(FPDF_StringHandleGetStringByIndex); 234 CHK(FPDF_StringHandleRelease); 235 CHK(FPDF_StringHandleAddString); 236 #endif 237 238 // fpdf_ppo.h 239 CHK(FPDF_ImportPages); 240 CHK(FPDF_CopyViewerPreferences); 241 242 // fpdf_progressive.h 243 CHK(FPDF_RenderPageBitmap_Start); 244 CHK(FPDF_RenderPage_Continue); 245 CHK(FPDF_RenderPage_Close); 246 247 // fpdf_save.h 248 CHK(FPDF_SaveAsCopy); 249 CHK(FPDF_SaveWithVersion); 250 251 // fpdf_searchex.h 252 CHK(FPDFText_GetCharIndexFromTextIndex); 253 CHK(FPDFText_GetTextIndexFromCharIndex); 254 255 // fpdf_structtree.h 256 CHK(FPDF_StructTree_GetForPage); 257 CHK(FPDF_StructTree_Close); 258 CHK(FPDF_StructTree_CountChildren); 259 CHK(FPDF_StructTree_GetChildAtIndex); 260 CHK(FPDF_StructElement_GetAltText); 261 CHK(FPDF_StructElement_GetMarkedContentID); 262 CHK(FPDF_StructElement_GetType); 263 CHK(FPDF_StructElement_GetTitle); 264 CHK(FPDF_StructElement_CountChildren); 265 CHK(FPDF_StructElement_GetChildAtIndex); 266 267 // fpdf_sysfontinfo.h 268 CHK(FPDF_GetDefaultTTFMap); 269 CHK(FPDF_AddInstalledFont); 270 CHK(FPDF_SetSystemFontInfo); 271 CHK(FPDF_GetDefaultSystemFontInfo); 272 CHK(FPDF_FreeDefaultSystemFontInfo); 273 274 // fpdf_text.h 275 CHK(FPDFText_LoadPage); 276 CHK(FPDFText_ClosePage); 277 CHK(FPDFText_CountChars); 278 CHK(FPDFText_GetUnicode); 279 CHK(FPDFText_GetFontSize); 280 CHK(FPDFText_GetCharBox); 281 CHK(FPDFText_GetCharOrigin); 282 CHK(FPDFText_GetCharIndexAtPos); 283 CHK(FPDFText_GetText); 284 CHK(FPDFText_CountRects); 285 CHK(FPDFText_GetRect); 286 CHK(FPDFText_GetBoundedText); 287 CHK(FPDFText_FindStart); 288 CHK(FPDFText_FindNext); 289 CHK(FPDFText_FindPrev); 290 CHK(FPDFText_GetSchResultIndex); 291 CHK(FPDFText_GetSchCount); 292 CHK(FPDFText_FindClose); 293 CHK(FPDFLink_LoadWebLinks); 294 CHK(FPDFLink_CountWebLinks); 295 CHK(FPDFLink_GetURL); 296 CHK(FPDFLink_CountRects); 297 CHK(FPDFLink_GetRect); 298 CHK(FPDFLink_CloseWebLinks); 299 300 // fpdf_transformpage.h 301 CHK(FPDFPage_SetMediaBox); 302 CHK(FPDFPage_SetCropBox); 303 CHK(FPDFPage_GetMediaBox); 304 CHK(FPDFPage_GetCropBox); 305 CHK(FPDFPage_TransFormWithClip); 306 CHK(FPDFPageObj_TransformClipPath); 307 CHK(FPDF_CreateClipPath); 308 CHK(FPDF_DestroyClipPath); 309 CHK(FPDFPage_InsertClipPath); 310 311 // fpdfview.h 312 CHK(FPDF_InitLibrary); 313 CHK(FPDF_InitLibraryWithConfig); 314 CHK(FPDF_DestroyLibrary); 315 CHK(FPDF_SetSandBoxPolicy); 316 #if defined(_WIN32) 317 #if defined(PDFIUM_PRINT_TEXT_WITH_GDI) 318 CHK(FPDF_SetTypefaceAccessibleFunc); 319 CHK(FPDF_SetPrintTextWithGDI); 320 #endif 321 CHK(FPDF_SetPrintPostscriptLevel); 322 CHK(FPDF_SetPrintMode); 323 #endif 324 CHK(FPDF_LoadDocument); 325 CHK(FPDF_LoadMemDocument); 326 CHK(FPDF_LoadCustomDocument); 327 CHK(FPDF_GetFileVersion); 328 CHK(FPDF_GetLastError); 329 CHK(FPDF_GetDocPermissions); 330 CHK(FPDF_GetSecurityHandlerRevision); 331 CHK(FPDF_GetPageCount); 332 CHK(FPDF_LoadPage); 333 CHK(FPDF_GetPageWidth); 334 CHK(FPDF_GetPageHeight); 335 CHK(FPDF_GetPageBoundingBox); 336 CHK(FPDF_GetPageSizeByIndex); 337 #ifdef _WIN32 338 CHK(FPDF_RenderPage); 339 #endif 340 CHK(FPDF_RenderPageBitmap); 341 CHK(FPDF_RenderPageBitmapWithMatrix); 342 #ifdef _SKIA_SUPPORT_ 343 CHK(FPDF_RenderPageSkp); 344 #endif 345 CHK(FPDF_ClosePage); 346 CHK(FPDF_CloseDocument); 347 CHK(FPDF_DeviceToPage); 348 CHK(FPDF_PageToDevice); 349 CHK(FPDFBitmap_Create); 350 CHK(FPDFBitmap_CreateEx); 351 CHK(FPDFBitmap_GetFormat); 352 CHK(FPDFBitmap_FillRect); 353 CHK(FPDFBitmap_GetBuffer); 354 CHK(FPDFBitmap_GetWidth); 355 CHK(FPDFBitmap_GetHeight); 356 CHK(FPDFBitmap_GetStride); 357 CHK(FPDFBitmap_Destroy); 358 CHK(FPDF_VIEWERREF_GetPrintScaling); 359 CHK(FPDF_VIEWERREF_GetNumCopies); 360 CHK(FPDF_VIEWERREF_GetPrintPageRange); 361 CHK(FPDF_VIEWERREF_GetDuplex); 362 CHK(FPDF_VIEWERREF_GetName); 363 CHK(FPDF_CountNamedDests); 364 CHK(FPDF_GetNamedDestByName); 365 CHK(FPDF_GetNamedDest); 366 #ifdef PDF_ENABLE_XFA 367 CHK(FPDF_BStr_Init); 368 CHK(FPDF_BStr_Set); 369 CHK(FPDF_BStr_Clear); 370 #endif 371 372 return 1; 373 } 374 375 #undef CHK 376