home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume36 / chiaro / part17 < prev    next >
Encoding:
Text File  |  1993-03-25  |  55.8 KB  |  1,839 lines

  1. Newsgroups: comp.sources.misc
  2. From: jwbirdsa@picarefy.picarefy.com (James W. Birdsall)
  3. Subject: v36i087:  chiaro - Image Utilities, Part17/18
  4. Message-ID: <1993Mar26.203007.15255@sparky.imd.sterling.com>
  5. X-Md4-Signature: 9037349b18c8b6f2a1a40b347314b8e3
  6. Date: Fri, 26 Mar 1993 20:30:07 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: jwbirdsa@picarefy.picarefy.com (James W. Birdsall)
  10. Posting-number: Volume 36, Issue 87
  11. Archive-name: chiaro/part17
  12. Environment: UNIX, Sun, DECstation, 3B1
  13.  
  14. #! /bin/sh
  15. # This is a shell archive.  Remove anything before this line, then feed it
  16. # into a shell via "sh file" or similar.  To overwrite existing files,
  17. # type "sh file -c".
  18. # Contents:  src/bmp.h src/depend.h src/fb.h src/formats.h src/gif.h
  19. #   src/gld.h src/pcx.h src/re.h src/status.h src/stdinarg.c src/tga.h
  20. # Wrapped by kent@sparky on Thu Mar 25 11:20:08 1993
  21. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  22. echo If this archive is complete, you will see the following message:
  23. echo '          "shar: End of archive 17 (of 18)."'
  24. if test -f 'src/bmp.h' -a "${1}" != "-c" ; then 
  25.   echo shar: Will not clobber existing file \"'src/bmp.h'\"
  26. else
  27.   echo shar: Extracting \"'src/bmp.h'\" \(6408 characters\)
  28.   sed "s/^X//" >'src/bmp.h' <<'END_OF_FILE'
  29. X/***************************************************************************
  30. X*   BMP.H                                                                  *
  31. X*   HEADER FOR BMP                                                         *
  32. X*   OS:      UNIX                                                          *
  33. X*                                                                          *
  34. X*   Copyright (c) 1993 James W. Birdsall. All Rights Reserved.             *
  35. X*                                                                          *
  36. X*   $Id: bmp.h,v 1.1 1993/02/15 01:54:57 jwbirdsa Exp $
  37. X*                                                                          *
  38. X*   This file specifies the external interface to the BMP module.          *
  39. X*                                                                          *
  40. X***************************************************************************/
  41. X
  42. X#ifndef DEPEND_H
  43. X    **** ERROR ****    MUST INCLUDE DEPEND.H BEFORE BMP.H
  44. X#endif
  45. X
  46. X#ifndef BMP_H
  47. X
  48. X#define BMP_H
  49. X
  50. X/*
  51. X** system includes <>
  52. X*/
  53. X
  54. X/*
  55. X** custom includes ""
  56. X*/
  57. X
  58. X#include "status.h"
  59. X
  60. X
  61. X/*
  62. X** local #defines
  63. X*/
  64. X
  65. X/* Version defines. */
  66. X
  67. X#define BMP_NOT                    FORMAT_NOT
  68. X#define BMP_WIN2                   (FORMAT_BMP | MKLONG(1))
  69. X#define BMP_OS2_11                 (FORMAT_BMP | MKLONG(2))
  70. X#define BMP_WIN3                   (FORMAT_BMP | MKLONG(3))
  71. X#define BMP_OS2_20                 (FORMAT_BMP | MKLONG(4))
  72. X
  73. X/* Offsets in BMP_WIN2 header. */
  74. X
  75. X#define BMP_HDR2_MAGIC_OFF         0
  76. X#define BMP_HDR2_DISC_OFF          1
  77. X#define BMP_HDR2_ZERO1_OFF         2
  78. X#define BMP_HDR2_IMWID_OFF         4
  79. X#define BMP_HDR2_IMHI_OFF          6
  80. X#define BMP_HDR2_BYTWID_OFF        8
  81. X#define BMP_HDR2_PLANES_OFF        10
  82. X#define BMP_HDR2_BITS_OFF          11
  83. X#define BMP_HDR2_ZERO2_OFF         12
  84. X#define BMP_HDR2_ZERO3_OFF         14
  85. X
  86. X#define BMP_HDR2_LEN               16
  87. X
  88. X/* Offsets in header for all non-Win2 types. */
  89. X
  90. X#define BMP_HDR_MAGIC_OFF          0
  91. X#define BMP_HDR_FSIZE_OFF          2
  92. X#define BMP_HDR_ZERO1_OFF          6
  93. X#define BMP_HDR_ZERO2_OFF          8
  94. X#define BMP_HDR_HLEN_OFF           10
  95. X#define BMP_HDR_INFOLEN_OFF        14
  96. X
  97. X#define BMP_HDR_LEN                18
  98. X
  99. X/* Offsets in header for BMP_OS2_11. */
  100. X
  101. X#define BMP_HDR11_IMWID_OFF        BMP_HDR_LEN
  102. X#define BMP_HDR11_IMHI_OFF         (BMP_HDR_LEN + 2)
  103. X#define BMP_HDR11_PLANES_OFF       (BMP_HDR_LEN + 4)
  104. X#define BMP_HDR11_BITS_OFF         (BMP_HDR_LEN + 8)
  105. X
  106. X#define BMP_HDR11_LEN              (BMP_HDR_LEN + 8)
  107. X#define BMP_HDR11_INFOLEN_VAL      12
  108. X
  109. X/* Offsets in header for BMP_WIN3. */
  110. X
  111. X#define BMP_HDR3_IMWID_OFF         BMP_HDR_LEN
  112. X#define BMP_HDR3_IMHI_OFF          (BMP_HDR_LEN + 4)
  113. X#define BMP_HDR3_PLANES_OFF        (BMP_HDR_LEN + 8)
  114. X#define BMP_HDR3_BITS_OFF          (BMP_HDR_LEN + 10)
  115. X#define BMP_HDR3_COMPR_OFF         (BMP_HDR_LEN + 12)
  116. X#define BMP_HDR3_CSIZE_OFF         (BMP_HDR_LEN + 16)
  117. X#define BMP_HDR3_XRES_OFF          (BMP_HDR_LEN + 20)
  118. X#define BMP_HDR3_YRES_OFF          (BMP_HDR_LEN + 24)
  119. X#define BMP_HDR3_CLRUSED_OFF       (BMP_HDR_LEN + 28)
  120. X#define BMP_HDR3_CLRIMP_OFF        (BMP_HDR_LEN + 32)
  121. X
  122. X#define BMP_HDR3_LEN               (BMP_HDR_LEN + 36)
  123. X#define BMP_HDR3_INFOLEN_VAL       40
  124. X
  125. X/* Offsets in header for BMP_OS2_20. Same as BMP_WIN3 otherwise. */
  126. X
  127. X#define BMP_HDR20_RESUNITS_OFF     BMP_HDR3_LEN
  128. X#define BMP_HDR20_ZERO3_OFF        (BMP_HDR3_LEN + 2)
  129. X#define BMP_HDR20_ORIENT_OFF       (BMP_HDR3_LEN + 4)
  130. X#define BMP_HDR20_HALFALG_OFF      (BMP_HDR3_LEN + 6)
  131. X#define BMP_HDR20_HALF1_OFF        (BMP_HDR3_LEN + 8)
  132. X#define BMP_HDR20_HALF2_OFF        (BMP_HDR3_LEN + 12)
  133. X#define BMP_HDR20_CLRENC_OFF       (BMP_HDR3_LEN + 16)
  134. X#define BMP_HDR20_APPDATA_OFF      (BMP_HDR3_LEN + 20)
  135. X
  136. X#define BMP_HDR20_LEN              (BMP_HDR3_LEN + 24)
  137. X#define BMP_HDR20_INFOLEN_VAL      64
  138. X
  139. X/* Error/status defines. */
  140. X
  141. X#define BMP_NOTBMP_E       MKERR(1, BMP_MODULE, ST_ERROR)
  142. X#define BMP_FILEERR_E      MKERR(2, BMP_MODULE, ST_ERROR)
  143. X#define BMP_UNEOF_E        MKERR(3, BMP_MODULE, ST_ERROR)
  144. X
  145. X
  146. X/*
  147. X** misc: copyright strings, version macros, etc.
  148. X*/
  149. X
  150. Xstatic char CONST RCSbmp[] = "$Id: bmp.h,v 1.1 1993/02/15 01:54:57 jwbirdsa Exp $";
  151. X
  152. X
  153. X/*
  154. X** typedefs
  155. X*/
  156. X
  157. Xtypedef struct {
  158. X    ULONG version;                  /* the BMP format version */
  159. X    ULONG imwid;                    /* image width, pixels */
  160. X    ULONG imhi;                     /* image height, pixels */
  161. X    unsigned int planes;            /* color planes */
  162. X    unsigned int pixbits;           /* bits per pixel */
  163. X    ULONG dataoffset;               /* offset of image data in file */
  164. X    VOID *more;                     /* pointer to additional data */
  165. X} BMP_HDR;
  166. X
  167. Xtypedef struct {
  168. X    int discardable;                /* nonzero if discardable bitmap */
  169. X} BMP_H2;                     /* additional data for BMP_WIN2 */
  170. X
  171. Xtypedef struct {
  172. X    ULONG filesize;                 /* size of BMP file */
  173. X} BMP_H11;                    /* additional data for BMP_OS2_11 */
  174. X
  175. Xtypedef struct {
  176. X    BMP_H11 more;                 /* data common with BMP_OS2_11 */
  177. X    ULONG compression;              /* data compression type */
  178. X    ULONG compsize;                 /* size of compressed data */
  179. X    ULONG xres;                     /* horizontal resolution */
  180. X    ULONG yres;                     /* vertical resolution */
  181. X    ULONG clrused;                  /* number of colors actually used */
  182. X    ULONG clrimp;                   /* number of colors that are important */
  183. X} BMP_H3;                     /* additional data for BMP_WIN3 */
  184. X
  185. Xtypedef struct {
  186. X    BMP_H3 more;                  /* data common with BMP_WIN3 */
  187. X    unsigned int resunits;          /* units of resolution */
  188. X    unsigned int origin;            /* origin of pixels */
  189. X    unsigned int halfalg;           /* halftoning algorithm */
  190. X    ULONG half1;                    /* data used with halfalg */
  191. X    ULONG half2;                    /* data used with halfalg */
  192. X    ULONG clrencode;                /* format of color table */
  193. X    ULONG appdata;                  /* application-specific data */
  194. X} BMP_H20;                    /* additional data for BMP_OS2_20 */
  195. X
  196. X
  197. X/*
  198. X** global variables
  199. X*/
  200. X
  201. X/*
  202. X** function prototypes
  203. X*/
  204. X
  205. X#ifdef  __STDC__
  206. X# define P_(s) s
  207. X#else
  208. X# define P_(s) ()
  209. X#endif
  210. X
  211. XULONG bmp_verify P_((char *filename, ULONG *version, char **exts));
  212. X
  213. XULONG bmp_getheader P_((FILE *infile, BMP_HDR *results));
  214. X
  215. Xchar *bmp_errstring P_((ULONG errcode));
  216. X
  217. X#undef P_
  218. X
  219. X#endif /* BMP_H */
  220. X
  221. END_OF_FILE
  222.   if test 6408 -ne `wc -c <'src/bmp.h'`; then
  223.     echo shar: \"'src/bmp.h'\" unpacked with wrong size!
  224.   fi
  225.   # end of 'src/bmp.h'
  226. fi
  227. if test -f 'src/depend.h' -a "${1}" != "-c" ; then 
  228.   echo shar: Will not clobber existing file \"'src/depend.h'\"
  229. else
  230.   echo shar: Extracting \"'src/depend.h'\" \(4198 characters\)
  231.   sed "s/^X//" >'src/depend.h' <<'END_OF_FILE'
  232. X/***************************************************************************
  233. X*   depend.h                                                               *
  234. X*   HEADER FOR hardware/OS dependent stuff.                                *
  235. X*   OS:      UNIX                                                          *
  236. X*                                                                          *
  237. X*   Copyright (c) 1993 James W. Birdsall. All Rights Reserved.             *
  238. X*                                                                          *
  239. X*   Header for hardware and OS dependent functions.                        *
  240. X*                                                                          *
  241. X*   $Id: depend.h,v 1.8 1993/02/15 02:00:16 jwbirdsa Exp $
  242. X*                                                                          *
  243. X***************************************************************************/
  244. X
  245. X#ifndef CONFIG_H
  246. X    **** ERROR **** MUST INCLUDE CONFIG.H BEFORE DEPEND.H
  247. X#endif
  248. X
  249. X#ifndef DEPEND_H
  250. X
  251. X#define DEPEND_H
  252. X
  253. X/*
  254. X** system includes <>
  255. X*/
  256. X
  257. X/*
  258. X** custom includes ""
  259. X*/
  260. X
  261. X/*
  262. X** local #defines
  263. X*/
  264. X
  265. X#ifndef NO_CONST
  266. X#define CONST           const
  267. X#else
  268. X#define CONST
  269. X#endif
  270. X
  271. X#ifndef INT16
  272. X#define MKLONG(x)       x
  273. X#else
  274. X#ifdef __STDC__
  275. X#define MKLONG(x)       x##L
  276. X#else
  277. X/*
  278. X** This gross kluge added because I don't know anything else that will work
  279. X** for non-ANSI compilers.
  280. X*/
  281. X#define MKLONG(x)       x/**/L
  282. X#endif
  283. X#endif
  284. X
  285. X
  286. X/*
  287. X** misc: copyright strings, version macros, etc.
  288. X*/
  289. X
  290. Xstatic char CONST RCSdepend[] = "$Id: depend.h,v 1.8 1993/02/15 02:00:16 jwbirdsa Exp $";
  291. X
  292. X
  293. X/* A rough guess at a reasonable maximum path length. */
  294. X
  295. X#ifndef MAXPATH
  296. X#define MAXPATH         255
  297. X#endif
  298. X
  299. X/* If stdio.h doesn't define SEEK_SET (or override by user), default to 0. */
  300. X
  301. X#ifndef SEEK_SET
  302. X#define SEEK_SET        0
  303. X#endif
  304. X
  305. X/* If stdio.h doesn't define SEEK_CUR (or override by user), default to 1. */
  306. X
  307. X#ifndef SEEK_CUR
  308. X#define SEEK_CUR        1
  309. X#endif
  310. X
  311. X/* If stdio.h doesn't define SEEK_END (or override by user), default to 2. */
  312. X
  313. X#ifndef SEEK_END
  314. X#define SEEK_END        2
  315. X#endif
  316. X
  317. X/* Refault SYS_BLOCKSIZE to 512. */
  318. X
  319. X#ifndef SYS_BLOCKSIZE
  320. X#define SYS_BLOCKSIZE                 512
  321. X#endif
  322. X
  323. X/* Default FOPEN_READ_BINARY to "r". */
  324. X
  325. X#ifndef FOPEN_READ_BINARY
  326. X#define FOPEN_READ_BINARY            "r"
  327. X#endif
  328. X
  329. X/* Default FOPEN_WRITE_BINARY to "w". */
  330. X
  331. X#ifndef FOPEN_WRITE_BINARY
  332. X#define FOPEN_WRITE_BINARY           "w"
  333. X#endif
  334. X
  335. X/* Default MINRAM to 10K. */
  336. X
  337. X#ifndef MINRAM
  338. X#define MINRAM                       10240
  339. X#endif
  340. X
  341. X/* Default NULL_DEVICE to "/dev/null". */
  342. X
  343. X#ifndef NULL_DEVICE
  344. X#define NULL_DEVICE                  "/dev/null"
  345. X#endif
  346. X
  347. X/* Some systems have macro max(), others don't. */
  348. X
  349. X#ifndef max
  350. X#define max(a,b)                     (((a) > (b)) ? (a) : (b))
  351. X#endif
  352. X
  353. X
  354. X/*
  355. X** typedefs
  356. X*/
  357. X
  358. X/* Use unsigned char if possible, otherwise plain char and hope. */
  359. X
  360. X#ifndef NO_UCHAR
  361. Xtypedef unsigned char UCHAR;
  362. X#else
  363. Xtypedef char UCHAR;
  364. X#endif
  365. X
  366. X/* Use void if possible, otherwise same as UCHAR. */
  367. X
  368. X#ifndef NO_VOID
  369. Xtypedef void VOID;
  370. X#else
  371. Xtypedef UCHAR VOID;
  372. X#endif
  373. X
  374. X/*
  375. X** If ints are 32 bits, use unsigned int. This helps avoid warning
  376. X** messages from ANSI compilers about unsigned long != unsigned int.
  377. X** On 16-bit machines, have to use a long of some type to get 32 bits.
  378. X** Use unsigned long if possible, otherwise use plain long and hope.
  379. X*/
  380. X
  381. X#ifndef INT16
  382. Xtypedef unsigned int ULONG;
  383. X#else
  384. X#ifndef NO_ULONG
  385. Xtypedef unsigned long ULONG;
  386. X#else
  387. Xtypedef long ULONG;
  388. X#endif
  389. X#endif
  390. X
  391. X
  392. X/*
  393. X** global variables
  394. X*/
  395. X
  396. X/*
  397. X** function prototypes
  398. X*/
  399. X
  400. X/* function prototypes courtesy of the 'mkptypes' program */
  401. X#ifdef  __STDC__
  402. X# define P_(s) s
  403. X#else
  404. X# define P_(s) ()
  405. X#endif
  406. Xchar **scand P_((char *mask));
  407. Xlong dfree P_((char *temppath));
  408. Xchar *tempname P_((char *dir, char *prefix));
  409. X
  410. Xint coreleft P_((long needed));
  411. X
  412. Xint stricmp P_((char *s1, char *s2));
  413. Xint strnicmp P_((char *s1, char *s2, int len));
  414. X#ifdef NO_MEMOP
  415. XVOID *memcpy P_((VOID *dest, VOID *src, unsigned int n));
  416. Xint memcmp P_((VOID *s1, VOID *s2, unsigned int n));
  417. X#endif
  418. X
  419. X#ifdef NO_STRDUP
  420. Xchar *strdup P_((char *s1));
  421. X#endif
  422. X
  423. X#ifdef NO_RENAME
  424. Xint rename P_((char *path1, char *path2));
  425. X#endif
  426. X
  427. X#undef P_
  428. X
  429. X#endif /* DEPEND_H */
  430. X
  431. END_OF_FILE
  432.   if test 4198 -ne `wc -c <'src/depend.h'`; then
  433.     echo shar: \"'src/depend.h'\" unpacked with wrong size!
  434.   fi
  435.   # end of 'src/depend.h'
  436. fi
  437. if test -f 'src/fb.h' -a "${1}" != "-c" ; then 
  438.   echo shar: Will not clobber existing file \"'src/fb.h'\"
  439. else
  440.   echo shar: Extracting \"'src/fb.h'\" \(3342 characters\)
  441.   sed "s/^X//" >'src/fb.h' <<'END_OF_FILE'
  442. X/***************************************************************************
  443. X*   FB.H                                                                   *
  444. X*   HEADER FOR FB (File Buffer) MODULE                                     *
  445. X*   OS:      UNIX                                                          *
  446. X*                                                                          *
  447. X*   Copyright (c) 1993 by James W. Birdsall, all rights reserved.          *
  448. X*                                                                          *
  449. X*   $Id: fb.h,v 1.6 1993/02/10 01:33:16 jwbirdsa Exp $
  450. X*                                                                          *
  451. X*   This file specifies the external interface to the FB (file buffer)     *
  452. X*   module.                                                                *
  453. X*                                                                          *
  454. X****************************************************************************/
  455. X
  456. X#ifndef DEPEND_H
  457. X    **** ERROR **** MUST INCLUDE DEPEND.H BEFORE FB.H
  458. X#endif
  459. X
  460. X#ifndef FB_H
  461. X
  462. X#define FB_H
  463. X
  464. X/*
  465. X** system includes <>
  466. X*/
  467. X
  468. X/*
  469. X** custom includes ""
  470. X*/
  471. X
  472. X#include "status.h"
  473. X
  474. X
  475. X/*
  476. X** #defines
  477. X*/
  478. X
  479. X/* miscellaneous defines */
  480. X
  481. X#define FB_MINBUFFER   512
  482. X#define FB_MAXBUFFER   32767
  483. X
  484. X/* error/status defines */
  485. X
  486. X#define FB_EOF_W       MKERR(1, FB_MODULE, ST_WARNING)
  487. X
  488. X#define FB_NOMEM_E     MKERR(1, FB_MODULE, ST_ERROR)
  489. X#define FB_BADPARAM_E  MKERR(2, FB_MODULE, ST_ERROR)
  490. X#define FB_NOHANDLE_E  MKERR(3, FB_MODULE, ST_ERROR)
  491. X#define FB_NOFILE_E    MKERR(4, FB_MODULE, ST_ERROR)
  492. X#define FB_NOTINIT_E   MKERR(5, FB_MODULE, ST_ERROR)
  493. X#define FB_REINIT_E    MKERR(6, FB_MODULE, ST_ERROR)
  494. X#define FB_NOMEMBUF_E  MKERR(7, FB_MODULE, ST_ERROR)
  495. X
  496. X#define FB_FILEERR_F   MKERR(1, FB_MODULE, ST_FATAL)
  497. X#define FB_BUG_F       MKERR(2, FB_MODULE, ST_FATAL)
  498. X#define FB_BADFUNC_F   MKERR(3, FB_MODULE, ST_FATAL)
  499. X
  500. X
  501. X/*
  502. X** misc: copyright strings, version macros, etc.
  503. X*/
  504. X
  505. Xstatic char CONST RCSfb[] = "$Id: fb.h,v 1.6 1993/02/10 01:33:16 jwbirdsa Exp $";
  506. X
  507. X
  508. X/*
  509. X** typedefs
  510. X*/
  511. X
  512. X/* FB data structure */
  513. Xtypedef struct {
  514. X    FILE *rawfile;                    /* normal file handle */
  515. X    UCHAR *buffer;                    /* pointer to buffer */
  516. X    int bufvalid;                     /* bytes of valid data in buffer */
  517. X    int bufloc;                       /* current index in buffer */
  518. X    long bufoffset;                   /* offset in file */
  519. X    char filemode;                    /* file mode 'r' or 'w' */
  520. X} FB;
  521. X
  522. X
  523. X/*
  524. X** global variables
  525. X*/
  526. X
  527. Xextern ULONG fb_error;                /* error/status code storage */
  528. X
  529. X
  530. X/*
  531. X** function prototypes
  532. X*/
  533. X
  534. X/* function prototypes courtesy of the 'mkptypes' program */
  535. X#ifdef  __STDC__
  536. X# define P_(s) s
  537. X#else
  538. X# define P_(s) ()
  539. X#endif
  540. X
  541. XULONG fb_init P_((int tablesize, int buffersize));
  542. XFB *fb_open P_((char *filename, char filemode, long *length));
  543. XFB *fb_retrofit P_((FILE *rawfile, char filemode));
  544. XULONG fb_close P_((FB *filehandle));
  545. XULONG fb_seek P_((FB *filehandle, long offset));
  546. Xlong fb_tell P_((FB *filehandle));
  547. XULONG fb_flush P_((FB *filehandle));
  548. Xint fb_read P_((FB *filehandle, UCHAR *buffer, int count));
  549. Xint fb_getc P_((FB *filehandle));
  550. XULONG fb_write P_((FB *filehandle, UCHAR *buffer, int count));
  551. XULONG fb_putc P_((FB *filehandle, UCHAR c));
  552. Xchar *fb_errstring P_((ULONG errcode));
  553. X
  554. X#undef P_
  555. X
  556. X#endif /* FB_H */
  557. X
  558. END_OF_FILE
  559.   if test 3342 -ne `wc -c <'src/fb.h'`; then
  560.     echo shar: \"'src/fb.h'\" unpacked with wrong size!
  561.   fi
  562.   # end of 'src/fb.h'
  563. fi
  564. if test -f 'src/formats.h' -a "${1}" != "-c" ; then 
  565.   echo shar: Will not clobber existing file \"'src/formats.h'\"
  566. else
  567.   echo shar: Extracting \"'src/formats.h'\" \(4706 characters\)
  568.   sed "s/^X//" >'src/formats.h' <<'END_OF_FILE'
  569. X/***************************************************************************
  570. X*   FORMATS.H                                                              *
  571. X*   HEADER FOR FM (Formats) MODULE                                         *
  572. X*   OS:      UNIX                                                          *
  573. X*                                                                          *
  574. X*   Copyright (c) 1993 by James W. Birdsall, all rights reserved.          *
  575. X*                                                                          *
  576. X*   $Id: formats.h,v 1.3 1993/02/10 01:51:36 jwbirdsa Exp $
  577. X*                                                                          *
  578. X*   This file specifies various generic returns from the individual        *
  579. X*   format modules and provides macros for comparing and determining       *
  580. X*   types and versions of files.                                           *
  581. X*                                                                          *
  582. X***************************************************************************/
  583. X
  584. X#ifndef DEPEND_H
  585. X    **** ERROR **** MUST INCLUDE DEPEND.H BEFORE FORMATS.H
  586. X#endif
  587. X
  588. X#ifndef FORMATS_H
  589. X
  590. X#define FORMATS_H
  591. X
  592. Xstatic char CONST RCSformats[] = "$Id: formats.h,v 1.3 1993/02/10 01:51:36 jwbirdsa Exp $";
  593. X
  594. X/*
  595. X** #defines
  596. X*/
  597. X
  598. X/* format type and version masks */
  599. X
  600. X#define FORMAT_TYPE_MASK            MKLONG(0xFFFF0000)
  601. X#define FORMAT_VERS_MASK            MKLONG(0x0000FFFF)
  602. X
  603. X#define FORMAT_TYPE_SHIFT           16
  604. X#define FORMAT_VERS_SHIFT           0
  605. X
  606. X/* format types -- version defined in individual format headers */
  607. X
  608. X#define FORMAT_NOT                  MKLONG(0x00000000)
  609. X#define FORMAT_GIF                  MKLONG(0x00010000)
  610. X#define FORMAT_IMG                  MKLONG(0x00020000)
  611. X#define FORMAT_JFIF                 MKLONG(0x00030000)
  612. X#define FORMAT_SR                   MKLONG(0x00040000)
  613. X#define FORMAT_TGA                  MKLONG(0x00050000)
  614. X#define FORMAT_PBM                  MKLONG(0x00060000)
  615. X#define FORMAT_PGM                  MKLONG(0x00070000)
  616. X#define FORMAT_PPM                  MKLONG(0x00080000)
  617. X#define FORMAT_XBM                  MKLONG(0x00090000)
  618. X#define FORMAT_BMP                  MKLONG(0x000A0000)
  619. X#define FORMAT_PCX                  MKLONG(0x000B0000)
  620. X
  621. X/* macros to extract and compare types and versions */
  622. X
  623. X#define FORMAT_TYPE(x)              ((int)(((x) & FORMAT_TYPE_MASK) >> \
  624. X                                           FORMAT_TYPE_SHIFT))
  625. X#define FORMAT_VERS(x)              ((int)(((x) & FORMAT_VERS_MASK) >> \
  626. X                                           FORMAT_VERS_SHIFT))
  627. X
  628. X/* macros to extract data from headers */
  629. X
  630. X#define CONSTRUCT_M_UINT(b)           ((((unsigned int)(*(b)))<<8)| \
  631. X                                       ((unsigned int)(*((b)+1))))
  632. X
  633. X#define CONSTRUCT_M_ULONG(b)          ((((ULONG)(*(b)))<<24)| \
  634. X                                       (((ULONG)(*((b)+1)))<<16)| \
  635. X                                       (((ULONG)(*((b)+2)))<<8)| \
  636. X                                       ((ULONG)(*((b)+3))))
  637. X
  638. X#define CONSTRUCT_I_UINT(b)           ((((unsigned int)(*((b)+1)))<<8)| \
  639. X                                       ((unsigned int)(*(b))))
  640. X
  641. X#define CONSTRUCT_I_ULONG(b)          ((((ULONG)(*((b)+3)))<<24)| \
  642. X                                       (((ULONG)(*((b)+2)))<<16)| \
  643. X                                       (((ULONG)(*((b)+1)))<<8)| \
  644. X                                       ((ULONG)(*(b))))
  645. X/* miscellaneous defines */
  646. X
  647. X#define GIF_MAIN    "GIF"         /* main GIF format designation */
  648. X#define IMG_MAIN    "IMG"         /* main IMG format designation */
  649. X#define JFIF_MAIN   "JFIF"        /* main JFIF format designation */
  650. X#define SR_MAIN     "SUNRAS"      /* main Sun Raster format designation */
  651. X#define TGA_MAIN    "TARGA"       /* main Targa format designation */
  652. X#define PBM_MAIN    "PBM"         /* main PBM format designation */
  653. X#define PGM_MAIN    "PGM"         /* main PGM format designation */
  654. X#define PPM_MAIN    "PPM"         /* main PPM format designation */
  655. X#define XBM_MAIN    "XBM"         /* main XBM format designation */
  656. X#define BMP_MAIN    "BMP"         /* main BMP format designation */
  657. X#define PCX_MAIN    "PCX"         /* main PCX format designation */
  658. X
  659. X
  660. X/*
  661. X** typedefs
  662. X*/
  663. X
  664. Xtypedef struct aa {
  665. X   ULONG mask;
  666. X   ULONG value;
  667. X   struct aa *next;
  668. X} flist;
  669. X
  670. Xtypedef struct {
  671. X   char name[9];
  672. X   flist value;
  673. X} fsearch;
  674. X
  675. Xtypedef struct rgb_triplet {
  676. X    UCHAR red;
  677. X    UCHAR green;
  678. X    UCHAR blue;
  679. X} RGB_TRIPLET;
  680. X
  681. X/*
  682. X** global variables
  683. X*/
  684. X
  685. Xextern fsearch formatsearch[];
  686. X
  687. X
  688. X/*
  689. X** function prototypes
  690. X*/
  691. X
  692. X#ifdef  __STDC__
  693. X# define P_(s) s
  694. X#else
  695. X# define P_(s) ()
  696. X#endif
  697. X
  698. Xchar *fm_name P_((ULONG format));
  699. X
  700. X#undef P_
  701. X
  702. X
  703. X#include "re.h"
  704. X
  705. X#endif /* FORMATS_H */
  706. X
  707. END_OF_FILE
  708.   if test 4706 -ne `wc -c <'src/formats.h'`; then
  709.     echo shar: \"'src/formats.h'\" unpacked with wrong size!
  710.   fi
  711.   # end of 'src/formats.h'
  712. fi
  713. if test -f 'src/gif.h' -a "${1}" != "-c" ; then 
  714.   echo shar: Will not clobber existing file \"'src/gif.h'\"
  715. else
  716.   echo shar: Extracting \"'src/gif.h'\" \(8525 characters\)
  717.   sed "s/^X//" >'src/gif.h' <<'END_OF_FILE'
  718. X/***************************************************************************
  719. X*   GIF.H                                                                  *
  720. X*   HEADER FOR GIF (GIF FORMAT PROCESSOR)                                  *
  721. X*   OS:      UNIX                                                          *
  722. X*                                                                          *
  723. X*   Copyright (c) 1993 James W. Birdsall. All Rights Reserved.             *
  724. X*                                                                          *
  725. X*   $Id: gif.h,v 1.3 1993/02/10 01:35:18 jwbirdsa Exp $
  726. X*                                                                          *
  727. X*   This file specifies the external interface to the GIF module.          *
  728. X*                                                                          *
  729. X***************************************************************************/
  730. X
  731. X#ifndef FB_H
  732. X    **** ERROR ****    MUST INCLUDE FB.H BEFORE GIF.H
  733. X#endif
  734. X#ifndef DEPEND_H
  735. X    **** ERROR ****    MUST INCLUDE DEPEND.H BEFORE GIF.H
  736. X#endif
  737. X
  738. X
  739. X#ifndef GIF_H
  740. X
  741. X#define GIF_H
  742. X
  743. X/*
  744. X** system includes <>
  745. X*/
  746. X
  747. X/*
  748. X** custom includes ""
  749. X*/
  750. X
  751. X#include "status.h"
  752. X
  753. X
  754. X/*
  755. X** local #defines
  756. X*/
  757. X
  758. X/* GIF format signature and length. */
  759. X
  760. X#define GIF_SIGNATURE           "GIF"
  761. X#define GIF_SIGNATURE_LEN       3
  762. X
  763. X/* GIF format version signatures and length. */
  764. X
  765. X#define GIF_VERS87A_SIG         "87a"
  766. X#define GIF_VERS89A_SIG         "89a"
  767. X#define GIF_VERS_SIG_LEN        3
  768. X
  769. X/* Length and structure of GIF logical screen descriptor. */
  770. X
  771. X#define GIF_LSD_LEN             7
  772. X
  773. X#define GIF_LSD_SCRWID_OFF      0
  774. X#define GIF_LSD_SCRHI_OFF       2
  775. X#define GIF_LSD_PACKED_OFF      4
  776. X#define    GIF_LSD_GCTFLAG_MASK        0x80
  777. X#define    GIF_LSD_CLRRES_MASK         0x70
  778. X#define    GIF_LSD_CLRRES_SHIFT        4
  779. X#define    GIF_LSD_SORTFLAG_MASK       0x08
  780. X#define    GIF_LSD_GCTSIZE_MASK        0x07
  781. X#define GIF_LSD_BACKGROUND_OFF  5
  782. X#define GIF_LSD_ASPECT_OFF      6
  783. X
  784. X/* Length and structure of GIF image descriptor. */
  785. X
  786. X#define GIF_IMD_LEN             9
  787. X
  788. X#define GIF_IMD_IMLEFT_OFF      0
  789. X#define GIF_IMD_IMTOP_OFF       2
  790. X#define GIF_IMD_IMWID_OFF       4
  791. X#define GIF_IMD_IMHI_OFF        6
  792. X#define GIF_IMD_PACKED_OFF      8
  793. X#define    GIF_IMD_LCTFLAG_MASK        0x80
  794. X#define    GIF_IMD_INTRLACEFLAG_MASK   0x40
  795. X#define    GIF_IMD_SORTFLAG_MASK       0x20
  796. X#define    GIF_IMD_LCTSIZE_MASK        0x07
  797. X
  798. X/* Length and structure of GIF graphic control extension. */
  799. X
  800. X#define GIF_GCE_LEN             4
  801. X
  802. X#define GIF_GCE_PACKED_OFF      0
  803. X#define    GIF_GCE_DISPOSAL_MASK       0x1C
  804. X#define    GIF_GCE_DISPOSAL_SHIFT      2
  805. X#define    GIF_GCE_USERINFLAG_MASK     0x02
  806. X#define    GIF_GCE_TRANSFLAG_MASK      0x01
  807. X#define GIF_GCE_DELAY_OFF       1
  808. X#define GIF_GCE_TRANSPARENT_OFF 3
  809. X
  810. X/* Length and structure of GIF plain text extension header. */
  811. X
  812. X#define GIF_PTEHEAD_LEN         12
  813. X
  814. X#define GIF_PTEHEAD_LEFT_OFF    0
  815. X#define GIF_PTEHEAD_TOP_OFF     2
  816. X#define GIF_PTEHEAD_WID_OFF     4
  817. X#define GIF_PTEHEAD_HI_OFF      6
  818. X#define GIF_PTEHEAD_CELLWID_OFF 8
  819. X#define GIF_PTEHEAD_CELLHI_OFF  9
  820. X#define GIF_PTEHEAD_FORECLR_OFF 10
  821. X#define GIF_PTEHEAD_BACKCLR_OFF 11
  822. X
  823. X/* Length and structure of GIF application extension header. */
  824. X
  825. X#define GIF_APPL_LEN            (GIF_APPL_APPLID_LEN + GIF_APPL_AUTH_LEN)
  826. X
  827. X#define GIF_APPL_APPLID_OFF     0
  828. X#define GIF_APPL_AUTH_OFF       GIF_APPL_APPLID_LEN
  829. X
  830. X/* GIF special characters. */
  831. X
  832. X#define GIF_EXTBLOCK            '!'    /* 0x21 */
  833. X#define GIF_IMAGE               ','    /* 0x2C */
  834. X#define GIF_TERMINATOR          ';'    /* 0x3B */
  835. X
  836. X/* GIF89a special extension block numbers. */
  837. X
  838. X#define GIF_EXT_PLAIN_TEXT      0x01
  839. X#define GIF_EXT_GRAPHIC_CONTROL 0xF9
  840. X#define GIF_EXT_COMMENT         0xFE
  841. X#define GIF_EXT_APPLICATION     0xFF
  842. X#define    GIF_APPL_APPLID_LEN        8
  843. X#define    GIF_APPL_AUTH_LEN          3
  844. X
  845. X/* Format version returns. */
  846. X
  847. X#define GIF_NOT                 FORMAT_NOT
  848. X#define GIF_87A                 (FORMAT_GIF | MKLONG(1))
  849. X#define GIF_89A                 (FORMAT_GIF | MKLONG(2))
  850. X
  851. X/* Error/status defines. */
  852. X
  853. X#define GIF_NOFILE_E            MKERR(1, GIF_MODULE, ST_ERROR)
  854. X#define GIF_FILEERR_E           MKERR(2, GIF_MODULE, ST_ERROR)
  855. X#define GIF_NOTGIF_E            MKERR(3, GIF_MODULE, ST_ERROR)
  856. X#define GIF_UNEOF_E             MKERR(4, GIF_MODULE, ST_ERROR)
  857. X#define GIF_NOMEM_E             MKERR(5, GIF_MODULE, ST_ERROR)
  858. X#define GIF_BADSECTION_E        MKERR(6, GIF_MODULE, ST_ERROR)
  859. X
  860. X#define GIF_UNSUPRT_F           MKERR(1, GIF_MODULE, ST_FATAL)
  861. X#define GIF_BUG_F               MKERR(2, GIF_MODULE, ST_FATAL)
  862. X
  863. X
  864. X/*
  865. X** misc: copyright strings, version macros, etc.
  866. X*/
  867. X
  868. Xstatic char CONST RCSgif[] = "$Id: gif.h,v 1.3 1993/02/10 01:35:18 jwbirdsa Exp $";
  869. X
  870. X
  871. X/*
  872. X** typedefs
  873. X*/
  874. X
  875. Xtypedef struct gif_lsd {
  876. X    ULONG version;               /* the GIF format version */
  877. X    unsigned int scr_wid;        /* logical screen width */
  878. X    unsigned int scr_hi;         /* logical screen height */
  879. X    UCHAR raw_packed;            /* raw contents of packed fields */
  880. X    char gct_flag;               /* global color table flag */
  881. X    int clr_res;                 /* bits per color on source */
  882. X    char sort_flag;              /* global color table sorted flag */
  883. X    int gct_size;                /* bits per pixel in image */
  884. X    int background;              /* background color index */
  885. X    int aspect;                  /* numerator of aspect ratio */
  886. X} GIF_LSD;
  887. X
  888. Xtypedef struct gif_imd {
  889. X    unsigned int im_left;        /* column of left side of image */
  890. X    unsigned int im_top;         /* row of top of image */
  891. X    unsigned int im_wid;         /* width of image */
  892. X    unsigned int im_hi;          /* height of image */
  893. X    unsigned int raw_packed;     /* raw contents of packed fields */
  894. X    char lct_flag;               /* 1: local color table, 0: no lct */
  895. X    char interlace_flag;         /* 1: interlaced, 0: sequential */
  896. X    char sort_flag;              /* 1: lct sorted, 0: lct not sorted */
  897. X    int lct_size;                /* bits per pixel in image, if lct */
  898. X} GIF_IMD;
  899. X
  900. Xtypedef struct gif_gce {
  901. X    unsigned int delay;          /* delay time */
  902. X    int transparent;             /* index of transparent color */
  903. X    UCHAR raw_packed;            /* raw contents of packed fields */
  904. X    int disposal;                /* disposal method */
  905. X    char userinflag;             /* 1: user input expected, 0: not expected */
  906. X    char transflag;              /* 1: transparency enabled, 0: not */
  907. X} GIF_GCE;
  908. X
  909. Xtypedef struct gif_pte {
  910. X    unsigned int left;           /* column of left side of text grid */
  911. X    unsigned int top;            /* row of top of text grid */
  912. X    unsigned int wid;            /* width of grid, pixels */
  913. X    unsigned int hi;             /* height of grid, pixels */
  914. X    unsigned int cellwid;        /* character cell width, pixels */
  915. X    unsigned int cellhi;         /* character cell height, pixels */
  916. X    int forecolor;               /* text foreground color index */
  917. X    int backcolor;               /* text background color index */
  918. X    char *text;                  /* text buffer -- must be free()'ed */
  919. X    unsigned int textln;         /* text length */
  920. X} GIF_PTE;
  921. X
  922. Xtypedef struct gif_appl {
  923. X    char appl_id[GIF_APPL_APPLID_LEN];     /* application identifier */
  924. X    UCHAR appl_auth[GIF_APPL_AUTH_LEN];    /* application authentication */
  925. X    UCHAR *appldata;                       /* application data buffer -- */
  926. X                                           /* must be free()'ed */
  927. X    unsigned int appldatlen;               /* length of application data */
  928. X} GIF_APPL;
  929. X
  930. X
  931. X/*
  932. X** global variables
  933. X*/
  934. X
  935. X/*
  936. X** function prototypes
  937. X*/
  938. X
  939. X#ifdef  __STDC__
  940. X# define P_(s) s
  941. X#else
  942. X# define P_(s) ()
  943. X#endif
  944. X
  945. XULONG gif_verify P_((char *filename, ULONG *version, char **exts));
  946. X
  947. XULONG gif_lsdget P_((FILE *infile, GIF_LSD *results));
  948. XULONG gif_searchlsd P_((FB *infile, GIF_LSD *results, ULONG *skipped));
  949. XULONG gif_gctget P_((FB *infile, RGB_TRIPLET **gct, int colors));
  950. X
  951. XULONG gif_findnext P_((FB *infile, int *datatype, ULONG *skip, int *extype));
  952. X
  953. XULONG gif_imdget P_((FB *infile, GIF_IMD *imd));
  954. XULONG gif_lctget P_((FB *infile, RGB_TRIPLET **lct, int colors));
  955. X
  956. XULONG gif_skipsection P_((FB *infile));
  957. X
  958. XULONG gif_grafctrlext P_((FB *infile, GIF_GCE *gce));
  959. XULONG gif_commentext P_((FB *infile, char **text, unsigned *textln));
  960. XULONG gif_plaintextext P_((FB *infile, GIF_PTE *pte));
  961. XULONG gif_applext P_((FB *infile, GIF_APPL *appl));
  962. X
  963. XULONG gif_readblock P_((FB *infile, UCHAR **data, int *length));
  964. X
  965. Xchar *gif_errstring P_((ULONG errcode));
  966. X
  967. X#undef P_
  968. X
  969. X#endif /* GIF_H */
  970. X
  971. END_OF_FILE
  972.   if test 8525 -ne `wc -c <'src/gif.h'`; then
  973.     echo shar: \"'src/gif.h'\" unpacked with wrong size!
  974.   fi
  975.   # end of 'src/gif.h'
  976. fi
  977. if test -f 'src/gld.h' -a "${1}" != "-c" ; then 
  978.   echo shar: Will not clobber existing file \"'src/gld.h'\"
  979. else
  980.   echo shar: Extracting \"'src/gld.h'\" \(3472 characters\)
  981.   sed "s/^X//" >'src/gld.h' <<'END_OF_FILE'
  982. X/***************************************************************************
  983. X*   GLD.H                                                                  *
  984. X*   HEADER FOR GIF/LZW decode                                              *
  985. X*   OS:      UNIX                                                          *
  986. X*                                                                          *
  987. X*   Copyright (c) 1993 James W. Birdsall. All Rights Reserved.             *
  988. X*                                                                          *
  989. X*   $Id: gld.h,v 1.3 1993/02/10 01:36:25 jwbirdsa Exp $
  990. X*                                                                          *
  991. X*   Lempel-Ziv-Welch decoding for GIF files.                               *
  992. X*                                                                          *
  993. X***************************************************************************/
  994. X
  995. X#ifndef GLD_H
  996. X
  997. X#define GLD_H
  998. X
  999. X/*
  1000. X** system includes <>
  1001. X*/
  1002. X
  1003. X/*
  1004. X** custom includes ""
  1005. X*/
  1006. X
  1007. X#include "status.h"
  1008. X
  1009. X
  1010. X/*
  1011. X** local #defines
  1012. X*/
  1013. X
  1014. X#define MAXCODEBITS         12
  1015. X#define CODES               (0x1 << MAXCODEBITS)
  1016. X#define MAXCODE             (CODES - 1)
  1017. X
  1018. X/* error/status defines */
  1019. X
  1020. X#define GLD_EOI_S               MKERR(1, GLD_MODULE, ST_SUCCESS)
  1021. X#define GLD_CLEARED_S           MKERR(2, GLD_MODULE, ST_SUCCESS)
  1022. X
  1023. X#define GLD_NOMEM_E             MKERR(1, GLD_MODULE, ST_ERROR)
  1024. X#define GLD_BADHOLDSIZE_E       MKERR(2, GLD_MODULE, ST_ERROR)
  1025. X
  1026. X#define GLD_BADCODE_F           MKERR(1, GLD_MODULE, ST_FATAL)
  1027. X#define GLD_BUG_F               MKERR(2, GLD_MODULE, ST_FATAL)
  1028. X#define GLD_LENOVERFLOW_F       MKERR(3, GLD_MODULE, ST_FATAL)
  1029. X
  1030. X
  1031. X/*
  1032. X** misc: copyright strings, version macros, etc.
  1033. X*/
  1034. X
  1035. Xstatic char CONST RCSgld[] = "$Id: gld.h,v 1.3 1993/02/10 01:36:25 jwbirdsa Exp $";
  1036. X
  1037. X
  1038. X/*
  1039. X** typedefs
  1040. X*/
  1041. X
  1042. X/*
  1043. X** NOTES ABOUT CODEINFO STRUCTURE:
  1044. X**   If stringlen == 1, then firstchar == lastchar, root entry!
  1045. X**                   2, whole string is firstchar, lastchar
  1046. X**                   3, whole string is firstchar, buf[0], lastchar
  1047. X**                   4, whole string is firstchar, buf[0], buf[1], lastchar
  1048. X**                >= 5, trace back through prevind entries until hit
  1049. X**                      one that has length 4 or one with prevind > 4096,
  1050. X**                      which means entire string is stored in holding buffer
  1051. X**                <  0, special meanings
  1052. X*/
  1053. Xtypedef struct {
  1054. X    int stringlen;                /* length of decoded string */
  1055. X    UCHAR firstchar;              /* first char of decoded string */
  1056. X    union {
  1057. X        unsigned int prevind;     /* index of prefix string code */
  1058. X        char buf[2];              /* parts of string */
  1059. X    } pb;
  1060. X    UCHAR lastchar;               /* last character of decoded string */
  1061. X} codeinfo;
  1062. X
  1063. X
  1064. X/*
  1065. X** global variables
  1066. X*/
  1067. X
  1068. X/* Variables which control decoding. */
  1069. X
  1070. Xextern unsigned int gld_hopsmax;
  1071. X
  1072. X/* Statistics from decoding. */
  1073. X
  1074. Xextern unsigned int gld_holdmax;
  1075. Xextern ULONG gld_codes;
  1076. Xextern UCHAR gld_indused[];
  1077. Xextern unsigned int gld_colors;
  1078. Xextern unsigned int gld_clears;
  1079. Xextern ULONG gld_pixout;
  1080. X
  1081. X
  1082. X/*
  1083. X** function prototypes
  1084. X*/
  1085. X
  1086. X#ifdef __STDC__
  1087. X# define P_(s) s
  1088. X#else
  1089. X# define P_(s) ()
  1090. X#endif
  1091. X
  1092. XULONG gld_init P_((int min_codesize, int truebits, codeinfo *table, UCHAR *savebuf, unsigned int savebuflen));
  1093. XULONG gld_process P_((int length, UCHAR *codes, UCHAR *buffer, long buflen, VOID (*callback)(long, UCHAR **, long *, long *)));
  1094. X
  1095. Xchar *gld_errstring P_((ULONG errcode));
  1096. X
  1097. X#undef P_
  1098. X
  1099. X#endif /* GLD_H */
  1100. X
  1101. END_OF_FILE
  1102.   if test 3472 -ne `wc -c <'src/gld.h'`; then
  1103.     echo shar: \"'src/gld.h'\" unpacked with wrong size!
  1104.   fi
  1105.   # end of 'src/gld.h'
  1106. fi
  1107. if test -f 'src/pcx.h' -a "${1}" != "-c" ; then 
  1108.   echo shar: Will not clobber existing file \"'src/pcx.h'\"
  1109. else
  1110.   echo shar: Extracting \"'src/pcx.h'\" \(3558 characters\)
  1111.   sed "s/^X//" >'src/pcx.h' <<'END_OF_FILE'
  1112. X/***************************************************************************
  1113. X*   PCX.H                                                                  *
  1114. X*   HEADER FOR PCX                                                         *
  1115. X*   OS:      UNIX                                                          *
  1116. X*                                                                          *
  1117. X*   Copyright (c) 1993 James W. Birdsall. All Rights Reserved.             *
  1118. X*                                                                          *
  1119. X*   $Id: pcx.h,v 1.0 1993/02/10 01:42:44 jwbirdsa Exp $
  1120. X*                                                                          *
  1121. X*   This file specifies the external interface to the PCX module.          *
  1122. X*                                                                          *
  1123. X***************************************************************************/
  1124. X
  1125. X#ifndef DEPEND_H
  1126. X    **** ERROR ****    MUST INCLUDE DEPEND.H BEFORE PCX.H
  1127. X#endif
  1128. X
  1129. X#ifndef PCX_H
  1130. X
  1131. X#define PCX_H
  1132. X
  1133. X/*
  1134. X** system includes <>
  1135. X*/
  1136. X
  1137. X/*
  1138. X** custom includes ""
  1139. X*/
  1140. X
  1141. X#include "status.h"
  1142. X
  1143. X
  1144. X/*
  1145. X** local #defines
  1146. X*/
  1147. X
  1148. X/* Version defines. */
  1149. X
  1150. X#define PCX_NOT            FORMAT_NOT
  1151. X#define PCX_VER25          (FORMAT_PCX | MKLONG(1))
  1152. X#define PCX_VER28          (FORMAT_PCX | MKLONG(2))
  1153. X#define PCX_VER28P         (FORMAT_PCX | MKLONG(3))
  1154. X#define PCX_VER30          (FORMAT_PCX | MKLONG(4))
  1155. X
  1156. X/* Offsets in header. */
  1157. X
  1158. X#define PCX_HDR_MAGIC_OFF  0
  1159. X#define PCX_HDR_VERS_OFF   1
  1160. X#define PCX_HDR_ENC_OFF    2
  1161. X#define PCX_HDR_BITS_OFF   3
  1162. X#define PCX_HDR_XMIN_OFF   4
  1163. X#define PCX_HDR_YMIN_OFF   6
  1164. X#define PCX_HDR_XMAX_OFF   8
  1165. X#define PCX_HDR_YMAX_OFF   10
  1166. X#define PCX_HDR_HRES_OFF   12
  1167. X#define PCX_HDR_VRES_OFF   14
  1168. X#define PCX_HDR_CMAP_OFF   16
  1169. X#define PCX_HDR_ZERO_OFF   64
  1170. X#define PCX_HDR_PLANES_OFF 65
  1171. X#define PCX_HDR_BYTLIN_OFF 66
  1172. X#define PCX_HDR_PFMT_OFF   68
  1173. X#define PCX_HDR_FILLER_OFF 70
  1174. X
  1175. X#define PCX_HDR_LEN        70
  1176. X#define PCX_HDR_MAXLEN     128
  1177. X
  1178. X/* PCX magic and version numbers. */
  1179. X
  1180. X#define PCX_MAGIC          10
  1181. X
  1182. X#define PCX_VER25_MAGIC    0
  1183. X#define PCX_VER28_MAGIC    3
  1184. X#define PCX_VER28P_MAGIC   2
  1185. X#define PCX_VER30_MAGIC    5
  1186. X
  1187. X/* Error/status defines. */
  1188. X
  1189. X#define PCX_NOTPCX_E       MKERR(1, PCX_MODULE, ST_ERROR)
  1190. X#define PCX_FILEERR_E      MKERR(2, PCX_MODULE, ST_ERROR)
  1191. X#define PCX_UNEOF_E        MKERR(3, PCX_MODULE, ST_ERROR)
  1192. X
  1193. X
  1194. X/*
  1195. X** misc: copyright strings, version macros, etc.
  1196. X*/
  1197. X
  1198. Xstatic char CONST RCSpcx[] = "$Id: pcx.h,v 1.0 1993/02/10 01:42:44 jwbirdsa Exp $";
  1199. X
  1200. X
  1201. X/*
  1202. X** typedefs
  1203. X*/
  1204. X
  1205. Xtypedef struct {
  1206. X    ULONG version;                  /* the PCX format version */
  1207. X    unsigned int planes;            /* color planes, aka bits/pixel */
  1208. X    unsigned int pixbits;           /* bits per pixel */
  1209. X    unsigned int imwid;             /* image width, pixels */
  1210. X    unsigned int imhi;              /* image height, pixels */
  1211. X    unsigned int imleft;            /* left corner of image */
  1212. X    unsigned int imtop;             /* top of image */
  1213. X    unsigned int encoding;          /* data encoding */
  1214. X    unsigned int hres;              /* horizontal resolution of creator */
  1215. X    unsigned int vres;              /* vertical resolution of creator */
  1216. X    unsigned int palfmt;            /* palette format */
  1217. X} PCX_HDR;
  1218. X
  1219. X
  1220. X/*
  1221. X** global variables
  1222. X*/
  1223. X
  1224. X/*
  1225. X** function prototypes
  1226. X*/
  1227. X
  1228. X#ifdef  __STDC__
  1229. X# define P_(s) s
  1230. X#else
  1231. X# define P_(s) ()
  1232. X#endif
  1233. X
  1234. XULONG pcx_verify P_((char *filename, ULONG *version, char **exts));
  1235. X
  1236. XULONG pcx_getheader P_((FILE *infile, PCX_HDR *results));
  1237. X
  1238. Xchar *pcx_errstring P_((ULONG errcode));
  1239. X
  1240. X#undef P_
  1241. X
  1242. X#endif /* PCX_H */
  1243. X
  1244. END_OF_FILE
  1245.   if test 3558 -ne `wc -c <'src/pcx.h'`; then
  1246.     echo shar: \"'src/pcx.h'\" unpacked with wrong size!
  1247.   fi
  1248.   # end of 'src/pcx.h'
  1249. fi
  1250. if test -f 'src/re.h' -a "${1}" != "-c" ; then 
  1251.   echo shar: Will not clobber existing file \"'src/re.h'\"
  1252. else
  1253.   echo shar: Extracting \"'src/re.h'\" \(2225 characters\)
  1254.   sed "s/^X//" >'src/re.h' <<'END_OF_FILE'
  1255. X/***************************************************************************
  1256. X*   RE.H                                                                   *
  1257. X*   part of FORMATS module header                                          *
  1258. X*   OS:      UNIX                                                          *
  1259. X*                                                                          *
  1260. X*   Copyright (c) 1993 James W. Birdsall. All Rights Reserved.             *
  1261. X*                                                                          *
  1262. X*   $Id: re.h,v 1.1 1993/03/18 21:14:48 jwbirdsa Exp $                                                                  *
  1263. X*                                                                          *
  1264. X*   This file specifies the external interface to the format recognizer    *
  1265. X*   functions.                                                             *
  1266. X*                                                                          *
  1267. X***************************************************************************/
  1268. X
  1269. X#ifndef DEPEND_H
  1270. X    **** ERROR **** MUST INCLUDE DEPEND.H BEFORE RE.H
  1271. X#endif
  1272. X#ifndef FORMATS_H
  1273. X    **** ERROR **** MUST INCLUDE FORMATS.H BEFORE RE.H
  1274. X#endif
  1275. X
  1276. X#ifndef RE_H
  1277. X
  1278. X#define RE_H
  1279. X
  1280. X/*
  1281. X** custom includes ""
  1282. X*/
  1283. X
  1284. X#include "status.h"
  1285. X
  1286. X
  1287. X/*
  1288. X** local #defines
  1289. X*/
  1290. X
  1291. X/* error/status defines */
  1292. X
  1293. X#define FM_UNRECOGNIZED_W   MKERR(1, FM_MODULE, ST_WARNING)
  1294. X#define FM_EOF_W            MKERR(2, FM_MODULE, ST_WARNING)
  1295. X#define FM_NOCFGFILE_W      MKERR(3, FM_MODULE, ST_WARNING)
  1296. X
  1297. X#define FM_READERR_E        MKERR(1, FM_MODULE, ST_ERROR)
  1298. X#define FM_FILEERR_E        MKERR(2, FM_MODULE, ST_ERROR)
  1299. X
  1300. X#define FM_NOMEM_F          MKERR(1, FM_MODULE, ST_FATAL)
  1301. X
  1302. X
  1303. X/*
  1304. X** misc: copyright strings, version macros, etc.
  1305. X*/
  1306. X
  1307. Xstatic char CONST RCSre[] = "$Id: re.h,v 1.1 1993/03/18 21:14:48 jwbirdsa Exp $";
  1308. X
  1309. X
  1310. X/*
  1311. X** typedefs
  1312. X*/
  1313. X
  1314. X/*
  1315. X** global variables
  1316. X*/
  1317. X
  1318. X/*
  1319. X** function prototypes
  1320. X*/
  1321. X
  1322. X#ifdef  __STDC__
  1323. X# define P_(s) s
  1324. X#else
  1325. X# define P_(s) ()
  1326. X#endif
  1327. X
  1328. XULONG re_ident P_((char *filename, ULONG *format));
  1329. XULONG re_init P_((char *progname, char *cfg_name, char *envvar));
  1330. XVOID re_deinit();
  1331. Xchar **re_extlist P_((char *fortype));
  1332. X
  1333. Xchar *re_errstring P_((ULONG errcode));
  1334. X
  1335. X#undef P_
  1336. X
  1337. X#endif /* RE_H */
  1338. X
  1339. END_OF_FILE
  1340.   if test 2225 -ne `wc -c <'src/re.h'`; then
  1341.     echo shar: \"'src/re.h'\" unpacked with wrong size!
  1342.   fi
  1343.   # end of 'src/re.h'
  1344. fi
  1345. if test -f 'src/status.h' -a "${1}" != "-c" ; then 
  1346.   echo shar: Will not clobber existing file \"'src/status.h'\"
  1347. else
  1348.   echo shar: Extracting \"'src/status.h'\" \(4521 characters\)
  1349.   sed "s/^X//" >'src/status.h' <<'END_OF_FILE'
  1350. X/***************************************************************************
  1351. X*   STATUS.H                                                               *
  1352. X*   Status code header.                                                    *
  1353. X*   OS:      UNIX                                                          *
  1354. X*                                                                          *
  1355. X*   Copyright 1993 by James W. Birdsall, all rights reserved.              *
  1356. X*                                                                          *
  1357. X*   $Id: status.h,v 1.5 1993/02/10 01:52:44 jwbirdsa Exp $
  1358. X*                                                                          *
  1359. X*   This file contains definitions for module and severity codes which     *
  1360. X*   are used in error/status return codes.                                 *
  1361. X*                                                                          *
  1362. X*   Each module has a specific code, which occupies bits 16-25,            *
  1363. X*   allowing for 1023 modules (code 0 is reserved).                        *
  1364. X*                                                                          *
  1365. X*   Bits 0-1 are the severity code.                                        *
  1366. X*                                                                          *
  1367. X*   Bits 2-15 are the error/status code itself.                            *
  1368. X*                                                                          *
  1369. X*   Code 0L is reserved for success.                                       *
  1370. X*                                                                          *
  1371. X***************************************************************************/
  1372. X
  1373. X#ifndef DEPEND_H
  1374. X    **** ERROR **** MUST INCLUDE DEPEND.H BEFORE STATUS.H
  1375. X#endif
  1376. X
  1377. X#ifndef __STATUS__
  1378. X
  1379. X#define __STATUS__
  1380. X
  1381. X/*
  1382. X** #defines
  1383. X*/
  1384. X
  1385. X/* Field masks and shift constants. */
  1386. X
  1387. X#define ST_SEVER_MASK   MKLONG(0x00000003)  /* severity code mask */
  1388. X#define ST_MOD_MASK     MKLONG(0x03FF0000)  /* module code mask */
  1389. X#define ST_CODE_MASK    MKLONG(0x0000FFFC)  /* error code mask */
  1390. X
  1391. X#define ST_SEVER_SHIFT  0                   /* shift of severity to bit 0 */
  1392. X#define ST_MOD_SHIFT    16                  /* shift of module to bit 0 */
  1393. X#define ST_CODE_SHIFT   2                   /* shift of code to bit 0 */
  1394. X
  1395. X/* Severity codes. */
  1396. X
  1397. X#define ST_SUCCESS      MKLONG(0x00000000)  /* success */
  1398. X#define ST_WARNING      MKLONG(0x00000001)  /* warning */
  1399. X#define ST_ERROR        MKLONG(0x00000002)  /* error */
  1400. X#define ST_FATAL        MKLONG(0x00000003)  /* fatal error, module munged */
  1401. X
  1402. X/* Module codes. */
  1403. X
  1404. X#define FB_MODULE       MKLONG(0x00010000)  /* FB (file buffer) module */
  1405. X#define GIF_MODULE      MKLONG(0x00020000)  /* GIF (GIF format processor) */
  1406. X#define MF_MODULE       MKLONG(0x00030000)  /* MF (memfile) module */
  1407. X#define GLD_MODULE      MKLONG(0x00040000)  /* GLD (GIF/LZW decode) module */
  1408. X#define IMG_MODULE      MKLONG(0x00050000)  /* IMG (IMG format processor) */
  1409. X#define JFIF_MODULE     MKLONG(0x00060000)  /* JFIF (JFIF format processor) */
  1410. X#define FM_MODULE       MKLONG(0x00070000)  /* FM (formats) module */
  1411. X#define SR_MODULE       MKLONG(0x00080000)  /* SR (Sun Raster format proc) */
  1412. X#define TGA_MODULE      MKLONG(0x00090000)  /* TGA (Targa format processor) */
  1413. X#define PBM_MODULE      MKLONG(0x000A0000)  /* PBM format processor */
  1414. X#define PGM_MODULE      MKLONG(0x000B0000)  /* PGM format processor */
  1415. X#define PPM_MODULE      MKLONG(0x000C0000)  /* PPM format processor */
  1416. X#define XBM_MODULE      MKLONG(0x000D0000)  /* XBM format processor */
  1417. X#define BMP_MODULE      MKLONG(0x000E0000)  /* BMP format processor */
  1418. X#define PCX_MODULE      MKLONG(0x000F0000)  /* PCX format processor */
  1419. X
  1420. X/* SUCCESS() returns 0L if code was a success code, nonzero otherwise. */
  1421. X
  1422. X#define SUCCESS(x)      ((x) & ST_SEVER_MASK)
  1423. X
  1424. X/* Crack an error code into its component parts. */
  1425. X
  1426. X#define SEVERITY(x)     ((int)(((x) & ST_SEVER_MASK) >> ST_SEVER_SHIFT))
  1427. X#define MODULE(x)       ((int)(((x) & ST_MOD_MASK) >> ST_MOD_SHIFT))
  1428. X#define ERRCODE(x)      ((int)(((x) & ST_CODE_MASK) >> ST_CODE_SHIFT))
  1429. X#define ERRSEV(x)       (SEVERITY(x) | (ERRCODE(x) << ST_CODE_SHIFT))
  1430. X
  1431. X/* Create an error code from its component parts. */
  1432. X
  1433. X#define MKERR(c,m,s)    ((MKLONG(c) << ST_CODE_SHIFT) | (m) | (s))
  1434. X
  1435. X
  1436. X/*
  1437. X** misc: copyright strings, version macros, etc.
  1438. X*/
  1439. X
  1440. Xstatic char CONST RCSstatus[] = "$Id: status.h,v 1.5 1993/02/10 01:52:44 jwbirdsa Exp $";
  1441. X
  1442. X
  1443. X/*
  1444. X** typedefs
  1445. X*/
  1446. X
  1447. X/*
  1448. X** global variables
  1449. X*/
  1450. X
  1451. X/*
  1452. X** function prototypes
  1453. X*/
  1454. X
  1455. X
  1456. X#endif /* STATUS_H */
  1457. X
  1458. END_OF_FILE
  1459.   if test 4521 -ne `wc -c <'src/status.h'`; then
  1460.     echo shar: \"'src/status.h'\" unpacked with wrong size!
  1461.   fi
  1462.   # end of 'src/status.h'
  1463. fi
  1464. if test -f 'src/stdinarg.c' -a "${1}" != "-c" ; then 
  1465.   echo shar: Will not clobber existing file \"'src/stdinarg.c'\"
  1466. else
  1467.   echo shar: Extracting \"'src/stdinarg.c'\" \(5426 characters\)
  1468.   sed "s/^X//" >'src/stdinarg.c' <<'END_OF_FILE'
  1469. X/***************************************************************************
  1470. X*   STDINARG.C                                                             *
  1471. X*   MODULE:  -                                                             *
  1472. X*   OS:      UNIX                                                          *
  1473. X*                                                                          *
  1474. X*   Copyright (c) 1993 James W. Birdsall. All Rights Reserved.             *
  1475. X*                                                                          *
  1476. X*   The Graphics Interchange Format(c) is the Copyright property of        *
  1477. X*   CompuServe Incorporated. GIF(sm) is a Service Mark property of         *
  1478. X*   CompuServe Incorporated.                                               *
  1479. X*                                                                          *
  1480. X*   $Id: stdinarg.c,v 1.0 1993/02/10 01:55:19 jwbirdsa Exp $
  1481. X*                                                                          *
  1482. X*   Load arguments from stdin.                                             *
  1483. X*                                                                          *
  1484. X***************************************************************************/
  1485. X
  1486. X#include "config.h"
  1487. X
  1488. X/*
  1489. X** system includes <>
  1490. X*/
  1491. X
  1492. X#include <stdio.h>
  1493. X#ifndef NO_MALLOCHDR
  1494. X#include <malloc.h>
  1495. X#endif
  1496. X#ifndef NO_STR_INC
  1497. X#ifdef STRING_PLURAL
  1498. X#include <strings.h>
  1499. X#else
  1500. X#include <string.h>
  1501. X#endif
  1502. X#endif
  1503. X
  1504. X
  1505. X/*
  1506. X** custom includes ""
  1507. X*/
  1508. X
  1509. X#include "depend.h"
  1510. X
  1511. X#include "stdinarg.h"
  1512. X
  1513. X
  1514. X/*
  1515. X** local #defines
  1516. X*/
  1517. X
  1518. X/*
  1519. X** misc: copyright strings, version macros, etc.
  1520. X*/
  1521. X
  1522. Xstatic char CONST rcsid[] = "$Id: stdinarg.c,v 1.0 1993/02/10 01:55:19 jwbirdsa Exp $";
  1523. X
  1524. X
  1525. X/*
  1526. X** typedefs
  1527. X*/
  1528. X
  1529. X/*
  1530. X** global variables
  1531. X*/
  1532. X
  1533. X/*
  1534. X** static globals
  1535. X*/
  1536. X
  1537. X/*
  1538. X** function prototypes
  1539. X*/
  1540. X
  1541. X#ifdef NO_STR_INC
  1542. X#ifndef NO_STRDUP
  1543. Xextern char *strdup();
  1544. X#endif
  1545. X#endif
  1546. X
  1547. X
  1548. X/*
  1549. X** functions
  1550. X*/
  1551. X
  1552. X/***************************************************************************
  1553. X*   FUNCTION:  stdinload                                                   *
  1554. X*                                                                          *
  1555. X*   DESCRIPTION:                                                           *
  1556. X*                                                                          *
  1557. X*      This function loads targets from stdin when using CHILS as a front  *
  1558. X*      end, or a response file.                                            *
  1559. X*                                                                          *
  1560. X*   ENTRY:                                                                 *
  1561. X*                                                                          *
  1562. X*      argcc - pointer to int in which to return number of targets         *
  1563. X*                                                                          *
  1564. X*   EXIT:                                                                  *
  1565. X*                                                                          *
  1566. X*      Returns an argv[]-style array of target strings, or NULL on error.  *
  1567. X*                                                                          *
  1568. X*   CONSTRAINTS/SIDE EFFECTS:                                              *
  1569. X*                                                                          *
  1570. X***************************************************************************/
  1571. Xchar **
  1572. X#ifdef __STDC__
  1573. Xstdinload(int *argcc)
  1574. X#else
  1575. Xstdinload(argcc)
  1576. Xint *argcc;
  1577. X#endif
  1578. X{
  1579. X    struct inlist {
  1580. X        char *target;
  1581. X        struct inlist *next;
  1582. X    } *top, *temp;
  1583. X    int intarget, loop;
  1584. X    char **argvv;
  1585. X    char buffer[128];
  1586. X
  1587. X    /* Setup. */
  1588. X
  1589. X    top = NULL;
  1590. X    intarget = 0;
  1591. X
  1592. X    /* Read from stdin until EOF. */
  1593. X
  1594. X    while (gets(buffer) != NULL)
  1595. X    {
  1596. X        /* If blank line read, ignore. */
  1597. X
  1598. X        if ('\0' == buffer[0])
  1599. X        {
  1600. X            continue;
  1601. X        }
  1602. X
  1603. X        /* Allocate a new element for linked list. */
  1604. X
  1605. X        if ((temp = (struct inlist *) malloc(sizeof(struct inlist))) == 
  1606. X             (struct inlist *) NULL)
  1607. X        {
  1608. X            while (top)
  1609. X            {
  1610. X                temp = top;
  1611. X                free(top->target);
  1612. X                free(top);
  1613. X                top = temp;
  1614. X            }
  1615. X            return NULL;
  1616. X        }
  1617. X
  1618. X        /* Duplicate buffer into list. */
  1619. X
  1620. X        temp->target = strdup(buffer);
  1621. X        if (NULL == temp->target)
  1622. X        {
  1623. X            while (top)
  1624. X            {
  1625. X                temp = top;
  1626. X                free(top->target);
  1627. X                free(top);
  1628. X                top = temp;
  1629. X            }
  1630. X            return NULL;
  1631. X        }
  1632. X
  1633. X        /* Place new element on top of list. */
  1634. X
  1635. X        temp->next = top;
  1636. X        top = temp;
  1637. X        intarget++;
  1638. X    }
  1639. X
  1640. X    /* Compensate for fact that first argument is always program name. */
  1641. X
  1642. X    intarget++;
  1643. X
  1644. X    /* Allocate space for array of pointers. */
  1645. X
  1646. X    if ((argvv = (char **) calloc(intarget, sizeof(char *))) == NULL)
  1647. X    {
  1648. X        while (top)
  1649. X        {
  1650. X            temp = top;
  1651. X            free(top->target);
  1652. X            free(top);
  1653. X            top = temp;
  1654. X        }
  1655. X        return NULL;
  1656. X    }
  1657. X
  1658. X    /* Copy pointers to filenames into array. */
  1659. X
  1660. X    for(loop = 1; top; loop++)
  1661. X    {
  1662. X        argvv[loop] = top->target;
  1663. X
  1664. X        /* And free linked list elements. */
  1665. X
  1666. X        temp = top;
  1667. X        top = top->next;
  1668. X        free(temp);
  1669. X    }
  1670. X
  1671. X    /* Return pointer to array and number of arguments. */
  1672. X
  1673. X    *argcc = intarget;
  1674. X
  1675. X    return argvv;
  1676. X} /* end of stdinload() */
  1677. X
  1678. END_OF_FILE
  1679.   if test 5426 -ne `wc -c <'src/stdinarg.c'`; then
  1680.     echo shar: \"'src/stdinarg.c'\" unpacked with wrong size!
  1681.   fi
  1682.   # end of 'src/stdinarg.c'
  1683. fi
  1684. if test -f 'src/tga.h' -a "${1}" != "-c" ; then 
  1685.   echo shar: Will not clobber existing file \"'src/tga.h'\"
  1686. else
  1687.   echo shar: Extracting \"'src/tga.h'\" \(3490 characters\)
  1688.   sed "s/^X//" >'src/tga.h' <<'END_OF_FILE'
  1689. X/***************************************************************************
  1690. X*   TGA.H                                                                  *
  1691. X*   HEADER FOR TGA (Targa file processor)                                  *
  1692. X*   OS:      UNIX                                                          *
  1693. X*                                                                          *
  1694. X*   Copyright (c) 1993 James W. Birdsall. All Rights Reserved.             *
  1695. X*                                                                          *
  1696. X*   $Id: tga.h,v 1.0 1993/02/10 01:44:41 jwbirdsa Exp $
  1697. X*                                                                          *
  1698. X*   This file specifies the external interface to the TGA module.          *
  1699. X*                                                                          *
  1700. X***************************************************************************/
  1701. X
  1702. X#ifndef DEPEND_H
  1703. X    **** ERROR ****    MUST INCLUDE DEPEND.H BEFORE TGA.H
  1704. X#endif
  1705. X
  1706. X#ifndef TGA_H
  1707. X
  1708. X#define TGA_H
  1709. X
  1710. X/*
  1711. X** system includes <>
  1712. X*/
  1713. X
  1714. X/*
  1715. X** custom includes ""
  1716. X*/
  1717. X
  1718. X#include "status.h"
  1719. X
  1720. X
  1721. X/*
  1722. X** local #defines
  1723. X*/
  1724. X
  1725. X/* Version defines. */
  1726. X
  1727. X#define TGA_NOT               FORMAT_NOT
  1728. X#define TGA_1                 (FORMAT_TGA | MKLONG(1))
  1729. X
  1730. X/* Offsets in header. */
  1731. X
  1732. X#define TGA_HDR_IDLEN_OFF     0
  1733. X#define TGA_HDR_MTYPE_OFF     1
  1734. X#define TGA_HDR_TYPE_OFF      2
  1735. X#define TGA_HDR_MORG_OFF      3
  1736. X#define TGA_HDR_MLEN_OFF      5
  1737. X#define TGA_HDR_MESIZ_OFF     7
  1738. X#define TGA_HDR_IMXORG_OFF    8
  1739. X#define TGA_HDR_IMYORG_OFF    10
  1740. X#define TGA_HDR_IMWID_OFF     12
  1741. X#define TGA_HDR_IMHI_OFF      14
  1742. X#define TGA_HDR_BITS_OFF      16
  1743. X#define TGA_HDR_RAW_OFF       17
  1744. X
  1745. X#define TGA_HDR_LEN           18
  1746. X
  1747. X/* Masks and shifts for raw bitfield. */
  1748. X
  1749. X#define TGA_MASK_ATTRBITS     0x0F
  1750. X#define TGA_SHIFT_ATTRBITS    0
  1751. X#define TGA_MASK_INTERLEAVE   0xC0
  1752. X#define TGA_SHIFT_INTERLEAVE  6
  1753. X
  1754. X/* Error/status defines. */
  1755. X
  1756. X#define TGA_NOTTGA_E          MKERR(1, TGA_MODULE, ST_ERROR)
  1757. X#define TGA_FILEERR_E         MKERR(2, TGA_MODULE, ST_ERROR)
  1758. X#define TGA_UNEOF_E           MKERR(3, TGA_MODULE, ST_ERROR)
  1759. X
  1760. X
  1761. X/*
  1762. X** misc: copyright strings, version macros, etc.
  1763. X*/
  1764. X
  1765. Xstatic char CONST RCStga[] = "$Id: tga.h,v 1.0 1993/02/10 01:44:41 jwbirdsa Exp $";
  1766. X
  1767. X
  1768. X/*
  1769. X** typedefs
  1770. X*/
  1771. X
  1772. Xtypedef struct {
  1773. X    int idfieldlen;                 /* ID field length, usually 0 */
  1774. X    int maptype;                    /* type of colormap */
  1775. X    int type;                       /* image type */
  1776. X    unsigned int maporg;            /* origin of colormap */
  1777. X    unsigned int maplen;            /* length of the colormap, entries */
  1778. X    int mapentsize;                 /* size of colormap entry, bits */
  1779. X    unsigned int imxorg;            /* X origin of image */
  1780. X    unsigned int imyorg;            /* Y origin of image */
  1781. X    unsigned int imwid;             /* image width, pixels */
  1782. X    unsigned int imhi;              /* image height, pixels */
  1783. X    int pixelbits;                  /* bits per pixel */
  1784. X    UCHAR raw;                      /* raw contents of bitfield */
  1785. X    int attrbits;                   /* raw: attribute bits per pixel */
  1786. X    int interleave;                 /* raw: interleave type */
  1787. X} TGA_HDR;
  1788. X
  1789. X
  1790. X/*
  1791. X** global variables
  1792. X*/
  1793. X
  1794. X/*
  1795. X** function prototypes
  1796. X*/
  1797. X
  1798. X#ifdef  __STDC__
  1799. X# define P_(s) s
  1800. X#else
  1801. X# define P_(s) ()
  1802. X#endif
  1803. X
  1804. XULONG tga_verify P_((char *filename, ULONG *version, char **exts));
  1805. X
  1806. XULONG tga_getheader P_((FILE *infile, TGA_HDR *results));
  1807. X
  1808. Xchar *tga_errstring P_((ULONG errcode));
  1809. X
  1810. X#undef P_
  1811. X
  1812. X#endif /* TGA_H */
  1813. X
  1814. END_OF_FILE
  1815.   if test 3490 -ne `wc -c <'src/tga.h'`; then
  1816.     echo shar: \"'src/tga.h'\" unpacked with wrong size!
  1817.   fi
  1818.   # end of 'src/tga.h'
  1819. fi
  1820. echo shar: End of archive 17 \(of 18\).
  1821. cp /dev/null ark17isdone
  1822. MISSING=""
  1823. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do
  1824.     if test ! -f ark${I}isdone ; then
  1825.     MISSING="${MISSING} ${I}"
  1826.     fi
  1827. done
  1828. if test "${MISSING}" = "" ; then
  1829.     echo You have unpacked all 18 archives.
  1830.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1831. else
  1832.     echo You still must unpack the following archives:
  1833.     echo "        " ${MISSING}
  1834. fi
  1835. exit 0
  1836. exit 0 # Just in case...
  1837.