Home | History | Annotate | Download | only in src
      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 "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_sysfontinfo.h"
     24 #include "public/fpdf_text.h"
     25 #include "public/fpdf_transformpage.h"
     26 #include "public/fpdfview.h"
     27 
     28 // Scheme for avoiding LTO out of existence, warnings, etc.
     29 typedef void (*fnptr)(void);  // Legal generic function type for casts.
     30 fnptr g_c_api_test_fnptr = NULL;  // Extern, so can't know it doesn't change.
     31 #define CHK(x) if ((fnptr)(x) == g_c_api_test_fnptr) return 0
     32 
     33 // Function to call from gtest harness to ensure linker resolution.
     34 int CheckPDFiumCApi() {
     35     // fpdf_dataavail.h
     36     CHK(FPDFAvail_Create);
     37     CHK(FPDFAvail_Destroy);
     38     CHK(FPDFAvail_IsDocAvail);
     39     CHK(FPDFAvail_GetDocument);
     40     CHK(FPDFAvail_GetFirstPageNum);
     41     CHK(FPDFAvail_IsPageAvail);
     42     CHK(FPDFAvail_IsFormAvail);
     43     CHK(FPDFAvail_IsLinearized);
     44 
     45     // fpdf_doc.h
     46     CHK(FPDFBookmark_GetFirstChild);
     47     CHK(FPDFBookmark_GetNextSibling);
     48     CHK(FPDFBookmark_GetTitle);
     49     CHK(FPDFBookmark_Find);
     50     CHK(FPDFBookmark_GetDest);
     51     CHK(FPDFBookmark_GetAction);
     52     CHK(FPDFAction_GetType);
     53     CHK(FPDFAction_GetDest);
     54     CHK(FPDFAction_GetFilePath);
     55     CHK(FPDFAction_GetURIPath);
     56     CHK(FPDFDest_GetPageIndex);
     57     CHK(FPDFLink_GetLinkAtPoint);
     58     CHK(FPDFLink_GetLinkZOrderAtPoint);
     59     CHK(FPDFLink_GetDest);
     60     CHK(FPDFLink_GetAction);
     61     CHK(FPDFLink_Enumerate);
     62     CHK(FPDFLink_GetAnnotRect);
     63     CHK(FPDFLink_CountQuadPoints);
     64     CHK(FPDFLink_GetQuadPoints);
     65     CHK(FPDF_GetMetaText);
     66 
     67     // fpdf_edit.h
     68     CHK(FPDF_CreateNewDocument);
     69     CHK(FPDFPage_New);
     70     CHK(FPDFPage_Delete);
     71     CHK(FPDFPage_GetRotation);
     72     CHK(FPDFPage_SetRotation);
     73     CHK(FPDFPage_InsertObject);
     74     CHK(FPDFPage_CountObject);
     75     CHK(FPDFPage_GetObject);
     76     CHK(FPDFPage_HasTransparency);
     77     CHK(FPDFPage_GenerateContent);
     78     CHK(FPDFPageObj_HasTransparency);
     79     CHK(FPDFPageObj_Transform);
     80     CHK(FPDFPage_TransformAnnots);
     81     CHK(FPDFPageObj_NewImgeObj);
     82     CHK(FPDFImageObj_LoadJpegFile);
     83     CHK(FPDFImageObj_SetMatrix);
     84     CHK(FPDFImageObj_SetBitmap);
     85 
     86     // fpdf_ext.h
     87     CHK(FSDK_SetUnSpObjProcessHandler);
     88     CHK(FPDFDoc_GetPageMode);
     89 
     90     // fpdf_flatten.h
     91     CHK(FPDFPage_Flatten);
     92 
     93     // fpdf_fwlevent.h - no exports.
     94 
     95     // fpdf_formfill.h
     96     CHK(FPDFDOC_InitFormFillEnvironment);
     97     CHK(FPDFDOC_ExitFormFillEnvironment);
     98     CHK(FORM_OnAfterLoadPage);
     99     CHK(FORM_OnBeforeClosePage);
    100     CHK(FORM_DoDocumentJSAction);
    101     CHK(FORM_DoDocumentOpenAction);
    102     CHK(FORM_DoDocumentAAction);
    103     CHK(FORM_DoPageAAction);
    104     CHK(FORM_OnMouseMove);
    105     CHK(FORM_OnLButtonDown);
    106     CHK(FORM_OnLButtonUp);
    107 #ifdef PDF_ENABLE_XFA
    108     CHK(FORM_OnRButtonDown);
    109     CHK(FORM_OnRButtonUp);
    110 #endif
    111     CHK(FORM_OnKeyDown);
    112     CHK(FORM_OnKeyUp);
    113     CHK(FORM_OnChar);
    114     CHK(FORM_ForceToKillFocus);
    115     CHK(FPDFPage_HasFormFieldAtPoint);
    116     CHK(FPDPage_HasFormFieldAtPoint);  // DEPRECATED. Remove in the future.
    117     CHK(FPDFPage_FormFieldZOrderAtPoint);
    118     CHK(FPDF_SetFormFieldHighlightColor);
    119     CHK(FPDF_SetFormFieldHighlightAlpha);
    120     CHK(FPDF_RemoveFormFieldHighlight);
    121     CHK(FPDF_FFLDraw);
    122 #ifdef PDF_ENABLE_XFA
    123     CHK(FPDF_HasXFAField);
    124     CHK(FPDF_LoadXFA);
    125     CHK(FPDF_Widget_Undo);
    126     CHK(FPDF_Widget_Redo);
    127     CHK(FPDF_Widget_SelectAll);
    128     CHK(FPDF_Widget_Copy);
    129     CHK(FPDF_Widget_Cut);
    130     CHK(FPDF_Widget_Paste);
    131     CHK(FPDF_Widget_ReplaceSpellCheckWord);
    132     CHK(FPDF_Widget_GetSpellCheckWords);
    133     CHK(FPDF_StringHandleCounts);
    134     CHK(FPDF_StringHandleGetStringByIndex);
    135     CHK(FPDF_StringHandleRelease);
    136     CHK(FPDF_StringHandleAddString);
    137 #endif
    138 
    139     // fpdf_ppo.h
    140     CHK(FPDF_ImportPages);
    141     CHK(FPDF_CopyViewerPreferences);
    142 
    143     // fpdf_progressive.h
    144     CHK(FPDF_RenderPageBitmap_Start);
    145     CHK(FPDF_RenderPage_Continue);
    146     CHK(FPDF_RenderPage_Close);
    147 
    148     // fpdf_save.h
    149     CHK(FPDF_SaveAsCopy);
    150     CHK(FPDF_SaveWithVersion);
    151 
    152     // fpdf_searchex.h
    153     CHK(FPDFText_GetCharIndexFromTextIndex);
    154 
    155     // fpdf_sysfontinfo.h
    156     CHK(FPDF_GetDefaultTTFMap);
    157     CHK(FPDF_AddInstalledFont);
    158     CHK(FPDF_SetSystemFontInfo);
    159     CHK(FPDF_GetDefaultSystemFontInfo);
    160 
    161     // fpdf_text.h
    162     CHK(FPDFText_LoadPage);
    163     CHK(FPDFText_ClosePage);
    164     CHK(FPDFText_CountChars);
    165     CHK(FPDFText_GetUnicode);
    166     CHK(FPDFText_GetFontSize);
    167     CHK(FPDFText_GetCharBox);
    168     CHK(FPDFText_GetCharIndexAtPos);
    169     CHK(FPDFText_GetText);
    170     CHK(FPDFText_CountRects);
    171     CHK(FPDFText_GetRect);
    172     CHK(FPDFText_GetBoundedText);
    173     CHK(FPDFText_FindStart);
    174     CHK(FPDFText_FindNext);
    175     CHK(FPDFText_FindPrev);
    176     CHK(FPDFText_GetSchResultIndex);
    177     CHK(FPDFText_GetSchCount);
    178     CHK(FPDFText_FindClose);
    179     CHK(FPDFLink_LoadWebLinks);
    180     CHK(FPDFLink_CountWebLinks);
    181     CHK(FPDFLink_GetURL);
    182     CHK(FPDFLink_CountRects);
    183     CHK(FPDFLink_GetRect);
    184     CHK(FPDFLink_CloseWebLinks);
    185 
    186     // fpdf_transformpage.h
    187     CHK(FPDFPage_SetMediaBox);
    188     CHK(FPDFPage_SetCropBox);
    189     CHK(FPDFPage_GetMediaBox);
    190     CHK(FPDFPage_GetCropBox);
    191     CHK(FPDFPage_TransFormWithClip);
    192     CHK(FPDFPageObj_TransformClipPath);
    193     CHK(FPDF_CreateClipPath);
    194     CHK(FPDF_DestroyClipPath);
    195     CHK(FPDFPage_InsertClipPath);
    196 
    197     // fpdfview.h
    198     CHK(FPDF_InitLibrary);
    199     CHK(FPDF_InitLibraryWithConfig);
    200     CHK(FPDF_DestroyLibrary);
    201     CHK(FPDF_SetSandBoxPolicy);
    202     CHK(FPDF_LoadDocument);
    203     CHK(FPDF_LoadMemDocument);
    204     CHK(FPDF_LoadCustomDocument);
    205     CHK(FPDF_GetFileVersion);
    206     CHK(FPDF_GetLastError);
    207     CHK(FPDF_GetDocPermissions);
    208     CHK(FPDF_GetSecurityHandlerRevision);
    209     CHK(FPDF_GetPageCount);
    210     CHK(FPDF_LoadPage);
    211     CHK(FPDF_GetPageWidth);
    212     CHK(FPDF_GetPageHeight);
    213     CHK(FPDF_GetPageSizeByIndex);
    214     CHK(FPDF_RenderPageBitmap);
    215     CHK(FPDF_ClosePage);
    216     CHK(FPDF_CloseDocument);
    217     CHK(FPDF_DeviceToPage);
    218     CHK(FPDF_PageToDevice);
    219     CHK(FPDFBitmap_Create);
    220     CHK(FPDFBitmap_CreateEx);
    221     CHK(FPDFBitmap_FillRect);
    222     CHK(FPDFBitmap_GetBuffer);
    223     CHK(FPDFBitmap_GetWidth);
    224     CHK(FPDFBitmap_GetHeight);
    225     CHK(FPDFBitmap_GetStride);
    226     CHK(FPDFBitmap_Destroy);
    227     CHK(FPDF_VIEWERREF_GetPrintScaling);
    228     CHK(FPDF_VIEWERREF_GetNumCopies);
    229     CHK(FPDF_VIEWERREF_GetPrintPageRange);
    230     CHK(FPDF_VIEWERREF_GetDuplex);
    231     CHK(FPDF_CountNamedDests);
    232     CHK(FPDF_GetNamedDestByName);
    233     CHK(FPDF_GetNamedDest);
    234 #ifdef PDF_ENABLE_XFA
    235     CHK(FPDF_BStr_Init);
    236     CHK(FPDF_BStr_Set);
    237     CHK(FPDF_BStr_Clear);
    238 #endif
    239 
    240     return 1;
    241 }
    242 
    243 #undef CHK
    244