home *** CD-ROM | disk | FTP | other *** search
/ Sigcat Grips 1991 / GRIPS_2.cdr / dos / pcshow / src / msc5_1 / df.h next >
Encoding:
C/C++ Source or Header  |  1990-01-06  |  21.4 KB  |  617 lines

  1. /*****************************************************************************
  2. *                              NCSA HDF version 2.37
  3. *                                June 7, 1989
  4. *
  5. * NCSA HDF Version 2.37 source code and documentation are in the public domain.
  6. * Specifically, we give to the public domain all rights for future licensing
  7. * of the source code, all resale rights, and all publishing rights.
  8. * We ask, but do not require, that the following message be included in all
  9. * derived works:
  10. * Portions developed at the National Center for Supercomputing Applications at
  11. * the University of Illinois at Urbana-Champaign.
  12. * THE UNIVERSITY OF ILLINOIS GIVES NO WARRANTY, EXPRESSED OR IMPLIED, FOR THE
  13. * SOFTWARE AND/OR DOCUMENTATION PROVIDED, INCLUDING, WITHOUT LIMITATION,
  14. * WARRANTY OF MERCHANTABILITY AND WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE
  15. *****************************************************************************/
  16.  
  17. /*------------------------------------------------------------------------------
  18.  * File:     df.h
  19.  * Purpose:    header file for HDF routines
  20.  * Invokes:    dfi.h
  21.  * Contents: 
  22.  *    Structure definitions: DFddh, DFdd, DFdesc, DFdle, DF, DFdi, DFdata
  23.  *    Procedure type definitions
  24.  *    Global variables
  25.  *    Tag definitions
  26.  *  Error return codes
  27.  *    Logical constants
  28.  * Remarks: This file is included with user programs
  29.  *            Since it includes stdio.h etc., do not include these after df.h
  30.  *----------------------------------------------------------------------------*/
  31.  
  32.  
  33. #ifndef DFTG_NULL                /* avoid re-inclusion */
  34.  
  35. /* include DF (internal) header information */
  36. #ifdef QAK
  37. #include "dfi.h"
  38. #else
  39. /*****************************************************************************
  40. *                              NCSA HDF version 2.37
  41. *                                June 7, 1989
  42. *
  43. * NCSA HDF Version 2.37 source code and documentation are in the public domain.
  44. * Specifically, we give to the public domain all rights for future licensing
  45. * of the source code, all resale rights, and all publishing rights.
  46. * We ask, but do not require, that the following message be included in all
  47. * derived works:
  48. * Portions developed at the National Center for Supercomputing Applications at
  49. * the University of Illinois at Urbana-Champaign.
  50. * THE UNIVERSITY OF ILLINOIS GIVES NO WARRANTY, EXPRESSED OR IMPLIED, FOR THE
  51. * SOFTWARE AND/OR DOCUMENTATION PROVIDED, INCLUDING, WITHOUT LIMITATION,
  52. * WARRANTY OF MERCHANTABILITY AND WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE
  53. *****************************************************************************/
  54.  
  55. /*------------------------------------------------------------------------------
  56.  * File:     dfi.h
  57.  * Purpose:    HDF internal header file
  58.  * Invokes:    stdio.h, sys/file.h
  59.  * Contents: 
  60.  *    Compilation parameters
  61.  *    Machine-dependent definitions
  62.  *    Flexibility definitions: i/o buffering, dynamic memory, structure i/o
  63.  *    Size parameters
  64.  * Remarks: To port to a new system, only dfi.h and Makefile need be modified.
  65.  *            This file is included with user programs, but users do not see it.
  66.  *----------------------------------------------------------------------------*/
  67.  
  68.  
  69. #ifndef DF_MAGICK                    /* avoid re-inclusion */
  70.  
  71. #define DF_MAGICK        "\016\003\023\001"        /* ^N^C^S^A */
  72.  
  73. #ifndef FILE
  74. #include <stdio.h>
  75. #endif
  76.  
  77.  
  78. /*--------------------------------------------------------------------------*/
  79. /*            Compilation Parameters for Flexibility and Portability             */
  80.  
  81.     /* modify this line to allow for machine dependencies */
  82. #define PC
  83.  
  84.     /* modify this line for buffered/unbuffered i/o */
  85. #define DF_BUFFIO
  86.  
  87.     /* modify this line for dynamic/static memory allocation */
  88. #define DF_DYNAMIC
  89.  
  90.     /* modify this line if structures cannot be read/written as is */
  91. #define DF_STRUCTOK
  92.  
  93.  
  94. /*--------------------------------------------------------------------------*/
  95. /*                                MT/NT constants                                */
  96. /*        four MT nibbles represent int, float, double, uchar                 */
  97. #define DFMT_SUN        0x1111
  98. #define DFMT_ALLIANT    0x1111
  99. #define DFMT_IRIS4        0x1111
  100. #define DFMT_UNICOS        0x3331
  101. #define DFMT_CTSS        0x3331
  102. #define DFMT_VAX        0x2221
  103. #define DFMT_PC            0x4144                /* note byte swapping */
  104. #define DFMT_MAC        0x1111
  105.  
  106. #define DFNT_VERSION    1                    /* current version of NT info */
  107.  
  108.     /* type info codes */
  109. #define DFNT_UINT        1
  110. #define    DFNT_INT        2
  111. #define DFNT_UCHAR        3
  112. #define DFNT_CHAR        4
  113. #define DFNT_FLOAT        5
  114. #define DFNT_DOUBLE        6
  115.  
  116.     /* class info codes for int */
  117. #define DFNTI_MBO        1                    /* Motorola byte order 2's compl */
  118. #define DFNTI_VBO        2                    /* Vax byte order 2's compl */
  119. #define DFNTI_IBO        4                    /* Intel byte order 2's compl */
  120.  
  121.     /* class info codes for float */
  122. #define DFNTF_IEEE        1                    /* IEEE format */
  123. #define DFNTF_VAX        2                    /* Vax format */
  124. #define DFNTF_CRAY        3                    /* Cray format */
  125. #define DFNTF_PC        4                    /* PC floats - flipped IEEE */
  126.  
  127.     /* class info codes for char */
  128. #define DFNTC_BYTE        0                    /* bitwise/numeric field */
  129. #define DFNTC_ASCII        1                    /* ASCII */
  130. #define DFNTC_EBCDIC    5                    /* EBCDIC */
  131.  
  132. /*--------------------------------------------------------------------------*/
  133. /*                        Machine dependencies                                */
  134. #ifdef PC
  135. #ifndef O_RDONLY
  136. #include <fcntl.h>
  137. #define L_INCR    1
  138. #endif
  139. #define int16 int
  140. #define uint16 unsigned int
  141. #define int32 long int
  142. #define float32 double
  143. #define DFmovmem(from, to, len)    memcpy(to, from, len)
  144. #undef DF_STRUCTOK                    /* structure writing will not work on PC */
  145. #undef DF_BUFFIO                    /* unbuffered i/o is faster */
  146. long longswap();                    /* provided elsewhere */
  147.  
  148.     /* in the next 3 lines, p is recast so right number of bytes passed */
  149.     /* ### Note that all calls modify p.  Need to use temporary ptr */
  150. #define UINT16READ(p, x)    { x = intswap(*(int *)p); p+=2; }
  151. #define INT16READ(p, x)        { x = intswap(*(int *)p); p+=2; }
  152. #define INT32READ(p, x)        { x = longswap(*(long *)p); p+=4; }
  153. #define UINT16WRITE(p, x)    { *(int *)p = intswap(x); p+=2; }
  154. #define INT16WRITE(p, x)    { *(int *)p = intswap(x); p+=2; }
  155. #define INT32WRITE(p, x)    { *(long *)p = longswap(x); p+=4; }
  156. #define DF_CREAT(name, prot) creat(name, prot)
  157. #define DF_MT    DFMT_PC
  158. #endif
  159.  
  160.  
  161. #ifdef UNICOS
  162. #ifndef O_RDONLY
  163. #include <sys/fcntl.h>                /* for unbuffered i/o stuff */
  164. #define L_INCR    1
  165. #endif
  166. #define int16 int
  167. #define uint16 int
  168. #define int32 int
  169. #define float32 float
  170. #define DFmovmem(from, to, len)    memcpy(to, from, len)
  171. #undef DF_STRUCTOK            /* cannot directly read/write structures */
  172. #define DF_CAPFNAMES        /* All caps names for Fortran */
  173. #define UINT16READ(p, x)    { x = ((*p++) & 255)<<8; x |= (*p++) & 255; }
  174. #define INT16READ(p, x)        { x = (*p++)<<8; x |= (*p++) & 255; }
  175. #define INT32READ(p, x)        { x = (*p++)<<24; x|=((*p++) & 255)<<16;    \
  176.                                 x|=((*p++) & 255)<<8; x|=(*p++) & 255; }
  177. #define UINT16WRITE(p, x)    { *p++ = (x>>8) & 255; *p++ = x & 255; }
  178. #define INT16WRITE(p, x)    { *p++ = (x>>8) & 255; *p++ = x & 255; }
  179. #define INT32WRITE(p, x)    { *p++ = (x>>24) & 255; *p++ = (x>>16) & 255;    \
  180.                                 *p++ = (x>>8) & 255; *p++ = x & 255; }
  181. #define DF_CREAT(name, prot) creat(name, prot)
  182. #define DF_MT    DFMT_UNICOS
  183. #endif
  184.  
  185.  
  186. #ifdef SUN
  187. #if ! defined mc68010 && ! defined mc68020 && ! defined mc68030
  188. #undef DF_STRUCTOK
  189. #endif
  190. #include <sys/file.h>                /* for unbuffered i/o stuff */
  191. #define int16 short
  192. #define uint16 unsigned short
  193. #define int32 long
  194. #define float32 float
  195. #define DFmovmem(from, to, len)    memcpy(to, from, len)
  196. #ifndef DF_STRUCTOK
  197. #define UINT16READ(p, x) { x = ((*p++) & 255)<<8; x |= (*p++) & 255; }
  198. #define INT16READ(p, x) { x = (*p++)<<8; x |= (*p++) & 255; }
  199. #define INT32READ(p, x) { x = (*p++)<<24; x|=((*p++) & 255)<<16;    \
  200.             x|=((*p++) & 255)<<8; x|=(*p++) & 255; }
  201. #define UINT16WRITE(p, x) { *p++ = (x>>8) & 255; *p++ = x & 255; }
  202. #define INT16WRITE(p, x) { *p++ = (x>>8) & 255; *p++ = x & 255; }
  203. #define INT32WRITE(p, x) { *p++ = (x>>24) & 255; *p++ = (x>>16) & 255;    \
  204.             *p++ = (x>>8) & 255; *p++ = x & 255; }
  205. #endif
  206. #define DF_CREAT(name, prot) creat(name, prot)
  207. #define DF_MT    DFMT_SUN
  208. #endif
  209.  
  210.  
  211. #ifdef ALLIANT
  212. #include <sys/file.h>                /* for unbuffered i/o stuff */
  213. #define int16 short
  214. #define uint16 unsigned short
  215. #define int32 long
  216. #define float32 float
  217. #define DFmovmem(from, to, len)    bcopy(from, to, len)
  218. #ifndef DF_STRUCTOK
  219. #define UINT16READ(p, x) { DFmovmem(p, &x, 2); p+=2; }
  220. #define INT16READ(p, x) { DFmovmem(p, &x, 2); p+=2; }
  221. #define INT32READ(p, x) { DFmovmem(p, &x, 4); p+=4; }
  222. #define UINT16WRITE(p, x) { DFmovmem(&x, p, 2); p+=2; }
  223. #define INT16WRITE(p, x) { DFmovmem(&x, p, 2); p+=2; }
  224. #define INT32WRITE(p, x) { DFmovmem(&x, p, 4); p+=4; }
  225. #endif
  226. #define DF_CREAT(name, prot) creat(name, prot)
  227. #define DF_MT    DFMT_ALLIANT
  228. #endif
  229.  
  230.  
  231. #ifdef MAC
  232. #include <memory.h>             /* malloc stuff for MPW 3.0 */
  233. #include <fcntl.h>                /* unbuffered IO stuff for MPW 3.0 */
  234. #ifdef THINK_C
  235. #include <unix.h>
  236. #else
  237. #include <Files.h>                /* for unbuffered i/o stuff */
  238. #endif
  239. #define int16 short
  240. #define uint16 unsigned short
  241. #define int32 long
  242. #define float32 float
  243. #define DFmovmem(from, to, len)    memcpy(to, from, len)
  244.                 /* LightSpeed C does not have memcpy */
  245. #ifdef THINK_C
  246. #define DFmovmem(from, to, len)    DFImemcopy(from, to, len)
  247. #endif
  248. #define malloc(x)   NewPtr((long)   (x))    /* don't use malloc on the Mac */
  249. #define free(x)     DisposPtr((Ptr) (x))    /* don't use free on the Nac   */
  250. #ifndef DF_STRUCTOK
  251. #define UINT16READ(p, x) { DFmovmem(p, &x, 2); p+=2; }
  252. #define INT16READ(p, x) { DFmovmem(p, &x, 2); p+=2; }
  253. #define INT32READ(p, x) { DFmovmem(p, &x, 4); p+=4; }
  254. #define UINT16WRITE(p, x) { DFmovmem(&x, p, 2); p+=2; }
  255. #define INT16WRITE(p, x) { DFmovmem(&x, p, 2); p+=2; }
  256. #define INT32WRITE(p, x) { DFmovmem(&x, p, 4); p+=4; }
  257. #endif
  258. #define DF_CREAT(name, prot) open(name, O_WRONLY|O_TRUNC|O_CREAT)
  259. #define DF_MT    DFMT_MAC
  260. #endif
  261.  
  262. #ifdef VMS
  263. #undef DF_BUFFIO            /* use only unbuff i/o - buff i/o doesn't work! */
  264. #include "dfivms.h"
  265. #undef DF_STRUCTOK 
  266. #include <file.h>                /* for unbuffered i/o stuff */
  267. #define int16 short
  268. #define uint16 unsigned short
  269. #define int32 long
  270. #define float32 float
  271. #define DFmovmem(from, to, len)    memcpy(to, from, len)
  272. #define DF_CAPFNAMES        /* All caps names for Fortran */
  273. #ifndef DF_STRUCTOK
  274. #define UINT16READ(p, x) { x = ((*p++) & 255)<<8; x |= (*p++) & 255; }
  275. #define INT16READ(p, x) { x = (*p++)<<8; x |= (*p++) & 255; }
  276. #define INT32READ(p, x) { x = (*p++)<<24; x|=((*p++) & 255)<<16;    \
  277.             x|=((*p++) & 255)<<8; x|=(*p++) & 255; }
  278. #define UINT16WRITE(p, x) { *p++ = (x>>8) & 255; *p++ = x & 255; }
  279. #define INT16WRITE(p, x) { *p++ = (x>>8) & 255; *p++ = x & 255; }
  280. #define INT32WRITE(p, x) { *p++ = (x>>24) & 255; *p++ = (x>>16) & 255;    \
  281.             *p++ = (x>>8) & 255; *p++ = x & 255; }
  282. #endif
  283. #define DF_CREAT(name, prot) creat(name, prot)
  284. #define DF_MT    DFMT_VAX
  285. #endif
  286.  
  287.  
  288. #ifdef IRIS4
  289. #undef DF_STRUCTOK
  290. #include <sys/types.h>
  291. #include <sys/file.h>                /* for unbuffered i/o stuff */
  292. #define int16 short
  293. #define uint16 unsigned short
  294. #define int32 long
  295. #define float32 float
  296. #define DFmovmem(from, to, len)    bcopy(from, to, len)
  297. #ifndef DF_STRUCTOK
  298. #define UINT16READ(p, x)    { x = ((*p++) & 255)<<8; x |= (*p++) & 255; }
  299. #define INT16READ(p, x)        { x = (*p++)<<8; x |= (*p++) & 255; }
  300. #define INT32READ(p, x)        { x = (*p++)<<24; x|=((*p++) & 255)<<16;    \
  301.                                 x|=((*p++) & 255)<<8; x|=(*p++) & 255; }
  302. #define UINT16WRITE(p, x)    { *p++ = (x>>8) & 255; *p++ = x & 255; }
  303. #define INT16WRITE(p, x)    { *p++ = (x>>8) & 255; *p++ = x & 255; }
  304. #define INT32WRITE(p, x)    { *p++ = (x>>24) & 255; *p++ = (x>>16) & 255;    \
  305.                                 *p++ = (x>>8) & 255; *p++ = x & 255; }
  306. #endif
  307. #define DF_CREAT(name, prot) creat(name, prot)
  308. #define DF_MT    DFMT_IRIS4
  309. #endif
  310.  
  311.  
  312. /*--------------------------------------------------------------------------*/
  313. /*                        Flexibility parameters                                 */
  314.  
  315. #ifdef DF_BUFFIO            /* set all calls to do buffered I/O */
  316. #define DF_OPEN(x,y) fopen(x,y)
  317. #define DF_CLOSE(x) fclose(x)
  318. #define DF_SEEK(x,y,z) fseek(x,y,z)
  319. #define DF_SKEND(x,y,z) fseek(x,y,z)
  320. #define DF_TELL(x) ftell(x)
  321. #define DF_READ(a,b,c,d) fread(a,b,c,d)
  322. #define DF_WRITE(a,b,c,d) fwrite(a,b,c,d)
  323. #define DF_FLUSH(a) fflush(a)
  324. #ifdef PC
  325. #define DF_RDACCESS "rb"
  326. #define DF_WRACCESS "rb+"
  327. #else
  328. #define DF_RDACCESS "r"
  329. #define DF_WRACCESS "r+"
  330. #endif
  331.  
  332. #else
  333. #define DF_OPEN(x,y) open(x,y)
  334. #define DF_CLOSE(x) close(x)
  335. #define DF_SEEK(x,y,z) lseek(x,y,z)
  336. #define DF_SKEND(x,y,z) lseek(x,-1*y,z)
  337. #define DF_TELL(x) lseek(x,0L,1)
  338. #define DF_READ(a,b,c,d) read(d,a,b*c)
  339. #define DF_WRITE(a,b,c,d) write(d,a,b*c)
  340. #define DF_FLUSH(a)                             /* no need to flush */
  341. #ifdef PC
  342. #define DF_RDACCESS O_RDONLY | O_RAW
  343. #define DF_WRACCESS O_RDWR | O_RAW
  344. #else
  345. #define DF_RDACCESS O_RDONLY
  346. #define DF_WRACCESS O_RDWR
  347. #endif
  348. #endif
  349.  
  350.  
  351.     /* if not allocating memory dynamically, need buffer for compression */
  352. #ifndef DF_DYNAMIC
  353. #define DF_TBUF
  354. #endif
  355.  
  356.     /* if reading/writing structures not ok, need buffer for conversion */
  357. #ifndef DF_TBUF
  358. #ifndef DF_STRUCTOK
  359. #define DF_TBUF
  360. #endif
  361. #endif
  362.  
  363.     /* set buffer size */
  364. #ifdef DF_TBUF
  365. #define DF_TBUFSZ    10000
  366. #ifndef DFMASTER
  367. extern
  368. #endif
  369.     unsigned char DFtbuf[DF_TBUFSZ];
  370. #endif
  371.  
  372. /*--------------------------------------------------------------------------*/
  373. /*                            Size parameters                                    */
  374. #define DF_MAXDFS            32    /* How many DF's can be open at once */
  375. #define DF_DEFAULTDDS        16    /* How many DD's a file has by default */
  376. #define DF_MAXFNLEN            256    /* maximum length of filename parameters */
  377.  
  378. #endif
  379. #endif
  380.  
  381. /*--------------------------------------------------------------------------*/
  382. /*                        Type declarations                                     */
  383.  
  384. typedef struct DFddh {        /* format of data descriptor headers as in file */
  385.     int16
  386.         dds;                /* number of dds in header block */
  387.     int32    
  388.         next;                /* offset of next header block */
  389.     } DFddh;
  390.  
  391.         
  392. typedef struct DFdd {        /* format of data descriptors as in file */
  393.     uint16
  394.         tag,                /* data tag */
  395.         ref;                /* data reference number */
  396.     int32
  397.         offset,                /* offset of data element in file */
  398.         length;                /* number of bytes */
  399.     } DFdd;
  400.  
  401.  
  402.     /* descriptor structure is same as dd structure.  ###Note: may be changed */
  403. #define DFdesc    DFdd
  404.  
  405.  
  406.     /* DLE is the internal structure which stores data descriptor information */
  407.     /* It is a linked list of DDs */
  408. typedef struct DFdle {        /* Data List element */
  409.     struct DFdle
  410.         *next;                /* link to next dle */
  411.     DFddh
  412.         ddh;                /* To store headers */
  413.     DFdd
  414.         dd[1];                /* dummy size */
  415.     } DFdle;    
  416.  
  417.  
  418.     /* DF is the internal structure associated with each DF file */
  419.     /* It holds information associated with the file as a whole */
  420.     /* ### Note: there are hooks for having multiple DF files open at a time */
  421. typedef struct DF {
  422.     DFdle
  423.         *list,            /* Pointer to the DLE list */
  424.         *last_dle;        /* last_dle and last_dd are used in searches to indicate
  425.                             element returned by previous call to DFfind */
  426.     int
  427.         type,            /* 0= not in use, 1= normal, -1 = multiple */
  428.                         /* this is a hook for when multiple files are open */
  429.         access,            /* permitted access types: 0=none, 1=r, 2=w, 3=r/w */
  430.         changed,         /* True if anything in DDs modified since last write */
  431.         last_tag,        /* Last tag searched for by DFfind */
  432.         last_ref,        /* Last reference number searched for */
  433.         last_dd,        /* see last_dle */
  434.         defdds,            /* default numer of DD's in each block */
  435.         up_access;        /* access permissions to element being read/updated */
  436.                         /* Used by DFstart */
  437.     DFdd
  438.         *up_dd;            /* DD of element being read/updated, used by DFstart */
  439.               /* file handle is a file pointer or file descriptor */
  440.             /* depending on whether we use buffered or unbuffered i/o */
  441. #ifdef DF_BUFFIO
  442.     FILE *                /* file pointer */
  443. #else
  444.     int                    /* file descriptor */
  445. #endif
  446.         file;            /* File handle for real file */
  447. } DF;
  448.  
  449.  
  450. typedef struct DFdi {    /* data identifier: specifies data element uniquely */
  451.     uint16 tag;
  452.     uint16 ref;
  453. } DFdi;
  454.  
  455.  
  456.  
  457. typedef struct DFdata {    /* structure for returning status information */
  458.     int version;        /* version number of program */
  459. } DFdata;
  460.  
  461. /*--------------------------------------------------------------------------*/
  462. /*                            Procedure types                                 */
  463.  
  464. #ifndef VMS
  465. DF *DFopen();
  466. int32 DFgetelement();
  467. int32 DFread();
  468. int32 DFseek();
  469. int32 DFwrite();
  470. char *DFIgetspace(), *DFIfreespace(), *DFIf2cstring();
  471. #else
  472. int32 _DFgetelement();
  473. int32 _DFread();
  474. int32 _DFseek();
  475. int32 _DFwrite();
  476. char *_DFIgetspace(), *_DFIfreespace(), *_DFIf2cstring();
  477. #endif
  478.  
  479. /*--------------------------------------------------------------------------*/
  480. /*                            Global Variables                                 */
  481.  
  482. #ifndef DFMASTER
  483. extern
  484. #endif
  485. int
  486.     DFerror;            /* Error code for DF routines */
  487.  
  488. /*--------------------------------------------------------------------------*/
  489. /*                             Tag Definitions                                */
  490.  
  491. #define DFREF_WILDCARD 0    /* wildcard ref for searches */
  492.  
  493. #define DFTG_WILDCARD 0    /* wildcard tag for searches */
  494. #define    DFTG_NULL    1        /* empty DD */
  495.  
  496.     /* utility set */
  497. #define DFTG_FID    100        /* File identifier */
  498. #define    DFTG_FD    101        /* File description */
  499. #define    DFTG_TID    102        /* Tag identifier */
  500. #define    DFTG_TD    103        /* Tag descriptor */
  501. #define DFTG_DIL    104        /* data identifier label */
  502. #define DFTG_DIA    105        /* data identifier annotation */
  503. #define DFTG_NT    106        /* number type */
  504. #define DFTG_MT    107        /* machine type */
  505.  
  506.     /* raster-8 set */
  507. #define DFTG_ID8    200        /* 8-bit Image dimension */
  508. #define DFTG_IP8    201        /* 8-bit Image palette */
  509. #define DFTG_RI8    202        /* Raster-8 image */
  510. #define DFTG_CI8    203        /* RLE compressed 8-bit image */
  511. #define DFTG_II8    204        /* IMCOMP compressed 8-bit image */
  512.  
  513.     /* Raster Image set */
  514. #define DFTG_ID    300        /* Image DimRec */
  515. #define DFTG_LUT    301        /* Image Palette */
  516. #define    DFTG_RI    302        /* Raster Image */
  517. #define    DFTG_CI    303        /* Compressed Image */
  518.  
  519. #define DFTG_RIG    306        /* Raster Image Group */
  520. #define DFTG_LD    307        /* Palette DimRec */
  521. #define    DFTG_MD    308        /* Matte DimRec */
  522. #define DFTG_MA    309        /* Matte Data */
  523. #define DFTG_CCN    310        /* color correction */
  524. #define DFTG_CFM    311        /* color format */
  525. #define DFTG_AR    312        /* aspect ratio */
  526.     
  527. #define    DFTG_DRAW    400        /* Draw these images in sequence */
  528. #define    DFTG_RUN    401        /* run this as a program/script */
  529.  
  530. #define DFTG_XYP    500        /* x-y position */
  531. #define DFTG_MTO    501        /* machine-type override */
  532.  
  533.     /* Tektronix */
  534. #define DFTG_T14    602        /* TEK 4014 data */
  535. #define DFTG_T105    603        /* TEK 4105 data */
  536.  
  537.     /* Scientific Data set */
  538. #define DFTG_SDG    700        /* Scientific Data Group */
  539. #define DFTG_SDD    701        /* Scientific Data DimRec */
  540. #define DFTG_SD    702        /* Scientific Data */
  541. #define DFTG_SDS    703        /* Scales */
  542. #define DFTG_SDL    704        /* Labels */
  543. #define DFTG_SDU    705        /* Units */
  544. #define DFTG_SDF    706        /* Formats */
  545. #define DFTG_SDM    707        /* Max/Min */
  546. #define DFTG_SDC    708        /* Coord sys */
  547.  
  548.     /* compression schemes */
  549. #define DFTG_RLE    11        /* run length encoding */
  550. #define DFTG_IMCOMP 12        /* IMCOMP compression */
  551.  
  552. /*--------------------------------------------------------------------------*/
  553. /*                            Error Return Codes                                 */
  554.  
  555. #define    DFE_NOERROR        0    /* No error */
  556. #define    DFE_FNF            -1    /* File not found error */
  557. #define    DFE_DENIED        -2    /* Access to file denied */
  558. #define    DFE_ALROPEN        -3    /* File already open */
  559. #define    DFE_TOOMANY        -4    /* Too Many DF's or files open */
  560. #define DFE_BNAME        -5    /* Bad file name on open */
  561. #define    DFE_BACC        -6    /* Bad file access mode */
  562. #define DFE_BOPEN        -7    /* Other open error */
  563. #define DFE_NOTOPEN        -8    /* File can't be closed 'cause it isn't open */
  564. #define DFE_CANTCLOSE    -9    /* fclose wouldn't work! */
  565. #define DFE_DFNULL        -10    /* DF is a null pointer */
  566. #define DFE_ILLTYPE        -11    /* DF has an illegal type: internal error */
  567. #define DFE_UNSUPPORTED    -12    /* Feature not currently supported */
  568. #define DFE_BDDLIST    -13    /* The DD list is non-existent: internal error */
  569. #define DFE_NOTDFFILE    -14    /* This is not a DF file and it is not 0 length */
  570. #define DFE_SEEDTWICE    -15    /* The DD list already seeded: internal error */
  571. #define    DFE_NOSPACE        -16    /* Malloc failed */
  572. #define    DFE_NOSUCHTAG    -17    /* There is no such tag in the file: search failed*/
  573. #define DFE_READERROR    -18    /* There was a read error */
  574. #define DFE_WRITEERROR    -19    /* There was a write error */
  575. #define DFE_SEEKERROR    -20    /* There was a seek error */
  576. #define DFE_NOFREEDD    -21    /* There are no free DD's left: internal error */
  577. #define DFE_BTAG        -22    /* illegal WILDCARD tag */
  578. #define DFE_BREF        -23    /* illegal WILDCARD reference # */
  579. #define DFE_RDONLY        -24    /* The DF is read only */
  580. #define DFE_BCALL        -25    /* Calls in wrong order */
  581. #define DFE_BPTR        -26 /* NULL ptr argument */
  582. #define DFE_BLEN        -27    /* negative len specified */
  583. #define DFE_BSEEK        -28    /* Attempt to seek past end of element */
  584. #define DFE_NOMATCH        -29    /* No (more) DDs which match specified tag/ref */
  585. #define DFE_NOTINSET    -30    /* Warning: Set contained unknown tag: ignored */
  586. #define DFE_BDIM        -31    /* negative or zero dimensions specified */
  587. #define DFE_BOFFSET    -32    /* Illegal offset specified */
  588. #define DFE_BSCHEME    -33    /* Unknown compression scheme specified */
  589. #define DFE_NODIM        -34    /* No dimension record associated with image */
  590. #define DFE_NOTENOUGH    -35    /* space provided insufficient for size of data */
  591. #define DFE_NOVALS        -36    /* Values not available */
  592. #define DFE_CORRUPT        -37    /* File is corrupted */
  593. #define DFE_BCONV        -37    /* Don't know how to convert data type */
  594. #define DFE_BFP        -38    /* The file contained an illegal floating point no*/
  595.  
  596. /*--------------------------------------------------------------------------*/
  597. /*                            Logical Constants                                 */
  598.  
  599. #define DFACC_READ        1    /* Read Access */
  600. #define DFACC_WRITE        2    /* Write Access */
  601. #define DFACC_CREATE    4    /* force file to be created */
  602. #define DFACC_ALL        7    /* the logical and of all the above values */
  603.  
  604. #endif
  605.