1 //========================================================================
5 // Copyright 2004 Glyph & Cog, LLC
7 //========================================================================
9 //========================================================================
11 // Modified under the Poppler project - http://poppler.freedesktop.org
13 // All changes made under the Poppler project to this file are licensed
14 // under GPL version 2 or later
16 // Copyright (C) 2009 Kovid Goyal <kovid@kovidgoyal.net>
17 // Copyright (C) 2012 Albert Astals Cid <aacid@kde.org>
19 // To see a description of the changes please see the Changelog file that
20 // came with your tarball or type make ChangeLog if you are building from git
22 //========================================================================
29 #include "GlobalParams.h"
32 #include "XpdfPluginAPI.h"
34 //------------------------------------------------------------------------
36 //~ This should use a pool of Objects; change xpdfFreeObj to match.
37 static Object
*allocObj() {
38 return (Object
*)gmalloc(sizeof(Object
));
41 //------------------------------------------------------------------------
42 // Document access functions
43 //------------------------------------------------------------------------
45 XpdfObject
_xpdfGetInfoDict(XpdfDoc doc
) {
49 return (XpdfObject
)((PDFDoc
*)doc
)->getDocInfo(obj
);
52 XpdfObject
_xpdfGetCatalog(XpdfDoc doc
) {
56 return (XpdfObject
)((PDFDoc
*)doc
)->getXRef()->getCatalog(obj
);
59 //------------------------------------------------------------------------
60 // Object access functions.
61 //------------------------------------------------------------------------
63 XpdfBool
_xpdfObjIsBool(XpdfObject obj
) {
64 return (XpdfBool
)((Object
*)obj
)->isBool();
67 XpdfBool
_xpdfObjIsInt(XpdfObject obj
) {
68 return (XpdfBool
)((Object
*)obj
)->isInt();
71 XpdfBool
_xpdfObjIsReal(XpdfObject obj
) {
72 return (XpdfBool
)((Object
*)obj
)->isReal();
75 XpdfBool
_xpdfObjIsNumber(XpdfObject obj
) {
76 return (XpdfBool
)((Object
*)obj
)->isNum();
79 XpdfBool
_xpdfObjIsString(XpdfObject obj
) {
80 return (XpdfBool
)((Object
*)obj
)->isString();
83 XpdfBool
_xpdfObjIsName(XpdfObject obj
) {
84 return (XpdfBool
)((Object
*)obj
)->isName();
87 XpdfBool
_xpdfObjIsNull(XpdfObject obj
) {
88 return (XpdfBool
)((Object
*)obj
)->isNull();
91 XpdfBool
_xpdfObjIsArray(XpdfObject obj
) {
92 return (XpdfBool
)((Object
*)obj
)->isArray();
95 XpdfBool
_xpdfObjIsDict(XpdfObject obj
) {
96 return (XpdfBool
)((Object
*)obj
)->isDict();
99 XpdfBool
_xpdfObjIsStream(XpdfObject obj
) {
100 return (XpdfBool
)((Object
*)obj
)->isStream();
103 XpdfBool
_xpdfObjIsRef(XpdfObject obj
) {
104 return (XpdfBool
)((Object
*)obj
)->isRef();
107 XpdfBool
_xpdfBoolValue(XpdfObject obj
) {
108 return (XpdfBool
)((Object
*)obj
)->getBool();
111 int _xpdfIntValue(XpdfObject obj
) {
112 if (!((Object
*)obj
)->isInt()) {
115 return ((Object
*)obj
)->getInt();
118 double _xpdfRealValue(XpdfObject obj
) {
119 if (!((Object
*)obj
)->isReal()) {
122 return ((Object
*)obj
)->getReal();
125 double _xpdfNumberValue(XpdfObject obj
) {
126 if (!((Object
*)obj
)->isNum()) {
129 return ((Object
*)obj
)->getNum();
132 int _xpdfStringLength(XpdfObject obj
) {
133 if (!((Object
*)obj
)->isString()) {
136 return ((Object
*)obj
)->getString()->getLength();
139 char *_xpdfStringValue(XpdfObject obj
) {
140 if (!((Object
*)obj
)->isString()) {
143 return ((Object
*)obj
)->getString()->getCString();
146 char *_xpdfNameValue(XpdfObject obj
) {
147 if (!((Object
*)obj
)->isName()) {
150 return ((Object
*)obj
)->getName();
153 int _xpdfArrayLength(XpdfObject obj
) {
154 if (!((Object
*)obj
)->isArray()) {
157 return ((Object
*)obj
)->arrayGetLength();
160 XpdfObject
_xpdfArrayGet(XpdfObject obj
, int idx
) {
164 if (!((Object
*)obj
)->isArray()) {
165 return (XpdfObject
)elem
->initNull();
167 return (XpdfObject
)((Object
*)obj
)->arrayGet(idx
, elem
);
170 XpdfObject
_xpdfDictGet(XpdfObject obj
, char *key
) {
174 if (!((Object
*)obj
)->isDict()) {
175 return (XpdfObject
)elem
->initNull();
177 return (XpdfObject
)((Object
*)obj
)->dictLookup(key
, elem
);
180 void _xpdfFreeObj(XpdfObject obj
) {
181 ((Object
*)obj
)->free();
185 //------------------------------------------------------------------------
186 // Memory allocation functions
187 //------------------------------------------------------------------------
189 void *_xpdfMalloc(int size
) {
190 return gmalloc(size
);
193 void *_xpdfRealloc(void *p
, int size
) {
194 return grealloc(p
, size
);
197 void _xpdfFree(void *p
) {
201 //------------------------------------------------------------------------
203 //------------------------------------------------------------------------
205 void _xpdfRegisterSecurityHandler(XpdfSecurityHandler
*handler
) {
206 if (handler
->version
<= xpdfPluginAPIVersion
) {
207 globalParams
->addSecurityHandler(handler
);
211 //------------------------------------------------------------------------
213 XpdfPluginVecTable xpdfPluginVecTable
= {
214 xpdfPluginAPIVersion
,
240 &_xpdfRegisterSecurityHandler
,
243 #endif // ENABLE_PLUGINS