1
//========================================================================
5
// Copyright 2004 Glyph & Cog, LLC
7
//========================================================================
9
//========================================================================
11
// Modified under the Poppler project - http://poppler.freedesktop.org
13
// Copyright (C) 2009 Kovid Goyal <kovid@kovidgoyal.net>
15
// To see a description of the changes please see the Changelog file that
16
// came with your tarball or type make ChangeLog if you are building from git
18
//========================================================================
25
#include "GlobalParams.h"
29
#include "WinPDFCore.h"
33
#include "XpdfPluginAPI.h"
35
//------------------------------------------------------------------------
37
//~ This should use a pool of Objects; change xpdfFreeObj to match.
38
static Object *allocObj() {
39
return (Object *)gmalloc(sizeof(Object));
42
//------------------------------------------------------------------------
43
// Document access functions
44
//------------------------------------------------------------------------
46
XpdfObject _xpdfGetInfoDict(XpdfDoc doc) {
50
return (XpdfObject)((PDFDoc *)doc)->getDocInfo(obj);
53
XpdfObject _xpdfGetCatalog(XpdfDoc doc) {
57
return (XpdfObject)((PDFDoc *)doc)->getXRef()->getCatalog(obj);
62
HWND _xpdfWin32GetWindow(XpdfDoc doc) {
65
if (!(core = (WinPDFCore *)((PDFDoc *)doc)->getGUIData())) {
68
return core->getDrawFrame();
73
Widget _xpdfXGetWindow(XpdfDoc doc) {
76
if (!(core = (XPDFCore *)((PDFDoc *)doc)->getGUIData())) {
79
return core->getWidget();
84
//------------------------------------------------------------------------
85
// Object access functions.
86
//------------------------------------------------------------------------
88
XpdfBool _xpdfObjIsBool(XpdfObject obj) {
89
return (XpdfBool)((Object *)obj)->isBool();
92
XpdfBool _xpdfObjIsInt(XpdfObject obj) {
93
return (XpdfBool)((Object *)obj)->isInt();
96
XpdfBool _xpdfObjIsReal(XpdfObject obj) {
97
return (XpdfBool)((Object *)obj)->isReal();
100
XpdfBool _xpdfObjIsNumber(XpdfObject obj) {
101
return (XpdfBool)((Object *)obj)->isNum();
104
XpdfBool _xpdfObjIsString(XpdfObject obj) {
105
return (XpdfBool)((Object *)obj)->isString();
108
XpdfBool _xpdfObjIsName(XpdfObject obj) {
109
return (XpdfBool)((Object *)obj)->isName();
112
XpdfBool _xpdfObjIsNull(XpdfObject obj) {
113
return (XpdfBool)((Object *)obj)->isNull();
116
XpdfBool _xpdfObjIsArray(XpdfObject obj) {
117
return (XpdfBool)((Object *)obj)->isArray();
120
XpdfBool _xpdfObjIsDict(XpdfObject obj) {
121
return (XpdfBool)((Object *)obj)->isDict();
124
XpdfBool _xpdfObjIsStream(XpdfObject obj) {
125
return (XpdfBool)((Object *)obj)->isStream();
128
XpdfBool _xpdfObjIsRef(XpdfObject obj) {
129
return (XpdfBool)((Object *)obj)->isRef();
132
XpdfBool _xpdfBoolValue(XpdfObject obj) {
133
return (XpdfBool)((Object *)obj)->getBool();
136
int _xpdfIntValue(XpdfObject obj) {
137
if (!((Object *)obj)->isInt()) {
140
return ((Object *)obj)->getInt();
143
double _xpdfRealValue(XpdfObject obj) {
144
if (!((Object *)obj)->isReal()) {
147
return ((Object *)obj)->getReal();
150
double _xpdfNumberValue(XpdfObject obj) {
151
if (!((Object *)obj)->isNum()) {
154
return ((Object *)obj)->getNum();
157
int _xpdfStringLength(XpdfObject obj) {
158
if (!((Object *)obj)->isString()) {
161
return ((Object *)obj)->getString()->getLength();
164
char *_xpdfStringValue(XpdfObject obj) {
165
if (!((Object *)obj)->isString()) {
168
return ((Object *)obj)->getString()->getCString();
171
char *_xpdfNameValue(XpdfObject obj) {
172
if (!((Object *)obj)->isName()) {
175
return ((Object *)obj)->getName();
178
int _xpdfArrayLength(XpdfObject obj) {
179
if (!((Object *)obj)->isArray()) {
182
return ((Object *)obj)->arrayGetLength();
185
XpdfObject _xpdfArrayGet(XpdfObject obj, int idx) {
189
if (!((Object *)obj)->isArray()) {
190
return (XpdfObject)elem->initNull();
192
return (XpdfObject)((Object *)obj)->arrayGet(idx, elem);
195
XpdfObject _xpdfDictGet(XpdfObject obj, char *key) {
199
if (!((Object *)obj)->isDict()) {
200
return (XpdfObject)elem->initNull();
202
return (XpdfObject)((Object *)obj)->dictLookup(key, elem);
205
void _xpdfFreeObj(XpdfObject obj) {
206
((Object *)obj)->free();
210
//------------------------------------------------------------------------
211
// Memory allocation functions
212
//------------------------------------------------------------------------
214
void *_xpdfMalloc(int size) {
215
return gmalloc(size);
218
void *_xpdfRealloc(void *p, int size) {
219
return grealloc(p, size);
222
void _xpdfFree(void *p) {
226
//------------------------------------------------------------------------
228
//------------------------------------------------------------------------
230
void _xpdfRegisterSecurityHandler(XpdfSecurityHandler *handler) {
231
if (handler->version <= xpdfPluginAPIVersion) {
232
globalParams->addSecurityHandler(handler);
236
//------------------------------------------------------------------------
238
XpdfPluginVecTable xpdfPluginVecTable = {
239
xpdfPluginAPIVersion,
243
&_xpdfWin32GetWindow,
270
&_xpdfRegisterSecurityHandler,
273
#endif // ENABLE_PLUGINS