blob: 5907a4e3de22a0287d7ada9190805ac5337a512b [file] [log] [blame] [edit]
// Copyright 2015 The PDFium Authors
// 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 <stdio.h>
#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_signature.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_AddInkStroke);
CHK(FPDFAnnot_AppendAttachmentPoints);
CHK(FPDFAnnot_AppendObject);
CHK(FPDFAnnot_CountAttachmentPoints);
CHK(FPDFAnnot_GetAP);
CHK(FPDFAnnot_GetAttachmentPoints);
CHK(FPDFAnnot_GetBorder);
CHK(FPDFAnnot_GetColor);
CHK(FPDFAnnot_GetFlags);
CHK(FPDFAnnot_GetFocusableSubtypes);
CHK(FPDFAnnot_GetFocusableSubtypesCount);
CHK(FPDFAnnot_GetFontSize);
CHK(FPDFAnnot_GetFormAdditionalActionJavaScript);
CHK(FPDFAnnot_GetFormControlCount);
CHK(FPDFAnnot_GetFormControlIndex);
CHK(FPDFAnnot_GetFormFieldAlternateName);
CHK(FPDFAnnot_GetFormFieldAtPoint);
CHK(FPDFAnnot_GetFormFieldExportValue);
CHK(FPDFAnnot_GetFormFieldFlags);
CHK(FPDFAnnot_GetFormFieldName);
CHK(FPDFAnnot_GetFormFieldType);
CHK(FPDFAnnot_GetFormFieldValue);
CHK(FPDFAnnot_GetInkListCount);
CHK(FPDFAnnot_GetInkListPath);
CHK(FPDFAnnot_GetLine);
CHK(FPDFAnnot_GetLink);
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_GetVertices);
CHK(FPDFAnnot_HasAttachmentPoints);
CHK(FPDFAnnot_HasKey);
CHK(FPDFAnnot_IsChecked);
CHK(FPDFAnnot_IsObjectSupportedSubtype);
CHK(FPDFAnnot_IsOptionSelected);
CHK(FPDFAnnot_IsSupportedSubtype);
CHK(FPDFAnnot_RemoveInkList);
CHK(FPDFAnnot_RemoveObject);
CHK(FPDFAnnot_SetAP);
CHK(FPDFAnnot_SetAttachmentPoints);
CHK(FPDFAnnot_SetBorder);
CHK(FPDFAnnot_SetColor);
CHK(FPDFAnnot_SetFlags);
CHK(FPDFAnnot_SetFocusableSubtypes);
CHK(FPDFAnnot_SetRect);
CHK(FPDFAnnot_SetStringValue);
CHK(FPDFAnnot_SetURI);
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_GetCount);
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_GetAnnot);
CHK(FPDFLink_GetAnnotRect);
CHK(FPDFLink_GetDest);
CHK(FPDFLink_GetLinkAtPoint);
CHK(FPDFLink_GetLinkZOrderAtPoint);
CHK(FPDFLink_GetQuadPoints);
CHK(FPDF_GetFileIdentifier);
CHK(FPDF_GetMetaText);
CHK(FPDF_GetPageAAction);
CHK(FPDF_GetPageLabel);
// fpdf_edit.h
CHK(FPDFFont_Close);
CHK(FPDFFont_GetAscent);
CHK(FPDFFont_GetDescent);
CHK(FPDFFont_GetFlags);
CHK(FPDFFont_GetFontData);
CHK(FPDFFont_GetFontName);
CHK(FPDFFont_GetGlyphPath);
CHK(FPDFFont_GetGlyphWidth);
CHK(FPDFFont_GetIsEmbedded);
CHK(FPDFFont_GetItalicAngle);
CHK(FPDFFont_GetWeight);
CHK(FPDFFormObj_CountObjects);
CHK(FPDFFormObj_GetObject);
CHK(FPDFGlyphPath_CountGlyphSegments);
CHK(FPDFGlyphPath_GetGlyphPathSegment);
CHK(FPDFImageObj_GetBitmap);
CHK(FPDFImageObj_GetImageDataDecoded);
CHK(FPDFImageObj_GetImageDataRaw);
CHK(FPDFImageObj_GetImageFilter);
CHK(FPDFImageObj_GetImageFilterCount);
CHK(FPDFImageObj_GetImageMetadata);
CHK(FPDFImageObj_GetImagePixelSize);
CHK(FPDFImageObj_GetRenderedBitmap);
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_GetDashArray);
CHK(FPDFPageObj_GetDashCount);
CHK(FPDFPageObj_GetDashPhase);
CHK(FPDFPageObj_GetFillColor);
CHK(FPDFPageObj_GetLineCap);
CHK(FPDFPageObj_GetLineJoin);
CHK(FPDFPageObj_GetMark);
CHK(FPDFPageObj_GetMatrix);
CHK(FPDFPageObj_GetRotatedBounds);
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_SetDashArray);
CHK(FPDFPageObj_SetDashPhase);
CHK(FPDFPageObj_SetFillColor);
CHK(FPDFPageObj_SetLineCap);
CHK(FPDFPageObj_SetLineJoin);
CHK(FPDFPageObj_SetMatrix);
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_GetPathSegment);
CHK(FPDFPath_LineTo);
CHK(FPDFPath_MoveTo);
CHK(FPDFPath_SetDrawMode);
CHK(FPDFTextObj_GetFont);
CHK(FPDFTextObj_GetFontSize);
CHK(FPDFTextObj_GetRenderedBitmap);
CHK(FPDFTextObj_GetText);
CHK(FPDFTextObj_GetTextRenderMode);
CHK(FPDFTextObj_SetTextRenderMode);
CHK(FPDFText_LoadFont);
CHK(FPDFText_LoadStandardFont);
CHK(FPDFText_SetCharcodes);
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_GetFocusedAnnot);
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_OnMouseWheel);
CHK(FORM_OnRButtonDown);
CHK(FORM_OnRButtonUp);
CHK(FORM_Redo);
CHK(FORM_ReplaceAndKeepSelection);
CHK(FORM_ReplaceSelection);
CHK(FORM_SelectAllText);
CHK(FORM_SetFocusedAnnot);
CHK(FORM_SetIndexSelected);
CHK(FORM_Undo);
CHK(FPDFDOC_ExitFormFillEnvironment);
CHK(FPDFDOC_InitFormFillEnvironment);
CHK(FPDFPage_FormFieldZOrderAtPoint);
CHK(FPDFPage_HasFormFieldAtPoint);
CHK(FPDF_FFLDraw);
#if defined(_SKIA_SUPPORT_)
CHK(FPDF_FFLDrawSkia);
#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_CloseXObject);
CHK(FPDF_CopyViewerPreferences);
CHK(FPDF_ImportNPagesToOne);
CHK(FPDF_ImportPages);
CHK(FPDF_ImportPagesByIndex);
CHK(FPDF_NewFormObjectFromXObject);
CHK(FPDF_NewXObjectFromPage);
// fpdf_progressive.h
CHK(FPDF_RenderPageBitmapWithColorScheme_Start);
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_signature.h
CHK(FPDFSignatureObj_GetByteRange);
CHK(FPDFSignatureObj_GetContents);
CHK(FPDFSignatureObj_GetDocMDPPermission);
CHK(FPDFSignatureObj_GetReason);
CHK(FPDFSignatureObj_GetSubFilter);
CHK(FPDFSignatureObj_GetTime);
CHK(FPDF_GetSignatureCount);
CHK(FPDF_GetSignatureObject);
// fpdf_structtree.h
CHK(FPDF_StructElement_Attr_GetBlobValue);
CHK(FPDF_StructElement_Attr_GetBooleanValue);
CHK(FPDF_StructElement_Attr_GetCount);
CHK(FPDF_StructElement_Attr_GetName);
CHK(FPDF_StructElement_Attr_GetNumberValue);
CHK(FPDF_StructElement_Attr_GetStringValue);
CHK(FPDF_StructElement_Attr_GetType);
CHK(FPDF_StructElement_CountChildren);
CHK(FPDF_StructElement_GetActualText);
CHK(FPDF_StructElement_GetAltText);
CHK(FPDF_StructElement_GetAttributeAtIndex);
CHK(FPDF_StructElement_GetAttributeCount);
CHK(FPDF_StructElement_GetChildAtIndex);
CHK(FPDF_StructElement_GetID);
CHK(FPDF_StructElement_GetLang);
CHK(FPDF_StructElement_GetMarkedContentID);
CHK(FPDF_StructElement_GetMarkedContentIdAtIndex);
CHK(FPDF_StructElement_GetMarkedContentIdCount);
CHK(FPDF_StructElement_GetObjType);
CHK(FPDF_StructElement_GetParent);
CHK(FPDF_StructElement_GetStringAttribute);
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_HasUnicodeMapError);
CHK(FPDFText_IsGenerated);
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);
#ifdef PDF_ENABLE_V8
CHK(FPDF_GetArrayBufferAllocatorSharedInstance);
#endif
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_GetTrailerEnds);
CHK(FPDF_GetXFAPacketContent);
CHK(FPDF_GetXFAPacketCount);
CHK(FPDF_GetXFAPacketName);
CHK(FPDF_InitLibrary);
CHK(FPDF_InitLibraryWithConfig);
CHK(FPDF_LoadCustomDocument);
CHK(FPDF_LoadDocument);
CHK(FPDF_LoadMemDocument);
CHK(FPDF_LoadMemDocument64);
CHK(FPDF_LoadPage);
CHK(FPDF_PageToDevice);
#ifdef _WIN32
CHK(FPDF_RenderPage);
#endif
CHK(FPDF_RenderPageBitmap);
CHK(FPDF_RenderPageBitmapWithMatrix);
#if defined(_SKIA_SUPPORT_)
CHK(FPDF_RenderPageSkia);
#endif
#if defined(_WIN32)
CHK(FPDF_SetPrintMode);
#endif
CHK(FPDF_SetSandBoxPolicy);
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