summaryrefslogtreecommitdiff
path: root/fpdfsdk/fpdf_view_c_api_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk/fpdf_view_c_api_test.c')
-rw-r--r--fpdfsdk/fpdf_view_c_api_test.c382
1 files changed, 382 insertions, 0 deletions
diff --git a/fpdfsdk/fpdf_view_c_api_test.c b/fpdfsdk/fpdf_view_c_api_test.c
new file mode 100644
index 0000000000..df7ade8539
--- /dev/null
+++ b/fpdfsdk/fpdf_view_c_api_test.c
@@ -0,0 +1,382 @@
+// 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 <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_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_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_IsSupportedSubtype);
+ CHK(FPDFPage_CreateAnnot);
+ CHK(FPDFPage_GetAnnotCount);
+ CHK(FPDFPage_GetAnnot);
+ CHK(FPDFPage_GetAnnotIndex);
+ CHK(FPDFPage_CloseAnnot);
+ CHK(FPDFPage_RemoveAnnot);
+ CHK(FPDFAnnot_GetSubtype);
+ CHK(FPDFAnnot_IsObjectSupportedSubtype);
+ CHK(FPDFAnnot_UpdateObject);
+ CHK(FPDFAnnot_AppendObject);
+ CHK(FPDFAnnot_GetObjectCount);
+ CHK(FPDFAnnot_GetObject);
+ CHK(FPDFAnnot_RemoveObject);
+ CHK(FPDFAnnot_SetColor);
+ CHK(FPDFAnnot_GetColor);
+ CHK(FPDFAnnot_HasAttachmentPoints);
+ CHK(FPDFAnnot_SetAttachmentPoints);
+ CHK(FPDFAnnot_CountAttachmentPoints);
+ CHK(FPDFAnnot_GetAttachmentPoints);
+ CHK(FPDFAnnot_SetRect);
+ CHK(FPDFAnnot_GetRect);
+ CHK(FPDFAnnot_HasKey);
+ CHK(FPDFAnnot_GetValueType);
+ CHK(FPDFAnnot_SetStringValue);
+ CHK(FPDFAnnot_GetStringValue);
+ CHK(FPDFAnnot_SetAP);
+ CHK(FPDFAnnot_GetAP);
+ CHK(FPDFAnnot_GetLinkedAnnot);
+ CHK(FPDFAnnot_GetFlags);
+ CHK(FPDFAnnot_SetFlags);
+ CHK(FPDFAnnot_GetFormFieldFlags);
+ CHK(FPDFAnnot_GetFormFieldAtPoint);
+
+ // fpdf_attachment.h
+ CHK(FPDFDoc_GetAttachmentCount);
+ CHK(FPDFDoc_AddAttachment);
+ CHK(FPDFDoc_GetAttachment);
+ CHK(FPDFDoc_DeleteAttachment);
+ CHK(FPDFAttachment_GetName);
+ CHK(FPDFAttachment_HasKey);
+ CHK(FPDFAttachment_GetValueType);
+ CHK(FPDFAttachment_SetStringValue);
+ CHK(FPDFAttachment_GetStringValue);
+ CHK(FPDFAttachment_SetFile);
+ CHK(FPDFAttachment_GetFile);
+
+ // fpdf_catalog.h
+ CHK(FPDFCatalog_IsTagged);
+
+ // fpdf_dataavail.h
+ CHK(FPDFAvail_Create);
+ CHK(FPDFAvail_Destroy);
+ CHK(FPDFAvail_IsDocAvail);
+ CHK(FPDFAvail_GetDocument);
+ CHK(FPDFAvail_GetFirstPageNum);
+ CHK(FPDFAvail_IsPageAvail);
+ CHK(FPDFAvail_IsFormAvail);
+ CHK(FPDFAvail_IsLinearized);
+
+ // fpdf_doc.h
+ CHK(FPDFBookmark_GetFirstChild);
+ CHK(FPDFBookmark_GetNextSibling);
+ CHK(FPDFBookmark_GetTitle);
+ CHK(FPDFBookmark_Find);
+ CHK(FPDFBookmark_GetDest);
+ CHK(FPDFBookmark_GetAction);
+ CHK(FPDFAction_GetType);
+ CHK(FPDFAction_GetDest);
+ CHK(FPDFAction_GetFilePath);
+ CHK(FPDFAction_GetURIPath);
+ CHK(FPDFDest_GetDestPageIndex);
+ CHK(FPDFDest_GetPageIndex);
+ CHK(FPDFDest_GetLocationInPage);
+ CHK(FPDFDest_GetView);
+ CHK(FPDFLink_GetLinkAtPoint);
+ CHK(FPDFLink_GetLinkZOrderAtPoint);
+ CHK(FPDFLink_GetDest);
+ CHK(FPDFLink_GetAction);
+ CHK(FPDFLink_Enumerate);
+ CHK(FPDFLink_GetAnnotRect);
+ CHK(FPDFLink_CountQuadPoints);
+ CHK(FPDFLink_GetQuadPoints);
+ CHK(FPDF_GetMetaText);
+ CHK(FPDF_GetPageLabel);
+
+ // fpdf_edit.h
+ CHK(FPDF_CreateNewDocument);
+ CHK(FPDFPage_New);
+ CHK(FPDFPage_Delete);
+ CHK(FPDFPage_GetRotation);
+ CHK(FPDFPage_SetRotation);
+ CHK(FPDFPage_InsertObject);
+ CHK(FPDFPage_RemoveObject);
+ CHK(FPDFPage_CountObject);
+ CHK(FPDFPage_CountObjects);
+ CHK(FPDFPage_GetObject);
+ CHK(FPDFPage_HasTransparency);
+ CHK(FPDFPage_GenerateContent);
+ CHK(FPDFPageObj_Destroy);
+ CHK(FPDFPageObj_HasTransparency);
+ CHK(FPDFPageObj_GetBounds);
+ CHK(FPDFPageObj_GetType);
+ CHK(FPDFPageObj_SetBlendMode);
+ CHK(FPDFPageObj_Transform);
+ CHK(FPDFPage_TransformAnnots);
+ CHK(FPDFPageObj_NewImageObj);
+ CHK(FPDFPageObj_CountMarks);
+ CHK(FPDFPageObj_GetMark);
+ CHK(FPDFPageObjMark_GetName);
+ CHK(FPDFImageObj_LoadJpegFile);
+ CHK(FPDFImageObj_LoadJpegFileInline);
+ CHK(FPDFImageObj_SetMatrix);
+ CHK(FPDFImageObj_SetBitmap);
+ CHK(FPDFImageObj_GetBitmap);
+ CHK(FPDFImageObj_GetImageDataDecoded);
+ CHK(FPDFImageObj_GetImageDataRaw);
+ CHK(FPDFImageObj_GetImageFilterCount);
+ CHK(FPDFImageObj_GetImageFilter);
+ CHK(FPDFImageObj_GetImageMetadata);
+ CHK(FPDFPageObj_CreateNewPath);
+ CHK(FPDFPageObj_CreateNewRect);
+ CHK(FPDFPath_SetStrokeColor);
+ CHK(FPDFPath_GetStrokeColor);
+ CHK(FPDFPath_SetStrokeWidth);
+ CHK(FPDFPath_SetFillColor);
+ CHK(FPDFPath_GetFillColor);
+ CHK(FPDFPath_CountSegments);
+ CHK(FPDFPath_GetPathSegment);
+ CHK(FPDFPathSegment_GetPoint);
+ CHK(FPDFPathSegment_GetType);
+ CHK(FPDFPathSegment_GetClose);
+ CHK(FPDFPath_MoveTo);
+ CHK(FPDFPath_LineTo);
+ CHK(FPDFPath_BezierTo);
+ CHK(FPDFPath_Close);
+ CHK(FPDFPath_SetDrawMode);
+ CHK(FPDFPath_SetLineCap);
+ CHK(FPDFPath_SetLineJoin);
+ CHK(FPDFPageObj_NewTextObj);
+ CHK(FPDFText_SetText);
+ CHK(FPDFText_SetFillColor);
+ CHK(FPDFText_LoadFont);
+ CHK(FPDFFont_Close);
+ CHK(FPDFPageObj_CreateTextObj);
+
+ // fpdf_ext.h
+ CHK(FSDK_SetUnSpObjProcessHandler);
+ CHK(FPDFDoc_GetPageMode);
+
+ // fpdf_flatten.h
+ CHK(FPDFPage_Flatten);
+
+ // fpdf_fwlevent.h - no exports.
+
+ // fpdf_formfill.h
+ CHK(FPDFDOC_InitFormFillEnvironment);
+ CHK(FPDFDOC_ExitFormFillEnvironment);
+ CHK(FORM_OnAfterLoadPage);
+ CHK(FORM_OnBeforeClosePage);
+ CHK(FORM_DoDocumentJSAction);
+ CHK(FORM_DoDocumentOpenAction);
+ CHK(FORM_DoDocumentAAction);
+ CHK(FORM_DoPageAAction);
+ CHK(FORM_OnMouseMove);
+ CHK(FORM_OnFocus);
+ CHK(FORM_OnLButtonDown);
+ CHK(FORM_OnLButtonUp);
+#ifdef PDF_ENABLE_XFA
+ CHK(FORM_OnRButtonDown);
+ CHK(FORM_OnRButtonUp);
+#endif
+ CHK(FORM_OnKeyDown);
+ CHK(FORM_OnKeyUp);
+ CHK(FORM_OnChar);
+ CHK(FORM_GetSelectedText);
+ CHK(FORM_ReplaceSelection);
+ CHK(FORM_ForceToKillFocus);
+ CHK(FPDFPage_HasFormFieldAtPoint);
+ CHK(FPDFPage_FormFieldZOrderAtPoint);
+ CHK(FPDF_SetFormFieldHighlightColor);
+ CHK(FPDF_SetFormFieldHighlightAlpha);
+ CHK(FPDF_RemoveFormFieldHighlight);
+ CHK(FPDF_FFLDraw);
+#ifdef _SKIA_SUPPORT_
+ CHK(FPDF_FFLRecord);
+#endif
+ CHK(FPDF_GetFormType);
+#ifdef PDF_ENABLE_XFA
+ CHK(FPDF_LoadXFA);
+ CHK(FPDF_Widget_Undo);
+ CHK(FPDF_Widget_Redo);
+ CHK(FPDF_Widget_SelectAll);
+ CHK(FPDF_Widget_Copy);
+ CHK(FPDF_Widget_Cut);
+ CHK(FPDF_Widget_Paste);
+ CHK(FPDF_Widget_ReplaceSpellCheckWord);
+ CHK(FPDF_Widget_GetSpellCheckWords);
+ CHK(FPDF_StringHandleCounts);
+ CHK(FPDF_StringHandleGetStringByIndex);
+ CHK(FPDF_StringHandleRelease);
+ CHK(FPDF_StringHandleAddString);
+#endif
+
+ // fpdf_ppo.h
+ CHK(FPDF_ImportPages);
+ CHK(FPDF_ImportNPagesToOne);
+ CHK(FPDF_CopyViewerPreferences);
+
+ // fpdf_progressive.h
+ CHK(FPDF_RenderPageBitmap_Start);
+ CHK(FPDF_RenderPage_Continue);
+ CHK(FPDF_RenderPage_Close);
+
+ // fpdf_save.h
+ CHK(FPDF_SaveAsCopy);
+ CHK(FPDF_SaveWithVersion);
+
+ // fpdf_searchex.h
+ CHK(FPDFText_GetCharIndexFromTextIndex);
+ CHK(FPDFText_GetTextIndexFromCharIndex);
+
+ // fpdf_structtree.h
+ CHK(FPDF_StructTree_GetForPage);
+ CHK(FPDF_StructTree_Close);
+ CHK(FPDF_StructTree_CountChildren);
+ CHK(FPDF_StructTree_GetChildAtIndex);
+ CHK(FPDF_StructElement_GetAltText);
+ CHK(FPDF_StructElement_GetMarkedContentID);
+ CHK(FPDF_StructElement_GetType);
+ CHK(FPDF_StructElement_GetTitle);
+ CHK(FPDF_StructElement_CountChildren);
+ CHK(FPDF_StructElement_GetChildAtIndex);
+
+ // fpdf_sysfontinfo.h
+ CHK(FPDF_GetDefaultTTFMap);
+ CHK(FPDF_AddInstalledFont);
+ CHK(FPDF_SetSystemFontInfo);
+ CHK(FPDF_GetDefaultSystemFontInfo);
+ CHK(FPDF_FreeDefaultSystemFontInfo);
+
+ // fpdf_text.h
+ CHK(FPDFText_LoadPage);
+ CHK(FPDFText_ClosePage);
+ CHK(FPDFText_CountChars);
+ CHK(FPDFText_GetUnicode);
+ CHK(FPDFText_GetFontSize);
+ CHK(FPDFText_GetCharBox);
+ CHK(FPDFText_GetCharOrigin);
+ CHK(FPDFText_GetCharIndexAtPos);
+ CHK(FPDFText_GetText);
+ CHK(FPDFText_CountRects);
+ CHK(FPDFText_GetRect);
+ CHK(FPDFText_GetBoundedText);
+ CHK(FPDFText_FindStart);
+ CHK(FPDFText_FindNext);
+ CHK(FPDFText_FindPrev);
+ CHK(FPDFText_GetSchResultIndex);
+ CHK(FPDFText_GetSchCount);
+ CHK(FPDFText_FindClose);
+ CHK(FPDFLink_LoadWebLinks);
+ CHK(FPDFLink_CountWebLinks);
+ CHK(FPDFLink_GetURL);
+ CHK(FPDFLink_CountRects);
+ CHK(FPDFLink_GetRect);
+ CHK(FPDFLink_CloseWebLinks);
+
+ // fpdf_transformpage.h
+ CHK(FPDFPage_SetMediaBox);
+ CHK(FPDFPage_SetCropBox);
+ CHK(FPDFPage_GetMediaBox);
+ CHK(FPDFPage_GetCropBox);
+ CHK(FPDFPage_TransFormWithClip);
+ CHK(FPDFPageObj_TransformClipPath);
+ CHK(FPDF_CreateClipPath);
+ CHK(FPDF_DestroyClipPath);
+ CHK(FPDFPage_InsertClipPath);
+
+ // fpdfview.h
+ CHK(FPDF_InitLibrary);
+ CHK(FPDF_InitLibraryWithConfig);
+ CHK(FPDF_DestroyLibrary);
+ CHK(FPDF_SetSandBoxPolicy);
+#if defined(_WIN32)
+#if defined(PDFIUM_PRINT_TEXT_WITH_GDI)
+ CHK(FPDF_SetTypefaceAccessibleFunc);
+ CHK(FPDF_SetPrintTextWithGDI);
+#endif
+ CHK(FPDF_SetPrintPostscriptLevel);
+ CHK(FPDF_SetPrintMode);
+#endif
+ CHK(FPDF_LoadDocument);
+ CHK(FPDF_LoadMemDocument);
+ CHK(FPDF_LoadCustomDocument);
+ CHK(FPDF_GetFileVersion);
+ CHK(FPDF_GetLastError);
+ CHK(FPDF_GetDocPermissions);
+ CHK(FPDF_GetSecurityHandlerRevision);
+ CHK(FPDF_GetPageCount);
+ CHK(FPDF_LoadPage);
+ CHK(FPDF_GetPageWidth);
+ CHK(FPDF_GetPageHeight);
+ CHK(FPDF_GetPageBoundingBox);
+ CHK(FPDF_GetPageSizeByIndex);
+#ifdef _WIN32
+ CHK(FPDF_RenderPage);
+#endif
+ CHK(FPDF_RenderPageBitmap);
+ CHK(FPDF_RenderPageBitmapWithMatrix);
+#ifdef _SKIA_SUPPORT_
+ CHK(FPDF_RenderPageSkp);
+#endif
+ CHK(FPDF_ClosePage);
+ CHK(FPDF_CloseDocument);
+ CHK(FPDF_DeviceToPage);
+ CHK(FPDF_PageToDevice);
+ CHK(FPDFBitmap_Create);
+ CHK(FPDFBitmap_CreateEx);
+ CHK(FPDFBitmap_GetFormat);
+ CHK(FPDFBitmap_FillRect);
+ CHK(FPDFBitmap_GetBuffer);
+ CHK(FPDFBitmap_GetWidth);
+ CHK(FPDFBitmap_GetHeight);
+ CHK(FPDFBitmap_GetStride);
+ CHK(FPDFBitmap_Destroy);
+ CHK(FPDF_VIEWERREF_GetPrintScaling);
+ CHK(FPDF_VIEWERREF_GetNumCopies);
+ CHK(FPDF_VIEWERREF_GetPrintPageRange);
+ CHK(FPDF_VIEWERREF_GetDuplex);
+ CHK(FPDF_VIEWERREF_GetName);
+ CHK(FPDF_CountNamedDests);
+ CHK(FPDF_GetNamedDestByName);
+ CHK(FPDF_GetNamedDest);
+#ifdef PDF_ENABLE_XFA
+ CHK(FPDF_BStr_Init);
+ CHK(FPDF_BStr_Set);
+ CHK(FPDF_BStr_Clear);
+#endif
+
+ return 1;
+}
+
+#undef CHK