⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xpdfpluginapi.cc

📁 这是一个做pdf阅读器的源代码文件,是大家学习阅读器资料的很好参考
💻 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 + -