xref: /AOO41X/main/ucb/source/ucp/odma/odma.h (revision 79aad27f7f29270c03e208e3d687e8e3850af11d)
1 /* odma.h - Definitions, prototypes, etc. for Open Document Managment API
2     (ODMA) version 2.0.
3                OPEN DOCUMENT MANAGEMENT API LICENSE 1.0
4 
5                  ODMA 2.0 SPECIFICATIONS AND SOFTWARE
6                  ------------------------------------
7 
8                Copyright � 1994-1998 AIIM International
9 
10 LICENSE:
11 
12     Redistribution and use in source and binary forms, with or
13     without modifications, are permitted provided that the
14     following conditions are met:
15 
16       * Redistributions of source code must retain the above
17         copyright notice, this list of conditions and the
18         following disclaimer.
19 
20       * Redistributions in binary form must reproduce the
21         above copyright notice, this list of conditions and
22         the following disclaimer in the documentation and/or
23         other materials provided with the distribution.
24 
25       * Neither the name of AIIM International nor the names
26         of its contributors may be used to endorse or promote
27         products derived from this software without specific
28         prior written permission.
29 
30 DISCLAIMER:
31 
32     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
33     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
34     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
35     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
36     DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
37     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
38     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
39     BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
40     SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
41     INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
42     WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
43     NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
44     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
45     SUCH DAMAGE.
46 
47     COPYRIGHT (C) 1994, 1995
48     AIIM International
49     All Right Reserved
50 */
51 
52 #ifndef ODMA_H
53 #define ODMA_H
54 
55 /* Type definitions */
56 typedef LPVOID ODMHANDLE;
57 typedef LPSTR (*ODMSAVEASCALLBACK)(DWORD dwEnvData, LPSTR lpszFormat, LPVOID pInstanceData);
58 typedef int ODMSTATUS;
59 
60 /* Constants */
61 #define ODM_API_VERSION         200     /* Version of the API */
62 
63 #ifdef WIN32
64     #define ODM_DOCID_MAX       255     /* Win32 */
65 
66 #elif defined( _WINDOWS_ ) || defined( _MSDOS )
67     #define ODM_DOCID_MAX       80      /* Windows 3.x */
68 
69 #else
70     #define ODM_DOCID_MAX       255     /* Other platforms */
71 #endif
72 
73 #define ODM_DMSID_MAX           9       /* Max length of a DMS ID including the
74                                         /* terminating NULL character.  */
75 
76 #define ODM_APPID_MAX           16      /* Max length of a application ID including
77                                         /* the terminating NULL character.  */
78 
79 // ODMA 2.0
80 #define ODM_QUERYID_MAX         255     // Max length of a query ID including
81                                                     // the terminating NULL character.
82 
83 #define ODM_FORMAT_MAX          81 // Max length of a format including
84                                                     // the terminating NULL character.
85 
86 // Maximum length of a filename returned by ODMA including the terminating
87 //  NULL character.  Platform dependent.
88 
89 #ifdef WIN32
90     #define ODM_FILENAME_MAX    255     /* Win32 */
91 
92 #elif defined( _WINDOWS_ ) || defined( _MSDOS )
93     #define ODM_FILENAME_MAX    128     /* Windows 3.x */
94 
95 #elif defined( unix ) || defined( _UNIX )
96     #define ODM_FILENAME_MAX    1024    /* Unix */
97 
98 #else
99     #define ODM_FILENAME_MAX    255     /* Other platforms */
100 #endif
101 
102 
103 /* Common format type names */
104 #define ODM_FORMAT_TEXT "Text"
105 #define ODM_FORMAT_RTF  "Rich text format"
106 #define ODM_FORMAT_DCA  "DCA RFT"       /* IBM DCA Rich Format Text */
107 #define ODM_FORMAT_TIFF "Tiff"
108 #define ODM_FORMAT_GIF  "Gif"               /* Compuserve Graphics Interchange Format */
109 #define ODM_FORMAT_BMP  "Windows bitmap"
110 #define ODM_FORMAT_PCX  "PCX"
111 #define ODM_FORMAT_CGM  "CGM"               /* Computer Graphics Metafile */
112 #define ODM_FORMAT_EXE  "Executable file"
113 #define ODM_FORMAT_PCL  "PCL"               /* HP Printer Control Language */
114 #define ODM_FORMAT_PS   "PostScript"
115 
116 
117 /* Error returns */
118 #define ODM_SUCCESS         0       // Success!
119 #define ODM_E_FAIL          1       /* Unspecified failure */
120 #define ODM_E_CANCEL        2       /* Action was cancelled at user's request */
121 #define ODM_E_NODMS         3       /* DMS not registered */
122 #define ODM_E_CANTINIT      4       /* DMS failed to initalize */
123 #define ODM_E_VERSION       5       /* DMS doesn't support the requested
124                                                version of ODMA */
125 #define ODM_E_APPSELECT     6        /* User has indicated that he wants to use
126                                        the application's file selection
127                                        capabilities rather than those of the
128                                        DMS. */
129 #define ODM_E_USERINT       7        /* Requested action cannot be performed
130                                        without user interaction, but silent
131                                        mode was specified. */
132 #define ODM_E_HANDLE        8        /* The DMHANDLE argument was invalid. */
133 #define ODM_E_ACCESS        9        /* User does not have requested access
134                                        rights to specified document. */
135 #define ODM_E_INUSE         10        /* Document is currently in use and cannot
136                                        be accessed in specified mode. */
137 #define ODM_E_DOCID         11        /* Invalid document ID */
138 #define ODM_E_OPENMODE      12        /* The specified action is incompatible
139                                        with the mode in which the document was
140                                        opened. */
141 #define ODM_E_NOOPEN        13        /* The specified document is not open. */
142 #define ODM_E_ITEM          14        /* Invalid item specifier. */
143 #define ODM_E_OTHERAPP      15        /* Selected document was for another app. */
144 #define ODM_E_NOMOREDATA    16      /* No more data is available */
145 #define ODM_E_PARTIALSUCCESS 17     /* */
146 // Additional Error code from ODMA 2.0
147 #define ODM_E_REQARG        18      /* */
148 #define ODM_E_NOSUPPORT     19      /* */
149 #define ODM_E_TRUNCATED     20      /* */
150 #define ODM_E_INVARG  21
151 #define ODM_E_OFFLINE  22       /* */
152 
153 
154 // ODMOpenDoc modes
155 #define ODM_MODIFYMODE      1        /* Open document in a modifiable mode. */
156 #define ODM_VIEWMODE        2        /* Open document in non-modifiable mode. */
157 // ODMA 2.0
158 #define ODM_REFCOPY         3
159 
160 
161 // Actions for ODMActivate
162 #define ODM_NONE            0        /* No specific action is requested.  */
163 #define ODM_DELETE          1        /* Delete the specified document.  */
164 #define ODM_SHOWATTRIBUTES  2        /* Display the specified document's profile
165                                        or attributes. */
166 #define ODM_EDITATTRIBUTES  3        /* Edit the specified document's profile or
167                                        attributes. */
168 #define ODM_VIEWDOC         4        /* Display the specified document in a
169                                        viewer window. */
170 #define ODM_OPENDOC         5        /* Open the specified document in its
171                                        native application.  */
172 // ODMA 2.0
173 #define ODM_NEWDOC          6
174 #define ODM_CHECKOUT        7
175 #define ODM_CANCELCHECKOUT  8
176 #define ODM_CHECKIN         9
177 #define ODM_SHOWHISTORY     10
178 
179 
180 // Item selectors for ODMGetDocInfo and ODMSetDocInfo
181 #define ODM_AUTHOR          1        /* Author of the document. */
182 #define ODM_NAME            2        /* Descriptive name of the document.  */
183 #define ODM_TYPE            3        /* Type of the document.  */
184 #define ODM_TITLETEXT       4        /* Suggested text to display in the
185                                        document window's title bar. */
186 #define ODM_DMS_DEFINED     5        /* DMS defined data. */
187 #define ODM_CONTENTFORMAT   6        /* String describing document's format */
188 // ODMA 2.0
189 #define ODM_ALTERNATE_RENDERINGS    7
190 #define ODM_CHECKEDOUTBY    8
191 #define ODM_CHECKOUTCOMMENT 9
192 #define ODM_CHECKOUTDATE    10
193 #define ODM_CREATEDBY       11
194 #define ODM_CREATEDDATE     12
195 #define ODM_DOCID_LATEST    13
196 #define ODM_DOCID_RELEASED  14
197 #define ODM_DOCVERSION      15
198 #define ODM_DOCVERSION_LATEST   16
199 #define ODM_DOCVERSION_RELEASED 17
200 #define ODM_LOCATION        18
201 #define ODM_KEYWORDS        19
202 #define ODM_LASTCHECKINBY   20
203 #define ODM_LASTCHECKINDATE 21
204 #define ODM_MODIFYDATE      22
205 #define ODM_MODIFYDATE_LATEST   23
206 #define ODM_MODIFYDATE_RELEASED 24
207 #define ODM_OWNER           25
208 #define ODM_SUBJECT         26
209 #define ODM_TITLETEXT_RO    27
210 #define ODM_URL             28
211 
212 
213 // Item selectors for ODMQueryCapability ODMA 2.0
214 #define ODM_QC_ACTIVATE             1
215 #define ODM_QC_CLOSEDOC             2
216 #define ODM_QC_CLOSEDOCEX           3
217 #define ODM_QC_GETALTERNATECONTENT  4
218 #define ODM_QC_GETDMSINFO           5
219 #define ODM_QC_GETDOCINFO           6
220 #define ODM_QC_GETDOCRELATION       7
221 #define ODM_QC_GETLEADMONIKER       8
222 #define ODM_QC_NEWDOC               9
223 #define ODM_QC_OPENDOC              10
224 #define ODM_QC_QUERYCLOSE           11
225 #define ODM_QC_QUERYEXECUTE         12
226 #define ODM_QC_QUERYGETRESULTS      13
227 #define ODM_QC_SAVEAS               14
228 #define ODM_QC_SAVEASEX             15
229 #define ODM_QC_SAVEDOC              16
230 #define ODM_QC_SAVEDOCEX            17
231 #define ODM_QC_SELECTDOC            18
232 #define ODM_QC_SELECTDOCEX          19
233 #define ODM_QC_SETALTERNATECONTENT  20
234 #define ODM_QC_SETDOCEVENT          21
235 #define ODM_QC_SETDOCRELATION       22
236 #define ODM_QC_SETDOCINFO           23
237 
238 
239 // Misc. modes, flags
240 #define ODM_SILENT          16        /* Don't interact with the user while
241                                        fulfilling this request. */
242 //ODMA 2.0
243 #define ODM_VERSION_SAME    1
244 #define ODM_VERSION_MAJOR   2
245 #define ODM_VERSION_MINOR   4
246 #define ODM_VERSION_CHANGED 8
247 #define ODM_ALT_DELETE      32
248 
249 //ODMA 2.0 DMS Info Flags
250 #define ODM_EXT_QUERY       1
251 #define ODM_EXT_WORKFLOW    2
252 
253 // Flags for Query Interface
254 #define ODM_ALL             1       // All DMS's should be searched
255 #define ODM_SPECIFIC        2       // Only specific DMS's should be searched
256 
257 
258 // Function prototypes
259 #ifdef __cplusplus
260 extern "C" {
261 #endif
262 
263 ODMSTATUS WINAPI ODMRegisterApp(ODMHANDLE FAR *pOdmHandle, WORD version,
264     LPSTR lpszAppId, DWORD dwEnvData, LPVOID pReserved);
265 
266 void WINAPI ODMUnRegisterApp(ODMHANDLE odmHandle);
267 
268 ODMSTATUS WINAPI ODMSelectDoc(ODMHANDLE odmHandle, LPSTR lpszDocId,
269     LPDWORD pdwFlags);
270 
271 ODMSTATUS WINAPI ODMOpenDoc(ODMHANDLE odmHandle, DWORD flags,
272     LPSTR lpszDocId, LPSTR lpszDocLocation);
273 
274 ODMSTATUS WINAPI ODMSaveDoc(ODMHANDLE odmHandle, LPSTR lpszDocId,
275     LPSTR lpszNewDocId);
276 
277 ODMSTATUS WINAPI ODMCloseDoc(ODMHANDLE odmHandle, LPSTR lpszDocId,
278     DWORD activeTime, DWORD pagesPrinted, LPVOID sessionData, WORD dataLen);
279 
280 ODMSTATUS WINAPI ODMNewDoc(ODMHANDLE odmHandle, LPSTR lpszDocId,
281     DWORD dwFlags, LPSTR lpszFormat, LPSTR lpszDocLocation);
282 
283 ODMSTATUS WINAPI ODMSaveAs(ODMHANDLE odmHandle, LPSTR lpszDocId,
284     LPSTR lpszNewDocId, LPSTR lpszFormat, ODMSAVEASCALLBACK pcbCallBack,
285     LPVOID pInstanceData);
286 
287 ODMSTATUS WINAPI ODMActivate(ODMHANDLE odmHandle, WORD action,
288     LPSTR lpszDocId);
289 
290 ODMSTATUS WINAPI ODMGetDocInfo(ODMHANDLE odmHandle, LPSTR lpszDocId,
291     WORD item, LPSTR lpszData, WORD dataLen);
292 
293 ODMSTATUS WINAPI ODMSetDocInfo(ODMHANDLE odmHandle, LPSTR lpszDocId,
294     WORD item, LPSTR lpszData);
295 
296 ODMSTATUS WINAPI ODMGetDMSInfo(ODMHANDLE odmHandle, LPSTR lpszDmsId,
297     LPWORD pwVerNo, LPDWORD pdwExtensions);
298 
299 /* Query Enhancements */
300 WORD WINAPI ODMGetDMSCount();
301 
302 WORD WINAPI ODMGetDMSList( LPSTR buffer, WORD buffer_size );
303 
304 ODMSTATUS WINAPI ODMGetDMS( LPCSTR lpszAppId, LPSTR lpszDMSId );
305 
306 ODMSTATUS WINAPI ODMSetDMS( LPCSTR lpszAppId, LPCSTR lpszDMSId );
307 
308 ODMSTATUS WINAPI ODMQueryExecute(ODMHANDLE odmHandle, LPCSTR lpszQuery,
309                                  DWORD flags, LPCSTR lpszDMSList, LPSTR queryId );
310 
311 ODMSTATUS WINAPI ODMQueryGetResults(ODMHANDLE odmHandle, LPCSTR queryId,
312                                     LPSTR lpszDocId, LPSTR lpszDocName, WORD docNameLen,
313                                     WORD *docCount );
314 
315 ODMSTATUS WINAPI ODMQueryClose(ODMHANDLE odmHandle, LPCSTR queryId );
316 
317 /* ODMA 2.0 Enhancements */
318 ODMSTATUS WINAPI ODMCloseDocEx(ODMHANDLE odmHandle, LPSTR lpszDocId,
319                             LPDWORD pdwFlags, DWORD activeTime, DWORD pagesPrinted,
320                             LPVOID sessionData, WORD dataLen);
321 
322 ODMSTATUS WINAPI ODMSaveAsEx(ODMHANDLE odmHandle, LPSTR lpszDocId,
323                             LPSTR lpszNewDocId, LPSTR lpszFormat, ODMSAVEASCALLBACK pcbCallBack,
324                             LPVOID pInstanceData, LPDWORD pdwFlags);
325 
326 ODMSTATUS WINAPI ODMSaveDocEx(ODMHANDLE odmHandle, LPSTR lpszDocId,
327                             LPSTR lpszNewDocId, LPDWORD pdwFlags);
328 
329 ODMSTATUS WINAPI ODMSelectDocEx(ODMHANDLE odmHandle, LPSTR lpszDocIds,
330                             LPWORD pwDocIdsLen, LPWORD pwDocCount, LPDWORD pdwFlags,
331                             LPSTR lpszFormatFilter);
332 
333 ODMSTATUS WINAPI ODMQueryCapability(ODMHANDLE odmHandle, LPCSTR lpszDmsId,
334                             DWORD function, DWORD item, DWORD flags);
335 
336 ODMSTATUS WINAPI ODMSetDocEvent(ODMHANDLE odmHandle, LPSTR lpszDocId,
337                             DWORD flags, DWORD event, LPVOID lpData, DWORD dwDataLen,
338                             LPSTR lpszComment);
339 
340 ODMSTATUS WINAPI ODMGetAlternateContent(ODMHANDLE odmHandle, LPSTR lpszDocId,
341                             LPDWORD pdwFlags, LPSTR lpszFormat, LPSTR lpszDocLocation);
342 
343 ODMSTATUS WINAPI ODMSetAlternateContent(ODMHANDLE odmHandle, LPSTR lpszDocId,
344                             LPDWORD pdwFlags, LPSTR lpszFormat, LPSTR lpszDocLocation);
345 
346 ODMSTATUS WINAPI ODMGetDocRelation(ODMHANDLE odmHandle, LPSTR lpszDocId,
347                             LPDWORD pdwFlags, LPSTR lpszLinkedId, LPSTR lpszFormat,
348                             LPSTR lpszPreviousId);
349 
350 ODMSTATUS WINAPI ODMSetDocRelation(ODMHANDLE odmHandle, LPSTR lpszDocId,
351                             LPDWORD pdwFlags, LPSTR lpszLinkedId, LPSTR lpszFormat,
352                             LPSTR lpszPreviousId);
353 
354 #ifdef __cplusplus
355 }
356 #endif
357 
358 #endif
359