home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
x
/
volume10
/
xv
/
part01
next >
Wrap
Internet Message Format
|
1990-12-08
|
44KB
Path: uunet!lll-winken!sun-barr!newstop!exodus!appserv!halibut.cis.upenn.edu
From: bradley@halibut.cis.upenn.edu (John Bradley)
Newsgroups: comp.sources.x
Subject: v10i079: xv - display and manipulate images, Part01/10
Message-ID: <csx-10i079:xv@uunet.UU.NET>
Date: 27 Nov 90 20:08:06 GMT
Sender: news@exodus.Eng.Sun.COM
Lines: 1170
Approved: argv@sun.com
Submitted-by: bradley@halibut.cis.upenn.edu (John Bradley)
Posting-number: Volume 10, Issue 79
Archive-name: xv/part01
Sources to XV, patchlevel 2. Lots of bug fixes, '#ifdefs' for various
machines, and some new features.
Overview (from the man page)
_____________
xv is an X11 program that displays images in the GIF, PBM, PGM, PPM,
X11 bitmap, and PM formats on 1-, 4-, 6-, 8-, 24-, and 32-bit X displays.
xv displays one image at a time in an output window. You can arbitrarily
stretch or compress the window, and the picture will be rescaled to fit.
You can rotate the picture in 90-degree steps. You can repeatedly 'crop'
a picture (define a rectangular 'region-of-interest' and 'throw away' the
rest). You can magnify any portion of the picture by
any amount, up to the maximum size of your screen.
_____________
New Features: bi-direction rotation, 'maxpect' button (maximum size, but
preserve aspect ratio), 'autocrop' button (gets rid of constant-color borders),
new ability to center pictures on the root window.
This is complete posting, as A) the patches would've been nearly as large, and
B) considering the problems of the previous postings...
Also, this is all available for anonymous ftp from expo.lcs.mit.edu, as
contrib/xv.pl2.tar.Z.
John Bradley - GRASP Lab - University of Pennsylvania
bradley@cis.upenn.edu
----------------------------(cut here)------------------------
#!/bin/sh
# to extract, remove the header and type "sh filename"
if `test ! -d ./docs`
then
mkdir ./docs
echo "mkdir ./docs"
fi
if `test ! -s ./docs/xv.blurb`
then
echo "writting ./docs/xv.blurb"
cat > ./docs/xv.blurb << '\BARFOO\'
XV is a direct successor to XGIF.
New features include:
* more graphic formats supported (GIF, PBM/PGM/PPM, and X11 bitmap)
* works on most X displays (1-, 4-, 6-, 8-, and 24-bit displays are
supported)
* arbitrary scaling, cropping, rotation (in 90-degree steps)
* can write files in all formats listed above
* arbitrary gamma correction curve for brightness/contrast control
and interesting effects
* cool-whizo user interface
* better color allocation code, including the ability to install its own
colormap if necessary
* more robust error handling
* and more bug fixes than we'd care to discuss...
Full Description:
-----------------
XV is a program that displays image files in GIF, PBM/PGM/PPM, and X11 Bitmap
formats. It is a direct sequel to XGIF, and fixes most (if not all) of the
shortcomings of that program. XV runs on nearly ALL X displays, 1-bit,
4-bit, 6-bit, 8-bit, and 24-bit, color, grayscale, and black/white.
XV displays one image at a time in an output window. You can arbitrarily
stretch or compress the window, and the picture will be rescaled to fit.
You can rotate the picture in 90-degree steps. You can repeatedly 'crop'
a picture (define a rectangular 'region-of-interest' and 'throw away' the
rest). You can magnify any portion of the picture by any amount, up to the
maximum size of your screen.
XV allows you click on the picture to determine pixel RGB values and x,y
coordinates. You can perform arbitrary 'gamma correction' on the picture
both in RGB space and HSV space. You can specify the maximum number of colors
that XV should use, for some interesting visual effects. You can have
the program produce a stippled version of the picture using black and white,
or any other pair of colors.
XV can write images in a variety of formats, with many of the modifications
you may have made to the picture saved as well. You can use XV to do format
conversion. XV will also automatically uncompress compress-ed files, as well
as read files from stdin.
John Bradley University of Pennsylvania - GRASP Lab
bradley@cis.upenn.edu
October 9, 1990
\BARFOO\
else
echo "will not over write ./docs/xv.blurb"
fi
if `test ! -s ./bitmaps.h`
then
echo "writting ./bitmaps.h"
cat > ./bitmaps.h << '\BARFOO\'
#define grasp_width 64
#define grasp_height 64
static char grasp_bits[] = {
0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x05, 0x00, 0x00,
0x00, 0x00, 0xfc, 0xff, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
0xff, 0xff, 0x01, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00,
0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xf0, 0xff, 0xff,
0xff, 0xff, 0x0f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0xff,
0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0x07,
0x54, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x07,
0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x00,
0x00, 0x00, 0xfe, 0x1f, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf8, 0x3f,
0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0xff, 0xff, 0x1f, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf9, 0xf8, 0x01, 0x03, 0x8f, 0x3f,
0xff, 0xff, 0xfc, 0xf9, 0x83, 0x83, 0x9f, 0x7f, 0xff, 0x7f, 0xfe, 0xfb,
0x87, 0xc7, 0xbf, 0x7f, 0xff, 0x3f, 0x8e, 0x3b, 0xc7, 0xc7, 0xb9, 0x73,
0x00, 0x00, 0x0e, 0x38, 0xc7, 0xce, 0x83, 0x73, 0x00, 0x00, 0xee, 0xbb,
0xc7, 0x8e, 0x8f, 0x7b, 0x00, 0x00, 0xee, 0xfb, 0xe3, 0x0f, 0x9f, 0x3f,
0x00, 0x00, 0x8e, 0xfb, 0xe1, 0x1f, 0xb8, 0x1f, 0x00, 0x00, 0x9e, 0xbb,
0xe3, 0xde, 0xb9, 0x03, 0x00, 0x00, 0xfc, 0xbb, 0x73, 0xdc, 0xbf, 0x03,
0x00, 0x00, 0xfc, 0x39, 0x77, 0xb8, 0x9f, 0x03, 0x00, 0x00, 0xf0, 0x38,
0x77, 0x38, 0x8f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f, 0x10, 0x20,
0x00, 0x40, 0x00, 0x00, 0xff, 0x7f, 0x10, 0xec, 0xee, 0xec, 0xee, 0x0a,
0xff, 0xff, 0x10, 0xaa, 0x2a, 0x4a, 0x2a, 0x0a, 0xff, 0xff, 0xf1, 0xfe,
0x2e, 0xde, 0x2e, 0x0e, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x08,
0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x06, 0xff, 0xff, 0x0f, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0xff, 0xff, 0x7f, 0x00,
0x00, 0x00, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0x1f,
0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x03,
0x00, 0xc0, 0xff, 0x07, 0xfe, 0xff, 0xff, 0x07, 0x54, 0xff, 0xff, 0x03,
0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff,
0xff, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00,
0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x80, 0xff, 0xff,
0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00,
0x00, 0x00, 0xf8, 0xff, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff,
0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x17, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00};
#define penn_width 64
#define penn_height 64
static char penn_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x18, 0x00, 0x00,
0x00, 0x00, 0x18, 0x00, 0x00, 0xd8, 0xff, 0xff, 0xff, 0xff, 0x1b, 0x00,
0x00, 0xd8, 0xff, 0xff, 0xff, 0xff, 0x1b, 0x00, 0x00, 0xd8, 0xab, 0xff,
0xff, 0xd5, 0x1b, 0x00, 0x00, 0x58, 0x7d, 0xfd, 0xbf, 0xbe, 0x1a, 0x00,
0x00, 0xd8, 0x93, 0x1f, 0xf7, 0xc9, 0x1b, 0x00, 0x00, 0x58, 0x01, 0x0d,
0xb2, 0x80, 0x1a, 0x00, 0x00, 0xd8, 0x11, 0xef, 0xee, 0x88, 0x1b, 0x00,
0x00, 0x58, 0x01, 0x15, 0xad, 0x80, 0x1a, 0x00, 0x00, 0xd8, 0x11, 0x67,
0xe2, 0x88, 0x1b, 0x00, 0x00, 0x58, 0x01, 0xf5, 0xb1, 0x80, 0x1a, 0x00,
0x00, 0xd8, 0x39, 0xff, 0xff, 0x9c, 0x1b, 0x00, 0x00, 0x58, 0xff, 0xfd,
0xbf, 0xff, 0x1a, 0x00, 0x00, 0xd8, 0xaa, 0xfe, 0x7f, 0x55, 0x1b, 0x00,
0x00, 0xd8, 0xff, 0xff, 0xff, 0xff, 0x1b, 0x00, 0x00, 0xd8, 0xff, 0xff,
0xff, 0xff, 0x1b, 0x00, 0x00, 0xd8, 0xff, 0xff, 0xff, 0xff, 0x1b, 0x00,
0x00, 0x58, 0x00, 0x80, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x58, 0x00, 0xc0,
0x03, 0x00, 0x1a, 0x00, 0x00, 0x58, 0x00, 0xe0, 0x07, 0x00, 0x1a, 0x00,
0x00, 0x58, 0x00, 0xf0, 0x0f, 0x00, 0x1a, 0x00, 0x00, 0x58, 0x00, 0xf8,
0x1f, 0x00, 0x1a, 0x00, 0x00, 0x58, 0x00, 0x7c, 0x3e, 0x00, 0x1a, 0x00,
0x00, 0x58, 0x00, 0x1e, 0x78, 0x00, 0x1a, 0x00, 0x00, 0x98, 0x00, 0x1f,
0xf8, 0x00, 0x19, 0x00, 0x00, 0xb8, 0x80, 0x0f, 0xf0, 0x01, 0x1d, 0x00,
0x00, 0xb0, 0xc0, 0x0f, 0xf0, 0x03, 0x0d, 0x00, 0x00, 0xb0, 0xe0, 0x1f,
0xf8, 0x07, 0x0d, 0x00, 0x00, 0xb0, 0xf0, 0x1f, 0xf8, 0x0f, 0x0d, 0x00,
0x00, 0x30, 0x79, 0x7e, 0x7e, 0x9e, 0x0c, 0x00, 0x00, 0x60, 0x1d, 0xf8,
0x1f, 0xb8, 0x06, 0x00, 0x00, 0x60, 0x1f, 0xf8, 0x1f, 0xf8, 0x06, 0x00,
0x00, 0x60, 0x0e, 0xf0, 0x0f, 0x70, 0x06, 0x00, 0x00, 0xc0, 0x0e, 0xf0,
0x0f, 0x70, 0x03, 0x00, 0x00, 0xc0, 0x1c, 0x78, 0x1e, 0x38, 0x03, 0x00,
0x00, 0x80, 0x1d, 0x38, 0x1c, 0xb8, 0x01, 0x00, 0x00, 0x80, 0x79, 0x1e,
0x78, 0x9e, 0x01, 0x00, 0x00, 0x00, 0xfb, 0x0f, 0xf0, 0xdf, 0x00, 0x00,
0x00, 0x00, 0xf3, 0x07, 0xe0, 0xcf, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x03,
0xc0, 0x67, 0x00, 0x00, 0x00, 0x00, 0xec, 0x01, 0x80, 0x37, 0x00, 0x00,
0x00, 0x00, 0xcc, 0x00, 0x00, 0x33, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x00,
0x00, 0x19, 0x00, 0x3c, 0x6e, 0x78, 0x30, 0x01, 0x80, 0x0c, 0x1e, 0x76,
0xda, 0x87, 0x60, 0x06, 0x60, 0x06, 0xe1, 0x5b, 0xfa, 0x88, 0xc1, 0x08,
0x10, 0x83, 0x19, 0x5f, 0x1a, 0x46, 0x81, 0x33, 0xcc, 0x81, 0x72, 0x59,
0xda, 0x70, 0x01, 0xc7, 0xe3, 0x80, 0x0e, 0x59, 0x96, 0xbf, 0x01, 0x1c,
0x38, 0x80, 0xfd, 0x69, 0x60, 0x8a, 0x07, 0x78, 0x1e, 0xe0, 0x59, 0x06,
0xc0, 0xcb, 0x1d, 0xe0, 0x07, 0xb8, 0xd3, 0x03, 0xc0, 0x69, 0xf0, 0x80,
0x01, 0x0f, 0x96, 0x03, 0x00, 0x08, 0x09, 0x1f, 0xf8, 0x60, 0x10, 0x00,
0x00, 0x90, 0x5d, 0xe0, 0x07, 0xf6, 0x08, 0x00, 0x00, 0x60, 0x48, 0x0b,
0xd0, 0x16, 0x06, 0x00, 0x00, 0x80, 0x25, 0xe3, 0xdc, 0x87, 0x01, 0x00,
0x00, 0x00, 0x8e, 0xe4, 0x94, 0x70, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01,
0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
#define down_width 16
#define down_height 16
static char down_bits[] = {
0xff, 0xff, 0x01, 0x80, 0x01, 0x80, 0xf1, 0x87, 0x11, 0x84, 0x11, 0x84,
0x11, 0x84, 0x1f, 0xbc, 0x05, 0x90, 0x09, 0x88, 0x11, 0x84, 0x21, 0x82,
0x41, 0x81, 0x81, 0x80, 0x01, 0x80, 0xff, 0xff};
#define down1_width 16
#define down1_height 16
static char down1_bits[] = {
0xff, 0xff, 0x01, 0x80, 0x01, 0x80, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87,
0xf1, 0x87, 0xff, 0xbf, 0xfd, 0x9f, 0xf9, 0x8f, 0xf1, 0x87, 0xe1, 0x83,
0xc1, 0x81, 0x81, 0x80, 0x01, 0x80, 0xff, 0xff};
#define up_width 16
#define up_height 16
static char up_bits[] = {
0xff, 0xff, 0x01, 0x80, 0x81, 0x80, 0x41, 0x81, 0x21, 0x82, 0x11, 0x84,
0x09, 0x88, 0x05, 0x90, 0x1f, 0xbc, 0x11, 0x84, 0x11, 0x84, 0x11, 0x84,
0xf1, 0x87, 0x01, 0x80, 0x01, 0x80, 0xff, 0xff};
#define up1_width 16
#define up1_height 16
static char up1_bits[] = {
0xff, 0xff, 0x01, 0x80, 0x81, 0x80, 0xc1, 0x81, 0xe1, 0x83, 0xf1, 0x87,
0xf9, 0x8f, 0xfd, 0x9f, 0xff, 0xbf, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87,
0xf1, 0x87, 0x01, 0x80, 0x01, 0x80, 0xff, 0xff};
#define scrlgray_width 8
#define scrlgray_height 8
static char scrlgray_bits[] = {
0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44};
#define gray50_width 8
#define gray50_height 8
static char gray50_bits[] = {
0x33, 0xcc, 0x33, 0xcc, 0x33, 0xcc, 0x33, 0xcc};
#define gray25_width 8
#define gray25_height 8
static char gray25_bits[] = {
0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22};
#define i_fifo_width 20
#define i_fifo_height 13
static char i_fifo_bits[] = {
0x80, 0x0f, 0xf0, 0x80, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xf0,
0xff, 0xff, 0xff, 0xf0, 0x7f, 0xf0, 0xff, 0xff, 0xff, 0xc0, 0x1f, 0xf0,
0xff, 0xff, 0xff, 0x00, 0x07, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf0,
0xff, 0xff, 0xff};
#define i_chr_width 20
#define i_chr_height 13
static char i_chr_bits[] = {
0xe0, 0x7f, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00,
0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0xe0, 0x7f, 0x00,
0x00, 0x09, 0x00, 0xf0, 0xff, 0x00, 0x50, 0xd5, 0x00, 0xb0, 0xaa, 0x00,
0xf0, 0xff, 0x00};
#define i_dir_width 20
#define i_dir_height 13
static char i_dir_bits[] = {
0xf0, 0x01, 0x00, 0x08, 0x02, 0x00, 0xfe, 0xff, 0x07, 0x02, 0x00, 0x04,
0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04,
0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04,
0xfe, 0xff, 0x07};
#define i_blk_width 20
#define i_blk_height 13
static char i_blk_bits[] = {
0x40, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x0c, 0x02, 0x00, 0x03, 0xcc, 0x01,
0x0d, 0x3a, 0x06, 0xb1, 0x19, 0x06, 0x41, 0xe8, 0x05, 0x41, 0x88, 0x04,
0x41, 0x88, 0x04, 0x41, 0x88, 0x04, 0x43, 0x9c, 0x06, 0x4c, 0xb2, 0x01,
0xf0, 0xc1, 0x00};
#define i_lnk_width 20
#define i_lnk_height 13
static char i_lnk_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0xff, 0x07,
0xe0, 0xff, 0x07, 0x30, 0xc0, 0x01, 0x30, 0x40, 0x00, 0xe0, 0x0f, 0x00,
0xc0, 0x1f, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0xfe, 0x1f, 0x00,
0xfe, 0x0f, 0x00};
#define i_sock_width 20
#define i_sock_height 13
static char i_sock_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x84, 0xf0, 0x0f,
0x8c, 0x10, 0x00, 0x9f, 0x5a, 0x05, 0xbf, 0xb5, 0x0a, 0x9f, 0xff, 0x0f,
0x8c, 0xff, 0x0f, 0x84, 0xff, 0x0f, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00};
#define i_reg_width 20
#define i_reg_height 13
static char i_reg_bits[] = {
0xc0, 0x7f, 0x00, 0xa0, 0x40, 0x00, 0x90, 0x40, 0x00, 0xf0, 0x40, 0x00,
0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00,
0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00,
0xf0, 0x7f, 0x00};
#define rb_off_width 15
#define rb_off_height 15
static char rb_off_bits[] = {
0xe0, 0x03, 0x18, 0x0c, 0x04, 0x10, 0x02, 0x20, 0x02, 0x20, 0x01, 0x40,
0x01, 0x40, 0x01, 0x40, 0x01, 0x40, 0x01, 0x40, 0x02, 0x20, 0x02, 0x20,
0x04, 0x10, 0x18, 0x0c, 0xe0, 0x03};
#define rb_on_width 15
#define rb_on_height 15
static char rb_on_bits[] = {
0xe0, 0x03, 0x18, 0x0c, 0x04, 0x10, 0xc2, 0x21, 0xf2, 0x27, 0xf1, 0x47,
0xf9, 0x4f, 0xf9, 0x4f, 0xf9, 0x4f, 0xf1, 0x47, 0xf2, 0x27, 0xc2, 0x21,
0x04, 0x10, 0x18, 0x0c, 0xe0, 0x03};
#define rb_off1_width 15
#define rb_off1_height 15
static char rb_off1_bits[] = {
0xe0, 0x03, 0xf8, 0x0f, 0x1c, 0x1c, 0x06, 0x30, 0x06, 0x30, 0x03, 0x60,
0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x06, 0x30, 0x06, 0x30,
0x1c, 0x1c, 0xf8, 0x0f, 0xe0, 0x03};
#define rb_on1_width 15
#define rb_on1_height 15
static char rb_on1_bits[] = {
0xe0, 0x03, 0xf8, 0x0f, 0x1c, 0x1c, 0xc6, 0x31, 0xf6, 0x37, 0xf3, 0x67,
0xfb, 0x6f, 0xfb, 0x6f, 0xfb, 0x6f, 0xf3, 0x67, 0xf6, 0x37, 0xc6, 0x31,
0x1c, 0x1c, 0xf8, 0x0f, 0xe0, 0x03};
#define fc_left_width 16
#define fc_left_height 16
static char fc_left_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x04, 0x70, 0x82, 0x8c, 0xe2,
0x22, 0x9c, 0x2d, 0x90, 0x2d, 0x80, 0x21, 0x90, 0x22, 0x9c, 0x1c, 0xe3,
0x70, 0x82, 0x80, 0x02, 0x00, 0x07, 0x00, 0x00};
#define fc_leftm_width 16
#define fc_leftm_height 16
static char fc_leftm_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x07, 0xf0, 0x83, 0xfc, 0xe3,
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfc, 0xe3,
0xf0, 0x83, 0x80, 0x03, 0x00, 0x07, 0x00, 0x00};
#define fc_mid_width 16
#define fc_mid_height 16
static char fc_mid_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x80, 0x03, 0x40, 0x04, 0x20, 0x08,
0xe0, 0x0e, 0xe0, 0x0e, 0x20, 0x08, 0xa0, 0x0b, 0xe0, 0x0f, 0xa0, 0x0b,
0x40, 0x04, 0x80, 0x03, 0x80, 0x03, 0x00, 0x00};
#define fc_midm_width 16
#define fc_midm_height 16
static char fc_midm_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x80, 0x03, 0xc0, 0x07, 0xe0, 0x0f,
0xe0, 0x0f, 0xe0, 0x0f, 0xe0, 0x0f, 0xe0, 0x0f, 0xe0, 0x0f, 0xe0, 0x0f,
0xc0, 0x07, 0x80, 0x03, 0x80, 0x03, 0x00, 0x00};
#define fc_right_width 16
#define fc_right_height 16
static char fc_right_bits[] = {
0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x20, 0x03, 0x41, 0x0e, 0x47, 0x30,
0x39, 0x44, 0x09, 0xb4, 0x01, 0xb4, 0x09, 0x84, 0x39, 0x44, 0xc7, 0x38,
0x41, 0x0e, 0x40, 0x01, 0xe0, 0x00, 0x00, 0x00};
#define fc_rightm_width 16
#define fc_rightm_height 16
static char fc_rightm_bits[] = {
0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0xc1, 0x0f, 0xc7, 0x3f,
0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xc7, 0x3f,
0xc1, 0x0f, 0xc0, 0x01, 0xe0, 0x00, 0x00, 0x00};
#define fc_left1_width 16
#define fc_left1_height 16
static char fc_left1_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x02, 0xe0, 0x14, 0x10, 0x1f,
0xd8, 0x14, 0xd8, 0x14, 0x08, 0x10, 0x08, 0x14, 0xd0, 0x14, 0x70, 0x1e,
0x60, 0x13, 0x80, 0x01, 0x00, 0x01, 0x00, 0x00};
#define fc_left1m_width 16
#define fc_left1m_height 16
static char fc_left1m_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xe0, 0x17, 0xf0, 0x1f,
0xf8, 0x1f, 0xf8, 0x1f, 0xf8, 0x1f, 0xf8, 0x1f, 0xf0, 0x1f, 0xf0, 0x1f,
0xe0, 0x13, 0x80, 0x01, 0x00, 0x01, 0x00, 0x00};
#define fc_right1_width 16
#define fc_right1_height 16
static char fc_right1_bits[] = {
0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x40, 0x03, 0x28, 0x07, 0xf8, 0x08,
0x28, 0x1b, 0x28, 0x1b, 0x08, 0x10, 0x28, 0x10, 0x28, 0x0b, 0x38, 0x0e,
0xc8, 0x06, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00};
#define fc_right1m_width 16
#define fc_right1m_height 16
static char fc_right1m_bits[] = {
0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x03, 0xe8, 0x07, 0xf8, 0x0f,
0xf8, 0x1f, 0xf8, 0x1f, 0xf8, 0x1f, 0xf8, 0x1f, 0xf8, 0x0f, 0xf8, 0x0f,
0xc8, 0x07, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00};
#define icon_width 48
#define icon_height 29
static char icon_bits[] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3e, 0x00, 0x7c, 0x7c, 0x00, 0x7c, 0x5c, 0x00, 0x2e, 0x5c, 0x00, 0x5c,
0xb8, 0x00, 0x17, 0xb8, 0x00, 0x2e, 0x70, 0x81, 0x0b, 0xb8, 0x00, 0x2e,
0x70, 0x81, 0x0b, 0x70, 0x01, 0x17, 0xe0, 0xc2, 0x05, 0x70, 0x01, 0x17,
0xc0, 0xe5, 0x02, 0xe0, 0x82, 0x0b, 0x80, 0x7b, 0x01, 0xe0, 0x82, 0x0b,
0x00, 0xb7, 0x00, 0xc0, 0xc5, 0x05, 0x00, 0x56, 0x00, 0xc0, 0xc5, 0x05,
0x00, 0x2e, 0x00, 0x80, 0xeb, 0x02, 0x00, 0x56, 0x00, 0x80, 0xeb, 0x02,
0x00, 0xb7, 0x00, 0x00, 0x77, 0x01, 0x80, 0x7b, 0x01, 0x00, 0x77, 0x01,
0xc0, 0xe5, 0x02, 0x00, 0xae, 0x00, 0xe0, 0xc2, 0x05, 0x00, 0xae, 0x00,
0x70, 0x81, 0x0b, 0x00, 0x5c, 0x00, 0x70, 0x81, 0x0b, 0x00, 0x5c, 0x00,
0xb8, 0x00, 0x17, 0x00, 0x38, 0x00, 0x5c, 0x00, 0x2e, 0x00, 0x38, 0x00,
0x3e, 0x00, 0x7c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
\BARFOO\
else
echo "will not over write ./bitmaps.h"
fi
if `test ! -s ./pm.h`
then
echo "writting ./pm.h"
cat > ./pm.h << '\BARFOO\'
/* include file defining constants/macros for PM files. Used by xvpm.c
*/
/*
* Copyright 1989, 1990 by the University of Pennsylvania
*
* Permission to use, copy, and distribute for non-commercial purposes,
* is hereby granted without fee, providing that the above copyright
* notice appear in all copies and that both the copyright notice and this
* permission notice appear in supporting documentation.
*
* The software may be modified for your own purposes, but modified versions
* may not be distributed.
*
* This software is provided "as is" without any express or implied warranty.
*/
#define PM_MAGICNO 0x56494557 /* Hex for VIEW */
#define PM_MAXNELM 1024
#define PM_MAXNBAND 1024
#define PM_NOSHIFT 0
#define PM_SHIFT 1
#define PM_A 0x8000
#define PM_C 0x8001
#define PM_S 0x8002
#define PM_I 0x8004
#define PM_F 0xc004
#define PM_RED 0xff
#define PM_GREEN 0xff00
#define PM_BLUE 0xff0000
#define PM_ALPHA 0xff000000
#define PM_BW 0
#define PM_CMAX 0xff
#define PM_SMAX 0x7fff
#define PM_IMAX 0x7fffffff
#define PM_FMAX 1.7E38
#define PM_IOHDR_SIZE (sizeof(pmpic)-(2*sizeof(char*)))
#define pm_max(pm) ((pm)->pm_form == PM_C ? PM_CMAX : \
(pm)->pm_form == PM_S ? PM_SMAX : \
(pm)->pm_form == PM_I ? PM_IMAX : \
PM_FMAX)
#define pm_index(fm) (((fm)&0xff)-(((fm)>>14)&01))
#define pm_sel(fm,fn) (*((fn)[pm_index(fm)]))
#define pm_iindex(a,nc,cr,cc) ((a)+((cr)*(nc))+(cc))
#define pm_nelm(p) ((p)->pm_ncol * (p)->pm_nrow)
#define pm_nbelm(p) (pm_nelm(p) * (p)->pm_nband)
#define pm_psize(p) (pm_nbelm(p) * (((p)->pm_form)&0xff))
#define pm_isize(p) ((p)->pm_np * pm_psize(p))
#define pm_npix(p) (pm_nbelm(p) * (p)->pm_np)
#include <sys/types.h>
typedef struct {
int pm_id; /* Magic number for pm format files. */
int pm_np; /* Number of planes. Normally 1. */
int pm_nrow; /* Number of rows. 1 - MAXNELM. */
int pm_ncol; /* Number of columns. 1 - MAXNELM. */
int pm_nband; /* Number of bands. */
int pm_form; /* Pixel format. */
int pm_cmtsize; /* Number comment bytes. Includes NULL. */
char *pm_image; /* The image itself. */
char *pm_cmt; /* Transforms performed. */
} pmpic;
typedef struct {
int pm_x; /* X Position. */
int pm_y; /* Y Position. */
int pm_z; /* Z Position. */
float pm_ux; /* Uncertainty in x. */
float pm_uy; /* Uncertainty in y. */
float pm_uz; /* Uncertainty in z. */
} pmxyz;
#define PM_EBASE 100
#define PM_EMALLOC 101
#define PM_EBADPARAM 102
#define PM_EBADPIC 103
#define PM_EBADFORM 104
#define PM_EBADMAGIC 105
#define PM_ENULLPIC 106 /* picture given was NULL */
#define PM_EBADPLANES 107 /* invalid # of planes chosen for format */
#define PM_EBADBANDS 108 /* invalid # of bands chosen for format */
#define PM_EBADSIZE 109 /* # of rows/cols and x offsets, y offsets
too big for ikonas */
#define PM_EBADCOLORS 110 /* invalid number of colors chosen for format */
#define PM_EBADCOLORPLANE 111 /* invalid color plane entered */
#define PM_NERROR 12
#define PM_ERROR(e) (((e) < PM_EBASE || (e) > (PM_EBASE + PM_NERROR)) ? \
0 : (e) - PM_EBASE)
extern char *pm_errmsg[];
pmpic *pm_add();
pmpic *pm_addcmt();
pmpic *pm_alloc();
pmpic *pm_and();
pmpic *pm_bthresh();
pmpic *pm_cast();
char *pm_cmt();
pmpic *pm_conv();
pmpic *pm_ebadform();
int pm_getcmt();
pmpic *pm_ikrd();
pmpic *pm_ikwr();
pmpic *pm_neg();
pmpic *pm_or();
pmpic *pm_prep();
pmpic *pm_rdhdr();
pmpic *pm_read();
pmpic *pm_scale();
pmpic *pm_sub();
pmpic *pm_thresh();
pmpic *pm_write();
pmxyz *pm_centroid();
\BARFOO\
else
echo "will not over write ./pm.h"
fi
if `test ! -s ./xv.h`
then
echo "writting ./xv.h"
cat > ./xv.h << '\BARFOO\'
/*
* xv.h - header file for xv, but you probably guessed as much
*/
/*
* Copyright 1989, 1990 by the University of Pennsylvania
*
* Permission to use, copy, and distribute for non-commercial purposes,
* is hereby granted without fee, providing that the above copyright
* notice appear in all copies and that both the copyright notice and this
* permission notice appear in supporting documentation.
*
* The software may be modified for your own purposes, but modified versions
* may not be distributed.
*
* This software is provided "as is" without any express or implied warranty.
*/
#define REVDATE "Rev: 11/26/90 (Patchlevel 2)"
#ifdef SVR4 /* SysV release 4 uses dirent */
#ifndef sgi /* but Silicon Graphics doesn't */
#define DIRENT
#endif
#endif
/* include files */
#include <stdio.h>
#include <math.h>
#include <ctype.h>
#include <string.h>
extern int errno; /* this SHOULD be in errno.h */
extern char *sys_errlist[]; /* this SHOULD be in errno.h */
#ifndef __convexc__ /* Convex doesn't have <memory.h> */
#include <memory.h> /* for 'memset()' prototype */
#endif
/* neither IBM AOS 4.3, Convex, nor BSD 4.3 on VAX have <malloc.h> */
#if !defined(ibm032) && !defined(__convexc__) && \
!(defined(vax) && !defined(ultrix))
#if defined(hp300) || defined(hp800)
#include <sys/malloc.h> /* it's in 'sys' on HPs*/
#else
#include <malloc.h>
#endif
#endif
#include <X11/Xos.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/cursorfont.h>
#include <X11/keysym.h>
#if defined(NEEDSTIME) || defined(NEEDSDIR)
#include <sys/types.h> /* only include <sys/types.h> once */
#endif
#ifdef NEEDSTIME
#ifndef sgi /* silicon graphics doesn't have timeb.h */
#include <sys/timeb.h>
#endif
#include <signal.h>
#if defined(sco) && !defined(NOTIMER)
#include <sys/itimer.h>
#endif
#ifndef sigmask
#define sigmask(m) (1 << ((m)-1))
#endif
#endif
#ifdef NEEDSDIR
#ifdef sco
#include <sys/ndir.h>
#define lstat stat
#else
#ifndef ATT
#include <sys/dir.h>
#endif /* ATT */
#endif /* sco */
#include <sys/param.h>
#include <sys/stat.h>
#ifdef DIRENT
#include <dirent.h>
#endif
#endif
#ifdef NEEDSVARARGS
#include <varargs.h>
#endif
/* signal macros */
#ifdef SVR4
#define HOLD_SIG sighold(SIGALRM) /* block ALRM sig from occurring */
#define RELEASE_SIG sigrelse(SIGALRM) /*
#define PAUSE_SIG sigpause(SIGALRM) /* sleep until ALRM signal */
#else
#define HOLD_SIG sigblock(sigmask(SIGALRM))
#define RELEASE_SIG sigblock(0)
#define PAUSE_SIG sigpause(0)
#endif
#ifdef i386
#define MAXPATHLEN 500
#define UNCOMPRESS "/usr/local/bin/uncompress" /* uncompress program */
#undef HOLD_SIG
#define HOLD_SIG /* don't know how to handle signals MWS 10/18/90 */
#undef RELEASE_SIG
#define RELEASE_SIG /* */
#undef PAUSE_SIG
#define PAUSE_SIG /* */
#else
#define UNCOMPRESS "/usr/ucb/uncompress" /* for uncompressing .Z files */
#endif
#define PROGNAME "xv" /* used in resource database */
#define DEFINFOGEOM "-10+10" /* default position of info window */
#define DEFDIRGEOM "-10-10" /* default position of directory window */
#define DEFCTRLGEOM "+400+400" /* default position of ctrl window */
#define DEFGAMGEOM "+10-10" /* default position of gamma window */
#define INFOWIDE 500 /* (fixed) size of info window */
#define INFOHIGH 250
#define CTRLWIDE 440 /* (fixed) size of control window */
#define CTRLHIGH 295
#define DIRWIDE 300 /* (fixed) size of directory window */
#define DIRHIGH 420
#define GAMWIDE 366 /* (fixed) size of Gamma window */
#define GAMHIGH 356
#define MAXNAMES 1024 /* max # of files (more than this? Get REAL!)
/* strings in the INFOBOX (used in SetISTR and GetISTR) */
#define NISTR 9 /* number of ISTRs */
#define ISTR_INFO 0
#define ISTR_WARNING 1
#define ISTR_FILENAME 2
#define ISTR_FORMAT 3
#define ISTR_RES 4
#define ISTR_CROP 5
#define ISTR_EXPAND 6
#define ISTR_COLOR 7
#define ISTR_COLOR2 8
/* potential values of 'infomode', used in info box drawing routines */
#define INF_NONE 0 /* empty box */
#define INF_STR 1 /* just ISTR_INFO */
#define INF_PART 2 /* filename, format, size and infostr */
#define INF_FULL 3 /* INF_PART + clipping, expansion, colorinfo */
/* buttons in the ctrl window */
#define NBUTTS 20
#define BNEXT 0
#define BPREV 1
#define BCROP 2
#define BUNCROP 3
#define BNORM 4
#define BMAX 5
#define BUP2 6
#define BDN2 7
#define BUP10 8
#define BDN10 9
#define BQUIT 10
#define B4BY3 11
#define BSAVE 12
#define BROTL 13
#define BINFO 14
#define BGAMMA 15
#define BASPECT 16
#define BROTR 17
#define BMAXPECT 18
#define BACROP 19
/* buttons in the 'save' window */
#define S_NBUTTS 4
#define S_BOPEN 0
#define S_BSAVE 1
#define S_BCANC 2
#define S_BQUIT 3
/* buttons in the 'gamma' window */
#define G_NBUTTS 17
#define G_BAPPLY 0
#define G_BNOGAM 1
#define G_BRESET 2
#define G_BDEF 3
#define G_BGTYPE 4
#define G_BCLOSE 5
#define G_BUP_BR 6
#define G_BDN_BR 7
#define G_BUP_CN 8
#define G_BDN_CN 9
#define G_BHSVRGB 10
#define G_B1 11
#define G_B2 12
#define G_B3 13
#define G_B4 14
#define G_BSET 15
#define G_BUNDO 16
/* definitions of first char of dirnames[i] (filetype) */
#define C_FIFO 'f' /* FIFO special file */
#define C_CHR 'c' /* character special file */
#define C_DIR 'd' /* directory */
#define C_BLK 'b' /* block special file */
#define C_LNK 'l' /* symbolic link */
#define C_SOCK 's' /* socket */
#define C_REG ' ' /* regular file */
/* random string-placing definitions */
#define SPACING 3 /* vertical space between strings */
#define ASCENT (mfinfo->ascent)
#define DESCENT (mfinfo->descent)
#define CHIGH (ASCENT + DESCENT)
#define LINEHIGH (CHIGH + SPACING)
#define STDINSTR "<stdin>"
#ifndef MAIN
#define WHERE extern
#else
#define WHERE
#endif
typedef unsigned char byte;
typedef struct { Window win; /* window ID */
int len; /* length of major axis */
int vert; /* true if vertical, else horizontal */
int active; /* true if scroll bar can do anything*/
int min,max; /* min/max values 'pos' can take */
int val; /* 'value' of scrollbar */
int page; /* amt val change on pageup/pagedown */
int tpos; /* thumb pos. (pixels from tmin) */
int tmin,tmax; /* min/max thumb offsets (from 0,0) */
int tsize; /* size of thumb (in pixels) */
unsigned long fg,bg; /* colors */
void (*drawobj)(); /* redraws obj controlled by scrl*/
int uplit, dnlit; /* true if up&down arrows are lit */
} SCRL;
typedef struct { Window win; /* parent window */
int x,y,w,h; /* size of button rectangle */
int lit; /* if true, invert colors */
int active; /* if false, stipple gray */
int toggle; /* if true, clicking toggles state */
unsigned long fg,bg; /* colors */
char *str; /* string in button */
} BUTT;
typedef struct { Window win; /* window */
int x,y,w,h; /* size of window */
unsigned long fg,bg; /* colors */
char **str; /* ptr to list of strings */
int nstr; /* number of strings */
int selected; /* number of 'selected' string */
int nlines; /* number of lines shown at once */
SCRL scrl; /* scrollbar that controls list */
int filetypes; /* true if filetype icons to be drawn*/
int dirsonly; /* if true, only dirs selectable */
} LIST;
typedef struct rbutt { Window win; /* parent window */
int x,y; /* position in parent */
char *str; /* the message string */
int selected; /* selected or not */
int active; /* selectable? */
struct rbutt *next; /* pointer to next in group */
unsigned long fg,bg; /* colors */
} RBUTT;
/* MACROS */
#define CENTERX(f,x,str) ((x)-XTextWidth(f,str,strlen(str))/2)
#define CENTERY(f,y) ((y)-((f->ascent+f->descent)/2)+f->ascent)
/* RANGE forces a to be in the range b..c (inclusive) */
#define RANGE(a,b,c) { if (a<b) a=b; if (a>c) a=c; }
/* PTINRECT returns '1' if x,y is in rect (inclusive) */
#define PTINRECT(x,y,rx,ry,rw,rh) \
((x)>=(rx) && (y)>=(ry) && (x)<=(rx)+(rw) && (y)<=(ry)+(rh))
/* MONO returns total intensity of r,g,b components */
#define MONO(rd,gn,bl) (((rd)*11 + (gn)*16 + (bl)*5) >> 5) /*.33R+ .5G+ .17B*/
/* X stuff */
WHERE Display *theDisp;
WHERE int theScreen;
WHERE unsigned int ncells, dispWIDE, dispHIGH, dispDEEP;
WHERE Colormap theCmap, LocalCmap;
WHERE Window rootW, mainW;
WHERE GC theGC;
WHERE unsigned long black, white, fg, bg, infofg, infobg;
WHERE Font mfont, monofont;
WHERE XFontStruct *mfinfo, *monofinfo;
WHERE Visual *theVisual;
WHERE Cursor arrow, cross;
WHERE Pixmap iconPix;
/* global vars used by LOAD routines */
WHERE byte *pic; /* ptr to loaded picture */
WHERE unsigned int pWIDE,pHIGH; /* size of 'pic' */
WHERE byte r[256],g[256],b[256]; /* colormap */
WHERE char *cmd; /* program name for printf's */
WHERE int DEBUG; /* print debugging info */
WHERE int mono; /* true if displaying grayscale */
/* more global variables, used by xv and xvmisc */
WHERE byte *cpic; /* cropped version of pic */
WHERE unsigned int cWIDE, cHIGH, /* size of cropped region */
cXOFF, cYOFF; /* offset of region from 0,0 of pic */
WHERE byte *epic; /* expanded version of cpic */
/* points to pic when at 1:1 expansion */
/* this is converted to 'theImage' */
WHERE unsigned int eWIDE, eHIGH; /* size of epic */
WHERE unsigned int normFact; /* factor to shrink picture by for 'norm' */
WHERE byte rorg[256],gorg[256],borg[256]; /* ORIGINAL colormap */
WHERE byte gamcr[256]; /* gamma correction curve */
WHERE byte fsgamcr[256]; /* gamma correction curve (for FS dither) */
WHERE XImage *theImage; /* X version of epic */
WHERE unsigned long freecols[256]; /* list of pixel values to free */
WHERE int nfcols; /* number of colors to free */
WHERE unsigned long cols[256]; /* maps pic pixel values to X pixel vals */
WHERE int fc2pcol[256]; /* maps freecols into pic pixel values */
WHERE int numcols; /* # of desired colors in picture */
WHERE int ncols; /* max # of (different) colors to alloc */
WHERE char str[128]; /* dummy string used for error messages */
WHERE int expand, /* expansion amount */
bwidth, /* border width of created windows */
noglob, /* force to only use colors it alloced */
revvideo, /* reverse video */
perfect, /* perfect color. install own colormap */
fixedaspect, /* fixed aspect ratio */
slow24, /* use slow 24to8 algorithm */
ninstall, /* true if using icccm-complaint WM
(a WM that will does install CMaps */
useroot, /* true if we should draw in rootW */
noqcheck, /* true if we should NOT do QuickCheck */
rwcolor, /* true if we should use R/W color cells */
rwthistime, /* true if we DID use R/W color cells */
brokeFreeCols, /* true if server has broken XFreeColors */
fish, /* turn on annoying fish */
fishrunning; /* true if fish are in operation */
WHERE float defaspect, /* default aspect ratio to use */
normaspect; /* normal aspect ratio of this picture */
WHERE int crx1, cry1, /* dimensions of cropping rectangle */
crx2, cry2;
/* stuff used for 'info' box */
WHERE Window infoW;
WHERE int infoUp; /* boolean: whether infobox is visible */
WHERE int infoMode;
/* stuff used for 'ctrl' box */
WHERE Window ctrlW;
WHERE int ctrlUp; /* boolean: whether ctrlbox is visible */
WHERE char *namelist[MAXNAMES]; /* list of file names from argv */
WHERE char *dispnames[MAXNAMES]; /* truncated names shown in listbox */
WHERE int numnames, curname;
WHERE LIST nList;
WHERE BUTT but[NBUTTS]; /* command buttons in ctrl window */
WHERE Pixmap grayTile, grayStip; /* for drawing dim things */
/* stuff used for 'directory' box */
WHERE Window dirW, ddirW, dnamW;
WHERE int dirUp; /* is dirW mapped or not */
WHERE LIST dList; /* list of filenames in current directory */
WHERE BUTT dbut[S_NBUTTS];
/* stuff used for 'gamma' box */
#define NUMHANDS 4
WHERE Window gamW,graphW;
WHERE int gamUp; /* is gamW mapped or not */
WHERE BUTT gbut[G_NBUTTS];
WHERE XPoint ghand[NUMHANDS];
#undef WHERE
/* function declarations for externally-callable functions */
#ifdef __STDC__
/****************************** XV.C ****************************/
void DrawWindow(int, int, int, int);
void WCrop(int, int);
void WUnCrop(void);
void WResize(int, int);
void WRotate(void);
void InvCropRect(void);
void MakeRootPic(void);
/*************************** XVMISC.C ***************************/
Window CreateWindow(char *, char *, unsigned int, unsigned int,
unsigned long, unsigned long);
void Resize(int, int);
void Rotate(int);
void SortColormap(void);
void AllocColors(void);
void AllocRWColors(void);
void DoMonoAndRV(void);
void DoCrop(void);
void UnCrop(void);
void AutoCrop(void);
void FSDither(byte *, int, int, byte *);
void CreateXImage(void);
void CenterString(Window, char *, int, int);
void ULineString(Window, char *, int, int);
int StringWidth(char *);
void FakeButtonPress(BUTT *);
void SetCropString(void);
void Warning(void);
void FatalError(char *);
void LoadFishCursors(void);
void SetCursors(int);
void WaitCursor(void);
void Quit(int);
void Timer(int);
/*************************** XV24TO8.C **************************/
int Conv24to8(byte *, int, int, int);
void InitFSDTables(void);
/**************************** XVCTRL.C **************************/
void CreateCtrl(char *);
void CtrlBox(int);
void RedrawCtrl(int, int, int, int);
int ClickCtrl(int, int);
void DrawCtrlStr(void);
void ScrollToCurrent(void);
void LSCreate(LIST *, Window, int, int, int, int, int, char **, int,
unsigned long, unsigned long, void (*)(void), int, int);
void LSRedraw(LIST *);
int LSClick (LIST *, XButtonEvent *);
void LSNewData(LIST *, char **, int);
/*************************** XVINFO.C ***************************/
void CreateInfo(char *);
void InfoBox(int);
void RedrawInfo(int, int, int, int);
void SetInfoMode(int);
void SetISTR(int, ...);
char *GetISTR(int);
/**************************** XVDIR.C ***************************/
void CreateDirW(char *);
void DirBox(int);
void RedrawDirW(int,int,int,int);
int ClickDirW(int, int);
void LoadCurrentDirectory(void);
void RedrawDDirW(void);
void RedrawDNamW(void);
void SelectDir(int);
void DirOpenActive(void);
void TrackDDirW(int,int);
int DirKey(int);
int DoSave(void);
void SetDirFName(char *);
/**************************** XVGAM.C **************************/
void CreateGam(char *);
void GamBox(int);
void RedrawGam(int, int, int, int);
void RedrawGraph(int, int, int, int);
void ClickGam(int, int);
void TrackGraph(int, int);
void GenerateGamma(void);
void GenerateFSGamma(void);
void GammifyColors(void);
void SetGPreset(int, int, int, int, int, int, int);
/*************************** XVSCRL.C ***************************/
void SCCreate (SCRL *, Window, int, int, int, int, int, int, int, int,
unsigned long, unsigned long, void (*)(void));
void SCSetRange(SCRL *, int, int, int, int);
void SCSetVal (SCRL *, int);
void SCRedraw (SCRL *);
void SCTrack (SCRL *, int, int);
/**************************** XVBUTT.C ***************************/
void BTCreate(BUTT *, Window, int, int, int, int, char *,
unsigned long, unsigned long);
void BTSetActive(BUTT *, int);
void BTRedraw(BUTT *);
int BTTrack (BUTT *);
RBUTT *RBCreate(RBUTT *, Window, int, int, char*,
unsigned long, unsigned long);
void RBRedraw(RBUTT *, int);
void RBSelect(RBUTT *, int);
int RBWhich(RBUTT *);
int RBCount(RBUTT *);
void RBSetActive(RBUTT *, int, int);
int RBClick(RBUTT *, int, int);
void RBTrack(RBUTT *, int);
/**************************** XVGIF.C ***************************/
int LoadGIF(char *, int);
/*************************** XVGIFWR.C **************************/
int WriteGIF(FILE *, byte *, int, int, byte *, byte *, byte *, int, int);
/**************************** XVPM.C ****************************/
int LoadPM(char *, int);
int WritePM(FILE *, byte *, int, int, byte *, byte *, byte *, int, int);
/**************************** XVPBM.C ***************************/
int LoadPBM(char *, int);
int WritePBM(FILE *, byte *, int, int, byte *, byte *, byte *, int, int, int);
/**************************** XVXBM.C ***************************/
int LoadXBM(char *, int);
int WriteXBM(FILE *, byte *, int, int, char *);
#else /* using non-ANSI cc. Function defs, but no params */
/****************************** XV.C ****************************/
void DrawWindow(), WCrop(), WUnCrop(), WResize(), WRotate(), InvCropRect();
void MakeRootPic();
/*************************** XVMISC.C ***************************/
Window CreateWindow();
void Resize(), Rotate(), SortColormap(), AllocColors(), DoCrop(), UnCrop();
void AutoCrop(), DoMonoAndRV();
void AllocRWColors(), FSDither(), CenterString(), ULineString();
int StringWidth();
void FakeButtonPress(), SetCropString(), Warning(), FatalError(), Quit();
void Timer(), CreateXImage(), LoadFishCursors(), SetCursors(), WaitCursor();
/*************************** XV24TO8.C **************************/
int Conv24to8();
void InitFSDTables();
/**************************** XVCTRL.C **************************/
void CreateCtrl(), CtrlBox(), RedrawCtrl(), DrawCtrlStr(), ScrollToCurrent();
int ClickCtrl();
void LSCreate(), LSRedraw(), LSNewData();
int LSClick();
/*************************** XVINFO.C ***************************/
void CreateInfo(), InfoBox(), RedrawInfo(), SetInfoMode(), SetISTR();
char *GetISTR();
/**************************** XVDIR.C ***************************/
void CreateDirW(), DirBox(), RedrawDirW(), LoadCurrentDirectory();
int ClickDirW(), DoSave(), DirKey();
void RedrawDDirW(), RedrawDNamW(), SelectDir(), DirOpenActive(), TrackDDirW();
void SetDirFName();
/**************************** XVGAM.C **************************/
void CreateGam(), GamBox(), RedrawGam(), RedrawGraph(), ClickGam();
void TrackGraph(), GenerateGamma(), GenerateFSGamma(), GammifyColors();
void SetGPreset();
/*************************** XVSCRL.C ***************************/
void SCCreate(), SCSetRange(), SCSetVal(), SCRedraw(), SCTrack();
/**************************** XVBUTT.C ***************************/
void BTCreate(), BTSetActive(), BTRedraw();
int BTTrack();
RBUTT *RBCreate();
void RBRedraw(), RBSelect(), RBSetActive(), RBTrack();
int RBWhich(), RBCount(), RBClick();
/**************************** XVGIF.C ***************************/
int LoadGIF();
/*************************** XVGIFWR.C **************************/
int WriteGIF();
/**************************** XVPM.C ****************************/
int LoadPM(), WritePM();
/**************************** XVPBM.C ***************************/
int LoadPBM(), WritePBM();
/**************************** XVXBM.C ***************************/
int LoadXBM(), WriteXBM();
#endif
\BARFOO\
else
echo "will not over write ./xv.h"
fi
echo "Finished archive 1 of 10"
exit
dan
----------------------------------------------------
O'Reilly && Associates argv@sun.com / argv@ora.com
Opinions expressed reflect those of the author only.
--
dan
----------------------------------------------------
O'Reilly && Associates argv@sun.com / argv@ora.com
Opinions expressed reflect those of the author only.