#ifndef XPDFPLUGINAPI_H
#define XPDFPLUGINAPI_H
#ifdef _WIN32
#include <windows.h>
#else
#endif
#ifdef __cplusplus
extern "C" {
#endif
#define xpdfPluginAPIVersion 1
#ifdef _WIN32
# ifdef __cplusplus
# define PLUGINFUNC(retType) extern "C" __declspec(dllexport) retType
# else
# define PLUGINFUNC(retType) extern __declspec(dllexport) retType
# endif
#else
# ifdef __cplusplus
# define PLUGINFUNC(retType) extern "C" retType
# else
# define PLUGINFUNC(retType) extern retType
# endif
#endif
typedef int XpdfBool;
#define xpdfTrue 1
#define xpdfFalse 0
typedef struct _XpdfDoc *XpdfDoc;
typedef struct _XpdfObject *XpdfObject;
typedef unsigned int XpdfPermission;
#define xpdfPermissionOpen (1 << 0)
#define xpdfPermissionPrint (1 << 2)
#define xpdfPermissionChange (1 << 3)
#define xpdfPermissionCopy (1 << 4)
#define xpdfPermissionNotes (1 << 5)
#ifdef __cplusplus
struct XpdfSecurityHandler {
#else
typedef struct {
#endif
int version;
char *name;
void *handlerData;
XpdfBool (*newDoc)(void *handlerData, XpdfDoc doc,
XpdfObject encryptDict, void **docData);
void (*freeDoc)(void *handlerData, void *docData);
XpdfBool (*makeAuthData)(void *handlerData, void *docData,
char *ownerPassword, char *userPassword,
void **authData);
XpdfBool (*getAuthData)(void *handlerData, void *docData,
void **authData);
void (*freeAuthData)(void *handlerData, void *docData,
void *authData);
XpdfPermission (*authorize)(void *handlerData, void *docData,
void *authData);
XpdfBool (*getKey)(void *handlerData, void *docData,
char **key, int *keyLen, int *cryptVersion);
void (*freeKey)(void *handlerData, void *docData,
char *key, int keyLen);
#ifdef __cplusplus
};
#else
} XpdfSecurityHandler;
#endif
typedef struct {
int version;
XpdfObject (*_xpdfGetInfoDict)(XpdfDoc doc);
XpdfObject (*_xpdfGetCatalog)(XpdfDoc doc);
XpdfBool (*_xpdfObjIsBool)(XpdfObject obj);
XpdfBool (*_xpdfObjIsInt)(XpdfObject obj);
XpdfBool (*_xpdfObjIsReal)(XpdfObject obj);
XpdfBool (*_xpdfObjIsString)(XpdfObject obj);
XpdfBool (*_xpdfObjIsName)(XpdfObject obj);
XpdfBool (*_xpdfObjIsNull)(XpdfObject obj);
XpdfBool (*_xpdfObjIsArray)(XpdfObject obj);
XpdfBool (*_xpdfObjIsDict)(XpdfObject obj);
XpdfBool (*_xpdfObjIsStream)(XpdfObject obj);
XpdfBool (*_xpdfObjIsRef)(XpdfObject obj);
XpdfBool (*_xpdfBoolValue)(XpdfObject obj);
int (*_xpdfIntValue)(XpdfObject obj);
double (*_xpdfRealValue)(XpdfObject obj);
int (*_xpdfStringLength)(XpdfObject obj);
char *(*_xpdfStringValue)(XpdfObject obj);
char *(*_xpdfNameValue)(XpdfObject obj);
int (*_xpdfArrayLength)(XpdfObject obj);
XpdfObject (*_xpdfArrayGet)(XpdfObject obj, int idx);
XpdfObject (*_xpdfDictGet)(XpdfObject obj, char *key);
void (*_xpdfFreeObj)(XpdfObject obj);
void *(*_xpdfMalloc)(int size);
void *(*_xpdfRealloc)(void *p, int size);
void (*_xpdfFree)(void *p);
void (*_xpdfRegisterSecurityHandler)(XpdfSecurityHandler *handler);
} XpdfPluginVecTable;
#ifdef _WIN32
extern __declspec(dllexport) XpdfPluginVecTable xpdfPluginVecTable;
#define xpdfPluginSetup \
extern __declspec(dllexport) \
XpdfPluginVecTable xpdfPluginVecTable = {xpdfPluginAPIVersion};
#else
extern XpdfPluginVecTable xpdfPluginVecTable;
#define xpdfPluginSetup \
XpdfPluginVecTable xpdfPluginVecTable = {xpdfPluginAPIVersion};
#endif
#define xpdfGetInfoDict (*xpdfPluginVecTable._xpdfGetInfoDict)
#define xpdfGetCatalog (*xpdfPluginVecTable._xpdfGetCatalog)
#ifdef _WIN32
#define xpdfWin32GetWindow (*xpdfPluginVecTable._xpdfWin32GetWindow)
#else
#define xpdfXGetWindow (*xpdfPluginVecTable._xpdfXGetWindow)
#endif
#define xpdfObjIsBool (*xpdfPluginVecTable._xpdfObjIsBool)
#define xpdfObjIsInt (*xpdfPluginVecTable._xpdfObjIsInt)
#define xpdfObjIsReal (*xpdfPluginVecTable._xpdfObjIsReal)
#define xpdfObjIsString (*xpdfPluginVecTable._xpdfObjIsString)
#define xpdfObjIsName (*xpdfPluginVecTable._xpdfObjIsName)
#define xpdfObjIsNull (*xpdfPluginVecTable._xpdfObjIsNull)
#define xpdfObjIsArray (*xpdfPluginVecTable._xpdfObjIsArray)
#define xpdfObjIsDict (*xpdfPluginVecTable._xpdfObjIsDict)
#define xpdfObjIsStream (*xpdfPluginVecTable._xpdfObjIsStream)
#define xpdfObjIsRef (*xpdfPluginVecTable._xpdfObjIsRef)
#define xpdfBoolValue (*xpdfPluginVecTable._xpdfBoolValue)
#define xpdfIntValue (*xpdfPluginVecTable._xpdfIntValue)
#define xpdfRealValue (*xpdfPluginVecTable._xpdfRealValue)
#define xpdfStringLength (*xpdfPluginVecTable._xpdfStringLength)
#define xpdfStringValue (*xpdfPluginVecTable._xpdfStringValue)
#define xpdfNameValue (*xpdfPluginVecTable._xpdfNameValue)
#define xpdfArrayLength (*xpdfPluginVecTable._xpdfArrayLength)
#define xpdfArrayGet (*xpdfPluginVecTable._xpdfArrayGet)
#define xpdfDictGet (*xpdfPluginVecTable._xpdfDictGet)
#define xpdfFreeObj (*xpdfPluginVecTable._xpdfFreeObj)
#define xpdfMalloc (*xpdfPluginVecTable._xpdfMalloc)
#define xpdfRealloc (*xpdfPluginVecTable._xpdfRealloc)
#define xpdfFree (*xpdfPluginVecTable._xpdfFree)
#define xpdfRegisterSecurityHandler (*xpdfPluginVecTable._xpdfRegisterSecurityHandler)
#ifdef __cplusplus
}
#endif
#endif