// Copyright 2015 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // This "C" (not "C++") file ensures that the public headers compile // and link for "C" (and not just "C++"). #include #include "fpdfsdk/fpdf_view_c_api_test.h" #include "public/fpdf_annot.h" #include "public/fpdf_attachment.h" #include "public/fpdf_catalog.h" #include "public/fpdf_dataavail.h" #include "public/fpdf_doc.h" #include "public/fpdf_edit.h" #include "public/fpdf_ext.h" #include "public/fpdf_flatten.h" #include "public/fpdf_formfill.h" #include "public/fpdf_fwlevent.h" #include "public/fpdf_javascript.h" #include "public/fpdf_ppo.h" #include "public/fpdf_progressive.h" #include "public/fpdf_save.h" #include "public/fpdf_searchex.h" #include "public/fpdf_structtree.h" #include "public/fpdf_sysfontinfo.h" #include "public/fpdf_text.h" #include "public/fpdf_thumbnail.h" #include "public/fpdf_transformpage.h" #include "public/fpdfview.h" // Scheme for avoiding LTO out of existence, warnings, etc. typedef void (*fnptr)(void); // Legal generic function type for casts. fnptr g_c_api_test_fnptr = NULL; // Extern, so can't know it doesn't change. #define CHK(x) if ((fnptr)(x) == g_c_api_test_fnptr) return 0 // Function to call from gtest harness to ensure linker resolution. int CheckPDFiumCApi() { // fpdf_annot.h CHK(FPDFAnnot_AppendAttachmentPoints); CHK(FPDFAnnot_AppendObject); CHK(FPDFAnnot_CountAttachmentPoints); CHK(FPDFAnnot_GetAP); CHK(FPDFAnnot_GetAttachmentPoints); CHK(FPDFAnnot_GetColor); CHK(FPDFAnnot_GetFlags); CHK(FPDFAnnot_GetFontSize); CHK(FPDFAnnot_GetFormFieldAtPoint); CHK(FPDFAnnot_GetFormFieldFlags); CHK(FPDFAnnot_GetFormFieldName); CHK(FPDFAnnot_GetFormFieldType); CHK(FPDFAnnot_GetFormFieldValue); CHK(FPDFAnnot_GetLinkedAnnot); CHK(FPDFAnnot_GetNumberValue); CHK(FPDFAnnot_GetObject); CHK(FPDFAnnot_GetObjectCount); CHK(FPDFAnnot_GetOptionCount); CHK(FPDFAnnot_GetOptionLabel); CHK(FPDFAnnot_GetRect); CHK(FPDFAnnot_GetStringValue); CHK(FPDFAnnot_GetSubtype); CHK(FPDFAnnot_GetValueType); CHK(FPDFAnnot_HasAttachmentPoints); CHK(FPDFAnnot_HasKey); CHK(FPDFAnnot_IsChecked); CHK(FPDFAnnot_IsObjectSupportedSubtype); CHK(FPDFAnnot_IsSupportedSubtype); CHK(FPDFAnnot_RemoveObject); CHK(FPDFAnnot_SetAP); CHK(FPDFAnnot_SetAttachmentPoints); CHK(FPDFAnnot_SetColor); CHK(FPDFAnnot_SetFlags); CHK(FPDFAnnot_SetRect); CHK(FPDFAnnot_SetStringValue); CHK(FPDFAnnot_UpdateObject); CHK(FPDFPage_CloseAnnot); CHK(FPDFPage_CreateAnnot); CHK(FPDFPage_GetAnnot); CHK(FPDFPage_GetAnnotCount); CHK(FPDFPage_GetAnnotIndex); CHK(FPDFPage_RemoveAnnot); // fpdf_attachment.h CHK(FPDFAttachment_GetFile); CHK(FPDFAttachment_GetName); CHK(FPDFAttachment_GetStringValue); CHK(FPDFAttachment_GetValueType); CHK(FPDFAttachment_HasKey); CHK(FPDFAttachment_SetFile); CHK(FPDFAttachment_SetStringValue); CHK(FPDFDoc_AddAttachment); CHK(FPDFDoc_DeleteAttachment); CHK(FPDFDoc_GetAttachment); CHK(FPDFDoc_GetAttachmentCount); // fpdf_catalog.h CHK(FPDFCatalog_IsTagged); // fpdf_dataavail.h CHK(FPDFAvail_Create); CHK(FPDFAvail_Destroy); CHK(FPDFAvail_GetDocument); CHK(FPDFAvail_GetFirstPageNum); CHK(FPDFAvail_IsDocAvail); CHK(FPDFAvail_IsFormAvail); CHK(FPDFAvail_IsLinearized); CHK(FPDFAvail_IsPageAvail); // fpdf_doc.h CHK(FPDFAction_GetDest); CHK(FPDFAction_GetFilePath); CHK(FPDFAction_GetType); CHK(FPDFAction_GetURIPath); CHK(FPDFBookmark_Find); CHK(FPDFBookmark_GetAction); CHK(FPDFBookmark_GetDest); CHK(FPDFBookmark_GetFirstChild); CHK(FPDFBookmark_GetNextSibling); CHK(FPDFBookmark_GetTitle); CHK(FPDFDest_GetDestPageIndex); CHK(FPDFDest_GetLocationInPage); CHK(FPDFDest_GetView); CHK(FPDFLink_CountQuadPoints); CHK(FPDFLink_Enumerate); CHK(FPDFLink_GetAction); CHK(FPDFLink_GetAnnotRect); CHK(FPDFLink_GetDest); CHK(FPDFLink_GetLinkAtPoint); CHK(FPDFLink_GetLinkZOrderAtPoint); CHK(FPDFLink_GetQuadPoints); CHK(FPDF_GetMetaText); CHK(FPDF_GetPageLabel); // fpdf_edit.h CHK(FPDFFont_Close); CHK(FPDFFormObj_CountObjects); CHK(FPDFFormObj_GetMatrix); CHK(FPDFFormObj_GetObject); CHK(FPDFImageObj_GetBitmap); CHK(FPDFImageObj_GetImageDataDecoded); CHK(FPDFImageObj_GetImageDataRaw); CHK(FPDFImageObj_GetImageFilter); CHK(FPDFImageObj_GetImageFilterCount); CHK(FPDFImageObj_GetImageMetadata); CHK(FPDFImageObj_GetMatrix); CHK(FPDFImageObj_LoadJpegFile); CHK(FPDFImageObj_LoadJpegFileInline); CHK(FPDFImageObj_SetBitmap); CHK(FPDFImageObj_SetMatrix); CHK(FPDFPageObjMark_CountParams); CHK(FPDFPageObjMark_GetName); CHK(FPDFPageObjMark_GetParamBlobValue); CHK(FPDFPageObjMark_GetParamIntValue); CHK(FPDFPageObjMark_GetParamKey); CHK(FPDFPageObjMark_GetParamStringValue); CHK(FPDFPageObjMark_GetParamValueType); CHK(FPDFPageObjMark_RemoveParam); CHK(FPDFPageObjMark_SetBlobParam); CHK(FPDFPageObjMark_SetIntParam); CHK(FPDFPageObjMark_SetStringParam); CHK(FPDFPageObj_AddMark); CHK(FPDFPageObj_CountMarks); CHK(FPDFPageObj_CreateNewPath); CHK(FPDFPageObj_CreateNewRect); CHK(FPDFPageObj_CreateTextObj); CHK(FPDFPageObj_Destroy); CHK(FPDFPageObj_GetBounds); CHK(FPDFPageObj_GetFillColor); CHK(FPDFPageObj_GetLineCap); CHK(FPDFPageObj_GetLineJoin); CHK(FPDFPageObj_GetMark); CHK(FPDFPageObj_GetStrokeColor); CHK(FPDFPageObj_GetStrokeWidth); CHK(FPDFPageObj_GetType); CHK(FPDFPageObj_HasTransparency); CHK(FPDFPageObj_NewImageObj); CHK(FPDFPageObj_NewTextObj); CHK(FPDFPageObj_RemoveMark); CHK(FPDFPageObj_SetBlendMode); CHK(FPDFPageObj_SetFillColor); CHK(FPDFPageObj_SetLineCap); CHK(FPDFPageObj_SetLineJoin); CHK(FPDFPageObj_SetStrokeColor); CHK(FPDFPageObj_SetStrokeWidth); CHK(FPDFPageObj_Transform); CHK(FPDFPage_CountObjects); CHK(FPDFPage_Delete); CHK(FPDFPage_GenerateContent); CHK(FPDFPage_GetObject); CHK(FPDFPage_GetRotation); CHK(FPDFPage_HasTransparency); CHK(FPDFPage_InsertObject); CHK(FPDFPage_New); CHK(FPDFPage_RemoveObject); CHK(FPDFPage_SetRotation); CHK(FPDFPage_TransformAnnots); CHK(FPDFPathSegment_GetClose); CHK(FPDFPathSegment_GetPoint); CHK(FPDFPathSegment_GetType); CHK(FPDFPath_BezierTo); CHK(FPDFPath_Close); CHK(FPDFPath_CountSegments); CHK(FPDFPath_GetDrawMode); CHK(FPDFPath_GetMatrix); CHK(FPDFPath_GetPathSegment); CHK(FPDFPath_LineTo); CHK(FPDFPath_MoveTo); CHK(FPDFPath_SetDrawMode); CHK(FPDFPath_SetMatrix); CHK(FPDFTextObj_GetFontName); CHK(FPDFTextObj_GetFontSize); CHK(FPDFTextObj_GetMatrix); CHK(FPDFTextObj_GetText); CHK(FPDFTextObj_GetTextRenderMode); CHK(FPDFTextObj_SetTextRenderMode); CHK(FPDFText_LoadFont); CHK(FPDFText_LoadStandardFont); CHK(FPDFText_SetText); CHK(FPDF_CreateNewDocument); // fpdf_ext.h CHK(FPDFDoc_GetPageMode); CHK(FSDK_SetLocaltimeFunction); CHK(FSDK_SetTimeFunction); CHK(FSDK_SetUnSpObjProcessHandler); // fpdf_flatten.h CHK(FPDFPage_Flatten); // fpdf_fwlevent.h - no exports. // fpdf_formfill.h CHK(FORM_CanRedo); CHK(FORM_CanUndo); CHK(FORM_DoDocumentAAction); CHK(FORM_DoDocumentJSAction); CHK(FORM_DoDocumentOpenAction); CHK(FORM_DoPageAAction); CHK(FORM_ForceToKillFocus); CHK(FORM_GetFocusedText); CHK(FORM_GetSelectedText); CHK(FORM_IsIndexSelected); CHK(FORM_OnAfterLoadPage); CHK(FORM_OnBeforeClosePage); CHK(FORM_OnChar); CHK(FORM_OnFocus); CHK(FORM_OnKeyDown); CHK(FORM_OnKeyUp); CHK(FORM_OnLButtonDoubleClick); CHK(FORM_OnLButtonDown); CHK(FORM_OnLButtonUp); CHK(FORM_OnMouseMove); CHK(FORM_OnRButtonDown); CHK(FORM_OnRButtonUp); CHK(FORM_Redo); CHK(FORM_ReplaceSelection); CHK(FORM_SetIndexSelected); CHK(FORM_Undo); CHK(FPDFDOC_ExitFormFillEnvironment); CHK(FPDFDOC_InitFormFillEnvironment); CHK(FPDFPage_FormFieldZOrderAtPoint); CHK(FPDFPage_HasFormFieldAtPoint); CHK(FPDF_FFLDraw); #ifdef _SKIA_SUPPORT_ CHK(FPDF_FFLRecord); #endif CHK(FPDF_GetFormType); CHK(FPDF_LoadXFA); CHK(FPDF_RemoveFormFieldHighlight); CHK(FPDF_SetFormFieldHighlightAlpha); CHK(FPDF_SetFormFieldHighlightColor); // fpdf_javascript.h CHK(FPDFDoc_CloseJavaScriptAction); CHK(FPDFDoc_GetJavaScriptAction); CHK(FPDFDoc_GetJavaScriptActionCount); CHK(FPDFJavaScriptAction_GetName); CHK(FPDFJavaScriptAction_GetScript); // fpdf_ppo.h CHK(FPDF_CopyViewerPreferences); CHK(FPDF_ImportNPagesToOne); CHK(FPDF_ImportPages); // fpdf_progressive.h CHK(FPDF_RenderPageBitmap_Start); CHK(FPDF_RenderPage_Close); CHK(FPDF_RenderPage_Continue); // fpdf_save.h CHK(FPDF_SaveAsCopy); CHK(FPDF_SaveWithVersion); // fpdf_searchex.h CHK(FPDFText_GetCharIndexFromTextIndex); CHK(FPDFText_GetTextIndexFromCharIndex); // fpdf_structtree.h CHK(FPDF_StructElement_CountChildren); CHK(FPDF_StructElement_GetAltText); CHK(FPDF_StructElement_GetChildAtIndex); CHK(FPDF_StructElement_GetMarkedContentID); CHK(FPDF_StructElement_GetTitle); CHK(FPDF_StructElement_GetType); CHK(FPDF_StructTree_Close); CHK(FPDF_StructTree_CountChildren); CHK(FPDF_StructTree_GetChildAtIndex); CHK(FPDF_StructTree_GetForPage); // fpdf_sysfontinfo.h CHK(FPDF_AddInstalledFont); CHK(FPDF_FreeDefaultSystemFontInfo); CHK(FPDF_GetDefaultSystemFontInfo); CHK(FPDF_GetDefaultTTFMap); CHK(FPDF_SetSystemFontInfo); // fpdf_text.h CHK(FPDFLink_CloseWebLinks); CHK(FPDFLink_CountRects); CHK(FPDFLink_CountWebLinks); CHK(FPDFLink_GetRect); CHK(FPDFLink_GetTextRange); CHK(FPDFLink_GetURL); CHK(FPDFLink_LoadWebLinks); CHK(FPDFText_ClosePage); CHK(FPDFText_CountChars); CHK(FPDFText_CountRects); CHK(FPDFText_FindClose); CHK(FPDFText_FindNext); CHK(FPDFText_FindPrev); CHK(FPDFText_FindStart); CHK(FPDFText_GetBoundedText); CHK(FPDFText_GetCharAngle); CHK(FPDFText_GetCharBox); CHK(FPDFText_GetCharIndexAtPos); CHK(FPDFText_GetCharOrigin); CHK(FPDFText_GetFillColor); CHK(FPDFText_GetFontInfo); CHK(FPDFText_GetFontSize); CHK(FPDFText_GetFontWeight); CHK(FPDFText_GetLooseCharBox); CHK(FPDFText_GetMatrix); CHK(FPDFText_GetRect); CHK(FPDFText_GetSchCount); CHK(FPDFText_GetSchResultIndex); CHK(FPDFText_GetStrokeColor); CHK(FPDFText_GetText); CHK(FPDFText_GetTextRenderMode); CHK(FPDFText_GetUnicode); CHK(FPDFText_LoadPage); // fpdf_thumbnail.h CHK(FPDFPage_GetDecodedThumbnailData); CHK(FPDFPage_GetRawThumbnailData); CHK(FPDFPage_GetThumbnailAsBitmap); // fpdf_transformpage.h CHK(FPDFClipPath_CountPathSegments); CHK(FPDFClipPath_CountPaths); CHK(FPDFClipPath_GetPathSegment); CHK(FPDFPageObj_GetClipPath); CHK(FPDFPageObj_TransformClipPath); CHK(FPDFPage_GetArtBox); CHK(FPDFPage_GetBleedBox); CHK(FPDFPage_GetCropBox); CHK(FPDFPage_GetMediaBox); CHK(FPDFPage_GetTrimBox); CHK(FPDFPage_InsertClipPath); CHK(FPDFPage_SetArtBox); CHK(FPDFPage_SetBleedBox); CHK(FPDFPage_SetCropBox); CHK(FPDFPage_SetMediaBox); CHK(FPDFPage_SetTrimBox); CHK(FPDFPage_TransFormWithClip); CHK(FPDF_CreateClipPath); CHK(FPDF_DestroyClipPath); // fpdfview.h CHK(FPDFBitmap_Create); CHK(FPDFBitmap_CreateEx); CHK(FPDFBitmap_Destroy); CHK(FPDFBitmap_FillRect); CHK(FPDFBitmap_GetBuffer); CHK(FPDFBitmap_GetFormat); CHK(FPDFBitmap_GetHeight); CHK(FPDFBitmap_GetStride); CHK(FPDFBitmap_GetWidth); #ifdef PDF_ENABLE_XFA CHK(FPDF_BStr_Clear); CHK(FPDF_BStr_Init); CHK(FPDF_BStr_Set); #endif CHK(FPDF_CloseDocument); CHK(FPDF_ClosePage); CHK(FPDF_CountNamedDests); CHK(FPDF_DestroyLibrary); CHK(FPDF_DeviceToPage); CHK(FPDF_DocumentHasValidCrossReferenceTable); CHK(FPDF_GetDocPermissions); CHK(FPDF_GetFileVersion); CHK(FPDF_GetLastError); CHK(FPDF_GetNamedDest); CHK(FPDF_GetNamedDestByName); CHK(FPDF_GetPageBoundingBox); CHK(FPDF_GetPageCount); CHK(FPDF_GetPageHeight); CHK(FPDF_GetPageHeightF); CHK(FPDF_GetPageSizeByIndex); CHK(FPDF_GetPageSizeByIndexF); CHK(FPDF_GetPageWidth); CHK(FPDF_GetPageWidthF); #ifdef PDF_ENABLE_V8 CHK(FPDF_GetRecommendedV8Flags); #endif CHK(FPDF_GetSecurityHandlerRevision); CHK(FPDF_InitLibrary); CHK(FPDF_InitLibraryWithConfig); CHK(FPDF_LoadCustomDocument); CHK(FPDF_LoadDocument); CHK(FPDF_LoadMemDocument); CHK(FPDF_LoadPage); CHK(FPDF_PageToDevice); #ifdef _WIN32 CHK(FPDF_RenderPage); #endif CHK(FPDF_RenderPageBitmap); CHK(FPDF_RenderPageBitmapWithMatrix); #ifdef _SKIA_SUPPORT_ CHK(FPDF_RenderPageSkp); #endif #if defined(_WIN32) CHK(FPDF_SetPrintMode); #if defined(PDFIUM_PRINT_TEXT_WITH_GDI) CHK(FPDF_SetPrintTextWithGDI); #endif #endif CHK(FPDF_SetSandBoxPolicy); #if defined(_WIN32) && defined(PDFIUM_PRINT_TEXT_WITH_GDI) CHK(FPDF_SetTypefaceAccessibleFunc); #endif CHK(FPDF_VIEWERREF_GetDuplex); CHK(FPDF_VIEWERREF_GetName); CHK(FPDF_VIEWERREF_GetNumCopies); CHK(FPDF_VIEWERREF_GetPrintPageRange); CHK(FPDF_VIEWERREF_GetPrintPageRangeCount); CHK(FPDF_VIEWERREF_GetPrintPageRangeElement); CHK(FPDF_VIEWERREF_GetPrintScaling); return 1; } #undef CHK