home *** CD-ROM | disk | FTP | other *** search
/ Fractal Frenzy 1 / WalnutCreekFractalFrenzy-1.iso / pc / viewers / x11 / xv221.tz / xv221 / xv-2.21 / xv.h < prev    next >
C/C++ Source or Header  |  1992-04-29  |  39KB  |  1,218 lines

  1. /*
  2.  *  xv.h  -  header file for xv, but you probably guessed as much
  3.  * 
  4.  *  Author:    John Bradley, University of Pennsylvania
  5.  *                (bradley@cis.upenn.edu)
  6.  */
  7.  
  8. /*
  9.  * Copyright 1989, 1990, 1991, 1992 by John Bradley and 
  10.  *                       The University of Pennsylvania
  11.  *
  12.  * Permission to use, copy, and distribute for non-commercial purposes,
  13.  * is hereby granted without fee, providing that the above copyright
  14.  * notice appear in all copies and that both the copyright notice and this
  15.  * permission notice appear in supporting documentation. 
  16.  *
  17.  * The software may be modified for your own purposes, but modified versions
  18.  * may not be distributed.
  19.  *
  20.  * This software is provided "as is" without any expressed or implied warranty.
  21.  *
  22.  * The author may be contacted via:
  23.  *    US Mail:   John Bradley
  24.  *               GRASP Lab, Room 301C
  25.  *               3401 Walnut St.  
  26.  *               Philadelphia, PA  19104
  27.  *
  28.  *    Phone:     (215) 898-8813
  29.  *    EMail:     bradley@cis.upenn.edu       
  30.  */
  31.  
  32.  
  33. #define REVDATE   "Version 2.21  Rev: 4/29/92"
  34.  
  35.  
  36. /*************************************************/
  37. /* START OF MACHINE-DEPENDENT CONFIGURATION INFO */
  38. /*************************************************/
  39.  
  40. #ifdef __UMAXV__              /* for Encore Computers UMAXV */
  41. #include <sys/fs/b4param.h>   /* Get bsd fast file system params*/
  42. #endif
  43.  
  44. #ifndef VMS   /* VMS doesn't like multi-line '#if's */
  45.   /* AIX and SysV r4 (but not sgi or UMAXV) use dirent */
  46. # if   (defined(SVR4) && !defined(sgi) && !defined(__UMAXV__)) \
  47.        || defined(_IBMR2) || defined(sco)
  48. #  ifndef DIRENT
  49. #   define DIRENT
  50. #  endif
  51. # endif
  52. #endif /* !VMS */
  53.  
  54.  
  55. /* include files */
  56. #include <stdio.h>
  57. #include <math.h>
  58. #include <ctype.h>
  59.  
  60.  
  61. /* include the appropriate string header file */ 
  62. #if defined(SVR4) || defined(__convex__) || defined(VMS)
  63. #include <string.h>
  64. #define index strchr
  65. #define rindex strrchr
  66. #else
  67. #include <strings.h>
  68. #endif
  69.  
  70.  
  71. #if defined(SVR4) || defined(hpux)
  72. #define GETWD(x) getcwd(x, sizeof(x))
  73. #else
  74. #define GETWD(x) getwd(x)
  75. #endif
  76.  
  77.  
  78. #if defined(apollo) || defined(pyr)
  79. /* DomainOS 10.2 BSD4.3 version of str[r]chr is broken ([r]index works) */
  80. /* pyramid bsd doesn't have str[r]chr */
  81. #define strchr index
  82. #define strrchr rindex
  83. #endif
  84.  
  85. #ifndef VMS
  86. extern int   errno;             /* this SHOULD be in errno.h */
  87. extern char *sys_errlist[];     /* this SHOULD be in errno.h */
  88. #endif
  89.  
  90. #ifndef VMS     /* VMS hates multi-line '#if's */
  91.   /* lots of machines don't have <memory.h> */
  92. # if !defined(__convex__) && \
  93.      !defined(__UMAXV__)  && \
  94.      !defined(pyr)        && \
  95.      !defined(sequent)
  96. # include <memory.h>             /* for 'memset()' prototype */
  97. # endif
  98. #endif /* !VMS */
  99.  
  100. #ifdef VMS   /* VMS config, hacks & kludges */
  101. #define DIRENT 1
  102. #define MAXPATHLEN    512
  103. #define popUp xv_popup
  104. #define qsort xv_qsort
  105. #define bzero(s,size) memset(s,0,size)
  106. #define bcmp(s1,s2,size) xv_bcmp((char *)s1,(char *)s2,size)
  107. #define random rand
  108. #define cols xv_cols
  109. typedef unsigned long u_long;
  110. #include <errno.h>              /* in VMS they *are* in errno.h */
  111. #include <perror.h>             /* and perror.h */
  112. #endif
  113.  
  114.  
  115. #ifndef VMS   /* VMS still hates multi-line '#if's */
  116. /* lots of things don't have <malloc.h> */
  117. /* A/UX systems include it from stdlib, from Xos.h */
  118. # if !defined(ibm032)                    && \
  119.      !defined(__convex__)                && \
  120.      !(defined(vax) && !defined(ultrix)) && \
  121.      !defined(mips)                      && \
  122.      !defined(apollo)                    && \
  123.      !defined(pyr)                       && \
  124.      !defined(__UMAXV__)                 && \
  125.      !defined(bsd43)                     && \
  126.      !defined(macII)                     && \
  127.      !defined(sequent)
  128.  
  129. #  if defined(hp300) || defined(hp800)
  130. #   include <sys/malloc.h>                /* it's in 'sys' on HPs*/
  131. #  else
  132. #   include <malloc.h>
  133. #  endif
  134. # endif
  135. #endif /* !VMS */
  136.  
  137. #if defined(NEED_MEMROUTINES)
  138. #define memcpy(d,s,l) bcopy(s,d,l)
  139. #endif
  140.  
  141.  
  142. #include <X11/Xos.h>
  143. #include <X11/Xlib.h>
  144. #include <X11/Xutil.h>
  145. #include <X11/cursorfont.h>
  146. #include <X11/keysym.h>
  147. #include <X11/Intrinsic.h>
  148. #include <X11/Xatom.h>
  149. #include <X11/Xmd.h>
  150.  
  151.  
  152.  
  153. #if defined(NEEDSTIME) || defined(NEEDSDIR)
  154. #include <sys/types.h>    /* only include <sys/types.h> once */
  155. #endif
  156.  
  157. #ifdef NEEDSTIME
  158. #if defined(SVR4) || defined(macII)
  159. #include <sys/time.h>
  160. #else                    /* not SVR4 */
  161. #if !defined(sgi) && !defined(__UMAXV__)   /* sgi & UMAX don't have timeb.h */
  162. #include <sys/timeb.h>
  163. #endif                   /* not sgi */
  164. #endif                   /* not SVR4 */
  165.  
  166. #undef SIGCHLD           /* defined in both the Xos.h and signal.h */
  167. #include <signal.h>
  168. #if defined(sco) && !defined(NOTIMER)
  169. #include <sys/itimer.h>
  170. #endif
  171.  
  172. #ifndef  sigmask
  173. #define  sigmask(m)      (1 << ((m)-1))
  174. #endif
  175.  
  176. #endif                   /* NEEDSTIME */
  177.  
  178.  
  179. #ifdef NEEDSDIR
  180. #  ifdef VMS
  181. #    include <descrip.h>
  182. #    include <stat.h>
  183. #    include "dirent.h"
  184. #  else
  185. #    ifdef sco
  186. #      include <sys/ndir.h>   /* sco has sys/ndir.h */
  187. #    else
  188. #      ifndef ATT
  189. #        include <sys/dir.h>    /* everybody else (except ATT) has sys/dir.h */
  190. #      endif  /* ATT */
  191. #    endif  /* sco */
  192.  
  193. #    include <sys/param.h>
  194. #    include <sys/stat.h>
  195.  
  196. #    ifdef DIRENT
  197. #      include <dirent.h>
  198. #    endif
  199. #  endif /* !VMS */
  200. #endif  /* NEEDSDIR */
  201.  
  202. #ifdef NEEDSARGS
  203. #if defined(__STDC__) && !defined(NOSTDHDRS)
  204. #include <stdarg.h>
  205. #else
  206. #include <varargs.h>
  207. #endif
  208. #endif
  209.  
  210. /* signal macros */
  211. #if defined(SVR4) && !defined(HPUX7) && !(defined(_AUX_SOURCE))
  212. #define HOLD_SIG         sighold(SIGALRM)  /* block ALRM sig from occurring */
  213. #define RELEASE_SIG      sigrelse(SIGALRM)
  214. #define PAUSE_SIG        sigpause(SIGALRM) /* sleep until ALRM signal */
  215. #else
  216. #define HOLD_SIG         sigblock(sigmask(SIGALRM))
  217. #define RELEASE_SIG      sigblock(0)
  218. #define PAUSE_SIG        sigpause(0)
  219. #endif
  220.  
  221.  
  222. #ifdef __UMAXV__
  223. #undef  PAUSE_SIG
  224. #define PAUSE_SIG sigpause(SIGALRM)
  225. #endif
  226.  
  227.  
  228. /* default for most folks */
  229. #define UNCOMPRESS "/usr/ucb/uncompress"   /* for uncompressing .Z files */
  230.  
  231. #if defined(hpux) || defined (SVR4)
  232. #undef  UNCOMPRESS
  233. #define UNCOMPRESS "/usr/bin/uncompress"   /* for uncompressing .Z files */
  234. #endif
  235.  
  236. #ifdef VMS
  237.    /* you WILL have to personalize for your own DECUS VMS version of
  238.       the Martin Minow LZDCMP for this to work properly... */
  239. #  undef UNCOMPRESS
  240. #  ifdef HAVE_LZW
  241. #    define UNCOMPRESS "LZDCMP /Export = Unix /Mode = Binary"
  242. #  else
  243. #    define UNCOMPRESS "DECOMPRESS"
  244. #  endif /* HAVE_LZW */
  245. #endif /* VMS */
  246.  
  247.  
  248. #if defined(i386) && !defined(sequent) && !defined(sun386) && !defined(_AIX)
  249. #define MAXPATHLEN    500
  250. #undef  UNCOMPRESS
  251. #define UNCOMPRESS    "/usr/local/bin/uncompress"   /* uncompress program */
  252. #undef  HOLD_SIG
  253. #define HOLD_SIG      /* don't know how to handle signals  MWS 10/18/90 */
  254. #undef  RELEASE_SIG
  255. #define RELEASE_SIG   /* */
  256. #undef  PAUSE_SIG
  257. #define PAUSE_SIG     /* */
  258. #endif
  259.  
  260.  
  261. #ifndef MAXPATHLEN
  262. #define MAXPATHLEN 1024
  263. #endif
  264.  
  265. #ifdef NO_RANDOM
  266. #define random rand
  267. #endif
  268.  
  269. /*****************************/
  270. /* END OF CONFIGURATION INFO */
  271. /*****************************/
  272.  
  273.  
  274.  
  275.  
  276. #define PROGNAME  "xv"             /* used in resource database */
  277.  
  278. #define DEFINFOGEOM "-10+10"       /* default position of info window */
  279. #define DEFCTRLGEOM "+400+400"     /* default position of ctrl window */
  280. #define DEFGAMGEOM  "+10-10"       /* default position of gamma window */
  281.  
  282. #define INFOWIDE 500               /* (fixed) size of info window */
  283. #define INFOHIGH 250
  284.  
  285. #define CTRLWIDE 440               /* (fixed) size of control window */
  286. #define CTRLHIGH 345
  287. #define CTRL_LISTW   (330-70)
  288.  
  289. #define DIRWIDE  300               /* (fixed) size of directory window */
  290. #define DIRHIGH  420
  291.  
  292. #define MAXNAMES 4096              /* max # of files in ctrlW list */
  293.  
  294. /* strings in the INFOBOX (used in SetISTR and GetISTR) */
  295. #define NISTR         9    /* number of ISTRs */
  296. #define ISTR_INFO     0
  297. #define ISTR_WARNING  1
  298. #define ISTR_FILENAME 2
  299. #define ISTR_FORMAT   3
  300. #define ISTR_RES      4
  301. #define ISTR_CROP     5
  302. #define ISTR_EXPAND   6
  303. #define ISTR_COLOR    7
  304. #define ISTR_COLOR2   8
  305.  
  306. /* potential values of 'infomode', used in info box drawing routines */
  307. #define INF_NONE 0    /* empty box */
  308. #define INF_STR  1    /* just ISTR_INFO */
  309. #define INF_PART 2    /* filename, format, size and infostr */
  310. #define INF_FULL 3    /* INF_PART + clipping, expansion, colorinfo */
  311.  
  312.  
  313. /* buttons in the ctrl window */
  314. #define NBUTTS   28
  315. #define BNEXT    0
  316. #define BPREV    1
  317. #define BCROP    2
  318. #define BUNCROP  3
  319. #define BNORM    4
  320. #define BMAX     5
  321. #define BUP2     6
  322. #define BDN2     7
  323. #define BUP10    8
  324. #define BDN10    9
  325. #define BQUIT    10
  326. #define B4BY3    11
  327. #define BSAVE    12
  328. #define BROTL    13
  329. #define BINFO    14
  330. #define BGAMMA   15
  331. #define BASPECT  16
  332. #define BROTR    17
  333. #define BMAXPECT 18
  334. #define BACROP   19
  335. #define BSMOOTH  20
  336. #define BDITH    21
  337. #define BRAW     22
  338. #define BLOAD    23
  339. #define BDELETE  24
  340. #define BFLIPH   25
  341. #define BFLIPV   26
  342. #define BGRAB    27
  343.  
  344.  
  345. /* buttons in the 'save' window */
  346. #define S_NBUTTS  3
  347. #define S_BOK     0
  348. #define S_BCANC   1
  349. #define S_BRESCAN 2
  350.  
  351.  
  352. /* buttons in the 'gamma' window */
  353. #define G_NBUTTS   24
  354. #define G_BAPPLY   0
  355. #define G_BNOGAM   1
  356. #define G_BRESET   2
  357. #define G_BCLOSE   3
  358. #define G_BUP_BR   4
  359. #define G_BDN_BR   5
  360. #define G_BUP_CN   6
  361. #define G_BDN_CN   7
  362. #define G_B1       8
  363. #define G_B2       9
  364. #define G_B3       10
  365. #define G_B4       11
  366. #define G_BSET     12
  367. #define G_BUNDO    13
  368. #define G_BREDO    14
  369. #define G_BCOLREV  15
  370. #define G_BRNDCOL  16
  371. #define G_BHSVRGB  17
  372. #define G_BCOLUNDO 18
  373. #define G_BRV      19
  374. #define G_BMONO    20
  375. #define G_BMAXCONT 21
  376. #define G_BGETRES  22
  377. #define G_BHISTEQ  23
  378.  
  379.  
  380. /* constants for setting radio buttons in dirW */
  381. #define F_COLORS    0
  382. #define F_FORMAT    1
  383.  
  384. #define F_FULLCOLOR 0
  385. #define F_GREYSCALE 1
  386. #define F_BWDITHER  2
  387. #define F_REDUCED   3
  388.  
  389. #define F_GIF       0
  390. #define F_PM        1
  391. #define F_PBMRAW    2
  392. #define F_PBMASCII  3
  393. #define F_XBM       4
  394. #define F_SUNRAS    5
  395. #define F_PS        6
  396.  
  397. #ifdef HAVE_JPEG
  398. #define F_JPEG      7
  399. #endif
  400.  
  401. #ifdef HAVE_TIFF
  402. #ifdef HAVE_JPEG
  403. #define F_TIFF      8
  404. #else
  405. #define F_TIFF      7
  406. #endif
  407. #endif
  408.  
  409.  
  410. /* definitions for page up/down, arrow up/down list control */
  411. #define LS_PAGEUP   0
  412. #define LS_PAGEDOWN 1
  413. #define LS_LINEUP   2
  414. #define LS_LINEDOWN 3
  415. #define LS_HOME     4
  416. #define LS_END      5
  417.  
  418. /* values 'epicmode' can take */
  419. #define EM_RAW    0
  420. #define EM_DITH   1
  421. #define EM_SMOOTH 2
  422.  
  423. /* things EventLoop() can return (0 and above reserved for 'goto pic#') */
  424. #define QUIT     -1    /* exit immediately  */
  425. #define NEXTPIC  -2    /* goto next picture */
  426. #define PREVPIC  -3    /* goto prev picture */
  427. #define NEXTQUIT -4    /* goto next picture, quit if none (used by 'wait') */
  428. #define LOADPIC  -5    /* load 'named' pic (from directory box) */
  429. #define NEXTLOOP -6    /* load next pic, loop if we're at end */
  430. #define DFLTPIC  -7    /* load the default image */
  431. #define DELETE   -8    /* just deleted pic.  load 'right' thing */
  432. #define GRABBED  -9    /* just grabbed a pic.  'load' it up */
  433.  
  434.  
  435. /* possible values of 'rootMode' */
  436. #define RM_NORMAL  0     /* default X tiling */
  437. #define RM_TILE    1     /* integer tiling */
  438. #define RM_MIRROR  2     /* mirror tiling */
  439. #define RM_IMIRROR 3     /* integer mirror tiling */
  440. #define RM_CENTER  4     /* modes >= RM_CENTER centered on some sort of bg */
  441. #define RM_CENTILE 4     /* centered and tiled.  NOTE: equals RM_CENTER */
  442. #define RM_CSOLID  5     /* centered on a solid bg */
  443. #define RM_CWARP   6     /* centered on a 'warp-effect' bg */
  444. #define RM_CBRICK  7     /* centered on a 'brick' bg */
  445. #define RM_MAX     RM_CBRICK
  446.  
  447. /* types of 24-to-8 conversion */
  448. #define CONV24_FAST 0
  449. #define CONV24_SLOW 1
  450. #define CONV24_BEST 2
  451.  
  452. /* definitions of first char of dirnames[i] (filetype) */
  453. #define C_FIFO  'f'    /* FIFO special file */
  454. #define C_CHR   'c'    /* character special file */
  455. #define C_DIR   'd'    /* directory */
  456. #define C_BLK   'b'    /* block special file */
  457. #define C_LNK   'l'    /* symbolic link */
  458. #define C_SOCK  's'    /* socket */
  459. #define C_REG   ' '    /* regular file */
  460.  
  461.  
  462. /* random string-placing definitions */
  463. #define SPACING 3      /* vertical space between strings */
  464. #define ASCENT   (mfinfo->ascent)
  465. #define DESCENT  (mfinfo->descent)
  466. #define CHIGH    (ASCENT + DESCENT)
  467. #define LINEHIGH (CHIGH + SPACING)
  468.  
  469.  
  470. #define STDINSTR "<stdin>"
  471.  
  472.  
  473. #ifndef MAIN
  474. #define WHERE extern
  475. #else
  476. #define WHERE
  477. #endif
  478.  
  479. typedef unsigned char byte;
  480.  
  481. typedef struct { Window win;            /* window ID */
  482.          int len;               /* length of major axis */
  483.          int vert;              /* true if vertical, else horizontal */
  484.          int active;            /* true if scroll bar can do anything*/
  485.          int min,max;           /* min/max values 'pos' can take */
  486.          int val;               /* 'value' of scrollbar */
  487.          int page;              /* amt val change on pageup/pagedown */
  488.          int tpos;              /* thumb pos. (pixels from tmin) */
  489.          int tmin,tmax;         /* min/max thumb offsets (from 0,0) */
  490.          int tsize;             /* size of thumb (in pixels) */
  491.          unsigned long fg,bg;   /* colors */
  492.          void (*drawobj)();     /* redraws obj controlled by scrl*/
  493.          int uplit, dnlit;      /* true if up&down arrows are lit */
  494.            } SCRL;
  495.  
  496. typedef struct { Window win;            /* window ID */
  497.          int w,h;               /* size of window */
  498.          int active;            /* true if can do anything*/
  499.          int min,max;           /* min/max values 'pos' can take */
  500.          int val;               /* 'value' of dial */
  501.          int page;              /* amt val change on pageup/pagedown */
  502.          char *title;           /* title for this guage */
  503.          char *units;           /* string appended to value */
  504.          unsigned long fg,bg;   /* colors */
  505.          int rad, cx, cy;       /* internals */
  506.          int bx[4], by[4];      /* more internals */
  507.          void (*drawobj)();     /* redraws obj controlled by dial */
  508.            } DIAL;
  509.  
  510. typedef struct { Window win;            /* parent window */
  511.          int x,y,w,h;           /* size of button rectangle */
  512.          int lit;               /* if true, invert colors */
  513.          int active;            /* if false, stipple gray */
  514.          int toggle;            /* if true, clicking toggles state */
  515.          unsigned long fg,bg;   /* colors */
  516.          char *str;             /* string in button */
  517.          Pixmap pix;            /* use pixmap instead of string */
  518.          int pw,ph;             /* size of pixmap */
  519.          int style;             /* ... */
  520.          int fwidth;            /* width of frame */
  521.            } BUTT;
  522.  
  523.  
  524. typedef struct rbutt { Window        win;      /* parent window */
  525.                int           x,y;      /* position in parent */
  526.                char         *str;      /* the message string */
  527.                int           selected; /* selected or not */
  528.                int           active;   /* selectable? */
  529.                struct rbutt *next;     /* pointer to next in group */
  530.                unsigned long fg,bg;    /* colors */
  531.              } RBUTT;
  532.  
  533.  
  534. typedef struct cbutt { Window        win;      /* parent window */
  535.                int           x,y;      /* position in parent */
  536.                char         *str;      /* the message string */
  537.                int           val;      /* 1=selected, 0=not */
  538.                int           active;   /* selectable? */
  539.                unsigned long fg,bg;    /* colors */
  540.              } CBUTT;
  541.  
  542.  
  543. typedef struct mbutt { Window        win;      /* parent window */
  544.                int           x,y,w,h;  /* position in parent */
  545.                char         *title;    /* title string in norm state */
  546.                int           selected; /* item# selected, or -1 */
  547.                int           active;   /* selectable? */
  548.                char        **list;     /* list of strings in menu */
  549.                int           nlist;    /* # of strings in menu */
  550.                Pixmap pix;             /* use pixmap instd of string */
  551.                int pw,ph;              /* size of pixmap */
  552.                unsigned long fg,bg;    /* colors */
  553.                Window        mwin;     /* popup menu window */
  554.              } MBUTT;
  555.  
  556.  
  557. typedef struct { Window win;            /* window */
  558.          int x,y,w,h;           /* size of window */
  559.          unsigned long fg,bg;   /* colors */
  560.          char **str;            /* ptr to list of strings */
  561.          int   nstr;            /* number of strings */
  562.          int   selected;        /* number of 'selected' string */
  563.          int   nlines;          /* number of lines shown at once */
  564.          SCRL  scrl;            /* scrollbar that controls list */
  565.          int   filetypes;       /* true if filetype icons to be drawn*/
  566.          int   dirsonly;        /* if true, only dirs selectable */
  567.            } LIST;
  568.  
  569.  
  570. #define MAX_GHANDS 16   /* maximum # of GRAF handles */
  571.  
  572. #define N_GFB 6
  573. #define GFB_SPLINE 0
  574. #define GFB_LINE   1
  575. #define GFB_ADDH   2
  576. #define GFB_DELH   3
  577. #define GFB_RESET  4
  578. #define GFB_GAMMA  5
  579.  
  580. #define GVMAX 8
  581.  
  582. typedef struct {  Window win;          /* window ID */
  583.           Window gwin;         /* graph subwindow */
  584.           int    spline;       /* spline curve or lines? */
  585.           int    entergamma;   /* currently entering gamma value */
  586.           int    gammamode;    /* currently using gamma function */
  587.           double gamma;        /* gamma value (if gammamode) */
  588.           int    nhands;       /* current # of handles */
  589.           XPoint hands[MAX_GHANDS];   /* positions of handles */
  590.           byte   func[256];    /* output function of GRAF */
  591.           BUTT   butts[N_GFB]; /* control buttons */
  592.           u_long fg,bg;        /* colors */
  593.           char   *str;         /* title string */
  594.           char   gvstr[GVMAX+1];    /* gamma value input string */
  595.         } GRAF;
  596.  
  597. typedef struct {  int    spline;
  598.           int    entergamma;
  599.           int    gammamode;
  600.           double gamma;
  601.           int    nhands;
  602.           XPoint hands[MAX_GHANDS];
  603.           char   gvstr[GVMAX+1];
  604.         } GRAF_STATE;
  605.  
  606.  
  607. /* MACROS */
  608. #define CENTERX(f,x,str) ((x)-XTextWidth(f,str,strlen(str))/2)
  609. #define CENTERY(f,y) ((y)-((f->ascent+f->descent)/2)+f->ascent)
  610.  
  611. /* RANGE forces a to be in the range b..c (inclusive) */
  612. #define RANGE(a,b,c) { if (a < b) a = b;  if (a > c) a = c; }
  613.  
  614. /* PTINRECT returns '1' if x,y is in rect (inclusive) */
  615. #define PTINRECT(x,y,rx,ry,rw,rh) \
  616.            ((x)>=(rx) && (y)>=(ry) && (x)<=(rx)+(rw) && (y)<=(ry)+(rh))
  617.  
  618. /* MONO returns total intensity of r,g,b components */
  619. #define MONO(rd,gn,bl) (((rd)*11 + (gn)*16 + (bl)*5) >> 5)  /*.33R+ .5G+ .17B*/
  620.  
  621. /* ISPIPE returns true if the passed in character is considered the
  622.    start of a 'load-from-pipe' or 'save-to-pipe' string */
  623. #define ISPIPE(c) ((c)=='!' || (c)=='|')
  624.  
  625. /* X stuff */
  626. WHERE Display       *theDisp;
  627. WHERE int           theScreen;
  628. WHERE unsigned int  ncells, dispWIDE, dispHIGH, dispDEEP;
  629. WHERE unsigned int  vrWIDE, vrHIGH, maxWIDE, maxHIGH;
  630. WHERE Colormap      theCmap, LocalCmap;
  631. WHERE Window        rootW, mainW, vrootW;
  632. WHERE GC            theGC;
  633. WHERE unsigned long black, white, fg, bg, infofg, infobg;
  634. WHERE unsigned long hicol, locol;
  635. WHERE unsigned long blkRGB, whtRGB;
  636. WHERE Font          mfont, monofont;
  637. WHERE XFontStruct   *mfinfo, *monofinfo;
  638. WHERE Visual        *theVisual;
  639. WHERE Cursor        arrow, cross, tcross, zoom, inviso;
  640. WHERE Pixmap        iconPix, iconmask;
  641. WHERE int           cmapinstalled, showzoomcursor;
  642.  
  643. /* global vars used by LOAD routines */
  644. WHERE byte          *pic;                   /* ptr to loaded picture */
  645. WHERE int            pWIDE,pHIGH;           /* size of 'pic' */
  646. WHERE byte           r[256],g[256],b[256];  /* colormap */
  647. WHERE char          *cmd;                   /* program name for printf's */
  648. WHERE int            DEBUG;                 /* print debugging info */
  649. WHERE int            mono;                  /* true if displaying grayscale */
  650. WHERE char           formatStr[80];         /* short-form 'file format' */
  651.  
  652.  
  653. /* more global variables, used by xv and xvmisc */
  654. WHERE byte          *cpic;         /* cropped version of pic */
  655. WHERE int           cWIDE, cHIGH,  /* size of cropped region */
  656.                     cXOFF, cYOFF;  /* offset of region from 0,0 of pic */
  657.  
  658. WHERE byte          *epic;         /* expanded version of cpic */
  659.                                    /* points to pic when at 1:1 expansion */
  660.                                    /* this is converted to 'theImage' */
  661. WHERE int           eWIDE, eHIGH;  /* size of epic */
  662. WHERE unsigned int  normFact;      /* factor to shrink picture by for 'norm' */
  663.  
  664. WHERE int           p_offx, p_offy;  /* offset of reparented windows */
  665. WHERE int           ch_offx,ch_offy; /* ChngAttr ofst for reparented windows */
  666.  
  667. WHERE byte           rorg[256], gorg[256], borg[256];  /* ORIGINAL colormap */
  668. WHERE byte           rcmap[256], gcmap[256], bcmap[256]; /*post-cmap-editing*/
  669. WHERE byte           rdisp[256],gdisp[256],bdisp[256];  /* DISPLAYED colors */
  670. WHERE byte           colAllocOrder[256];   /* order to allocate cols */
  671. WHERE unsigned long  freecols[256]; /* list of pixel values to free */
  672. WHERE byte           rwpc2pc[256]; /* mapping of shared pixels in -rw mode */
  673. WHERE int            nfcols;       /* number of colors to free */
  674. WHERE unsigned long  cols[256];    /* maps pic pixel values to X pixel vals */
  675. WHERE int            fc2pcol[256]; /* maps freecols into pic pixel values */
  676. WHERE int            numcols;      /* # of desired colors in picture */
  677.  
  678. WHERE byte           fsgamcr[256]; /* gamma correction curve (for FS dither) */
  679.  
  680.  
  681. WHERE XImage        *theImage;     /* X version of epic */
  682.  
  683.  
  684. WHERE int           ncols;         /* max # of (different) colors to alloc */
  685.  
  686. WHERE char          str[128],      /* dummy string used for error messages */
  687.                     basefname[128]; /* 'nice' part of current filename */
  688.  
  689. WHERE int           bwidth,        /* border width of created windows */
  690.                     noglob,        /* force to only use colors it alloced */
  691.                     perfect,       /* perfect color.  install own colormap */
  692.                     fixedaspect,   /* fixed aspect ratio */
  693.                     conv24,        /* 24to8 algorithm to use (CONV24_*) */
  694.                     ninstall,      /* true if using icccm-complaint WM
  695.                       (a WM that will does install CMaps */
  696.                     useroot,       /* true if we should draw in rootW */
  697.             nolimits,       /* No limits on picture size */
  698.             resetroot,     /* true if we should clear in window mode */
  699.                     noqcheck,      /* true if we should NOT do QuickCheck */
  700.                     rwcolor,       /* true if we should use R/W color cells */
  701.                     rwthistime,    /* true if we DID use R/W color cells */
  702.                     owncmap,       /* true if we should always create cmap */
  703.                     epicmode,      /* either SMOOTH, DITH, or RAW */
  704.                     autoclose,     /* if true, autoclose when iconifying */
  705.                     xerrcode;      /* errorcode of last X error */
  706.  
  707. WHERE float         defaspect,     /* default aspect ratio to use */
  708.                     normaspect;    /* normal aspect ratio of this picture */
  709.  
  710. WHERE int           crx1, cry1,    /* dimensions of cropping rectangle */
  711.                     crx2, cry2;
  712.  
  713. WHERE unsigned long rootbg, rootfg;   /* fg/bg for root border */
  714. WHERE int           waitsec;          /* secs btwn pics. -1=wait for event */
  715. WHERE int           waitloop;         /* loop at end of slide show? */
  716. WHERE int           automax;          /* maximize pic on open */
  717. WHERE int           rootMode;         /* mode used for -root images */
  718.  
  719. WHERE int           nostat;           /* if true, don't stat() in LdCurDir */
  720.  
  721. WHERE int           ctrlColor;        /* whether or not to use colored butts */
  722.  
  723. WHERE char         *def_str;          /* used by rd_*() routines */
  724. WHERE int           def_int;
  725. WHERE char         *tmpdir;           /* equal to "/tmp" or $TMPDIR env var */
  726.  
  727.  
  728. /* stuff used for 'info' box */
  729. WHERE Window        infoW;
  730. WHERE int           infoUp;       /* boolean:  whether infobox is visible */
  731. WHERE int           infoMode;
  732.  
  733.  
  734. /* stuff used for 'ctrl' box */
  735. WHERE Window        ctrlW;
  736. WHERE int           ctrlUp;       /* boolean:  whether ctrlbox is visible */
  737. WHERE char         *namelist[MAXNAMES];  /* list of file names from argv */
  738. WHERE char         *dispnames[MAXNAMES]; /* truncated names shown in listbox */
  739. WHERE int           numnames, curname;
  740. WHERE LIST          nList;
  741. WHERE BUTT          but[NBUTTS];         /* command buttons in ctrl window */
  742. WHERE Pixmap        grayTile, grayStip;  /* for drawing dim things */
  743. WHERE MBUTT         dispMB;              /* display mode menu button */
  744. WHERE MBUTT         conv24MB;            /* 24-to-8 conversion mode mbutt */
  745.  
  746.  
  747. /* stuff used for 'directory' box */
  748. WHERE Window        dirW, dnamW;
  749. WHERE int           dirUp;       /* is dirW mapped or not */
  750. WHERE LIST          dList;       /* list of filenames in current directory */
  751. WHERE BUTT          dbut[S_NBUTTS];
  752. WHERE CBUTT         browseCB;
  753. WHERE CBUTT         savenormCB;
  754.  
  755.  
  756. /* stuff used for 'gamma' box */
  757. WHERE Window        gamW;
  758. WHERE int           gamUp;       /* is gamW mapped or not */
  759. WHERE BUTT          gbut[G_NBUTTS];
  760. WHERE int           editColor;   /* currently selected color # */
  761. WHERE int           hsvmode;     /* true if in HSVmode */
  762. WHERE int cellgroup[256], curgroup, maxgroup;  /* grouped colorcell stuff */
  763. WHERE int           cmapInGam;
  764.  
  765. /* stuff used for 'ps' box */
  766. WHERE Window        psW;
  767. WHERE int           psUp;       /* is psW mapped, or what? */
  768. WHERE CBUTT         encapsCB, pscompCB;   
  769.  
  770.  
  771. #ifdef HAVE_JPEG
  772. /* stuff used for 'jpeg' box */
  773. WHERE Window        jpegW;
  774. WHERE int           jpegUp;       /* is jpegW mapped, or what? */
  775. #endif
  776.  
  777.  
  778. #ifdef HAVE_TIFF
  779. /* stuff used for 'tiff' box */
  780. WHERE Window        tiffW;
  781. WHERE int           tiffUp;       /* is tiffW mapped, or what? */
  782. #endif
  783.  
  784.  
  785. #undef WHERE
  786.  
  787.  
  788.  
  789.  
  790.  
  791. /* function declarations for externally-callable functions */
  792.  
  793. #ifdef __STDC__ 
  794. /****************************** XV.C ****************************/
  795. void FixAspect(int, int *, int *);
  796. int  DeleteCmd(void);
  797. void HandleDispMode(void);
  798. char *lower_str(char *);
  799. int  rd_int(char *);
  800. int  rd_str(char *);
  801. int  rd_flag(char *);
  802. int  rd_str_cl(char *, char *);
  803.  
  804. /****************************** XVEVENT.C ****************************/
  805. int  EventLoop(void);
  806. int  HandleEvent(XEvent *, int *);
  807. void DrawWindow(int,int,int,int);
  808. void WResize(int, int);
  809. void WRotate(void);
  810. void WCrop(int, int);
  811. void WUnCrop(void);
  812. void GetWindowPos(XWindowAttributes *);
  813. void SetWindowPos(XWindowAttributes *);
  814. void InvCropRect(void);
  815. void SetEpicMode(void);
  816. int  xvErrorHandler(Display *, XErrorEvent *);
  817.  
  818. /****************************** XVROOT.C ****************************/
  819. void MakeRootPic(void);
  820. void ClearRoot(void);
  821. void SaverootInfo(void);
  822. void KillOldRootInfo(void);
  823.  
  824. /*************************** XVMISC.C ***************************/
  825. void StoreDeleteWindowProp(Window);
  826. Window CreateWindow(char *, char *, unsigned int, unsigned int, 
  827.             unsigned long, unsigned long);
  828. void CenterString(Window, char *, int, int);
  829. void ULineString(Window, char *, int, int);
  830. int  StringWidth(char *);
  831. void FakeButtonPress(BUTT *);
  832. void GenExpose(Window, int, int, int, int);
  833. void DimRect(Window, int, int, int, int, u_long);
  834. void xvDestroyImage(XImage *);
  835. void SetCropString(int);
  836. void Warning(void);
  837. void FatalError(char *);
  838. void Quit(int);
  839. void LoadFishCursors(void);
  840. void WaitCursor(void);
  841. void SetCursors(int);
  842. void Timer(int);
  843.  
  844. /*************************** XVCOLOR.C ***************************/
  845. void   SortColormap(void);
  846. void   AllocColors(void);
  847. void   AllocRWColors(void);
  848. Status xvAllocColor(Display *, Colormap, XColor *);
  849. void   xvFreeColors(Display *, Colormap, unsigned long *, int, unsigned long);
  850. void   FreeAllColors(void);
  851. void   ApplyEditColor(int);
  852.  
  853. /*************************** XVIMAGE.C ***************************/
  854. void Resize(int, int);
  855. void DoZoom(int, int, int);
  856. void DoCrop(void);
  857. void UnCrop(void);
  858. void AutoCrop(void);
  859. void Rotate(int);
  860. void Flip(int);
  861. void FlipPic(byte *, int, int, int);
  862. void FSDither(byte *, int, int, byte *);
  863. void CreateXImage(void);
  864.  
  865. /*************************** XVSMOOTH.C ***************************/
  866. void  Smooth(void);
  867. byte *Smooth24(void);
  868. void ColorDither(byte *, int, int);
  869.  
  870. /*************************** XV24TO8.C **************************/
  871. void Init24to8(void);
  872. int  Conv24to8(byte *, int, int, int);
  873.  
  874. /**************************** XVCTRL.C **************************/
  875. void CreateCtrl(char *);
  876. void CtrlBox(int);
  877. void RedrawCtrl(int, int, int, int);
  878. int  ClickCtrl(int, int);
  879. void DrawCtrlStr(void);
  880. void ScrollToCurrent(LIST *);
  881.  
  882. void LSCreate(LIST *, Window, int, int, int, int, int, char **, int, 
  883.           unsigned long, unsigned long, void (*)(void), int, int);
  884. void LSRedraw(LIST *);
  885. int  LSClick (LIST *, XButtonEvent *);
  886. void LSNewData(LIST *, char **, int);
  887. void LSKey(LIST *, int);
  888.  
  889.  
  890. /*************************** XVINFO.C ***************************/
  891. void  CreateInfo(char *);
  892. void  InfoBox(int);
  893. void  RedrawInfo(int, int, int, int);
  894. void  SetInfoMode(int);
  895. #if defined(__STDC__) && !defined(NOSTDHDRS)
  896. void  SetISTR(int, ...);
  897. #else
  898. void  SetISTR();
  899. #endif
  900. char *GetISTR(int);
  901.  
  902. /**************************** XVDIR.C ***************************/
  903. void CreateDirW(char *);
  904. void DirBox(int);
  905. void RedrawDirW(int,int,int,int);
  906. int  ClickDirW(int, int);
  907. void LoadCurrentDirectory(void);
  908. void RedrawDDirW(void);
  909. void RedrawDNamW(void);
  910. void SelectDir(int);
  911. void TrackDDirW(int,int);
  912. int  DirKey(int);
  913. int  DoSave(void);
  914. void SetDirFName(char *);
  915. char *GetDirFName(void);
  916. void SetDirRButt(int, int);
  917. int  Globify(char *);
  918. FILE *OpenOutFile(char *);
  919. int  CloseOutFile(FILE *, char *, int);
  920. byte *HandleBWandReduced(int, int *, byte **, byte **, byte **);
  921.  
  922. /**************************** XVGAM.C **************************/
  923. void CreateGam(char *);
  924. int  GamCheckEvent(XEvent *);
  925. void GamBox(int);
  926. void NewCMap();
  927. void RedrawCMap();
  928. void ChangeEC(int);
  929. void ApplyECctrls(void);
  930. void GenerateFSGamma(void);
  931. void GammifyColors(void);
  932. void Gammify1(int);
  933. void rgb2hsv(int, int, int, double *, double *, double *);
  934. void hsv2rgb(double, double, double, int *, int *, int *);
  935.  
  936. /*************************** XVSCRL.C ***************************/
  937. void SCCreate  (SCRL *, Window, int, int, int, int, int, int, int, int, 
  938.                       unsigned long, unsigned long, void (*)(void));
  939. void SCSetRange(SCRL *, int, int, int, int);
  940. int  SCSetVal  (SCRL *, int);
  941. void SCRedraw  (SCRL *);
  942. void SCTrack   (SCRL *, int, int);
  943.  
  944.  
  945. /*************************** XVDIAL.C ***************************/
  946. void DCreate  (DIAL *, Window, int, int, int, int, int, int, int, int, 
  947.                       unsigned long, unsigned long, char *, char *);
  948. void DSetRange(DIAL *, int, int, int, int);
  949. void DSetVal  (DIAL *, int);
  950. void DSetActive(DIAL *, int);
  951. void DRedraw  (DIAL *);
  952. int  DTrack   (DIAL *, int, int);
  953.  
  954.  
  955. /**************************** XVBUTT.C ***************************/
  956.  
  957. void BTCreate(BUTT *, Window, int, int, int, int, char *, 
  958.           unsigned long, unsigned long);
  959. void BTSetActive(BUTT *, int);
  960. void BTRedraw(BUTT *);
  961. int  BTTrack (BUTT *);
  962.  
  963.  
  964. RBUTT *RBCreate(RBUTT *, Window, int, int, char*, 
  965.         unsigned long, unsigned long);
  966. void   RBRedraw(RBUTT *, int);
  967. void   RBSelect(RBUTT *, int);
  968. int    RBWhich(RBUTT *);
  969. int    RBCount(RBUTT *);
  970. void   RBSetActive(RBUTT *, int, int);
  971. int    RBClick(RBUTT *, int, int);
  972. int    RBTrack(RBUTT *, int);
  973.  
  974. void   CBCreate(CBUTT *, Window, int, int, char *, u_long, u_long);
  975. void   CBRedraw(CBUTT *);
  976. void   CBSetActive(CBUTT *, int);
  977. int    CBClick(CBUTT *,int,int);
  978. int    CBTrack(CBUTT *);
  979.  
  980. void   MBCreate(MBUTT *, Window, int, int, int, int, char *, 
  981.         char **, int, u_long, u_long);
  982. void   MBRedraw(MBUTT *);
  983. void   MBSetActive(MBUTT *, int);
  984. int    MBClick(MBUTT *, int, int);
  985. int    MBTrack(MBUTT *);
  986.  
  987.  
  988. /**************************** XVGRAF.C ***************************/
  989. void   CreateGraf(GRAF *, Window, int, int, u_long, u_long, char *);
  990. void   InitGraf  (GRAF *);
  991. void   RedrawGraf(GRAF *, int, int, int, int);
  992. int    ClickGraf (GRAF *, Window, int, int);
  993. int    GrafKey   (GRAF *, char *);
  994. void   GenerateGrafFunc(GRAF *, int);
  995. void   Graf2Str  (GRAF_STATE *, char *);
  996. int    Str2Graf  (GRAF_STATE *, char *);
  997. void   GetGrafState (GRAF *, GRAF_STATE *);
  998. int    SetGrafState (GRAF *, GRAF_STATE *);
  999. void   InitSpline(int *, int *, int, double *);
  1000. double EvalSpline(int *, int *, double *, int, double);
  1001.  
  1002.  
  1003. /**************************** XVGIF.C ***************************/
  1004. int LoadGIF(char *, int);
  1005.  
  1006. /*************************** XVGIFWR.C **************************/
  1007. int WriteGIF(FILE *, byte *, int, int, byte *, byte *, byte *, int, int);
  1008.  
  1009. /**************************** XVPM.C ****************************/
  1010. int LoadPM(char *, int);
  1011. int WritePM(FILE *, byte *, int, int, byte *, byte *, byte *, int, int);
  1012.  
  1013. /**************************** XVPBM.C ***************************/
  1014. int LoadPBM(char *, int);
  1015. int WritePBM(FILE *, byte *, int, int, byte *, byte *, byte *, int, int, int);
  1016.  
  1017. /**************************** XVXBM.C ***************************/
  1018. int LoadXBM(char *, int);
  1019. int WriteXBM(FILE *, byte *, int, int, char *);
  1020.  
  1021. /**************************** XVSUNRAS.C ***************************/
  1022. int LoadSunRas(char *, int);
  1023. int WriteSunRas(FILE *, byte *, int, int, byte *, byte *, byte*, 
  1024.         int, int, int);
  1025.  
  1026. /**************************** XVJPEG.C ***************************/
  1027. int  LoadJFIF(char *, int);
  1028. void CreateJPEGW(void);
  1029. void JPEGDialog(int);
  1030. int  JPEGCheckEvent(XEvent *);
  1031. void JPEGSaveParams(char *, int);
  1032.  
  1033. /**************************** XVTIFF.C ***************************/
  1034. int  LoadTIFF(char *, int);
  1035. void  CreateTIFFW();
  1036. void  TIFFDialog(int);
  1037. int   TIFFCheckEvent(XEvent *);
  1038. void  TIFFSaveParams(char *, int);
  1039.  
  1040. /*************************** XVPS.C ***************************/
  1041. void  CreatePSD(char *);
  1042. void  PSDialog(int);
  1043. int   PSCheckEvent(XEvent *);
  1044. void  PSSaveParams(char *, int);
  1045. void  PSResize(void);
  1046.  
  1047. /*************************** XVPOPUP.C ***************************/
  1048. void  CenterMapWindow(Window, int, int, int, int);
  1049. int   PopUp(char *, char **, int);
  1050. void  OpenAlert(char *);
  1051. void  CloseAlert();
  1052. int   PSCheckEvent(XEvent *);
  1053. void  TextRect(Window, char *, int, int, int, int, u_long);
  1054.  
  1055. /*************************** XVDFLT.C ***************************/
  1056. void LoadDfltPic();
  1057. void xbm2pic(char *, int, int, byte *, int, int, int, int, int);
  1058.  
  1059. /**************************** XVGRAB.C ***************************/
  1060. int Grab(void);
  1061. int LoadGrab(void);
  1062.  
  1063.  
  1064. /**************************** XVRLE.C ***************************/
  1065. int LoadRLE(char *, int);
  1066.  
  1067.  
  1068. #else     /* using non-ANSI cc.  Function defs, but no params */
  1069.  
  1070.  
  1071.  
  1072.  
  1073. /****************************** XV.C ****************************/
  1074. void FixAspect(), HandleDispMode();
  1075. int  DeleteCmd(), rd_int(), rd_str(), rd_flag(), rd_str_cl();
  1076. char *lower_str();
  1077.  
  1078. /****************************** XVEVENT.C ****************************/
  1079. int  EventLoop(), HandleEvent();
  1080. void DrawWindow(), WResize(), WRotate(), WCrop(), WUnCrop();
  1081. void GetWindowPos(), SetWindowPos(), InvCropRect(), SetEpicMode();
  1082. int  xvErrorHandler();
  1083.  
  1084. /****************************** XVROOT.C ****************************/
  1085. void MakeRootPic(), ClearRoot(), KillOldRootInfo(), SaveRootInfo();
  1086.  
  1087. /*************************** XVMISC.C ***************************/
  1088. void   StoreDeleteWindowProp();
  1089. Window CreateWindow();
  1090. int    StringWidth();
  1091. void   CenterString(), ULineString(), FakeButtonPress(), GenExpose();
  1092. void   DimRect(), SetCropString(), Warning(), FatalError(), Quit();
  1093. void   LoadFishCursors(), WaitCursor(), SetCursors(), Timer();
  1094. void   xvDestroyImage();
  1095.  
  1096. /*************************** XVCOLOR.C ***************************/
  1097. Status xvAllocColor();
  1098. void   SortColormap(), AllocColors(), AllocRWColors();
  1099. void   xvFreeColors(), FreeAllColors(), ApplyEditColor();
  1100.  
  1101. /*************************** XVIMAGE.C ***************************/
  1102. void Resize(), DoZoom(), DoCrop(), UnCrop(), AutoCrop(), Rotate(), Flip();
  1103. void FlipPic(), FSDither(), CreateXImage();
  1104.  
  1105. /*************************** XVSMOOTH.C ***************************/
  1106. void Smooth(), ColorDither();
  1107. byte *Smooth24();
  1108.  
  1109. /*************************** XV24TO8.C **************************/
  1110. void Init24to8();
  1111. int  Conv24to8();
  1112.  
  1113. /**************************** XVCTRL.C **************************/
  1114. void CreateCtrl(), CtrlBox(), RedrawCtrl(), DrawCtrlStr(), ScrollToCurrent();
  1115. int  ClickCtrl();
  1116.  
  1117. void LSCreate(), LSRedraw(), LSNewData(), LSKey();
  1118. int  LSClick();
  1119.  
  1120. /*************************** XVINFO.C ***************************/
  1121. void  CreateInfo(), InfoBox(), RedrawInfo(), SetInfoMode(), SetISTR();
  1122. char *GetISTR();
  1123.  
  1124. /**************************** XVDIR.C ***************************/
  1125. void CreateDirW(), DirBox(), RedrawDirW(), LoadCurrentDirectory();
  1126. int  ClickDirW(), DoSave(), DirKey();
  1127. void RedrawDDirW(), RedrawDNamW(), SelectDir(), TrackDDirW();
  1128. void SetDirFName(), SetDirRButt();
  1129. char *GetDirFName();
  1130. int  Globify(), CloseOutFile();
  1131. FILE *OpenOutFile();
  1132. byte *HandleBWandReduced();
  1133.  
  1134. /**************************** XVGAM.C **************************/
  1135. void CreateGam();
  1136. int  GamCheckEvent();
  1137. void GamBox(), NewCMap(), RedrawCMap();
  1138. void ChangeEC(), ApplyECctrls();
  1139. void GenerateFSGamma(), GammifyColors();
  1140. void Gammify1(), rgb2hsv(), hsv2rgb();
  1141.  
  1142. /*************************** XVSCRL.C ***************************/
  1143. void SCCreate(), SCSetRange(), SCRedraw(), SCTrack();
  1144. int SCSetVal();
  1145.  
  1146. /*************************** XVDIAL.C ***************************/
  1147. void DCreate(), DSetRange(), DSetVal(), DRedraw(), DSetActive();
  1148. int  DTrack();
  1149.  
  1150. /**************************** XVBUTT.C ***************************/
  1151. void BTCreate(), BTSetActive(), BTRedraw();
  1152. int  BTTrack();
  1153.  
  1154. RBUTT *RBCreate();
  1155. void   RBRedraw(), RBSelect(), RBSetActive();
  1156. int    RBWhich(), RBCount(), RBClick(), RBTrack();
  1157.  
  1158. void CBCreate(), CBRedraw(), CBSetActive();
  1159. int  CBClick(), CBTrack();
  1160.  
  1161. void MBCreate(), MBRedraw(), MBSetActive();
  1162. int  MBClick(), MBTrack();
  1163.  
  1164.  
  1165. /*************************** XVGRAF.C ***************************/
  1166. void   CreateGraf(), InitGraf(), RedrawGraf(), GenerateGrafFunc();
  1167. void   Graf2Str(), GetGrafState(), InitSpline();
  1168. int    ClickGraf(), GrafKey(), Str2Graf(), SetGrafState();
  1169. double EvalSpline();
  1170.  
  1171.  
  1172. /**************************** XVGIF.C ***************************/
  1173. int LoadGIF();
  1174.  
  1175. /*************************** XVGIFWR.C **************************/
  1176. int WriteGIF();
  1177.  
  1178. /**************************** XVPM.C ****************************/
  1179. int LoadPM(), WritePM();
  1180.  
  1181. /**************************** XVPBM.C ***************************/
  1182. int LoadPBM(), WritePBM();
  1183.  
  1184. /**************************** XVXBM.C ***************************/
  1185. int LoadXBM(), WriteXBM();
  1186.  
  1187. /**************************** XVSUNRAS.C ***************************/
  1188. int LoadSunRas(), WriteSunRas();
  1189.  
  1190. /**************************** XVJPEG.C ***************************/
  1191. int LoadJFIF(), JPEGCheckEvent();
  1192. void CreateJPEGW(), JPEGDialog(), JPEGSaveParams();
  1193.  
  1194. /**************************** XVTIFF.C ***************************/
  1195. int   LoadTIFF();
  1196. void  CreateTIFFW(), TIFFDialog(), TIFFSaveParams();
  1197. int   TIFFCheckEvent();
  1198.  
  1199. /*************************** XVPS.C ***************************/
  1200. void  CreatePSD(), PSDialog(), PSSaveParams(), PSResize();
  1201. int   PSCheckEvent();
  1202.  
  1203. /*************************** XVPOPUP.C ***************************/
  1204. void CenterMapWindow(), OpenAlert(), CloseAlert();
  1205. int  PopUp(), PUCheckEvent();
  1206. void TextRect();
  1207.  
  1208. /*************************** XVDFLT.C ***************************/
  1209. void LoadDfltPic(), xbm2pic();
  1210.  
  1211. /**************************** XVGRAB.C ***************************/
  1212. int Grab(), LoadGrab();
  1213.  
  1214. /**************************** XVRLE.C ***************************/
  1215. int LoadRLE();
  1216.  
  1217. #endif
  1218.