]> git.saurik.com Git - wxWidgets.git/blob - utils/nplugin/src/npapi.h
fix for stupid segfault
[wxWidgets.git] / utils / nplugin / src / npapi.h
1 /*
2 * npapi.h $Revision$
3 * Netscape client plug-in API spec
4 */
5
6 #ifndef _NPAPI_H_
7 #define _NPAPI_H_
8
9
10 /* XXX this needs to get out of here */
11 #if defined(__MWERKS__)
12 #ifndef XP_MAC
13 #define XP_MAC
14 #endif
15 #endif
16
17
18 /*
19 * Version constants
20 */
21
22 #define NP_VERSION_MAJOR 0
23 #define NP_VERSION_MINOR 6
24
25
26
27 /*
28 * Basic types
29 */
30
31 #ifndef _UINT16
32 typedef unsigned short uint16;
33 #endif
34 #ifndef _UINT32
35 typedef unsigned long uint32;
36 #endif
37 #ifndef _INT16
38 typedef short int16;
39 #endif
40 #ifndef _INT32
41 typedef long int32;
42 #endif
43
44 #ifndef FALSE
45 #define FALSE (0)
46 #endif
47 #ifndef TRUE
48 #define TRUE (1)
49 #endif
50 #ifndef NULL
51 #define NULL (0L)
52 #endif
53
54 typedef unsigned char NPBool;
55 typedef void* NPEvent;
56 typedef int16 NPError;
57 typedef char* NPMIMEType;
58
59
60 /*
61 * NPP is a plug-in's opaque instance handle
62 */
63 typedef struct _NPP
64 {
65 void* pdata; /* plug-in private data */
66 void* ndata; /* netscape private data */
67 } NPP_t;
68
69 typedef NPP_t* NPP;
70
71
72
73 typedef struct _NPStream
74 {
75 void* pdata; /* plug-in private data */
76 void* ndata; /* netscape private data */
77 const char* url;
78 uint32 end;
79 uint32 lastmodified;
80 } NPStream;
81
82 typedef struct _NPByteRange
83 {
84 int32 offset; /* negative offset means from the end */
85 uint32 length;
86 struct _NPByteRange* next;
87 } NPByteRange;
88
89
90 typedef struct _NPSavedData
91 {
92 int32 len;
93 void* buf;
94 } NPSavedData;
95
96
97
98 typedef struct _NPRect
99 {
100 uint16 top;
101 uint16 left;
102 uint16 bottom;
103 uint16 right;
104 } NPRect;
105
106 typedef struct _NPWindow
107 {
108 void* window; /* platform specific window handle */
109 uint32 x; /* position of top left corner relative to a netscape page */
110 uint32 y;
111 uint32 width; /* maximum window size */
112 uint32 height;
113 NPRect clipRect; /* clipping rectangle in port coordinates */
114 } NPWindow;
115
116
117
118 typedef struct _NPFullPrint
119 {
120 NPBool pluginPrinted; /* Set TRUE if plugin handled fullscreen printing */
121 NPBool printOne; /* TRUE if plugin should print one copy to default printer */
122 void* platformPrint; /* Platform-specific printing info */
123 } NPFullPrint;
124
125 typedef struct _NPEmbedPrint
126 {
127 NPWindow window;
128 void* platformPrint; /* Platform-specific printing info */
129 } NPEmbedPrint;
130
131 typedef struct _NPPrint
132 {
133 uint16 mode; /* NP_FULL or NP_EMBED */
134 union
135 {
136 NPFullPrint fullPrint; /* if mode is NP_FULL */
137 NPEmbedPrint embedPrint; /* if mode is NP_EMBED */
138 } print;
139 } NPPrint;
140
141
142
143
144 #ifdef XP_MAC
145
146 /*
147 * Mac-specific structures and definitions.
148 */
149
150 #include <Quickdraw.h>
151 #include <Events.h>
152
153 typedef struct NP_Port
154 {
155 CGrafPtr port; /* Grafport */
156 int32 portx; /* position inside the topmost window */
157 int32 porty;
158 } NP_Port;
159
160 /*
161 * Non-standard event types that can be passed to HandleEvent
162 */
163 #define getFocusEvent (osEvt + 16)
164 #define loseFocusEvent (osEvt + 17)
165 #define adjustCursorEvent (osEvt + 18)
166
167 #endif /* XP_MAC */
168
169
170
171
172 #define NP_EMBED 1
173 #define NP_FULL 2
174 #define NP_BACKGROUND 3
175
176 #define NP_NORMAL 1
177 #define NP_SEEK 2
178 #define NP_ASFILE 3
179
180 #define NP_MAXREADY (((unsigned)(~0)<<1)>>1)
181
182
183 /*
184 * Error and reason code definitions.
185 */
186
187 #define NP_NOERR 0
188 #define NP_EINVAL 1
189 #define NP_EABORT 2
190
191 #define NPERR_BASE 0
192 #define NPERR_NO_ERROR (NPERR_BASE + 0)
193 #define NPERR_GENERIC_ERROR (NPERR_BASE + 1)
194 #define NPERR_INVALID_INSTANCE_ERROR (NPERR_BASE + 2)
195 #define NPERR_INVALID_FUNCTABLE_ERROR (NPERR_BASE + 3)
196 #define NPERR_MODULE_LOAD_FAILED_ERROR (NPERR_BASE + 4)
197 #define NPERR_OUT_OF_MEMORY_ERROR (NPERR_BASE + 5)
198 #define NPERR_INVALID_PLUGIN_ERROR (NPERR_BASE + 6)
199 #define NPERR_INVALID_PLUGIN_DIR_ERROR (NPERR_BASE + 7)
200 #define NPERR_INCOMPATIBLE_VERSION_ERROR (NPERR_BASE + 8)
201
202 #define NPRES_BASE 0
203 #define NPRES_NETWORK_ERR (NPRES_BASE + 0)
204 #define NPRES_USER_BREAK (NPRES_BASE + 1)
205 #define NPRES_DONE (NPRES_BASE + 3)
206
207
208
209 /*
210 * Function prototypes.
211 * Functions beginning with 'NPP' are functions provided by the plugin that Netscape will call.
212 * Functions beginning with 'NPN' are functions provided by Netscape that the plugin will call.
213 */
214
215 #if defined(_WINDOWS) && !defined(__WIN32__)
216 #define NP_LOADDS _loadds
217 #else
218 #define NP_LOADDS
219 #endif
220
221 #ifdef __cplusplus
222 extern "C" {
223 #endif
224
225 NPError NPP_Initialize(void);
226 void NPP_Shutdown(void);
227 NPError NP_LOADDS NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved);
228 NPError NP_LOADDS NPP_Destroy(NPP instance, NPSavedData** save);
229 NPError NP_LOADDS NPP_SetWindow(NPP instance, NPWindow* window);
230 NPError NP_LOADDS NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype);
231 NPError NP_LOADDS NPP_DestroyStream(NPP instance, NPStream* stream, NPError reason);
232 int32 NP_LOADDS NPP_WriteReady(NPP instance, NPStream* stream);
233 int32 NP_LOADDS NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer);
234 void NP_LOADDS NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname);
235 void NP_LOADDS NPP_Print(NPP instance, NPPrint* platformPrint);
236 int16 NPP_HandleEvent(NPP instance, void* event);
237
238 void NPN_Version(int* plugin_major, int* plugin_minor, int* netscape_major, int* netscape_minor);
239 NPError NPN_GetURL(NPP instance, const char* url, const char* window);
240 NPError NPN_PostURL(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file);
241 NPError NPN_RequestRead(NPStream* stream, NPByteRange* rangeList);
242 NPError NPN_NewStream(NPP instance, NPMIMEType type, NPStream* stream);
243 int32 NPN_Write(NPP instance, NPStream* stream, int32 len, void* buffer);
244 NPError NPN_DestroyStream(NPP instance, NPStream* stream, NPError reason);
245 void NPN_Status(NPP instance, const char* message);
246 const char* NPN_UserAgent(NPP instance);
247 void* NPN_MemAlloc(uint32 size);
248 void NPN_MemFree(void* ptr);
249 uint32 NPN_MemFlush(uint32 size);
250 void NPN_ReloadPlugins(NPBool reloadPages);
251
252 #ifdef __cplusplus
253 } /* end extern "C" */
254 #endif
255
256
257 #endif /* _NPAPI_H_ */
258