1 //========================================================================
5 // Copyright 2004 Glyph & Cog, LLC
7 //========================================================================
14 #include "GlobalParams.h"
18 #include "WinPDFCore.h"
22 #include "XpdfPluginAPI.h"
24 //------------------------------------------------------------------------
26 //~ This should use a pool of Objects; change xpdfFreeObj to match.
27 static Object
*allocObj() {
28 return (Object
*)gmalloc(sizeof(Object
));
31 //------------------------------------------------------------------------
32 // Document access functions
33 //------------------------------------------------------------------------
35 XpdfObject
_xpdfGetInfoDict(XpdfDoc doc
) {
39 return (XpdfObject
)((PDFDoc
*)doc
)->getDocInfo(obj
);
42 XpdfObject
_xpdfGetCatalog(XpdfDoc doc
) {
46 return (XpdfObject
)((PDFDoc
*)doc
)->getXRef()->getCatalog(obj
);
51 HWND
_xpdfWin32GetWindow(XpdfDoc doc
) {
54 if (!(core
= (WinPDFCore
*)((PDFDoc
*)doc
)->getGUIData())) {
57 return core
->getDrawFrame();
62 Widget
_xpdfXGetWindow(XpdfDoc doc
) {
65 if (!(core
= (XPDFCore
*)((PDFDoc
*)doc
)->getGUIData())) {
68 return core
->getWidget();
73 //------------------------------------------------------------------------
74 // Object access functions.
75 //------------------------------------------------------------------------
77 XpdfBool
_xpdfObjIsBool(XpdfObject obj
) {
78 return (XpdfBool
)((Object
*)obj
)->isBool();
81 XpdfBool
_xpdfObjIsInt(XpdfObject obj
) {
82 return (XpdfBool
)((Object
*)obj
)->isInt();
85 XpdfBool
_xpdfObjIsReal(XpdfObject obj
) {
86 return (XpdfBool
)((Object
*)obj
)->isReal();
89 XpdfBool
_xpdfObjIsNumber(XpdfObject obj
) {
90 return (XpdfBool
)((Object
*)obj
)->isNum();
93 XpdfBool
_xpdfObjIsString(XpdfObject obj
) {
94 return (XpdfBool
)((Object
*)obj
)->isString();
97 XpdfBool
_xpdfObjIsName(XpdfObject obj
) {
98 return (XpdfBool
)((Object
*)obj
)->isName();
101 XpdfBool
_xpdfObjIsNull(XpdfObject obj
) {
102 return (XpdfBool
)((Object
*)obj
)->isNull();
105 XpdfBool
_xpdfObjIsArray(XpdfObject obj
) {
106 return (XpdfBool
)((Object
*)obj
)->isArray();
109 XpdfBool
_xpdfObjIsDict(XpdfObject obj
) {
110 return (XpdfBool
)((Object
*)obj
)->isDict();
113 XpdfBool
_xpdfObjIsStream(XpdfObject obj
) {
114 return (XpdfBool
)((Object
*)obj
)->isStream();
117 XpdfBool
_xpdfObjIsRef(XpdfObject obj
) {
118 return (XpdfBool
)((Object
*)obj
)->isRef();
121 XpdfBool
_xpdfBoolValue(XpdfObject obj
) {
122 return (XpdfBool
)((Object
*)obj
)->getBool();
125 int _xpdfIntValue(XpdfObject obj
) {
126 if (!((Object
*)obj
)->isInt()) {
129 return ((Object
*)obj
)->getInt();
132 double _xpdfRealValue(XpdfObject obj
) {
133 if (!((Object
*)obj
)->isReal()) {
136 return ((Object
*)obj
)->getReal();
139 double _xpdfNumberValue(XpdfObject obj
) {
140 if (!((Object
*)obj
)->isNum()) {
143 return ((Object
*)obj
)->getNum();
146 int _xpdfStringLength(XpdfObject obj
) {
147 if (!((Object
*)obj
)->isString()) {
150 return ((Object
*)obj
)->getString()->getLength();
153 char *_xpdfStringValue(XpdfObject obj
) {
154 if (!((Object
*)obj
)->isString()) {
157 return ((Object
*)obj
)->getString()->getCString();
160 char *_xpdfNameValue(XpdfObject obj
) {
161 if (!((Object
*)obj
)->isName()) {
164 return ((Object
*)obj
)->getName();
167 int _xpdfArrayLength(XpdfObject obj
) {
168 if (!((Object
*)obj
)->isArray()) {
171 return ((Object
*)obj
)->arrayGetLength();
174 XpdfObject
_xpdfArrayGet(XpdfObject obj
, int idx
) {
178 if (!((Object
*)obj
)->isArray()) {
179 return (XpdfObject
)elem
->initNull();
181 return (XpdfObject
)((Object
*)obj
)->arrayGet(idx
, elem
);
184 XpdfObject
_xpdfDictGet(XpdfObject obj
, char *key
) {
188 if (!((Object
*)obj
)->isDict()) {
189 return (XpdfObject
)elem
->initNull();
191 return (XpdfObject
)((Object
*)obj
)->dictLookup(key
, elem
);
194 void _xpdfFreeObj(XpdfObject obj
) {
195 ((Object
*)obj
)->free();
199 //------------------------------------------------------------------------
200 // Memory allocation functions
201 //------------------------------------------------------------------------
203 void *_xpdfMalloc(int size
) {
204 return gmalloc(size
);
207 void *_xpdfRealloc(void *p
, int size
) {
208 return grealloc(p
, size
);
211 void _xpdfFree(void *p
) {
215 //------------------------------------------------------------------------
217 //------------------------------------------------------------------------
219 void _xpdfRegisterSecurityHandler(XpdfSecurityHandler
*handler
) {
220 if (handler
->version
<= xpdfPluginAPIVersion
) {
221 globalParams
->addSecurityHandler(handler
);
225 //------------------------------------------------------------------------
227 XpdfPluginVecTable xpdfPluginVecTable
= {
228 xpdfPluginAPIVersion
,
232 &_xpdfWin32GetWindow
,
259 &_xpdfRegisterSecurityHandler
,
262 #endif // ENABLE_PLUGINS