home *** CD-ROM | disk | FTP | other *** search
/ vsiftp.vmssoftware.com / VSIPUBLIC@vsiftp.vmssoftware.com.tar / FREEWARE / FREEWARE40.ZIP / xv310a / xv.h < prev    next >
C/C++ Source or Header  |  1995-09-15  |  59KB  |  1,696 lines

  1. /*
  2.  *  xv.h  -  header file for xv, but you probably guessed as much
  3.  * 
  4.  *  Author:    John Bradley  (bradley@cis.upenn.edu)
  5.  */
  6.  
  7. #include "copyright.h"
  8. #include "config.h"
  9.  
  10.  
  11. #define REVDATE   "Version 3.10b  Rev: 09/15/95"
  12. #define VERSTR    "3.10a"
  13.  
  14. /*
  15.  * uncomment the following, and modify for your site, but only if you've
  16.  * actually registered your copy of XV...
  17.  */
  18. /* #define REGSTR "Registered for use at the University of Pennsylvania." */
  19.  
  20. #ifndef VMS
  21. #  define THUMBDIR     ".xvpics"  /* name of thumbnail file subdirectories */
  22. #  define THUMBDIRNAME ".xvpics"  /* same as THUMBDIR, unlike VMS case... */
  23. #  define CLIPFILE     ".xvclip"  /* name of clipboard file in home directory */
  24. #else
  25. #  define THUMBDIR     "XVPICS"       /* name to use in building paths... */
  26. #  define THUMBDIRNAME "XVPICS.DIR"   /* name from readdir() & stat() */
  27. #  define CLIPFILE     "xvclipbd.dat"
  28. #endif
  29.  
  30.  
  31. #undef PARM
  32. #ifdef __STDC__
  33. #  define PARM(a) a
  34. #else
  35. #  define PARM(a) ()
  36. #  define const
  37. #endif
  38.  
  39.  
  40.  
  41. /*************************************************/
  42. /* START OF MACHINE-DEPENDENT CONFIGURATION INFO */
  43. /*************************************************/
  44.  
  45. /* Things to make xv more likely to just build, without the user tweaking
  46.    the makefile */
  47.  
  48. #ifdef hpux        /* HPUX machines (SVR3, (not SVR4) NO_RANDOM) */
  49. #  undef  SVR4
  50. #  undef  SYSV
  51. #  define SYSV
  52. #  undef  NO_RANDOM
  53. #  define NO_RANDOM
  54. #  define USE_GETCWD
  55. #endif
  56.  
  57.  
  58. #ifdef sgi         /* SGI machines (SVR4) */
  59. #  undef  SVR4
  60. #  define SVR4
  61. #endif
  62.  
  63.  
  64. #ifdef LINUX
  65. #  ifndef _LINUX_LIMITS_H
  66. #    include <linux/limits.h>
  67. #  endif
  68. #endif
  69.  
  70.  
  71. #include <X11/Xos.h>     /* need type declarations immediately */
  72.  
  73. /*********************************************************/
  74.  
  75.  
  76. /* The BSD typedefs are used throughout.
  77.  * If your system doesn't have them in <sys/types.h>,
  78.  * then define BSDTYPES in your Makefile.
  79.  */
  80. #if defined(BSDTYPES) || defined(VMS)
  81. #if __VMS_VER < 70000000
  82.   typedef unsigned char  u_char;
  83.   typedef unsigned short u_short;
  84.   typedef unsigned int   u_int;
  85.   typedef unsigned long  u_long;
  86. #endif
  87. #endif
  88.  
  89.  
  90. #ifdef __UMAXV__              /* for Encore Computers UMAXV */
  91. #  include <sys/fs/b4param.h>   /* Get bsd fast file system params*/
  92. #endif
  93.  
  94.  
  95. /* things that *DON'T* have dirent.  Hopefully a very short list */
  96. #if defined(__UMAXV__)
  97. #  ifndef NODIRENT
  98. #    define NODIRENT
  99. #  endif
  100. #endif
  101.  
  102.  
  103. /* include files */
  104. #include <stdio.h>
  105. #include <math.h>
  106. #include <ctype.h>
  107.  
  108. #ifdef __STDC__
  109. #  include <stddef.h>
  110. #  include <stdlib.h>
  111. #endif
  112.  
  113. /* note: 'string.h' or 'strings.h' is included by Xos.h, and it
  114.    guarantees index() and rindex() will be available */
  115.  
  116. #ifndef VMS
  117. #  include <errno.h>
  118.    extern int   errno;             /* SHOULD be in errno.h, but often isn't */
  119. #  ifndef __NetBSD__
  120.      extern char *sys_errlist[];     /* this too... */
  121. #  endif
  122. #endif
  123.  
  124.  
  125. /* not everyone has the strerror() function, or so I'm told */
  126. #ifndef VMS
  127. #  define ERRSTR(x) sys_errlist[x]
  128. #else
  129. #  define ERRSTR(x) strerror(x, vaxc$errno)
  130. #endif
  131.  
  132.  
  133.  
  134.  
  135. #ifdef VMS   /* VMS config, hacks & kludges */
  136. #  define MAXPATHLEN    512
  137. #  define popUp xv_popup
  138. #  define qsort xv_qsort
  139. #  define random rand
  140. #  define srandom srand
  141. #  define cols xv_cols
  142. #  define gmap xv_gmap
  143. #  define index  strchr
  144. #  define rindex strrchr
  145. #  include <errno.h>
  146. #  include <perror.h>
  147. #endif
  148.  
  149.  
  150. /* lots of things don't have <malloc.h> */
  151. /* A/UX systems include it from stdlib, from Xos.h */
  152. #ifndef VMS   /* VMS hates multi-line '#if's */
  153. # if !defined(ibm032)                    && \
  154.      !defined(__convex__)                && \
  155.      !(defined(vax) && !defined(ultrix)) && \
  156.      !defined(mips)                      && \
  157.      !defined(apollo)                    && \
  158.      !defined(pyr)                       && \
  159.      !defined(__UMAXV__)                 && \
  160.      !defined(bsd43)                     && \
  161.      !defined(aux)                       && \
  162.      !defined(__bsdi__)                  && \
  163.      !defined(sequent)
  164.  
  165. #  if defined(hp300) || defined(hp800) || defined(NeXT)
  166. #   include <sys/malloc.h>                /* it's in 'sys' on HPs and NeXT */
  167. #  else
  168. #   include <malloc.h>
  169. #  endif
  170. # endif
  171. #endif /* !VMS */
  172.  
  173.  
  174.  
  175. #include <X11/Xlib.h>
  176. #include <X11/Xutil.h>
  177. #include <X11/cursorfont.h>
  178. #include <X11/keysym.h>
  179. #include <X11/Intrinsic.h>
  180. #include <X11/Xatom.h>
  181. #include <X11/Xmd.h>
  182.  
  183.  
  184. #undef SIGCHLD           /* defined in both Xos.h and signal.h */
  185. #include <signal.h>      /* for interrupt handling */
  186.  
  187. #include <sys/types.h>
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194. #ifdef NEEDSTIME
  195. #  include <sys/time.h>
  196.  
  197. #  ifdef _AIX
  198. #    include <sys/select.h>   /* needed for select() call in Timer() */
  199. #  endif
  200.  
  201. #  ifdef SVR4
  202. #    include <poll.h>      /* used in SVR4 version of Timer() */
  203. #  endif
  204.  
  205. #  ifdef sgi               /* need 'CLK_TCK' value for sginap() call */
  206. #    include <limits.h>
  207. #  endif
  208.  
  209. /*** for select() call ***/
  210. #  ifdef __hpux
  211. #    define XV_FDTYPE (int *)
  212. #  else
  213. #    define XV_FDTYPE (fd_set *)
  214. #  endif
  215.  
  216. #endif  /* NEEDSTIME */
  217.  
  218.  
  219.  
  220. #ifdef NEEDSDIR
  221. #  ifdef VMS
  222. #    include <descrip.h>
  223. #    include <stat.h>
  224. #    if __VMS_VER > 60200000
  225.        /* Post 6.2 system.  Is the DECC_VER great enough to have dirent.h? */
  226. #      if __DECC_VER > 50200000
  227. #        include <dirent.h>    /* system dirent.h */
  228. #      else
  229.      /* Nope, include the local one */
  230. #        include "dirent.h"
  231. #      endif
  232. #    else
  233.        /* On a 6.2 or ealier VMS system, use private dirent.h */
  234. #      include "dirent.h"
  235. #    endif
  236. #  else
  237. #    ifdef NODIRENT
  238. #      include <sys/dir.h>
  239. #    else
  240. #      include <dirent.h>
  241. #    endif
  242.  
  243. #    if defined(SVR4) || defined(SYSV)
  244. #      include <fcntl.h>
  245. #    endif
  246.  
  247. #    include <sys/param.h>
  248. #    include <sys/stat.h>
  249.  
  250. #    if defined(__convex__) && defined (__STDC__)
  251. #      define S_IFMT  _S_IFMT
  252. #      define S_IFDIR _S_IFDIR
  253. #      define S_IFCHR _S_IFCHR
  254. #      define S_IFBLK _S_IFBLK
  255. #    endif
  256. #  endif
  257. #endif
  258.  
  259.  
  260. #ifdef NEEDSARGS
  261. #  if defined(__STDC__) && !defined(NOSTDHDRS)
  262. #    include <stdarg.h>
  263. #  else
  264. #    include <varargs.h>
  265. #  endif
  266. #endif
  267.  
  268.  
  269.  
  270. /* Use S_ISxxx macros in stat-related stuff
  271.  * make them if missing, along with a few fictitious ones
  272.  *      Cameron Simpson  (cameron@cse.unsw.edu.au)
  273.  */
  274.  
  275. #ifndef         S_ISDIR         /* missing POSIX-type macros */
  276. #  define       S_ISDIR(mode)   (((mode)&S_IFMT) == S_IFDIR)
  277. #  define       S_ISBLK(mode)   (((mode)&S_IFMT) == S_IFBLK)
  278. #  define       S_ISCHR(mode)   (((mode)&S_IFMT) == S_IFCHR)
  279. #  define       S_ISREG(mode)   (((mode)&S_IFMT) == S_IFREG)
  280. #endif
  281. #ifndef         S_ISFIFO
  282. #  ifdef        S_IFIFO
  283. #    define     S_ISFIFO(mode)  (((mode)&S_IFMT) == S_IFIFO)
  284. #  else
  285. #    define     S_ISFIFO(mode)  0
  286. #  endif
  287. #endif
  288. #ifndef         S_ISLINK
  289. #  ifdef        S_IFLNK
  290. #    define     S_ISLINK(mode)  (((mode)&S_IFMT) == S_IFLNK)
  291. #  else
  292. #    define     S_ISLINK(mode)  0
  293. #  endif
  294. #endif
  295. #ifndef         S_ISSOCK
  296. #  ifdef        S_IFSOCK
  297. #    define     S_ISSOCK(mode)  (((mode)&S_IFMT) == S_IFSOCK)
  298. #  else
  299. #    define     S_ISSOCK(mode)  0
  300. #  endif
  301. #endif
  302.  
  303.  
  304.  
  305. #ifndef MAXPATHLEN
  306. #  define MAXPATHLEN 256
  307. #endif
  308.  
  309.  
  310. #ifdef SVR4
  311. #  define random lrand48
  312. #  define srandom srand48
  313. #else
  314. #  if defined(NO_RANDOM) || (defined(sun) && defined(SYSV))
  315. #    define random()   rand()
  316. #    define srandom(x) srand(x)
  317. #  endif
  318. #endif
  319.  
  320.  
  321. #ifndef VMS       /* VMS hates multi-line definitions */
  322. #  if defined(SVR4)  || defined(SYSV) || defined(sco) || \
  323.       defined(XENIX) || defined(__osf__) 
  324. #    undef  USE_GETCWD
  325. #    define USE_GETCWD          /* use 'getcwd()' instead of 'getwd()' */
  326. #  endif
  327. #else
  328. #if __VMS_VER >= 70000000
  329. #    define USE_GETCWD          /* use 'getcwd()' instead of 'getwd()' */
  330. #endif
  331. #endif
  332.  
  333.  
  334. /*****************************/
  335. /* END OF CONFIGURATION INFO */
  336. /*****************************/
  337.  
  338. #ifdef DOJPEG
  339. #define HAVE_JPEG
  340. #endif
  341.  
  342. #ifdef DOTIFF
  343. #define HAVE_TIFF
  344. #endif
  345.  
  346. #ifdef DOPDS
  347. #define HAVE_PDS
  348. #endif
  349.  
  350.  
  351.  
  352. #define PROGNAME  "xv"             /* used in resource database */
  353.  
  354. #define MAXNAMES 4096              /* max # of files in ctrlW list */
  355.  
  356. #define MAXBRWIN   4               /* max # of vis browser windows */
  357.  
  358. /* strings in the INFOBOX (used in SetISTR and GetISTR) */
  359. #define NISTR         10    /* number of ISTRs */
  360. #define ISTR_INFO     0
  361. #define ISTR_WARNING  1
  362. #define ISTR_FILENAME 2
  363. #define ISTR_FORMAT   3
  364. #define ISTR_RES      4
  365. #define ISTR_CROP     5
  366. #define ISTR_EXPAND   6
  367. #define ISTR_SELECT   7
  368. #define ISTR_COLOR    8
  369. #define ISTR_COLOR2   9
  370.  
  371. /* potential values of 'infomode', used in info box drawing routines */
  372. #define INF_NONE 0    /* empty box */
  373. #define INF_STR  1    /* just ISTR_INFO */
  374. #define INF_PART 2    /* filename, format, size and infostr */
  375. #define INF_FULL 3    /* INF_PART + clipping, expansion, colorinfo */
  376.  
  377.  
  378. /* buttons in the ctrl window */
  379. #define BNEXT    0
  380. #define BPREV    1
  381. #define BLOAD    2
  382. #define BSAVE    3
  383. #define BDELETE  4
  384. #define BPRINT   5
  385.  
  386. #define BCOPY    6
  387. #define BCUT     7
  388. #define BPASTE   8
  389. #define BCLEAR   9
  390. #define BGRAB    10
  391. #define BUP10    11
  392. #define BDN10    12
  393. #define BROTL    13
  394. #define BROTR    14
  395. #define BFLIPH   15
  396. #define BFLIPV   16
  397. #define BPAD     17
  398. #define BANNOT   18
  399. #define BCROP    19
  400. #define BUNCROP  20
  401. #define BACROP   21
  402. #define BABOUT   22
  403. #define BQUIT    23
  404. #define BXV      24
  405. #define NBUTTS   25    /* # of butts */
  406.  
  407.  
  408. /* buttons in the load/save window */
  409. #define S_LOAD_NBUTTS  4
  410. #define S_NBUTTS   5
  411. #define S_BOK      0
  412. #define S_BCANC    1
  413. #define S_BRESCAN  2
  414. #define S_BLOADALL 3
  415. #define S_BOLDSET  3
  416. #define S_BOLDNAM  4
  417.  
  418.  
  419. /* buttons in the 'gamma' window */
  420. #define G_NBUTTS   24
  421. #define G_BAPPLY   0
  422. #define G_BNOGAM   1
  423. #define G_BRESET   2
  424. #define G_BCLOSE   3
  425. #define G_BUP_BR   4
  426. #define G_BDN_BR   5
  427. #define G_BUP_CN   6
  428. #define G_BDN_CN   7
  429. #define G_B1       8
  430. #define G_B2       9
  431. #define G_B3       10
  432. #define G_B4       11
  433. #define G_BSET     12
  434. #define G_BUNDO    13
  435. #define G_BREDO    14
  436. #define G_BCOLREV  15
  437. #define G_BRNDCOL  16
  438. #define G_BHSVRGB  17
  439. #define G_BCOLUNDO 18
  440. #define G_BRV      19
  441. #define G_BMONO    20
  442. #define G_BMAXCONT 21
  443. #define G_BGETRES  22
  444. #define G_BHISTEQ  23
  445.  
  446.  
  447. /* constants for setting default 'save mode' in dirW */
  448. #define F_COLORS    0
  449. #define F_FORMAT    1
  450.  
  451. /* the following list give indicies into saveColors[] array in xvdir.c */
  452. #define F_FULLCOLOR 0
  453. #define F_GREYSCALE 1
  454. #define F_BWDITHER  2
  455. #define F_REDUCED   3
  456. #define F_MAXCOLORS 4   /* length of saveColors[] array */
  457.  
  458.  
  459. /* following list gives indicies into 'saveFormats[]' array in xvdir.c
  460.    note that JPEG and TIFF entries may or may not exist, and following
  461.    constants have to be adjusted accordingly.  Also, don't worry about 
  462.    duplicate cases if JPGINC or TIFINC = 0.  All code that references
  463.    F_JPEG or F_TIFF is #ifdef'd, so it won't be a problem */
  464.  
  465. #ifdef HAVE_JPEG
  466. #define F_JPGINC  1
  467. #else
  468. #define F_JPGINC  0
  469. #endif
  470.  
  471. #ifdef HAVE_TIFF
  472. #define F_TIFINC  1
  473. #else
  474. #define F_TIFINC  0
  475. #endif
  476.  
  477.  
  478. #define F_GIF         0
  479. #define F_JPEG      ( 0 + F_JPGINC)
  480. #define F_TIFF      ( 0 + F_JPGINC + F_TIFINC)
  481. #define F_PS        ( 1 + F_JPGINC + F_TIFINC)
  482. #define F_PBMRAW    ( 2 + F_JPGINC + F_TIFINC)
  483. #define F_PBMASCII  ( 3 + F_JPGINC + F_TIFINC)
  484. #define F_XBM       ( 4 + F_JPGINC + F_TIFINC)
  485. #define F_XPM       ( 5 + F_JPGINC + F_TIFINC)
  486. #define F_BMP       ( 6 + F_JPGINC + F_TIFINC)
  487. #define F_SUNRAS    ( 7 + F_JPGINC + F_TIFINC)
  488. #define F_IRIS      ( 8 + F_JPGINC + F_TIFINC)
  489. #define F_TARGA     ( 9 + F_JPGINC + F_TIFINC)
  490. #define F_FITS      (10 + F_JPGINC + F_TIFINC)
  491. #define F_PM        (11 + F_JPGINC + F_TIFINC)
  492. #define F_DELIM1    (12 + F_JPGINC + F_TIFINC)     /* ----- */
  493. #define F_FILELIST  (13 + F_JPGINC + F_TIFINC)
  494. #define F_MAXFMTS   (14 + F_JPGINC + F_TIFINC)     /* 15, normally */
  495.  
  496.  
  497.  
  498. /* return values from ReadFileType()
  499.  * positive values are *definitely* readable formats (HAVE_*** is defined)
  500.  * negative values are random files that XV can't read, but display as
  501.  *   different icons in the visual browser 
  502.  */
  503. #define RFT_ERROR    -1    /* couldn't open file, or whatever... */
  504. #define RFT_UNKNOWN   0
  505. #define RFT_GIF       1
  506. #define RFT_PM        2
  507. #define RFT_PBM       3
  508. #define RFT_XBM       4
  509. #define RFT_SUNRAS    5
  510. #define RFT_BMP       6
  511. #define RFT_UTAHRLE   7
  512. #define RFT_IRIS      8
  513. #define RFT_PCX       9
  514. #define RFT_JFIF     10
  515. #define RFT_TIFF     11
  516. #define RFT_PDSVICAR 12
  517. #define RFT_COMPRESS 13
  518. #define RFT_PS       14
  519. #define RFT_IFF      15
  520. #define RFT_TARGA    16
  521. #define RFT_XPM      17
  522. #define RFT_XWD      18
  523. #define RFT_FITS     19
  524.  
  525. /* definitions for page up/down, arrow up/down list control */
  526. #define LS_PAGEUP   0
  527. #define LS_PAGEDOWN 1
  528. #define LS_LINEUP   2
  529. #define LS_LINEDOWN 3
  530. #define LS_HOME     4
  531. #define LS_END      5
  532.  
  533.  
  534. /* values returned by CursorKey() */
  535. #define CK_NONE     0
  536. #define CK_LEFT     1
  537. #define CK_RIGHT    2
  538. #define CK_UP       3
  539. #define CK_DOWN     4
  540. #define CK_PAGEUP   5
  541. #define CK_PAGEDOWN 6
  542. #define CK_HOME     7
  543. #define CK_END      8
  544.  
  545.  
  546. /* values 'epicMode' can take */
  547. #define EM_RAW    0
  548. #define EM_DITH   1
  549. #define EM_SMOOTH 2
  550.  
  551.  
  552. /* things EventLoop() can return (0 and above reserved for 'goto pic#') */
  553. #define QUIT      -1   /* exit immediately  */
  554. #define NEXTPIC   -2   /* goto next picture */
  555. #define PREVPIC   -3   /* goto prev picture */
  556. #define NEXTQUIT  -4   /* goto next picture, quit if none (used by 'wait') */
  557. #define LOADPIC   -5   /* load 'named' pic (from directory box) */
  558. #define NEXTLOOP  -6   /* load next pic, loop if we're at end */
  559. #define DFLTPIC   -7   /* load the default image */
  560. #define DELETE    -8   /* just deleted pic.  load 'right' thing */
  561. #define GRABBED   -9   /* just grabbed a pic.  'load' it up */
  562. #define POLLED    -10  /* polling, and image file has changed... */
  563. #define RELOAD    -11  /* 'reload' interrupt came. be happier about errors */
  564. #define THISNEXT  -12  /* load 'current' selection, Next until success */
  565. #define OP_PAGEUP -13  /* load previous page of multi-page document */
  566. #define OP_PAGEDN -14  /* load next page of multi-page document */
  567. #define PADDED    -15  /* just grabbed a pic.  'load' it up */
  568.  
  569.  
  570. /* possible values of 'rootMode' */
  571. #define RM_NORMAL  0     /* default X tiling */
  572. #define RM_TILE    1     /* integer tiling */
  573. #define RM_MIRROR  2     /* mirror tiling */
  574. #define RM_IMIRROR 3     /* integer mirror tiling */
  575. #define RM_CENTER  4     /* modes >= RM_CENTER centered on some sort of bg */
  576. #define RM_CENTILE 4     /* centered and tiled.  NOTE: equals RM_CENTER */
  577. #define RM_CSOLID  5     /* centered on a solid bg */
  578. #define RM_CWARP   6     /* centered on a 'warp-effect' bg */
  579. #define RM_CBRICK  7     /* centered on a 'brick' bg */
  580. #define RM_ECENTER 8     /* symmetrical tiled */
  581. #define RM_ECMIRR  9     /* symmetrical mirror tiled */
  582. #define RM_MAX     RM_ECMIRR
  583.  
  584.  
  585. /* values of colorMapMode */
  586. #define CM_NORMAL    0        /* normal RO or RW color allocation */
  587. #define CM_PERFECT   1        /* install own cmap if necessary */
  588. #define CM_OWNCMAP   2        /* install own cmap always */
  589. #define CM_STDCMAP   3        /* use stdcmap */
  590.  
  591.  
  592. /* values of haveStdCmap */
  593. #define STD_NONE     0        /* no stdcmap currently defined */
  594. #define STD_111      1        /* 1/1/1 stdcmap is available */
  595. #define STD_222      2        /* 2/2/2 stdcmap is available */
  596. #define STD_232      3        /* 2/3/2 stdcmap is available */
  597. #define STD_666      4        /* 6x6x6 stdcmap is available */
  598. #define STD_332      5        /* 3/3/2 stdcmap is available */
  599.  
  600.  
  601. /* values of allocMode */
  602. #define AM_READONLY  0
  603. #define AM_READWRITE 1
  604.  
  605.  
  606. /* selections in dispMB */
  607. #define DMB_RAW      0
  608. #define DMB_DITH     1
  609. #define DMB_SMOOTH   2
  610. #define DMB_SEP1     3     /* ---- separator */
  611. #define DMB_COLRW    4
  612. #define DMB_SEP2     5     /* ---- separator */
  613. #define DMB_COLNORM  6
  614. #define DMB_COLPERF  7
  615. #define DMB_COLOWNC  8
  616. #define DMB_COLSTDC  9
  617. #define DMB_MAX      10
  618.  
  619.  
  620. /* selections in rootMB */
  621. #define RMB_WINDOW   0
  622. #define RMB_ROOT     1
  623. #define RMB_TILE     2
  624. #define RMB_MIRROR   3
  625. #define RMB_IMIRROR  4
  626. #define RMB_CENTILE  5
  627. #define RMB_CSOLID   6
  628. #define RMB_CWARP    7
  629. #define RMB_CBRICK   8
  630. #define RMB_ECENTER  9
  631. #define RMB_ECMIRR   10
  632. #define RMB_MAX      11
  633.  
  634.  
  635. /* indicies into conv24MB */
  636. #define CONV24_8BIT  0
  637. #define CONV24_24BIT 1
  638. #define CONV24_SEP1  2
  639. #define CONV24_LOCK  3
  640. #define CONV24_SEP2  4
  641. #define CONV24_FAST  5
  642. #define CONV24_SLOW  6
  643. #define CONV24_BEST  7
  644. #define CONV24_MAX   8
  645.  
  646. /* values 'picType' can take */
  647. #define PIC8  CONV24_8BIT
  648. #define PIC24 CONV24_24BIT
  649.  
  650. /* indicies into algMB */
  651. #define ALG_NONE      0
  652. #define ALG_SEP1      1  /* separator */
  653. #define ALG_BLUR      2
  654. #define ALG_SHARPEN   3
  655. #define ALG_EDGE      4
  656. #define ALG_TINF      5
  657. #define ALG_OIL       6
  658. #define ALG_BLEND     7
  659. #define ALG_ROTATE    8
  660. #define ALG_ROTATECLR 9
  661. #define ALG_PIXEL     10
  662. #define ALG_SPREAD    11
  663. #define ALG_MEDIAN    12
  664. #define ALG_MAX       13
  665.  
  666.  
  667. /* indicies into sizeMB */
  668. #define SZMB_NORM     0
  669. #define SZMB_MAXPIC   1
  670. #define SZMB_MAXPECT  2
  671. #define SZMB_DOUBLE   3
  672. #define SZMB_HALF     4
  673. #define SZMB_P10      5
  674. #define SZMB_M10      6
  675. #define SZMB_SEP      7   /* separator */
  676. #define SZMB_SETSIZE  8
  677. #define SZMB_ASPECT   9
  678. #define SZMB_4BY3     10
  679. #define SZMB_INTEXP   11
  680. #define SZMB_MAX      12
  681.  
  682. /* indicies into windowMB */
  683. #define WMB_BROWSE    0
  684. #define WMB_COLEDIT   1
  685. #define WMB_INFO      2
  686. #define WMB_COMMENT   3
  687. #define WMB_TEXTVIEW  4
  688. #define WMB_SEP       5  /* separator */
  689. #define WMB_ABOUTXV   6
  690. #define WMB_KEYHELP   7
  691. #define WMB_MAX       8
  692.  
  693.  
  694. /* definitions of first char of dirnames[i] (filetype) */
  695. #define C_FIFO  'f'    /* FIFO special file */
  696. #define C_CHR   'c'    /* character special file */
  697. #define C_DIR   'd'    /* directory */
  698. #define C_BLK   'b'    /* block special file */
  699. #define C_LNK   'l'    /* symbolic link */
  700. #define C_SOCK  's'    /* socket */
  701. #define C_REG   ' '    /* regular file */
  702. #define C_EXE   'x'    /* executable file */
  703.  
  704.  
  705. /* values used in Draw3dRect() */
  706. #define R3D_OUT 0  /* rect sticks 'out' from screen */
  707. #define R3D_IN  1  /* rect goes 'in' screen */
  708.  
  709.  
  710. /* values 'GetSelType()' (in xvcut.c) can return */
  711. #define SEL_RECT 0
  712.  
  713. /* mode values for PadPopUp() */
  714. #define PAD_SOLID 0
  715. #define PAD_BGGEN 1
  716. #define PAD_LOAD  2
  717.  
  718. #define PAD_ORGB  0
  719. #define PAD_OINT  1
  720. #define PAD_OHUE  2
  721. #define PAD_OSAT  3
  722. #define PAD_OMAX  4
  723.  
  724. /* byte offsets into a 'cimg' (clipboard image) array (SaveToClip()) */
  725. #define CIMG_LEN   0              /* offset to 4-byte length of data */
  726. #define CIMG_W     4              /* offset to 2-byte width of image */
  727. #define CIMG_H     6              /* offset to 2-byte height of image */
  728. #define CIMG_24    8              /* offset to 1-byte 'is24bit?' field */
  729. #define CIMG_TRANS 9              /* offset to 1-byte 'has transparent?' */
  730. #define CIMG_TRVAL 10             /* if trans && !24: trans. pixel val */
  731. #define CIMG_TRR   11             /* if trans && 24: red val of trans */
  732. #define CIMG_TRG   12
  733. #define CIMG_TRB   13
  734. #define CIMG_PIC24 14             /* offset to data(24-bit) */
  735. #define CIMG_CMAP  14             /* offset to cmap (8-bit) */
  736. #define CIMG_PIC8 (CIMG_CMAP + 3*256)   /* offset to data (8-bit) */
  737.  
  738.  
  739.  
  740. #define MBSEP "\001"   /* special string for a --- separator in MBUTT */
  741.  
  742. /* random string-placing definitions */
  743. #define SPACING 3      /* vertical space between strings */
  744. #define ASCENT   (mfinfo->ascent)
  745. #define DESCENT  (mfinfo->descent)
  746. #define CHIGH    (ASCENT + DESCENT)
  747. #define LINEHIGH (CHIGH + SPACING)
  748.  
  749.  
  750. #define STDINSTR "<stdin>"
  751.  
  752.  
  753. #ifndef MAIN
  754. #define WHERE extern
  755. #else
  756. #define WHERE
  757. #endif
  758.  
  759. typedef unsigned char byte;
  760.  
  761. typedef struct scrl { 
  762.                  Window win;            /* window ID */
  763.          int x,y,w,h;           /* window coords in parent */
  764.          int len;               /* length of major axis */
  765.          int vert;              /* true if vertical, else horizontal */
  766.          int active;            /* true if scroll bar can do anything*/
  767.          int min,max;           /* min/max values 'pos' can take */
  768.          int val;               /* 'value' of scrollbar */
  769.          int page;              /* amt val change on pageup/pagedown */
  770.          int tpos;              /* thumb pos. (pixels from tmin) */
  771.          int tmin,tmax;         /* min/max thumb offsets (from 0,0) */
  772.          int tsize;             /* size of thumb (in pixels) */
  773.          u_long fg,bg,hi,lo;    /* colors */
  774.  
  775.          /* redraws obj controlled by scrl*/
  776.          void (*drawobj)PARM((int, struct scrl *));
  777.  
  778.          int uplit, dnlit;      /* true if up&down arrows are lit */
  779.            } SCRL;
  780.  
  781. typedef struct { Window win;            /* window ID */
  782.          int x,y,w,h;           /* window coords in parent */
  783.          int active;            /* true if can do anything*/
  784.          int min,max;           /* min/max values 'pos' can take */
  785.          int val;               /* 'value' of dial */
  786.          int page;              /* amt val change on pageup/pagedown */
  787.          char *title;           /* title for this guage */
  788.          char *units;           /* string appended to value */
  789.          u_long fg,bg,hi,lo;    /* colors */
  790.          int rad, cx, cy;       /* internals */
  791.          int bx[4], by[4];      /* more internals */
  792.  
  793.          /* redraws obj controlled by dial */
  794.          void (*drawobj)PARM((void));
  795.            } DIAL;
  796.  
  797. typedef struct { Window win;            /* parent window */
  798.          int x,y;               /* size of button rectangle */
  799.          unsigned int w,h;
  800.          int lit;               /* if true, invert colors */
  801.          int active;            /* if false, stipple gray */
  802.          int toggle;            /* if true, clicking toggles state */
  803.          u_long fg,bg,hi,lo;    /* colors */
  804.          char *str;             /* string in button */
  805.          Pixmap pix;            /* use pixmap instead of string */
  806.          u_int pw,ph;           /* size of pixmap */
  807.          int colorpix;          /* multi-color pixmap */
  808.          int style;             /* ... */
  809.          int fwidth;            /* width of frame */
  810.            } BUTT;
  811.  
  812.  
  813. typedef struct rbutt {
  814.                  Window        win;      /* parent window */
  815.          int           x,y;      /* position in parent */
  816.          char         *str;      /* the message string */
  817.          int           selected; /* selected or not */
  818.          int           active;   /* selectable? */
  819.          struct rbutt *next;     /* pointer to next in group */
  820.          u_long fg,bg,hi,lo;     /* colors */
  821.            } RBUTT;
  822.  
  823.  
  824.  
  825. typedef struct { Window        win;      /* parent window */
  826.          int           x,y;      /* position in parent */
  827.          char         *str;      /* the message string */
  828.          int           val;      /* 1=selected, 0=not */
  829.          int           active;   /* selectable? */
  830.          u_long fg,bg,hi,lo;     /* colors */
  831.            } CBUTT;
  832.  
  833.  
  834. #define MAXMBLEN 32  /* max # of items in an mbutt */
  835. typedef struct { Window        win;            /* parent window */
  836.          int           x,y;            /* position in parent */
  837.          unsigned int  w,h;
  838.          char         *title;          /* title string in norm state */
  839.          int           active;         /* selectable? */
  840.          char        **list;           /* list of strings in menu */
  841.          int           nlist;          /* # of strings in menu */
  842.          byte          flags[MAXMBLEN];  /* checkmarks on items */
  843.          int           hascheck;       /* leave room for checkmark? */
  844.          byte          dim[MAXMBLEN];  /* dim individual choices */
  845.          Pixmap        pix;            /* use pixmap instd of string */
  846.          int           pw,ph;          /* size of pixmap */
  847.          u_long        fg,bg,hi,lo;    /* colors */
  848.          Window        mwin;           /* popup menu window */
  849.            } MBUTT;
  850.  
  851.  
  852. typedef struct { Window win;            /* window */
  853.          int x,y;               /* size of window */
  854.          unsigned int w,h;
  855.          u_long fg,bg,hi,lo;    /* colors */
  856.          char **str;            /* ptr to list of strings */
  857.          int   nstr;            /* number of strings */
  858.          int   selected;        /* number of 'selected' string */
  859.          int   nlines;          /* number of lines shown at once */
  860.          SCRL  scrl;            /* scrollbar that controls list */
  861.          int   filetypes;       /* true if filetype icons to be drawn*/
  862.          int   dirsonly;        /* if true, only dirs selectable */
  863.            } LIST;
  864.  
  865.  
  866. /* info structure filled in by the LoadXXX() image reading routines */
  867. typedef struct { byte *pic;                  /* image data */
  868.          int   w, h;                 /* pic size */
  869.          int   type;                 /* PIC8 or PIC24 */
  870.  
  871.          byte  r[256],g[256],b[256];
  872.                                      /* colormap, if PIC8 */
  873.  
  874.          int   normw, normh;         /* 'normal size' of image file
  875.                             (normally eq. w,h, except when
  876.                         doing 'quick' load for icons */
  877.  
  878.          int   frmType;              /* def. Format type to save in */
  879.          int   colType;              /* def. Color type to save in */
  880.          char  fullInfo[128];        /* Format: field in info box */
  881.          char  shrtInfo[128];        /* short format info */
  882.          char *comment;              /* comment text */
  883.  
  884.          int   numpages;             /* # of page files, if >1 */
  885.          char  pagebname[64];        /* basename of page files */
  886.            } PICINFO;
  887.  
  888. #define MAX_GHANDS 16   /* maximum # of GRAF handles */
  889.  
  890. #define N_GFB 6
  891. #define GFB_SPLINE 0
  892. #define GFB_LINE   1
  893. #define GFB_ADDH   2
  894. #define GFB_DELH   3
  895. #define GFB_RESET  4
  896. #define GFB_GAMMA  5
  897.  
  898. #define GVMAX 8
  899.  
  900. typedef struct {  Window win;          /* window ID */
  901.           Window gwin;         /* graph subwindow */
  902.           int    spline;       /* spline curve or lines? */
  903.           int    entergamma;   /* currently entering gamma value */
  904.           int    gammamode;    /* currently using gamma function */
  905.           double gamma;        /* gamma value (if gammamode) */
  906.           int    nhands;       /* current # of handles */
  907.           XPoint hands[MAX_GHANDS];   /* positions of handles */
  908.           byte   func[256];    /* output function of GRAF */
  909.           BUTT   butts[N_GFB]; /* control buttons */
  910.           u_long fg,bg;        /* colors */
  911.           char   *str;         /* title string */
  912.           char   gvstr[GVMAX+1];    /* gamma value input string */
  913.           void   (*drawobj)PARM((void));
  914.         } GRAF;
  915.  
  916. typedef struct {  int    spline;
  917.           int    entergamma;
  918.           int    gammamode;
  919.           double gamma;
  920.           int    nhands;
  921.           XPoint hands[MAX_GHANDS];
  922.           char   gvstr[GVMAX+1];
  923.         } GRAF_STATE;
  924.  
  925.  
  926. /* MACROS */
  927. #define CENTERX(f,x,str) ((x)-XTextWidth(f,str, (int) strlen(str))/2)
  928. #define CENTERY(f,y) ((y)-((f->ascent+f->descent)/2)+f->ascent)
  929.  
  930. /* RANGE forces a to be in the range b..c (inclusive) */
  931. #define RANGE(a,b,c) { if (a < b) a = b;  if (a > c) a = c; }
  932.  
  933. /* PTINRECT returns '1' if x,y is in rect */
  934. #define PTINRECT(x,y,rx,ry,rw,rh) \
  935.            ((x)>=(rx) && (y)>=(ry) && (x)<((rx)+(rw)) && (y)<((ry)+(rh)))
  936.  
  937. /* MONO returns total intensity of r,g,b triple (i = .33R + .5G + .17B) */
  938. #define MONO(rd,gn,bl) ( ((int)(rd)*11 + (int)(gn)*16 + (int)(bl)*5) >> 5)
  939.  
  940. /* ISPIPE returns true if the passed in character is considered the
  941.    start of a 'load-from-pipe' or 'save-to-pipe' string */
  942. #define ISPIPE(c) ((c)=='!' || (c)=='|')
  943.  
  944. /* CMAPVIS returns true if the visual class has a modifyable cmap */
  945. #define CMAPVIS(v) (((v)->class == PseudoColor) || ((v)->class == GrayScale))
  946.  
  947.  
  948. /* X stuff */
  949. WHERE Display       *theDisp;
  950. WHERE int           theScreen;
  951. WHERE unsigned int  ncells, dispWIDE, dispHIGH, dispDEEP;
  952. WHERE unsigned int  vrWIDE, vrHIGH, maxWIDE, maxHIGH;
  953. WHERE Colormap      theCmap, LocalCmap;
  954. WHERE Window        rootW, mainW, vrootW;
  955. WHERE GC            theGC;
  956. WHERE u_long        black, white, fg, bg, infofg, infobg;
  957. WHERE u_long        hicol, locol;
  958. WHERE u_long        blkRGB, whtRGB;
  959. WHERE Font          mfont, monofont;
  960. WHERE XFontStruct   *mfinfo, *monofinfo;
  961. WHERE Visual        *theVisual;
  962. WHERE Cursor        arrow, cross, tcross, zoom, inviso;
  963. WHERE Pixmap        iconPix, iconmask;
  964. WHERE Pixmap        riconPix, riconmask;
  965. WHERE int           showzoomcursor;
  966. WHERE u_long        xorMasks[8];
  967.  
  968. /* XV global vars */
  969. WHERE byte          *pic;                   /* ptr to loaded picture */
  970. WHERE int            pWIDE,pHIGH;           /* size of 'pic' */
  971. WHERE byte           rMap[256],gMap[256],bMap[256];  /* colormap */
  972. WHERE char          *cmd;                   /* program name for printf's */
  973. WHERE int            DEBUG;                 /* print debugging info */
  974. WHERE int            mono;                  /* true if displaying grayscale */
  975. WHERE char           formatStr[80];         /* short-form 'file format' */
  976. WHERE int            picType;               /* CONV24_8BIT,CONV24_24BIT,etc.*/
  977. WHERE char          *picComments;           /* text comments on current pic */
  978.  
  979. WHERE int            numPages, curPage;     /* for multi-page files */
  980. WHERE char           pageBaseName[64];      /* basename for multi-page files */
  981.  
  982. WHERE byte          *cpic;         /* cropped version of pic */
  983. WHERE int           cWIDE, cHIGH,  /* size of cropped region */
  984.                     cXOFF, cYOFF;  /* offset of region from 0,0 of pic */
  985.  
  986. WHERE byte          *epic;         /* expanded version of cpic */
  987.                                    /* points to cpic when at 1:1 expansion */
  988.                                    /* this is converted to 'theImage' */
  989. WHERE int           eWIDE, eHIGH;  /* size of epic */
  990.  
  991. WHERE byte          *egampic;      /* expanded, gammified cpic 
  992.                       (only used in 24-bit mode) */
  993.  
  994. WHERE int           p_offx, p_offy;  /* offset of reparented windows */
  995. WHERE int           ch_offx,ch_offy; /* ChngAttr ofst for reparented windows */
  996. WHERE int           kludge_offx,     /* WM kludges for SetWindowPos routine */ 
  997.                     kludge_offy;
  998. WHERE int           winCtrPosKludge; /* kludge for popup positioning... */
  999.  
  1000. WHERE int            ignoreConfigs;  /* an evil kludge... */
  1001.  
  1002. WHERE byte           rorg[256], gorg[256], borg[256];  /* ORIGINAL colormap */
  1003. WHERE byte           rcmap[256], gcmap[256], bcmap[256]; /*post-cmap-editing*/
  1004. WHERE byte           rdisp[256],gdisp[256],bdisp[256];  /* DISPLAYED colors */
  1005. WHERE byte           colAllocOrder[256];   /* order to allocate cols */
  1006. WHERE unsigned long  freecols[256]; /* list of pixel values to free */
  1007. WHERE byte           rwpc2pc[256]; /* mapping of shared pixels in -rw mode */
  1008. WHERE int            nfcols;       /* number of colors to free */
  1009. WHERE unsigned long  cols[256];    /* maps pic pixel values to X pixel vals */
  1010. WHERE int            fc2pcol[256]; /* maps freecols into pic pixel values */
  1011. WHERE int            numcols;      /* # of desired colors in picture */
  1012.  
  1013. /* Std Cmap stuff */
  1014. WHERE byte           stdr[256], stdg[256], stdb[256];  /* std 3/3/2 cmap */
  1015. WHERE unsigned long  stdcols[256];                     /* 3/3/2 -> X colors */
  1016. WHERE byte           stdrdisp[256], stdgdisp[256], stdbdisp[256];
  1017. WHERE unsigned long  stdfreecols[256];   /* list of cols to free on exit */
  1018. WHERE int            stdnfcols;          /* # of cols in stdfreecols[] */
  1019.  
  1020. WHERE int            directConv[256];    /* used with directColor visuals */
  1021.  
  1022. /* colormap for 'browser' window */
  1023. WHERE byte           browR[256], browG[256], browB[256];  /* used in genIcon */
  1024. WHERE unsigned long  browcols[256];   /* maps 3/3/2 colors into X colors */
  1025. WHERE int            browPerfect;
  1026. WHERE Colormap       browCmap;
  1027.  
  1028. WHERE byte           fsgamcr[256]; /* gamma correction curve (for FS dither) */
  1029.  
  1030.  
  1031. /* vars that affect how color allocation is done */
  1032. WHERE int            allocMode;    /* AM_READONLY, AM_READWRITE */
  1033. WHERE int            rwthistime;   /* true if we DID use R/W color cells */
  1034. WHERE int            colorMapMode; /* CM_NORMAL, CM_PERFECT, CM_OWMCMAP ... */
  1035. WHERE int            haveStdCmap;  /* STD_NONE, STD_222, STD_666, STD_332 */
  1036. WHERE int            novbrowse;    /* if true, won't need colors for browser */
  1037. WHERE int            defaultCmapMode;  /* last user-selected cmap mode */
  1038.  
  1039. WHERE XImage        *theImage;     /* X version of epic */
  1040.  
  1041.  
  1042. WHERE int           ncols;         /* max # of (different) colors to alloc */
  1043.  
  1044. WHERE char          str[128];      /* dummy string used for error messages */
  1045. WHERE char          initdir[MAXPATHLEN];   /* cwd when xv was started */
  1046. WHERE char          searchdir[MAXPATHLEN]; /* '-dir' option */
  1047. WHERE char          fullfname[MAXPATHLEN]; /* full name of current file */
  1048. WHERE char         *winTitle;      /* user-specified mainW title */
  1049.  
  1050. WHERE int           bwidth,        /* border width of created windows */
  1051.                     fixedaspect,   /* fixed aspect ratio */
  1052.                     conv24,        /* 24to8 algorithm to use (CONV24_*) */
  1053.                     ninstall,      /* true if using icccm-complaint WM
  1054.                       (a WM that will does install CMaps */
  1055.                     useroot,       /* true if we should draw in rootW */
  1056.             nolimits,       /* No limits on picture size */
  1057.             resetroot,     /* true if we should clear in window mode */
  1058.                     noqcheck,      /* true if we should NOT do QuickCheck */
  1059.                     epicMode,      /* either SMOOTH, DITH, or RAW */
  1060.                     autoclose,     /* if true, autoclose when iconifying */
  1061.                     polling,       /* if true, reload if file changes */
  1062.                     viewonly,      /* if true, ignore any user input */
  1063.                     noFreeCols,    /* don't free colors when loading new pic */
  1064.                     autoquit,      /* quit in '-root' or when click on win */
  1065.                     xerrcode,      /* errorcode of last X error */
  1066.                     grabDelay;     /* # of seconds to sleep at start of Grab */
  1067.  
  1068. WHERE int           state824;      /* displays warning when going 8->24 */
  1069.  
  1070. WHERE float         defaspect,     /* default aspect ratio to use */
  1071.                     normaspect;    /* normal aspect ratio of this picture */
  1072.  
  1073. WHERE unsigned long rootbg, rootfg;   /* fg/bg for root border */
  1074. WHERE int           waitsec;          /* secs btwn pics. -1=wait for event */
  1075. WHERE int           waitloop;         /* loop at end of slide show? */
  1076. WHERE int           automax;          /* maximize pic on open */
  1077. WHERE int           rootMode;         /* mode used for -root images */
  1078.  
  1079. WHERE int           nostat;           /* if true, don't stat() in LdCurDir */
  1080.  
  1081. WHERE int           ctrlColor;        /* whether or not to use colored butts */
  1082.  
  1083. WHERE char         *def_str;          /* used by rd_*() routines */
  1084. WHERE int           def_int;
  1085. WHERE char         *tmpdir;           /* equal to "/tmp" or $TMPDIR env var */
  1086. WHERE Pixmap        gray25Tile,       /* used for 3d effect on 1-bit disp's */
  1087.                     gray50Tile;
  1088. WHERE int           autoDelete;       /* delete cmd-line files on exit? */
  1089.  
  1090. #define PRINTCMDLEN 256
  1091. WHERE char          printCmd[PRINTCMDLEN]; 
  1092.  
  1093. /* stuff used for 'info' box */
  1094. WHERE Window        infoW;
  1095. WHERE int           infoUp;       /* boolean:  whether infobox is visible */
  1096. WHERE int           infoMode;
  1097.  
  1098.  
  1099. /* stuff used for 'ctrl' box */
  1100. WHERE Window        ctrlW;
  1101. WHERE int           ctrlUp;       /* boolean:  whether ctrlbox is visible */
  1102. WHERE char         *namelist[MAXNAMES];  /* list of file names from argv */
  1103. WHERE char         *origlist[MAXNAMES];  /* only names from argv (autoDelete)*/
  1104. WHERE int           orignumnames;
  1105. WHERE char         *dispnames[MAXNAMES]; /* truncated names shown in listbox */
  1106. WHERE int           numnames, curname;
  1107. WHERE LIST          nList;
  1108. WHERE BUTT          but[NBUTTS];         /* command buttons in ctrl window */
  1109. WHERE Pixmap        grayTile;            /* bg pixmap used on 1-bit systems */
  1110. WHERE Pixmap        dimStip;             /* for drawing dim things */
  1111. WHERE int           dispMode;
  1112.  
  1113. WHERE MBUTT         dispMB;              /* display mode menu button */
  1114. WHERE MBUTT         conv24MB;            /* 24-to-8 conversion mode mbutt */
  1115. WHERE MBUTT         algMB;               /* Algorithms mbutt */
  1116. WHERE MBUTT         rootMB;
  1117. WHERE MBUTT         sizeMB;
  1118. WHERE MBUTT         windowMB;
  1119.  
  1120.  
  1121. /* stuff used for 'directory' box */
  1122. WHERE Window        dirW, dnamW;
  1123. WHERE int           dirUp;       /* is dirW mapped or not */
  1124. WHERE LIST          dList;       /* list of filenames in current directory */
  1125. WHERE BUTT          dbut[S_NBUTTS];
  1126. WHERE CBUTT         browseCB, savenormCB, saveselCB;
  1127.  
  1128.  
  1129. /* stuff used for 'gamma' box */
  1130. WHERE Window        gamW;
  1131. WHERE int           gamUp;       /* is gamW mapped or not */
  1132. WHERE BUTT          gbut[G_NBUTTS];
  1133. WHERE int           editColor;   /* currently selected color # */
  1134. WHERE int           hsvmode;     /* true if in HSVmode */
  1135. WHERE int cellgroup[256], curgroup, maxgroup;  /* grouped colorcell stuff */
  1136. WHERE int           cmapInGam;
  1137.  
  1138.  
  1139. /* stuff used for 'browse' box */
  1140. WHERE int           anyBrowUp;            /* whether *any* browser visible */
  1141.  
  1142. /* stuff used for textview windows */
  1143. WHERE int           anyTextUp;            /* are any text windows visible? */
  1144. WHERE int           commentUp;            /* comment window up? */
  1145.  
  1146. /* stuff used for xvcut.c */
  1147. WHERE int           forceClipFile;        /* don't use property clipboard */
  1148. WHERE int           clearR, clearG, clearB;  /* clear color in 24-bit mode */
  1149.  
  1150.  
  1151. /* stuff used for 'ps' box */
  1152. WHERE Window        psW;
  1153. WHERE int           psUp;       /* is psW mapped, or what? */
  1154. WHERE CBUTT         encapsCB, pscompCB;   
  1155. WHERE char         *gsDev, *gsGeomStr;
  1156. WHERE int           gsRes;
  1157.  
  1158.  
  1159. #ifdef HAVE_JPEG
  1160. /* stuff used for 'jpeg' box */
  1161. WHERE Window        jpegW;
  1162. WHERE int           jpegUp;       /* is jpegW mapped, or what? */
  1163. #endif
  1164.  
  1165.  
  1166. #ifdef HAVE_TIFF
  1167. /* stuff used for 'tiff' box */
  1168. WHERE Window        tiffW;
  1169. WHERE int           tiffUp;       /* is tiffW mapped, or what? */
  1170. #endif
  1171.  
  1172.  
  1173. #undef WHERE
  1174.  
  1175.  
  1176.  
  1177. /* function declarations for externally-callable functions */
  1178.  
  1179. /****************************** XV.C ****************************/
  1180. int   ReadFileType      PARM((char *));
  1181. int   ReadPicFile       PARM((char *, int, PICINFO *, int));
  1182. int   UncompressFile    PARM((char *, char *));
  1183. void  KillPageFiles     PARM((char *, int));
  1184.  
  1185. void NewPicGetColors    PARM((int, int));
  1186. void FixAspect          PARM((int, int *, int *));
  1187. void ActivePrevNext     PARM((void));
  1188. int  DeleteCmd          PARM((void));
  1189. void StickInCtrlList    PARM((int));
  1190. void AddFNameToCtrlList PARM((char *, char *));
  1191. void ChangedCtrlList    PARM((void));
  1192. void HandleDispMode     PARM((void));
  1193. char *lower_str         PARM((char *));
  1194. int  rd_int             PARM((char *));
  1195. int  rd_str             PARM((char *));
  1196. int  rd_flag            PARM((char *));
  1197. int  rd_str_cl          PARM((char *, char *, int));
  1198.  
  1199. /****************************** XVEVENT.C ****************************/
  1200. int  EventLoop          PARM((void));
  1201. int  HandleEvent        PARM((XEvent *, int *));
  1202.  
  1203. void SelectDispMB       PARM((int));
  1204. void Select24to8MB      PARM((int));
  1205. void SelectRootMB       PARM((int));
  1206. void SelectWindowMB     PARM((int));
  1207. void SelectSizeMB       PARM((int));
  1208.  
  1209. void DoPrint            PARM((void));
  1210. void NewCutBuffer       PARM((char *));
  1211. void DrawWindow         PARM((int,int,int,int));
  1212. void WResize            PARM((int, int));
  1213. void WRotate            PARM((void));
  1214. void WCrop              PARM((int, int, int, int));
  1215. void WUnCrop            PARM((void));
  1216. void GetWindowPos       PARM((XWindowAttributes *));
  1217. void SetWindowPos       PARM((XWindowAttributes *));
  1218. void SetEpicMode        PARM((void));
  1219. int  xvErrorHandler     PARM((Display *, XErrorEvent *));
  1220.  
  1221. /****************************** XVROOT.C ****************************/
  1222. void MakeRootPic        PARM((void));
  1223. void ClearRoot          PARM((void));
  1224. void SaveRootInfo       PARM((void));
  1225. void KillOldRootInfo    PARM((void));
  1226.  
  1227. /*************************** XVMISC.C ***************************/
  1228. void StoreDeleteWindowProp  PARM((Window));
  1229. Window CreateWindow         PARM((char *, char *, char *, int, int, 
  1230.                   u_long, u_long, int));
  1231. void DrawString             PARM((Window, int, int, char *));
  1232. void CenterString           PARM((Window, int, int, char *));
  1233. void ULineString            PARM((Window, int, int, char *));
  1234. int  StringWidth            PARM((char *));
  1235. int  CursorKey              PARM((KeySym, int, int));
  1236. void FakeButtonPress        PARM((BUTT *));
  1237. void FakeKeyPress           PARM((Window, KeySym));
  1238. void GenExpose              PARM((Window, int, int, u_int, u_int));
  1239. void DimRect                PARM((Window, int, int, u_int, u_int, u_long));
  1240.  
  1241. void Draw3dRect             PARM((Window, int, int, u_int, u_int, int, int, 
  1242.                     u_long, u_long, u_long));
  1243.  
  1244. void RemapKeyCheck          PARM((KeySym, char *, int *));
  1245. void xvDestroyImage         PARM((XImage *));
  1246. void SetCropString          PARM((void));
  1247. void SetSelectionString     PARM((void));
  1248. void Warning                PARM((void));
  1249. void FatalError             PARM((char *));
  1250. void Quit                   PARM((int));
  1251. void LoadFishCursors        PARM((void));
  1252. void WaitCursor             PARM((void));
  1253. void SetCursors             PARM((int));
  1254. char *BaseName              PARM((char *));
  1255.  
  1256. void DrawTempGauge          PARM((Window, int, int, int, int, double, 
  1257.                   u_long, u_long, u_long, u_long, char *));
  1258. void ProgressMeter          PARM((int, int, int, char *));
  1259. void XVDeletedFile          PARM((char *));
  1260. void XVCreatedFile          PARM((char *));
  1261. void xvbcopy                PARM((char *, char *, size_t));
  1262. int  xvbcmp                 PARM((char *, char *, size_t));
  1263. void xvbzero                PARM((char *, size_t));
  1264. void xv_getwd               PARM((char *, size_t));
  1265. char *xv_strstr             PARM((char *, char *));
  1266. FILE *xv_fopen              PARM((char *, char *));
  1267. void Timer                  PARM((int));
  1268.  
  1269. /*************************** XVCOLOR.C ***************************/
  1270. void   SortColormap         PARM((byte *, int, int, int *, byte*,byte*,byte*,
  1271.                   byte *, byte *));
  1272. void   ColorCompress8       PARM((byte *));
  1273. void   AllocColors          PARM((void));
  1274. Status xvAllocColor         PARM((Display *, Colormap, XColor *));
  1275. void   xvFreeColors         PARM((Display *, Colormap, u_long *, int, u_long));
  1276. void   FreeColors           PARM((void));
  1277. void   ApplyEditColor       PARM((int));
  1278. int    MakeStdCmaps         PARM((void));
  1279. void   MakeBrowCmap         PARM((void));
  1280. void   ChangeCmapMode       PARM((int, int, int));
  1281.  
  1282. /*************************** XVIMAGE.C ***************************/
  1283. void Resize                 PARM((int, int));
  1284. void GenerateCpic           PARM((void));
  1285. void GenerateEpic           PARM((int, int));
  1286. void DoZoom                 PARM((int, int, u_int));
  1287. void Crop                   PARM((void));
  1288. void UnCrop                 PARM((void));
  1289. void AutoCrop               PARM((void));
  1290. int  DoAutoCrop             PARM((void));
  1291. void DoCrop                 PARM((int, int, int, int));
  1292. void Rotate                 PARM((int));
  1293. void DoRotate               PARM((int));
  1294. void RotatePic              PARM((byte *, int, int *, int *, int));
  1295. void Flip                   PARM((int));
  1296. void FlipPic                PARM((byte *, int, int, int));
  1297. void InstallNewPic          PARM((void));
  1298. void DrawEpic               PARM((void));
  1299. void KillOldPics            PARM((void));
  1300.  
  1301. byte *FSDither              PARM((byte *, int, int, int, 
  1302.                   byte *, byte *, byte *, int, int));
  1303.  
  1304. void CreateXImage           PARM((void));
  1305. XImage *Pic8ToXImage        PARM((byte *, u_int, u_int, u_long *, 
  1306.                   byte *, byte *, byte *));
  1307.  
  1308. XImage *Pic24ToXImage       PARM((byte *, u_int, u_int));
  1309.  
  1310. void Set824Menus            PARM((int));
  1311. void Change824Mode          PARM((int));
  1312. void FreeEpic               PARM((void));
  1313. void InvertPic24            PARM((byte *, int, int));
  1314.  
  1315. byte *XVGetSubImage         PARM((byte *, int, int,int, int,int,int,int));
  1316.  
  1317. int  DoPad                  PARM((int, char *, int, int, int, int));
  1318. int  LoadPad                PARM((PICINFO *, char *));
  1319.  
  1320. /*************************** XVALG.C ***************************/
  1321. void AlgInit                PARM((void));
  1322. void DoAlg                  PARM((int));
  1323.  
  1324. /*************************** XVSMOOTH.C ***************************/
  1325. byte *SmoothResize          PARM((byte *, int, int, int, int, byte *, byte *, 
  1326.                   byte *, byte *, byte *, byte *, int));
  1327.  
  1328. byte *Smooth24              PARM((byte *, int, int, int, int, int, 
  1329.                   byte *, byte *, byte *));
  1330.  
  1331. byte *DoColorDither         PARM((byte *, byte *, int, int, byte *, byte *, 
  1332.                   byte *, byte *, byte *, byte *, int));
  1333.  
  1334. byte *Do332ColorDither      PARM((byte *, byte *, int, int, byte *, byte *, 
  1335.                   byte *, byte *, byte *, byte *, int));
  1336.  
  1337. /*************************** XV24TO8.C **************************/
  1338. void Init24to8             PARM((void));
  1339. byte *Conv24to8            PARM((byte *, int, int, int, 
  1340.                  byte *, byte *, byte *));
  1341.  
  1342. byte *Conv8to24            PARM((byte *, int, int, byte *, byte *, byte *));
  1343.  
  1344. /**************************** XVCTRL.C **************************/
  1345. void   CreateCtrl          PARM((char *));
  1346. void   SetButtPix          PARM((BUTT *, Pixmap, int, int));
  1347. Pixmap MakePix1            PARM((Window, byte *, int, int));
  1348.  
  1349. void CtrlBox               PARM((int));
  1350. void RedrawCtrl            PARM((int, int, int, int));
  1351. int  ClickCtrl             PARM((int, int));
  1352. void DrawCtrlNumFiles      PARM((void));
  1353. void DrawCtrlStr           PARM((void));
  1354. void ScrollToCurrent       PARM((LIST *));
  1355.  
  1356. void LSCreate              PARM((LIST *, Window, int, int, int, int, int, 
  1357.                  char **, int, u_long, u_long, u_long, u_long,
  1358.                  void (*)(int, SCRL *), int, int));
  1359.  
  1360. void LSRedraw              PARM((LIST *, int));
  1361. int  LSClick               PARM((LIST *, XButtonEvent *));
  1362. void LSChangeData          PARM((LIST *, char **, int));
  1363. void LSNewData             PARM((LIST *, char **, int));
  1364. void LSKey                 PARM((LIST *, int));
  1365.  
  1366.  
  1367. /*************************** XVINFO.C ***************************/
  1368. void  CreateInfo           PARM((char *));
  1369. void  InfoBox              PARM((int));
  1370. void  RedrawInfo           PARM((int, int, int, int));
  1371. void  SetInfoMode          PARM((int));
  1372. char *GetISTR              PARM((int));
  1373.  
  1374. #if defined(__STDC__) && !defined(NOSTDHDRS)
  1375. void  SetISTR(int, ...);
  1376. #else
  1377. void  SetISTR();
  1378. #endif
  1379.  
  1380.  
  1381. /**************************** XVDIR.C ***************************/
  1382. void CreateDirW            PARM((char *));
  1383. void DirBox                PARM((int));
  1384. void RedrawDirW            PARM((int,int,int,int));
  1385. int  ClickDirW             PARM((int, int));
  1386. void LoadCurrentDirectory  PARM((void));
  1387. void GetDirPath            PARM((char *));
  1388. int  DirCheckCD            PARM((void));
  1389. void RedrawDDirW           PARM((void));
  1390. void RedrawDNamW           PARM((void));
  1391. void SelectDir             PARM((int));
  1392. void TrackDDirW            PARM((int,int));
  1393. int  DirKey                PARM((int));
  1394. int  DoSave                PARM((void));
  1395. void SetDirFName           PARM((char *));
  1396. char *GetDirFName          PARM((void));
  1397. char *GetDirFullName       PARM((void));
  1398. void SetDirSaveMode        PARM((int, int));
  1399. int  Globify               PARM((char *));
  1400. FILE *OpenOutFile          PARM((char *));
  1401. int  CloseOutFile          PARM((FILE *, char *, int));
  1402.  
  1403. byte *GenSavePic           PARM((int*, int*,int*, int*, int*, 
  1404.                  byte**, byte**, byte**));
  1405. void GetSaveSize           PARM((int *, int *));
  1406.  
  1407. void InitPoll              PARM((void));
  1408. int  CheckPoll             PARM((int));
  1409. void DIRDeletedFile        PARM((char *));
  1410. void DIRCreatedFile        PARM((char *));
  1411.  
  1412.  
  1413. /*************************** XVBROWSE.C ************************/
  1414. void CreateBrowse          PARM((char *, char *, char *, char *, char *));
  1415. void OpenBrowse            PARM((void));
  1416. void HideBrowseWindows     PARM((void));
  1417. void UnHideBrowseWindows   PARM((void));
  1418. void SetBrowseCursor       PARM((Cursor));
  1419. void KillBrowseWindows     PARM((void));
  1420. int  BrowseCheckEvent      PARM((XEvent *, int *, int *));
  1421. int  BrowseDelWin          PARM((Window));
  1422. void SetBrowStr            PARM((char *));
  1423. void RegenBrowseIcons      PARM((void));
  1424. void BRDeletedFile         PARM((char *));
  1425. void BRCreatedFile         PARM((char *));
  1426.  
  1427.  
  1428. /*************************** XVTEXT.C ************************/
  1429. void CreateTextWins        PARM((char *, char *));
  1430. void TextView              PARM((char *));
  1431. void OpenTextView          PARM((char *, int, char *, int));
  1432.  
  1433. void OpenCommentText       PARM((void));
  1434. void CloseCommentText      PARM((void));
  1435. void ChangeCommentText     PARM((void));
  1436.  
  1437. void ShowLicense           PARM((void));
  1438. void ShowKeyHelp           PARM((void));
  1439.  
  1440. void HideTextWindows       PARM((void));
  1441. void UnHideTextWindows     PARM((void));
  1442. void RaiseTextWindows      PARM((void));
  1443. void SetTextCursor         PARM((Cursor));
  1444. void KillTextWindows       PARM((void));
  1445. int  TextCheckEvent        PARM((XEvent *, int *, int *));
  1446. int  TextDelWin            PARM((Window));
  1447.  
  1448.  
  1449.  
  1450. /**************************** XVGAM.C **************************/
  1451. void CreateGam             PARM((char *, double, double, double, double, int));
  1452. int  GamCheckEvent         PARM((XEvent *));
  1453. void GamBox                PARM((int));
  1454. void NewCMap               PARM((void));
  1455. void RedrawCMap            PARM((void));
  1456. void ChangeEC              PARM((int));
  1457. void ApplyECctrls          PARM((void));
  1458. void GenerateFSGamma       PARM((void));
  1459. void DoNorm                PARM((void));
  1460. void DoHistEq              PARM((void));
  1461. void GammifyColors         PARM((void));
  1462. void Gammify1              PARM((int));
  1463. void rgb2hsv               PARM((int, int, int, double *, double *, double *));
  1464. void hsv2rgb               PARM((double, double, double, int *, int *, int *));
  1465.  
  1466. byte *GammifyPic24         PARM((byte *, int, int));
  1467. void GamSetAutoApply       PARM((int));
  1468.  
  1469. /*************************** XVSCRL.C ***************************/
  1470. void SCCreate              PARM((SCRL *, Window, int, int, int, int, 
  1471.                  int, int, int, int, u_long, u_long, 
  1472.                  u_long, u_long, void (*)(int, SCRL *)));
  1473.  
  1474. void SCChange              PARM((SCRL *, int, int, int, int, int, 
  1475.                  int, int, int));
  1476.  
  1477. void SCSetRange            PARM((SCRL *, int, int, int, int));
  1478. int  SCSetVal              PARM((SCRL *, int));
  1479. void SCRedraw              PARM((SCRL *));
  1480. void SCTrack               PARM((SCRL *, int, int));
  1481.  
  1482.  
  1483. /*************************** XVDIAL.C ***************************/
  1484. void DCreate               PARM((DIAL *, Window, int, int, int, int, int, 
  1485.                  int, int, int, u_long, u_long, u_long, 
  1486.                  u_long, char *, char *));
  1487.  
  1488. void DSetRange             PARM((DIAL *, int, int, int, int));
  1489. void DSetVal               PARM((DIAL *, int));
  1490. void DSetActive            PARM((DIAL *, int));
  1491. void DRedraw               PARM((DIAL *));
  1492. int  DTrack                PARM((DIAL *, int, int));
  1493.  
  1494.  
  1495. /**************************** XVBUTT.C ***************************/
  1496. void BTCreate              PARM((BUTT *, Window, int, int, u_int, u_int, 
  1497.                  char *, u_long, u_long, u_long, u_long));
  1498.  
  1499. void BTSetActive           PARM((BUTT *, int));
  1500. void BTRedraw              PARM((BUTT *));
  1501. int  BTTrack               PARM((BUTT *));
  1502.  
  1503.  
  1504. RBUTT *RBCreate            PARM((RBUTT *, Window, int, int, char *, 
  1505.                  u_long, u_long, u_long, u_long));
  1506.  
  1507. void   RBRedraw            PARM((RBUTT *, int));
  1508. void   RBSelect            PARM((RBUTT *, int));
  1509. int    RBWhich             PARM((RBUTT *));
  1510. int    RBCount             PARM((RBUTT *));
  1511. void   RBSetActive         PARM((RBUTT *, int, int));
  1512. int    RBClick             PARM((RBUTT *, int, int));
  1513. int    RBTrack             PARM((RBUTT *, int));
  1514.  
  1515.  
  1516. void   CBCreate            PARM((CBUTT *, Window, int, int, char *, 
  1517.                  u_long, u_long, u_long, u_long));
  1518.  
  1519. void   CBRedraw            PARM((CBUTT *));
  1520. void   CBSetActive         PARM((CBUTT *, int));
  1521. int    CBClick             PARM((CBUTT *,int,int));
  1522. int    CBTrack             PARM((CBUTT *));
  1523.  
  1524.  
  1525. void   MBCreate            PARM((MBUTT *, Window, int, int, u_int, u_int, 
  1526.                  char *, 
  1527.                  char **, int,u_long,u_long, u_long, u_long));
  1528.  
  1529. void   MBRedraw            PARM((MBUTT *));
  1530. void   MBSetActive         PARM((MBUTT *, int));
  1531. int    MBWhich             PARM((MBUTT *));
  1532. void   MBSelect            PARM((MBUTT *, int));
  1533. int    MBClick             PARM((MBUTT *, int, int));
  1534. int    MBTrack             PARM((MBUTT *));
  1535.  
  1536.  
  1537. /**************************** XVGRAF.C ***************************/
  1538. void   CreateGraf          PARM((GRAF *, Window, int, int, 
  1539.                  u_long, u_long, char *));
  1540.  
  1541. void   InitGraf            PARM((GRAF *));
  1542. void   RedrawGraf          PARM((GRAF *, int));
  1543. int    ClickGraf           PARM((GRAF *, Window, int, int));
  1544. int    GrafKey             PARM((GRAF *, char *));
  1545. void   GenerateGrafFunc    PARM((GRAF *, int));
  1546. void   Graf2Str            PARM((GRAF_STATE *, char *));
  1547. int    Str2Graf            PARM((GRAF_STATE *, char *));
  1548. void   GetGrafState        PARM((GRAF *, GRAF_STATE *));
  1549. int    SetGrafState        PARM((GRAF *, GRAF_STATE *));
  1550. void   InitSpline          PARM((int *, int *, int, double *));
  1551. double EvalSpline          PARM((int *, int *, double *, int, double));
  1552.  
  1553.  
  1554. /**************************** XVGIF.C ***************************/
  1555. int LoadGIF                PARM((char *, PICINFO *));
  1556.  
  1557. /*************************** XVGIFWR.C **************************/
  1558. int WriteGIF               PARM((FILE *, byte *, int, int, int, 
  1559.                  byte *, byte *, byte *, int, int, char *));
  1560.  
  1561. /**************************** XVPM.C ****************************/
  1562. int LoadPM                 PARM((char *, PICINFO *));
  1563. int WritePM                PARM((FILE *, byte *, int, int, int, byte *, 
  1564.                  byte *, byte *, int, int, char *));
  1565.  
  1566. /**************************** XVPBM.C ***************************/
  1567. int LoadPBM                PARM((char *, PICINFO *));
  1568. int WritePBM               PARM((FILE *, byte *, int, int, int, byte *, 
  1569.                  byte *, byte *, int, int, int, char *));
  1570.  
  1571. /**************************** XVXBM.C ***************************/
  1572. int LoadXBM                PARM((char *, PICINFO *));
  1573. int WriteXBM               PARM((FILE *, byte *, int, int, byte *, byte *, 
  1574.                  byte *, char *));
  1575.  
  1576. /**************************** XVSUNRAS.C ***************************/
  1577. int LoadSunRas             PARM((char *, PICINFO *));
  1578. int WriteSunRas            PARM((FILE *, byte *, int, int, int, byte *, 
  1579.                  byte *, byte*, int, int, int));
  1580.  
  1581. /**************************** XVBMP.C ***************************/
  1582. int LoadBMP                PARM((char *, PICINFO *));
  1583. int WriteBMP               PARM((FILE *, byte *, int, int, int, byte *, 
  1584.                  byte *, byte *, int, int));
  1585.  
  1586. /**************************** XVRLE.C ***************************/
  1587. int LoadRLE                PARM((char *, PICINFO *));
  1588.  
  1589. /**************************** XVIRIS.C ***************************/
  1590. int LoadIRIS               PARM((char *, PICINFO *));
  1591. int WriteIRIS              PARM((FILE *, byte *, int, int, int, byte *, 
  1592.                  byte *, byte *, int, int));
  1593.  
  1594. /**************************** XVPCX.C ***************************/
  1595. int LoadPCX                PARM((char *, PICINFO *));
  1596.  
  1597. /**************************** XVIFF.C ***************************/
  1598. int LoadIFF                PARM((char *, PICINFO *));
  1599.  
  1600. /**************************** XVTARGA.C ***************************/
  1601. int LoadTarga              PARM((char *, PICINFO *));
  1602. int WriteTarga             PARM((FILE *, byte *, int, int, int, byte *, 
  1603.                  byte *, byte *, int, int));
  1604.  
  1605. /**************************** XVXPM.C ***************************/
  1606. int LoadXPM                PARM((char *, PICINFO *));
  1607. int WriteXPM               PARM((FILE *, byte *, int, int, int, byte *, 
  1608.                  byte *, byte *, int, int, char *, char *));
  1609.  
  1610. /**************************** XVXWD.C ***************************/
  1611. int LoadXWD                PARM((char *, PICINFO *));
  1612.  
  1613. /**************************** XVFITS.C ***************************/
  1614. int LoadFITS               PARM((char *, PICINFO *, int));
  1615. int WriteFITS              PARM((FILE *, byte *, int, int, int, byte *,
  1616.                  byte *, byte *, int, int, char *));
  1617.  
  1618. /**************************** XVJPEG.C ***************************/
  1619. int  LoadJFIF              PARM((char *, PICINFO *, int));
  1620. void CreateJPEGW           PARM((void));
  1621. void JPEGDialog            PARM((int));
  1622. int  JPEGCheckEvent        PARM((XEvent *));
  1623. void JPEGSaveParams        PARM((char *, int));
  1624.  
  1625. /**************************** XVTIFF.C ***************************/
  1626. int   LoadTIFF             PARM((char *, PICINFO *));
  1627. void  CreateTIFFW          PARM((void));
  1628. void  TIFFDialog           PARM((int));
  1629. int   TIFFCheckEvent       PARM((XEvent *));
  1630. void  TIFFSaveParams       PARM((char *, int));
  1631.  
  1632. /**************************** XVPDS.C ***************************/
  1633. int LoadPDS                PARM((char *, PICINFO *));
  1634.  
  1635. /*************************** XVPS.C ***************************/
  1636. void  CreatePSD            PARM((char *));
  1637. void  PSDialog             PARM((int));
  1638. int   PSCheckEvent         PARM((XEvent *));
  1639. void  PSSaveParams         PARM((char *, int));
  1640. void  PSResize             PARM((void));
  1641. int   LoadPS               PARM((char *, PICINFO *, int));
  1642.  
  1643. /*************************** XVPOPUP.C ***************************/
  1644. void  CenterMapWindow      PARM((Window, int, int, int, int));
  1645. int   PopUp                PARM((char *, char **, int));
  1646. void  ErrPopUp             PARM((char *, char *));
  1647. int   GetStrPopUp          PARM((char *, char **, int, char *, int, 
  1648.                  char *, int));
  1649. int   GrabPopUp            PARM((int *, int *));
  1650. int   PadPopUp             PARM((int *, char **, int *, int *, int *, int *));
  1651. void  ClosePopUp           PARM((void));
  1652. void  OpenAlert            PARM((char *));
  1653. void  CloseAlert           PARM((void));
  1654. int   PUCheckEvent         PARM((XEvent *));
  1655. void  TextRect             PARM((Window, char *, int, int, int, int, u_long));
  1656.  
  1657. /*************************** XVDFLT.C ***************************/
  1658. void LoadDfltPic           PARM((PICINFO *));
  1659. void xbm2pic               PARM((byte *, int, int, byte *, int, int, int, int,
  1660.                  int));
  1661. void DrawStr2Pic           PARM((char *, int, int, byte *, int, int, int));
  1662.  
  1663. /**************************** XVGRAB.C ***************************/
  1664. int Grab                   PARM((void));
  1665. int LoadGrab               PARM((PICINFO *));
  1666.  
  1667.  
  1668. /**************************** XVCUT.C ***************************/
  1669. int  CutAllowed            PARM((void));
  1670. int  PasteAllowed          PARM((void));
  1671. void DoImgCopy             PARM((void));
  1672. void DoImgCut              PARM((void));
  1673. void DoImgClear            PARM((void));
  1674. void DoImgPaste            PARM((void));
  1675.  
  1676. void SaveToClip            PARM((byte *));
  1677. void InitSelection         PARM((void));
  1678. int  HaveSelection         PARM((void));
  1679. int  GetSelType            PARM((void));
  1680. void GetSelRCoords         PARM((int *, int *, int *, int *));
  1681. void EnableSelection       PARM((int));
  1682. void DrawSelection         PARM((int));
  1683. int  DoSelection           PARM((XButtonEvent *));
  1684. void MoveGrowSelection     PARM((int, int, int, int));
  1685. void BlinkSelection        PARM((int));
  1686. void FlashSelection        PARM((int));
  1687.  
  1688. void CropRect2Rect         PARM((int*,int*,int*,int*, int,int,int,int));
  1689. void CoordE2C              PARM((int, int, int *, int *));
  1690. void CoordC2E              PARM((int, int, int *, int *));
  1691. void CoordP2C              PARM((int, int, int *, int *));
  1692. void CoordC2P              PARM((int, int, int *, int *));
  1693. void CoordP2E              PARM((int, int, int *, int *));
  1694. void CoordE2P              PARM((int, int, int *, int *));
  1695.  
  1696.