# External Programs

## bggen

Syntax: bggen [-h high] [-w wide] [-b bits] [-g geom] [-d disp] [-a] [-r rot] [-G rptgeom] color1 [color2 ... colorN]

bggen generates background gradients for use with xv. It does not directly display anything itself. Instead, it generates an appropriately sized PPM file, which xv can display. It is also used by the xv's Pad command, for a similar purpose.

By default, bggen will generate a screen-sized PPM file with a vertical color gradient. The top of the image will be in color1, the bottom of the image will be in colorN, and intermediate positions will have an appropriate intermediate color. You can list as many colors as you'd like. If you only list one color, the entire image will be that single color.

Color specifications can be in one of three formats:

- A color name (e.g. 'lightblue') known to your X server. Use the showrgb command to get a (gigantic) list of known colors.
- An X11-style hexadecimal RGB color specification (e.g. '#00ff00'), where the first two hex digits specify the red value, the middle two specify the green value, and the last two specify the blue value. Note that the '#' character is treated specially in some shells, and to be on the safe side you should either protect it by putting a '\\' character in front of it, or wrap the whole color specification in single-quotes.
- Three integers, in the 0-255 range, separated by spaces (e.g. 0 255 0). This is mainly for backward compatibility, as it was the only format understood by previous versions of bggen.

### Options:

-d disp
  Specifies the name of the X display that the program should talk to. bggen needs to connect to an X display to determine the screen size (which is used as the default image size), and to parse color names. It is not necessary for bggen to connect to an X display. If it can't, you will have to specify an image size (see below), and you'll have to use the numeric format to enter color specifications.
-g geom
  Specifies the size of the generated image. geom should be in the format: wide x high (e.g. '1024x768'). If you don't specify a size, the image will default to the size of your display, assuming it was able to connect to your display.
-w wide -h high
  Another way to specify the size of the generated image. Provided for backward compatibility.
-G rptgeom
  Sets the size of the gradient. Normally, the gradient will be the size of the image. However, if you wish, you make the gradient smaller than the image; the gradient will repeat as often as necessary to fill the image
-r rot
  Lets you rotate the gradient. Normally, the gradient is aligned vertically, with the first color at the top, and the last color at the bottom. Using this option, you can rotate the whole mess by an arbitrary amount. rot should be specified in degrees. Positive values rotate the gradient counter- clockwise.
-a
  If supplied, bggen will generate a PPM 'ascii' file, rather than the default PPM 'raw' format.
-b bits
  Specifies the number of significant bits to use in the RGB color specifications in the output image. It must range between 1 and 8, inclusive. Use values less than 8 (the default) to limit color use by increasing the color granularity. Since xv can do this sort of thing better, this is of dubious value.

## xcmap

This is a little X program I wrote years ago to help me debug xv's color allocation code. It displays the contents of the default colormap as (typically) a 16x16 grid of colored rectangles. Run it, and then run something that allocates colors (such as xv), and you'll see the color cells changing color. It can give you an indication of how full your colortable is, and whatnot. It only works on displays where the default visual is a PseudoColor visual, but that's nearly all of them, so it shouldn't be a problem.

There are two standard X options: '-d display' to set the X display, and '-g geom', to set the default window size and position.

You can click in the window to examine the RGB values of various color cells. I have not found a useful purpose for this feature, but there must have been one at one time...

Type 'q' in the window to exit the program.

## xvpictoppm

This program is a standard Unix filter that reads the 'thumbnail' files created by the visual schnauzer (from `stdin`) and writes standard PPM versions of same (to `stdout`). The thumbnail files are small (80x60 maximum) 8-bit versions of your image files and are used as the icons in the visual schnauzer. These files are stored in my own weird format (one optimized for my purposes), but many folks have asked for a way to turn them into standard image files, for use on their WWW pages, or whatever.

Anyway, assuming you've done an Update or Generate Icons command in the visual schnauzer, you'll find the thumbnail version of an image stored with the same name in the '`.xvpics`' subdirectory. For example, if you have a file '`/pics/gif/foobie.gif`', you would find the thumbnail version of it in the file '`/pics/gif/.xvpics/foobie.gif` '.

## cjpeg and djpeg

These two programs are distributed as part of the Independent JPEG Group's software, located in the `jpeg` subdirectory of the xv source. They perform command-line conversion between JPEG and the PPM/PGM, GIF, BMP and Targa formats. Since xv has absolutely no command-line or 'batch' conversion abilities, you may find these useful if you want to convert a lot of images, or automatically convert images from a script. If this is the case, you should probably get Jef Poskanzer's most-excellent netpbm package, which you can get via anonymous ftp on `ftp.x.org` and elsewhere..

## vdcomp

Uncompresses compressed PDS and VICAR images. Beyond that, I know nothing.