📄 xpdfpluginapi.cc
字号:
//========================================================================//// XpdfPluginAPI.cc//// Copyright 2004 Glyph & Cog, LLC////========================================================================#include "aconf.h"#ifdef ENABLE_PLUGINS#include "gmem.h"#include "GlobalParams.h"#include "Object.h"#include "PDFDoc.h"#ifdef WIN32#include "WinPDFCore.h"#else#include "XPDFCore.h"#endif#include "XpdfPluginAPI.h"//------------------------------------------------------------------------//~ This should use a pool of Objects; change xpdfFreeObj to match.static Object *allocObj() { return (Object *)gmalloc(sizeof(Object));}//------------------------------------------------------------------------// Document access functions//------------------------------------------------------------------------XpdfObject _xpdfGetInfoDict(XpdfDoc doc) { Object *obj; obj = allocObj(); return (XpdfObject)((PDFDoc *)doc)->getDocInfo(obj);}XpdfObject _xpdfGetCatalog(XpdfDoc doc) { Object *obj; obj = allocObj(); return (XpdfObject)((PDFDoc *)doc)->getXRef()->getCatalog(obj);}#ifdef _WIN32HWND _xpdfWin32GetWindow(XpdfDoc doc) { WinPDFCore *core; if (!(core = (WinPDFCore *)((PDFDoc *)doc)->getGUIData())) { return NULL; } return core->getDrawFrame();}#elseWidget _xpdfXGetWindow(XpdfDoc doc) { XPDFCore *core; if (!(core = (XPDFCore *)((PDFDoc *)doc)->getGUIData())) { return NULL; } return core->getWidget();}#endif//------------------------------------------------------------------------// Object access functions.//------------------------------------------------------------------------XpdfBool _xpdfObjIsBool(XpdfObject obj) { return (XpdfBool)((Object *)obj)->isBool();}XpdfBool _xpdfObjIsInt(XpdfObject obj) { return (XpdfBool)((Object *)obj)->isInt();}XpdfBool _xpdfObjIsReal(XpdfObject obj) { return (XpdfBool)((Object *)obj)->isReal();}XpdfBool _xpdfObjIsNumber(XpdfObject obj) { return (XpdfBool)((Object *)obj)->isNum();}XpdfBool _xpdfObjIsString(XpdfObject obj) { return (XpdfBool)((Object *)obj)->isString();}XpdfBool _xpdfObjIsName(XpdfObject obj) { return (XpdfBool)((Object *)obj)->isName();}XpdfBool _xpdfObjIsNull(XpdfObject obj) { return (XpdfBool)((Object *)obj)->isNull();}XpdfBool _xpdfObjIsArray(XpdfObject obj) { return (XpdfBool)((Object *)obj)->isArray();}XpdfBool _xpdfObjIsDict(XpdfObject obj) { return (XpdfBool)((Object *)obj)->isDict();}XpdfBool _xpdfObjIsStream(XpdfObject obj) { return (XpdfBool)((Object *)obj)->isStream();}XpdfBool _xpdfObjIsRef(XpdfObject obj) { return (XpdfBool)((Object *)obj)->isRef();}XpdfBool _xpdfBoolValue(XpdfObject obj) { return (XpdfBool)((Object *)obj)->getBool();}int _xpdfIntValue(XpdfObject obj) { if (!((Object *)obj)->isInt()) { return 0; } return ((Object *)obj)->getInt();}double _xpdfRealValue(XpdfObject obj) { if (!((Object *)obj)->isReal()) { return 0; } return ((Object *)obj)->getReal();}double _xpdfNumberValue(XpdfObject obj) { if (!((Object *)obj)->isNum()) { return 0; } return ((Object *)obj)->getNum();}int _xpdfStringLength(XpdfObject obj) { if (!((Object *)obj)->isString()) { return 0; } return ((Object *)obj)->getString()->getLength();}char *_xpdfStringValue(XpdfObject obj) { if (!((Object *)obj)->isString()) { return 0; } return ((Object *)obj)->getString()->getCString();}char *_xpdfNameValue(XpdfObject obj) { if (!((Object *)obj)->isName()) { return NULL; } return ((Object *)obj)->getName();}int _xpdfArrayLength(XpdfObject obj) { if (!((Object *)obj)->isArray()) { return 0; } return ((Object *)obj)->arrayGetLength();}XpdfObject _xpdfArrayGet(XpdfObject obj, int idx) { Object *elem; elem = allocObj(); if (!((Object *)obj)->isArray()) { return (XpdfObject)elem->initNull(); } return (XpdfObject)((Object *)obj)->arrayGet(idx, elem);}XpdfObject _xpdfDictGet(XpdfObject obj, char *key) { Object *elem; elem = allocObj(); if (!((Object *)obj)->isDict()) { return (XpdfObject)elem->initNull(); } return (XpdfObject)((Object *)obj)->dictLookup(key, elem);}void _xpdfFreeObj(XpdfObject obj) { ((Object *)obj)->free(); gfree(obj);}//------------------------------------------------------------------------// Memory allocation functions//------------------------------------------------------------------------void *_xpdfMalloc(int size) { return gmalloc(size);}void *_xpdfRealloc(void *p, int size) { return grealloc(p, size);}void _xpdfFree(void *p) { gfree(p);}//------------------------------------------------------------------------// Security handlers//------------------------------------------------------------------------void _xpdfRegisterSecurityHandler(XpdfSecurityHandler *handler) { if (handler->version <= xpdfPluginAPIVersion) { globalParams->addSecurityHandler(handler); }}//------------------------------------------------------------------------XpdfPluginVecTable xpdfPluginVecTable = { xpdfPluginAPIVersion, &_xpdfGetInfoDict, &_xpdfGetCatalog,#ifdef _WIN32 &_xpdfWin32GetWindow,#else &_xpdfXGetWindow,#endif &_xpdfObjIsBool, &_xpdfObjIsInt, &_xpdfObjIsReal, &_xpdfObjIsString, &_xpdfObjIsName, &_xpdfObjIsNull, &_xpdfObjIsArray, &_xpdfObjIsDict, &_xpdfObjIsStream, &_xpdfObjIsRef, &_xpdfBoolValue, &_xpdfIntValue, &_xpdfRealValue, &_xpdfStringLength, &_xpdfStringValue, &_xpdfNameValue, &_xpdfArrayLength, &_xpdfArrayGet, &_xpdfDictGet, &_xpdfFreeObj, &_xpdfMalloc, &_xpdfRealloc, &_xpdfFree, &_xpdfRegisterSecurityHandler,};#endif // ENABLE_PLUGINS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -