NOAA

Geophysical Fluid
Dynamics Laboratory

Skip to: [content] [navigation]
If you are using Navigator 4.x or Internet Explorer 4.x or Omni Web 4.x , this site will not render correctly!

Vis > image_printing > GFDL Visualization Guide: BIT

GFDL Visualization Guide: BIT

NAME

     bit - Bitmap Image Touchup program for SGI Workstations

SYNOPSIS

     bit [options] [files] bit [ -vfabiIdenhCRrq -c file -s sec	-p path	 -x  f
     -y f -m level ] [files]

DESCRIPTION

     bit is an interactive full color image viewer and editor based on Silicon
     Graphics GL.

     As	an image viewer, bit allows list of  images  to	 be  viewed  in	 their
     original type (24bits or color index) in any order	and in any of the many
     built-in styles of	display. With command line option -IN,	bit  simulates
     and   combines   the  functionalities  of	ipaste(1G),  gifpaste(1L)  and
     jpegpaste(1L). Further, with the pan and zoom features, large images  can
     be	 viewed	 in  full  without being limited by the	window or screen size.
     Slideshow is also supported.

     As	an image editor, bit performs a large  number  of  image  editing  and
     processing	tasks accurately and efficiently. It keeps information loss at
     any stage of the editing process at an  absolute  minimum	by  performing
     subpixel  sampling	 automatically	while  conserving the input image type
     whenever possible to avoid	unnecessary promotion and/or  quantization  of
     input  images.  The  paint	 function features brushes, free hand drawing,
     fill and many built-in patterns, all with	24bits	color.	 In  addition,
     arbitrarily  colored  and	sized text and simple geometric	figures	can be
     rendered on top of	an image for annotation	with the option	to  make  them
     part  of  the bitmap or output separately to take advantage of the	higher
     printer resolutions.

     Bit can also be used as a graphical user interface	to an  existing	 image
     processing	program	by defining an external	binding	to it which in essence
     turns a command line oriented program into	a bit subfunctions and can  be
     accessed  by  a  press  of	a button, and best of all, the processed image
     will be read back and displayed immediately. Convolution using externally
     defined  matrices	of arbitrary order can be performed dynamically	giving
     great flexibility in processing an	image.

     Upon startup, bit does the	following and then waits for further command:

     1.	 Reads the initial window position specification file WinPosition from
	 user directory	/.bitrc unless the	command	line option -a (Auto),
	 -F (Full screen) -i (fit first	Image) or -I (always  fit  Image)  are
	 present. See Configuration for	details.

     2.	 Reads	the  configuration  file  Setup.opt  from   system   directory
	 /usr/local/lib/bit  and  user	directory  /.bitrc	in that	order.
	 This step is skipped or modified by the command line option -n, -p or
	 -c.

     3.	 Reads the command line	filenames in order  if	present,  and  placing
	 these files on	a list (the FileList) for future use.

     3a.
         Opens a tiny window on the upper-right corner of the  screen  with  a
	 clock and a mailbox if	flag -C	is present.

     4.	 Opens the main	window,	i.e., the  window  in  which  images  will  be
	 displayed,  and  clears  the  window  to  a pre-determined background
	 color.	 The  window  position	and  size  are	read  from  the	  file
	 WinPosition if	-i, -I,	-F and -a are not present.

     5.	 Opens the file	control	 panel	(the  FilePanel)  on  the  lower-right
	 corner	 of  the screen	(or the	position specified in WinPosition file
	 if flag -N is not present.  The FilePanel is the most	basic  control
	 panel,	 consisting  of	 command buttons to set	program	options	and to
	 handle	file IO.

     At	this point, if the FileList is not empty, the first file on  the  list
     will be loaded and	displayed in the main window.

     To	display	next file on the list, click leftmouse in the main  window  or
     press the SPACE key;

     To	display	the previous file, click rightmouse  in	 the  main  window  or
     press the p key;

     And to display the	current	image (again), click middlemouse in  the  main
     window or press the c key.

     Besides adding files to the FileList via command  line  arguments,	 files
     can  also	be  added or removed from the FileList by the FilePanel	button
     labeled load, See Command Summaries for details.

     To	pause an indefinite interval at	any point, press PAUSE	key.   To  re-
     activate, press PAUSE again.

     To	exit bit, click the Quit  button  on  FilePanel	 or  press  <ESC>  key
     anywhere.

FEATURES

     Bit  performs  all	 of  its  image	 manipulations	interactively  with  a
     continuous	 progress  report,  and	 once  the processing is complete, the
     processed image will be  displayed.  In  most  cases,  transformation  is
     reversible	and a simple undo will recover the un-processed	image.

     Current features include

     o	Rotates	an image by an	arbitrary  angle  with	the  option  of	 anti-
	aliasing and filling the "rotated out" region with an arbitrary	color.

     o	Scales an image	by arbitrary factors in	x-  and/or  y-directions  with
	the  option  of	 subpixel sampling. It can also	scale the image	to any
	requested size while keeping the aspect	ratio  by  filling  the	 empty
	region with an arbitrary color.

     o Renders text of arbitrary color, size or  orientation  on  top  of  an
        image  with the option of rendering directly into the raster or saving
	the text and raster separately,	such as	into  a	 PostScript  file,  to
	take  advantage	 of  a	higher printer resolution. Besides normal text
	strings, many predefined special symbols can be	input conveniently  as
	in  TeX(1),  e.g.,  $\alpha$\small$\beta$  produces  Greek  alphabet a
	followed by a slightly smaller Greek alphabet b	Or you can  input  the
	character  code	 directly  if the font encoding	scheme is known, e.g.,
	for PostScript Symbol font, $ã$ produces the	copyright symbol

     o	Show and manipulate the	histogram of  an  image,  including  histogram
	equalization and direct	histogram specification	(not available in this
	release).

     o	Performs arbitrary 1-to-1 pixel	 transformation.   The	transformation
	function  can  be of arbitrary form and	can be specified interactively
	by  mouse  or	by   arbitrary	 math	expressions.	Further,   the
	transformation	 can   be   applied  to	 RGB  channels	separately  or
	simultaneously and to the entire image or a portion of it.

     o	Modify the RGB values of an individual pixel or	a group	of pixels.

     o	Places	simple	geometric  figures  (SGFs),  e.g.,  arrows,   circles,
	triangles etc.,	of arbitrary color, size and orientation into an image
	at arbitrary locations addressed either	in absolute pixels or in  some
	user  definable	 coordinate system units, with the option of rendering
	directly into the raster or save the sgfs and raster separately	 (e.g,
	PostScript  file).  All	 SGFs  can  be	scaled	in x- and y-directions
	independently or simultaneously	(this is how to	get an ellipse from  a
	circle).

     o	Full color paint with many built-in tools, which  include  brushes  of
	many  different	shapes,	air brush with adjustable nozzle size and flow
	rate, free-hand	polygon, free-hand drawing, fill and many more.

     o	Crops a	rectangular portion of an image, or add	a solid	 frame	to  an
	image. The crop	region can be larger than the window/screen size.

     o	Merges and/or concatenates several images to form a single image, with
	optional add/sub/diff/xor/mask operations on the fly.

     o	Cuts and pastes	across images.

     o	Computes the pixel by pixel difference between two  identically	 sized
	images	and displays the results as an image, whose histogram provides
	quantitative information.

     o	Performs edge detection. In combination	with image histograms  and  1-
	to-1 transformation, very accurate result can be obtained.

     o	Performs convolution with  externally  defined	(square)  matrices  of
	arbitrary order.

     o	Smoothes an image or a portion of it with thresholding.

     o	Sharpens an image or a portion of it.

     o	Median filtering an image or a portion of it.

     o	Magnifies any portion of an image by any amount.

     o	Displays a list	of images in sequence with a  user  specifiable	 pause
	interval between images. (SlideShow)

     o	Measures RGB intensities of a pixel at	any  location  or  all	pixels
	along  an  arbitrary line with the result presented as RGB intensities
	or as an intensity vs. distance	plot.

     o	Performs image type conversions.

     o	Converts image formats.

     o	Filters	an image by external programs and read the filtered image back
	and display it.

     o	Performs FFT on	the entire image or a portion of it  and  display  the
	resulting power	spectra.

OPTIONS

     The following command line	options	are interpreted	 by  bit  program  and
     override  any  program  defaults,	including  options set in the start up
     file.

     -v	  Prints the current Version number of the bit program and exits.   No
	  graphics required.

     -f	  Prints an  enumerated	 list  of  all	supported  image  Formats.  No
	  graphics required.

     -a	  By default,  bit  searches  file  ~/.bitrc/WinPosition  for  initial
	  window  positions.  This  flag  sets	initial	location to Automatic,
	  which	is about 80% of	the screen size.

     -i	  This flag forces the initial window size to be  that	of  the	 first
	  image.

     -I	  This flag forces the window size to be that of the current image.

     -b	  prevents bit from running in Background  so  that  compound  command
	  like bit; other_command can be guaranteed to run in sequence.

     -F	  starts bit with main window occupying	the entire screen(FullScreen).

     -N	  starts bit with No initial control panels. Once bit started, you can
	  get the FilePanel with m key.

     -C	  starts bit with Clockmailbox window.

     -e	  Brings up the Editing control panel automatically upon startup.

     -n	  Instructs bit Not to read initialization file	Setup.opt.

     -c	filename
	  Changes  the	initialization	file  name  to	filename.  Default  is
	  Setup.opt.

     -h	  Prints a brief Help message summarizing all command line options and
	  what they do.

     -d	ds
	  Specifies the	Display	style. Valid styles are	numbered from 0	to 16.
	  Style	100 is magic in	that it	will cycle through all styles.

     -s	sec
	  Enables SlideShow mode where images are displayed one	 by  one  with
	  sec  being the pause time, in	seconds, between each display.	Due to
	  resolution limit of the system and various system  delays,  a	 value
	  less	than  0.1  second  is not terribly reliable (you can specify a
	  value	less than 0.1 second, however).	Note  any  keyboard  or	 mouse
	  input	 takes	precedence  over  the  pause  time  specified,	and in
	  particular, keyboard s turns off the SlideShow.

     -R	  Suppress progress report.

     -r	  Instructs the	bit program not	to Refresh screen before displaying an
	  image. The default is	to refresh the screen.

     -m	level
	  Sets Message output level  to	 level,	 with  level  loosely  defined
	  between  0  and  4. Level 0 suppresses all messages except for error
	  messages; Level 1 will allow	warning	 messages  to  be  printed  in
	  addition  to	error  messages;  level	 2  may	 be used to print some
	  additional  information,  such  as  values  of  key  parameters   or
	  transparent  and  recoverable	failures.  Level 3 and 4 are for debug
	  and trace information. Note that level 3 and 4 may  or  may  not  be
	  available depending on the installation. Default message level is 1,
	  i.e.,	print error as well as warnings	messages.

     -q	  Quiet	mode, same as -m0.

     -x	fx
	  Where	fx specifies the zoom factor in	 the  x	 direction.  Only  the
	  integral  part will be used. A zero can be used to signal "AutoZoom"
	  in which the zoomed x	size will fit  the  screen  and	 in  addition,
	  automatically	sets the y zoom	factor as to keep the aspect ratio.

     -y	fy
	  Vertical zoom	factor.

     -p	dir
	  Replaces the default Path, ~/.bitrc, with dir	for  all  user	files,
	  e.g.,	 configuration,	 external bindings, and	symbol definition etc.
          Note this flag does  not  prevent  bit  from  searching  the  system
          default path, /usr/local/lib/bit, for installation specific options.

Important Commands

     NOTE Typical manuals would	give detailed command summaries	here.  Due  to
	  the  length  of  the command summary and availability	of the context
	  sensitive online help	in addition to the LaTeX document for bit, the
	  command  summary  is	presented  in  a  later	 section  so that more
	  important comments can be given for easy reference.

     Online Help
	  In almost all	editing	modes, up-to-date help is available, typically
	  by  selecting	 pop-up	 menu  entry  help  if that particular mode is
	  controlled by	the pop-up or by  clicking  the	 mouse	on  the	 empty
	  region  of  the control panel	where no other objects such as buttons
	  etc exist that might interact	with the mouse.

	  Online help is presented in a	form of	 a  browser.  You  can	scroll
	  through  the page by the mouse. In help mode,	all control panels are
	  deactivated and no interaction can take place	until  you  exit  from
	  help mode by pressing	the button on the title	of the browser.

     Special Handling
	  ClockMail interacts with the bit program through user	signal 2. This
	  interaction  is provided for emergencies (whatever that might	be) or
	  when bit is not responsive, press <ESC> inside the  ClockMail	 panel
	  kills	 all  bit  related  processes  cleanly.	 Pressing Q inside the
	  panel	removes	this panel.

     Loading/Removing files
	  clicking mouse on the	load button in the FilePanel will bring	 up  a
	  browser  filled  with	 files in the current directory	that match the
	  current  selection  pattern,	with  highlights  on  files  that  are
	  currently  on	the FileList.  To add or remove	files, click the mouse
	  on the filenames.  You can walk the  directories  trees,  either  by
	  selecting  the  desired  directory (marked with a D in front)	in the
	  browser or by	typing the directory name into the  box	 labeled  dir.
	  (you might need to activate the input	field by clicking the mouse on
	  it first).  Files in the browser will	 be  updated  to  reflect  the
	  directory  change.  If  the  files  to  be added or removed from the
	  FileList have	common patterns, the pat input comes in	handy:	Simply
	  type	into  the pat box the common pattern (regular expressions) and
	  only filenames that match the	pattern	will be	shown in the  browser.
	  To  select  all  files  shown	in the browser,	click the mouse	on the
	  LoadAll button and to	de-select all files in the browser, click  the
	  mouse	 on  the  UnloadAll  button.   Click  Done button to exit file
	  selection. This will be enough to get	you started viewing  files  in
	  any order.

     Generating	Output
	  To write current image to disk, clicking the	Write  button  in  the
	  FilePanel  will  bring  up a panel listing all bit supported formats
          and a browser  filled  with  all  files  in  the  current  directory
          (subject to pattern matching with the current pattern).  The default
          filename  is  the  current  filename  with  a   possible   different
          extension.  Filename  can be changed either by selecting it from the
	  browser or by	typing it into the field labeled filename.

	  To choose the	desired	format to write, click the mouse on the	button
	  that	has  the  format  name on it. Upon each	new selection, several
	  things will take place: First, the filename is modified  to  reflect
	  the  current	selection by adding or modifying the extension,	and if
	  it already exists, a highlight is added to the name in  the  browser
	  to  warn  about  possible  overwriting;  Next,  current settings for
	  writing, if any, are shown in	the box	labeled	options. If  there  is
	  none,	 the  option  box  shows  the  word "NONE".  To	change default
	  settings, press the mouse on	the  option  box.   Note  the  options
	  mentioned  here are those that are specific to an image format, such
	  as the  Q-value  in  jpeg  or	 interlace  in	gif  etc.  Image  type
	  conversion  is  transparent  and  taken care of automatically, e.g.,
	  requesting a jpeg with a gray	 image	(either	 in  colormap  or  rgb
	  representation)  will	 produce  a  single  channel  jpeg  file  with
	  8bit/sample.

	  Click	the OK button to initiate output.  If  successful,  the	 write
	  control panel	disappears.

SUPPORTED FORMATS

     bit currently supports the	following image	formats
      o	 IRIS RGB, native to SGI IRIS
      o	 JPEG(JFIF) format
      o	 MPEG Movie (ReadOnly)
      o	 CompuServ GIF
      o	 PNM(Portable Any Map),	including PPM, PGM and PBM.
      o	 XBM (X	Window Bitmap)
      o	 TIFF
      o	 PostScript
      o	 Sun Rasterfile

     In	 addition,  compressed	version	 of  aforementioned  formats  will  be
     automatically decompressed	and loaded.

CONFIGURATION

     bit is very configurable. You can change any  or  all  of	the  following
     flags  either  interactively or by	modifying the Setup.opt	file directly.
     Flags are case insensitive	and their  values  can	be  either  string  or
     numerical.	Use colon (:) to separate the flag and its value, e.g.,	both

      DisplayStyle: 14
      and
      DisplayStyle: Sparkle

     are valid and select the display style sparkle.

     In	the following listing, the numerical value is  given  in  parenthesis.
     The  best	way  to	 set  up  a  configuration  is	to change the settings
     interactively and then write out the current settings to a file and  name
     that file to be the default start-up file.

     DisplayStyle
          Many different  styles  are  available  to  display  an  image.  The
	  simplest  and	 fastest,  also	the default, is	the Block style, which
	  simply displays the image  in	 one  scoop  using  lrectwrite(3G)  or
	  rectwrite(3G)	  depending  on	 the  image  type.  Other  styles  are
	  enumerated as	follows:

	  center tab(;);
	  r l.
	  Options; Effects
	  Block[0];display in one scoop
	  Down[1];from top to bottom
	  Up[2];from bottom to top
	  Left[3];from left to right
	  Right[4];from	right to left
	  DownUp[5];from top and bottom	toward center
	  UpDown[6];from center	to top and bottom
	  LR[7];from left and right toward center
	  RL[8];from center to right and left
	  RInt[9];RowUniform interlace
	  CInt[10];Column uniform interlace
	  Gint[11];Interlace, GIF style
	  Rect1[12];rectangular, towards center
	  Rect2[13];rectangular, from center
	  Sparkle[14];sparkle fade
	  Fade[15];blending fade
	  Cycle[100];cycle through all styles

	  Note Fade is applicable to RGB images	and is ignored if the image is
	  in CI.

     DoubleBuffer
	  Turn (hardware) double buffering on and  off.	 If  hardware  is  not
	  capable  of double buffering,	this flag has no effect. Valid options
	  are Off[0] and On[1].

     AlwaysClearScreen
	  The screen by	default	is cleared between successive images. To leave
	  the  screen  as  it  is between images, toggle this flag (useful for
	  animation). Valid options are	No[0] and Yes[1].

     AlwaysUseBorder
	  All windows, except for the main window and the  initial  FilePanel,
	  do  not have borders by default. To force a border, set this flag to
	  Yes. Note this flag does not take effect immediately,	i.e., it  does
	  not affect panels already on screen. Turning a panel off and then on
	  again	will reflect the settings of this flag.

     SlideShow
	  Enable or disable the	SlideShow mode.	Numerical values given	should
          be in seconds. 0 disables slideshow.

     ProgressReport
          How frequent to report progress in percentages. Built-in percentages
	  are  2,  5,  10  and	20.  A	value of 0 turns the report off.  Note
	  however, cursor rotating can not be turned off.

     PSResolution
	  Number  of  pixels  to  use  in  rasterizing	PostScript  files  via
	  Ghostscript interpretor gs(1)	or psrender. Default is	96DPI.

     AutoPan
	  Controls if to pan an	image automatically if it is larger than  that
	  can  be  shown.   Valid  options  are	 Never[0],  SlidesOnly[1], and
	  Always[2].  SlidesOnly means to pan  automatically  if  the  current
	  display mode is SlideShow.

     ShowCutBuffer
	  Controls if to show current cut buffer  while	 looking  for  pasting
	  locations.

     PreserveWMColors
	  Controls if to preserve the colors window manager uses  to  minimize
	  colormap  flashing. bit does this by re-ordering the colormap	and in
	  certain cases, where the color index	has  specific  meanings,  this
	  might	not be desirable.  Valid settings are No[0] and	Yes[1].

     AlwaysReadScrn
	  Cropping is normally done via	internal memory	copy to	avoid  reading
	  a dithered framebuffer (unless there are text	and SGFs on screen and
	  in that case,	screen read is performed and after that, the text  and
	  SGFs	are deleted). Set this flag to Yes to override the default for
	  special effects or for speed on better equipped machines.

     AutoCropFill
	  Meaningful when the crop region is larger than image.	  For  regions
	  outside  the image, you have the option to read the screen as	it is,
	  fill the region with a solid color, or interactively choosing	one of
	  the two.  The	valid options are No[0], Ask[1]	and Yes[2].

     AutoRemoveIcon
	  Controls if to delete	image browser thumbnail	images	when  original
	  images  no  longer exist. The	actual deletion	could happen either at
	  the time original image is deleted via Delete	button on ControlPanel
	  or when a directory is browsed.

     QuantizationMethod
	  Three	methods	are implemented. The default is	the Q256(1), which  is
          very  effective for reducing the image colors down to 256 colors (or
          very close to but less than 256 colors). General purpose but  slower
          quantization  method  is  the   MedianCut[2].   Octree[3]   is   for
          demonstration  purposes  only.  If the setting is Ask[0], the method
	  will be prompted interactively.  Note	in this	pre-release, only Q256
	  is  available.  However, general quantization	can be accomplished by
	  using	external bindings to djpeg(1) or ppmquant(1)

     QuantDither
	  Whether allow	a dithering step after quantization. Valid options are
	  No[0]	and Yes[1]. Default is Yes.

     HalftoneMethod
	  Controls the method to  use  in  converting  images  to  B&W.	 Valid
	  options  are	Ask[0],	 Ordered8[1] and FS[2].	If this	flag is	set to
	  Ask, the method will be prompted interactively.

     SimuDblBuffer
	  Turn simulated double	buffering on  and  off.	 If  the  hardware  is
	  capable of double buffering and DoubleBuffer is on, this flag	has no
	  effect. Valid	options	are Off[0] and On[1].

     SimuOPDblBuf
	  Turn simulated buffering in overlay/pupdraw on and off. This is only
	  used	in  Marking.  If  the  hardware	 has no	overlay	bitplanes, the
	  simulation might not be correct in pupdraw.

     AutoChangeExt
	  Change or append an extension	to filename according to the requested
	  format when writing. Valid options are No[0] and Yes[1].

     AutoRemoveFromList
	  If for some reason, a	file can not be	loaded,	by default,  the  file
	  is  removed from the FileList	upon confirmation.  This flag modifies
	  the default. The valid options are No[0], Ask[1] and Yes[2].

     ReportMouseLocation
	  Controls whether to report mouse location in certain situations  and
	  if  yes, select origin to which the distance is measured.  The valid
	  options are No[0], Window[1],	 Image[2].   Option  Window  sets  the
	  origin  at  the  lower-left  corner  of the main window while	option
	  Image	sets the origin	at the lower-left corner of the	image.

     MessageVerbosity
	  Controls  the	 amount	 of  messages  to  print.  Valid  options  are
	  Error[0],  Warning[1],  Info[2]  and	possibly Debug[3] and Trace[4]
	  depending on the compiler option when	bit was	built.

     KeepTextAndSgfs
          The duration of text and SGFs in deferred mode is by default limited
          to  a particular image or up to when you do a cropping. Setting this
          flag to Yes overrides the default so  that  text  and  SGFs  can  be
          carried to the next image.

     DelFromDiskConfirm
	  When deleting	files from disk, a confirmation	will be	 prompted  for
	  by default. To turn confirmation off,	set this flag to No[0].

     ShowEditAuto
	  Whether bring	up  the	 editing  panel	 automatically	upon  startup.
	  Valid	options	are No[0] and Yes[1].

     SmoothLines
	  Turn on and off anti-aliased line drawing in marking and paint.   If
	  hardware is not capable, this	flag has not effect. Valid options are
	  No[0]	and Yes[1].

     Initial Window Positions
	  Initial   window   position	and   size   are   read	  from	  file
	  /WinPosition  unless  command line option -a, -i, -I or -F is
	  present.  In file WinPosition, 8 numbers should be  specified.   The
	  First	 4  numbers  are  the main window parameters which specify the
	  coordinates of the lower left	corner of  the	main  window  and  its
	  width	 and  height.  The  rest  4  numbers  are  the	InfoPanel  and
	  ControlPanel	locations.  Note  the  size  of	 the   InfoPanel   and
	  ControlPanel	 can   not  be	changed.  The  following  is  a	 valid
	  specification	(# is the comment character )

	   10 10 800 600  # main window	size 800X600 with ll corner at (10,10)
	   820 10	  # info window	location
	   820 180	  # edit panel location

	  You can interactively	shape and move the windows and then write  out
	  the position via SetUp button on InfoPanel.

ENVIRONMENT VARIABLES

     BITHELP The directory name	 where	online	help,  icon  and  system  wide
	     configuration   and   control   files  are	 located.  Default  is
	     /usr/local/lib/bit.  All configuration and	control	files in  this
	     directory are subject to overrides	by those in BITDIR.

     BITDIR  The directory name	where the personalized configuration file  and
	     external  binding files are located. The default is /.bitrc.
	     For any needed files, except for online  help,  bit  will	search
	     BITHELP  first,  followed	by  current  directory	or BITDIR.  If
	     command line option -p is present,	that directory or file will be
	     searched  or  read	 instead of BITDIR. However, current directory
	     will always be searched

     TMPDIR  The directory where temporary files reside. Default is /usr/tmp.

COMMAND SUMMARIES

     Some Definitions
	     A mouse click, unless explicitly specified, means the  press  and
	     release  of  either  the  leftmouse button	or middlemouse button.
	     Menubutton	always refers to the rightmouse	button.

	     Dragging the mouse	means moving the mouse while one of the	 mouse
	     button is pressed.

	     A rubber band as used in bit refers to a simple geometric figure,
	     typically	a  rectangle,  whose size, location and	possibly shape
	     can be changed by mouse clicking or dragging.

	     A control panel (also known as dialog box)	is a window with  many
	     built-in  objects whose functions are to modify the attributes of
	     an	object,	such as	text color, or to modify task parameters, such
	     as	the scaling factor. Some of the	control	panels have no borders
	     by	default, to force a border, turn on the	 AlwaysUseBorder  flag
	     either through Setup button or ~/.bitrc/Setup.opt.

	     Unless explicitly specified, a keyboard input means the  specific
	     key,   not	  the  ASCII  code,  thus  keyboard  command  is  case
	     insensitive.

     Editing Panels
	     The edit control panel, EditPanel,	can be toggled on and  off  by
	     clicking  the mouse on the	edit button on the FilePanel.  Command
	     line option -e can	be specified to	bring  up  the	control	 panel
	     automatically upon	startup.

	     To	activate a specific editing  mode,  click  the	mouse  on  the
	     button labeled by the function.

     Type Conversions
	     bit internally works either in  RGB  mode	or  in	colormap  mode
	     depending on the input image type.	Typically, there is no need to
	     convert  type  explicitly	because	 bit  converts	 image	 types
	     transparently  if	it needs to. For unknown reasons, I decided to
	     have these	goodies	 available,  maybe  someone  might  find  them
	     useful  or	interesting to play with. Note that term RGB for image
	     type does not mean	that the image is in color. Rather, it	refers
	     to	 the  current  pixel  representation. All type conversions are
	     initiated by clicking the mouse on	the  desired  types  shown  in
	     EditPanel.	 The  following	 is  a summary of all types explicitly
	     supported:

     Color(RGB)
             Convert current image to RGB image. This is  meaningful  only  if
	     current  image is in colormap mode. The converted type will be in
	     color (as far as bit is concerned.	Note  that  prior  to  version
	     0.74, the converted type is in Gray(RGB) if the input image is in
	     grayscale). Conversion from Gray(RGB) to Color(RGB) is  a	simple
	     operation	that  does  not	 involve  actual  pixel	manipulations.
	     However, the conversion could  manifest  itself  when  generating
	     output,  e.g.,  writing  a	 Gray(RGB)  image  into	 JPEG  is very
	     different from writing a Color(RGB) image even if the images  are
	     identical (except for the type).

     Color(Map)
	     If	the current image is in	RGB,  this  conversion	will  initiate
	     quantization,  whose  parameters  can  be	set interactively.  If
	     quantization is performed for the sole  purpose  of  saving  disk
	     space, don't do it. JPEG is much better at	that than quantization
	     and JPEG compression retains much more information	as well.

     Gray(RGB)
	     Convert current image to RGB gray regardless  what	 the  original
	     type is.

     Gray(Map)
	     Convert current image to colormapped grayscale. Quantization will
	     be	invoked	if necessary.

     B&W     Convert current image  to	black  and  white.   Two  methods  are
	     available,	 one  is  the  ordered-dithering  of  order 8 (16 X 16
	     matrix), and the other is	the  Floyd-Steinberg  error  diffusion
	     method  which  typically gives better looking results.  B&W image
	     can  also	be  converted  from  other   types   by	  the	1-to-1
	     transformation with a step	function.


     Misc. Command
	     In	the main EditPanel, two	buttons	labeled	Convolve  and  Filters
	     are  handles  to  external	 bindings  (i.e,  external programs or
	     matrices).	To execute a binding, press the	mouse on the  convolve
	     or	 filter	button and if there are	indeed any bindings defined, a
	     panel contains all	the definition will be	shown,	click  on  the
	     bindings  you  want  to  execute,	and  bit  will try to pipe the
	     current image through the filter, and if successful, the  results
	     will be read back and displayed.

	     The definition files must be named	BIT_filters  and  BIT_convolve
	     respectively  and	they  are searched in ~/.bitrc or whatever the
	     environment variable BITDIR  points  to,  and  concatenated  with
	     possible  system  wide  definition	found in /usr/local/lib/bit or
	     HELPDIR with repeats removed.

     Filter  A filter is defined as an external	program	that  reads  at	 least
	     one  of bit supported formats from	file specified by argv[1] (not
	     stdin  in	order  to  guarantee  fseekability)  and  outputs  the
             possibly  transformed  image  to stdout. bit will intercept, load
             and display the output.

             All bindings must start with at (@) character and any  line  that
             does  not  is  considered to be comments and is silently ignored.
 	     The format	for external bindings is as follows:

	      @label; program ;	options; format1; [format2;[format3;] ..]

	     where label is the	string that will label the action button;  and
	     program  is  the  name  of	 the program to	run (popen(3S) will be
	     called to run it).	 options  are  command	line  options  to  the
	     program. If the option field contains a question mark (?)	alone,
	     the option	will  be  prompted  before  the	 program  is  actually
	     executed.	Format[0-4]  specifies	the  formats  the  program  is
	     capable of	reading, such as gif, ppm etc. Note that  it  is  very
	     important	to give	the formats in decreasing generality, that is,
	     ppm; pgm; pbm; never pbm;pgm;ppm.

	     For example, the following	are some sample	(valid)	bindings:

	      Shrink the current image by 20%
	      @	Scale0.8; pnmscale -xscale 0.8 -yscale 0.8; ppm;pgm;pbm;

	      Quantize an image
	      @	Quantize256; ppmquant; -fs 256 ; ppm; pgm;
	      @	Jquant256; djpeg; -GIF;	jpeg
	      @	Jquant;	djpeg -colors ;	?; jpeg

	     The format	name can be gotten by running bit with	the  -f	 flag.
	     The  format  specifier  is	 enclosed in parenthesis in the	bit -f
	     output.


     Convolve
	     The convolution  matrix  must  be	defined	 using	the  following
	     format:

	      @name; order; n1,	n2, n3,	......;

	     where name	is the button label and	 order	is  the	 rank  of  the
	     convolution  matrix,  and n is an integer representing the	matrix
	     elements in column	major, i.e.,n1 is the (0,0) element, n2	is the
	     (0,1) element and so on. The matrix need not be normalized.

	     For example, you can define the following matrix  to  sharpen  an
	     image

	      @Sharpen;	3; 0,-1, 0, -1,10, -1, 0,-1, 0;

     Magnify Magnify a rectangular region of an	image by any  amount,  limited
	     only by the window	size. In this mode, a moving rectangle defines
	     the region	of interest. Press leftmouse or	middlemouse to magnify
	     this  region  to the maximum window size.	If left	control	key is
	     down, leftmouse click increases the zoom factor by	decreasing the
	     size  of  the  region of interest while middlemouse decreases the
             zoom factor by increasing the size of  the  region  of  interest.
             menubutton  controls  the  pop-up  menu, which can be used to set
             some common zoom factors.

	     The above method changes the magnification	 factor	 uniformly  in
	     the  X-  and Y-directions.	To adjust separately the magnification
	     factors, use the following	keyboard command:

	     X:	Increase x magnification by decreasing region size.
	     x:	Decrease x magnification by increasing region size.
	     Y:	Increase x magnification by decreasing region size.
	     y:	Decrease x magnification by increasing region size.

	     For global	magnification,	see  Section  Configuration  and  -x|y
	     flag.

     Hide    Hide the EditPanel. It can	also be	hidden by the Edit  button  on
	     the FilePanel.

     SysMap  Install the default system	color map.

     Info    Hide the FilePanel. Useful	when doing a  very  large  crop	 (with
	     AlwaysReadScrn on).  In case both the FilePanel and EditPanel are
	     hidden, press M key inside	the main  window  will	bring  up  the
	     FilePanel.

     Select a color
	     To	select a particular color from a colormap (if one  exists)  or
	     by	 choosing  RGB	separately.  Note  that	this is	not a separate
	     command with direct applications, but is indirectly used in  many
	     mode, e.g., text, rotate, scale and others.

	     In	RGB mode, the three sliders representing  the  value  of  Red,
	     Green   and  Blue	intensities  are  shown	 and  each  slider  is
	     individually adjustable. The resulting color is shown on  the  OK
	     button  on	 the  right-hand  side	of the panel.  Some predefined
	     named colors, mainly from /usr/lib/X11/rgb.txt, are available  by
	     pressing the PreDefCol button.

	     In	colormap mode, a panel containing the current colormap with 64
	     entries  per  screen  is  shown  and  each	 individual  entry  is
	     represented by a colored  square  inside  the  panel.  Two	 large
	     arrows  on	 the  sides of the panel can be	used to	scroll forward
	     and backward through  the	color  map.   A	 particular  color  is
	     selected  by  pressing the	mouse on the square having the desired
	     color. Current selection is marked	by a cross and is  also	 shown
	     on	 the bottom-most button	cabled Selected.  The five small boxes
	     on	the bottom of the panel	show, respectively, the	index into the
	     color map,	red, blue and green intensities	and luminosity.

	     In	both RGB and colormap mode, leftmouse and  rightmouse  can  be
	     used to select any	pixels on screen inside	the main window	as the
	     current selected color by clicking	on  the	 pixel	while  holding
	     down  the	CNTRL  key. The	selected pixels	color will be shown in
	     the appropriate boxes and/or buttons.  The	pixel picking mode  is
             indicated  by  a  cross cursor.  This feature can also be used to
             get the intensity of a particular pixel by turning on  the  mouse
             position reporting from the Setup menu.

     Crop    In	crop mode, a copy of the currently displayed image is made and
	     all  changes  that	 occur	are made to this copy until you	either
	     save the change or	exit from the crop mode. At  that  point,  the
	     copy   replaces   the  original  image  and  all  changes	become
	     permanent.	Cropping a cropped image can be	accomplished by	 using
	     the  save feature without exiting crop mode.  The actual cropping
	     can be of either  internal	 (memory  copy)	 or  external  (screen
	     reads)  operations.  Screen reads are performed if	there are text
	     and SGF's on top of the image,  otherwise	internal  cropping  is
	     done  unless  global  option  AlwaysReadScrn  is on.  In general,
	     screen reads should be avoided on	machines  with	less  than  24
	     bitplanes	for  normal framebuffer.  Note also that a screen read
	     reads everything within the region	of interest, as	defined	by the
	     cropping  rectangle,  which may be	undesirable and	in some	cases,
	     you might need to hide all	the control panels.

	     Upon entering crop	mode, a	rectangle with two  small  crosses  on
	     the  opposite  corners  is	shown. Clicking	and dragging the cross
	     move the corner of	the rectangle and  hence  both	the  size  and
	     location  of the crop region can be changed this way. For precise
	     placement,	the arrow keys and the keyboard	key hjkl may  be  used
	     (as  in  VI(1)  ).	The corner to which the	key applies is the one
	     closest to	the mouse.  This behavior can  be  overridden  by  the
	     shiftkey,	i.e., if leftshift is down, hjkl always	applies	to the
	     upper-left	corner of the rectangle	 regardless  which  corner  is
	     last  touched  by	the mouse. Similarly rightshift	key will force
	     the hjkl key to apply to the upper-right corner.  The  number  of
	     pixels  each  hjkl	moves can be changed by	key [1-9].  If CONTROL
	     key is down, the aforementioned command will move	the  rectangle
	     without  changing	its size.  The process can be repeated until a
	     satisfactory crop region is found.

	     The size of the rubber band can also be  symmetrically  increased
	     and decreased by the keyboard key xXyX.

	     The  size	and  placement	of  the	 crop  region	are   reported
	     continuously on the FilePanel.

	     Pressing the menubutton is	the main window	will bring up a	pop-up
	     menu having the following entries

     DoIt    discard the image outside the current rectangle  and  redraw  the
	     screen.  If current region	is larger than the image on any	sides,
	     a fill color will be prompted for (See Select a color). This fill
	     feature  can  be used in conjunction with frameN command to add a
	     border to the image. See also undo	and save.

     Help    Detailed crop command summary, similar to the  ones  given	 here,
	     but might contain more up-to-date info.

     RBcolor Cycle through all available colors	of the rectangle. Exact	number
             of colors available depends on the hardware.

     RBobject
             Change  the  bounding  objects.  Currently   only   circles   are
	     available,	  but	cropping   along  the  circle  is  yet	to  be
	     implemented.

     Frame1  Enlarge the rectangle by 1	pixel on all sides. Convenient to  add
	     a frame to	the current image.

     FrameN  Enlarge the rectangle by  n  pixels  on  all  sides.  N  will  be
	     prompted for.

     Auto    Search the	image for solid	regions	 (regions  with	 same  color),
	     starting  from  all  sides	 and  the  findings are	indicated by a
	     properly placed and sized rectangle.

     Save    Save all the changes made so far and mark the  current  image  as
	     the starting point	for future undo.

     Undo    Undo cropping. Note that undo is of  unlimited  depth.  Executing
	     this command will undo everything since last save.

     Done    Return control to main.

     To	enlarge	an image without filling the  outside  region,	turn  off  the
     CropFill  flag through configuration file or Setup	menu. This can be very
     useful in combination with	cut &  paste  to  import  cut  buffers	or  to
     concatenate images.

     Rotate  There is no copies	made in	this mode, as  soon  as	 an  image  is
	     rotated,  the  rotated  image  replaces the original image	as the
	     current image. Thus you can rotate	a rotated image.

	     The rotation options  are	controlled  by	the  rotation  control
	     panel,  which consists of a counter to change the rotation	angles
	     (between -180 and +180 degrees  measured  counter-clockwise  from
	     the  horizontal  direction), and other buttons for	convenience or
	     other options. To change the rotation  angle,  simply  click  the
	     mouse  on	either	the  single  or	 double	arrows in the counter.
	     Leftarrow	decrease  the  angle  and  right  arrow	 increase  the
	     rotation  angle.  Rotation	 of multiple of	90 degrees or flipping
	     about x- or y- axis are provided as shortcut buttons and  can  be
	     set by clicking the mouse on appropriate buttons.	After you have
	     set the angle you can live	 with,	click  the  mouse  on  the  OK
	     button.

	     For rotations other than multiple of 90 degrees, a	fill color can
	     be	 selected  to  fill the	"rotated out" portions of the bounding
	     rectangular region. To  do	 so,  click  the  mouse	 on  FillColor
	     button.   In  addition,  for  rotations other than	multiple of 90
	     degrees, you can activate or  deactivate  subpixel	 sampling  for
	     anti-aliasing.  Anti-aliasing  always  gives  better results. The
	     only situation where you do not want subpixel sampling is to keep
	     the   exact  colors  as  the  unrotated  image.  To  activate  or
             deactivate subpixel sampling, click the mouse on  round  subpixel
             button.  If  the  subpixel  is turned off, the rotated image will
             have the same type as the unrotated image.

	     For online	help, click the	mouse  anywhere	 inside	 the  rotating
	     control panel where there is no other objects.

     Cut&Paste
	     The cut & paste region is defined by a rubber band	whose size and
	     location  can  be	modified  interactively	 by  the  mouse	and/or
	     keyboard.	Use leftmouse to cut (or C key)	and middlemouse	(or  P
	     key) to paste. Keyboard key uU undoes last	pasting.

	     To	change the size	of the cut region, keyboard key	 xXyY  can  be
	     used to decrease/increase the width and height of the cut region,
	     key [1-9] controls	the step size for each key press. The size can
	     also be changed by	clicking the menubutton, which will bring up a
	     static rubber band	with two crosses on it.	 You  can  change  the
	     size  and	location  by  dragging these two crosses. Keyboard key
	     hjkl and the arrow	keys can also be used to manipulate the	rubber
	     band.  To resume cut & paste, click away from the crosses.

	     The cut buffer so generated (by leftmouse)	may come in one	of two
	     ways.  It	may come as a result of	a direct screen	read or	it may
	     come as an	internal memory	copy depending on the settings of  the
	     ReadScr/Internal  button. When ReadScr is active, everything that
	     falls within the cut region will be  read	into  the  cut	buffer
	     while  when  Internal is active, the cut buffer always comes from
	     the image	in  core.  Screen  reads  may  be  useful  in  certain
	     situations	 but  in general it should be avoided on machines with
	     less than 24 bitplanes.

	     A cut buffer may also be obtained by importing an external	 image
	     in	 any  of  bit  supported  formats.  To do so, click the	Import
	     button. The imported image	behaves	 exactly  like	a  normal  cut
	     buffer  except  that  it  can not be named, thus a	new cut	or new
	     import overwrites the current imported image.

	     To	save a cut buffer for later pasting, click  Save  button.  The
	     saved buffer will be available during the entire session of bit.

	     There are two different kinds of  pasting,	 i.e.,	Overwrite  and
	     mask.   In	Overwrite mode,	the cut	buffer replaces	completely the
	     targeted image area, both on screen and in	 core  while  in  mask
	     mode,  a  mask operation is performed before replacing the	pixels
	     in	the region. The	mask is	defined	as NewPix = (PixInCutBuffer !=
	     MagicPix  )  ? PixInCutBuffer: OriginalPix	for every pixel	in the
	     region (current MagicPix is 0). An	obvious	 application  of  this
	     feature  is  to import external images as logos or	signatures and
	     paste it into the current image.

	     Bit further has a Preview mode  in	 Cut&Paste  where  all	pasted
	     buffers  only alter the pixels in the framebuffer and leave alone
	     the image in core.	 To  alter  in	the  framebuffer  as  well  as
	     altering the image	in core, toggle	on the Commit flag.

             Note that in Commit mode or Preview with Masking turned on,  both
             the cut and paste regions are not allowed outside the image area,
             thus  if  an  image  larger than the current image is imported in
	     Commit or Preview with masking turned on, a lock up of the	rubber
	     band  might  occur, therefore, it is generally not	a good idea to
	     import an image larger than the current  image,  do  the  reverse
	     instead.

	     For a simple cut&paste, see Paint function.

     Scale   Scale is controlled by the	scaling	control	panel. By default, the
	     aspect  ratio is kept for scaling,	thus changing one scale	factor
	     will change the other. If the purpose of scaling  is  to  correct
	     aspect  ratio,  click  mouse on the KeepASP button	to disable it,
	     and x and y scaling factors will become independent  and  can  be
	     adjusted  separately.   The scales	can be shown either as a ratio
	     (current size/original size) or as	the resulting size  in	pixels
	     by	 toggling  the ShowSize	or ShowScale button. Subpixel sampling
	     can be turned on or off by	clicking the mouse on Subpix button.

	     In	certain	situations, it might be	desirable to  make  the	 image
	     having  a	particular size	without	changing the aspect ratio.  To
	     achieve this, toggle on the Exact button, and the	scale  factors
	     become  independent,  adjust  each	 until	you've got the desired
	     size, bit will scale the image to the requested size,  using  the
	     smaller  of  the two factors, and filling the empty region	with a
	     fill color, which can be set by clicking on the FillColor button.

	     To	start scaling, click the mouse on OK button.   To  exit	 scale
	     mode, click the mouse on Done button.


     Merge   Load an image and concatenate with	the currently displayed	image.
	     If	 the  separation between the two images	are negative one image
	     is	merged into the	other.

	     To	load the image to be merged, click on the Image2M button.

	     There are total of	12 alignments between two images  (3  on  each
	     side,  e.g., if we	want to	place the new new image	on the left of
	     the current image,	within this constraint,	there are center,  top
	     and  bottom.  If  the  new	image has the same size	as the current
	     image, the	three placements degenerate into  a  single  location)
	     and  each	is  shown as a small arrow.  The meaning of each arrow
	     becomes clear if you consider the manual button  as  the  current
	     image,   and  all	other  buttons	are  the  possible  new	 image
	     locations.	The counter below the alignment	 button	 controls  the
	     separation	 between  the  two  images, thus a negative separation
	     merges two	images.	In performing merging, there are two  ways  to
	     handle  the overlapping part, the default is for the new image to
	     overwrite the old one, i.e., new image on "top".  To  change  the
	     default, click on the Top/Bottom button.

	     In	addition to overwrite, other operations	are possible.  Current
             implemented  operations  are  defined as follows (assuming A is a
             pixel in the current displayed image and B is  the  corresponding
             pixel in the image to be merged):

	     center tab(;);
	     r l.
	      Name ; Definition
	     OverWrite;	 B
	     Mask;  B ?	B:A
	     Add;  Min(B+A, 255)
	     Sub;  Max(B-A, 0)
	     Diff;  Abs(B-A)
	     XOR;  B^A

	     Switch B&A	if the top/bottom setting is bottom.

	     The placement buttons and the separation counter provide adequate
	     alignment between two images in most cases, nonetheless, a	manual
	     button is provided	in case	you want to  control  precisely	 where
	     the  image	 should	be placed. To activate manual placement, click
	     on	the manual button. Then	you can	use the	arrow keys,  hjkl[1-9]
	     to	move the the rubber band, or you can use the mouse to move the
	     rubber band.

	     Upon a satisfactory location is found, click on the Merge	button
	     to	 initiating  merging/concatenation,  and a new image is	formed
	     with all empty regions filled with	the fill color,	changeable  by
	     clicking on the FillCol button.

	     After merging/concatenating, although the image displayed and  in
	     core  have	 the merged size, further alignment requests are still
	     against the pre-merged image, not the merged one. To change this,
	     click on the Update button	and subsequent alignment requests will
	     be	against	the current image.  Depending  on  the	situation  and
	     relative image sizes involved, Update button may prove to be very
	     useful,  e.g.,  to	 concatenate  four  identically	 sized	images
	     together,	the  only  way to do it	without	manual placement is to
	     concatenate the first two,	and  update  the  alignment  reference
	     size, and concatenate the rest without update.

	     To	exit merging mode, click on the	Done button.

     PixTran Arbitrary 1-to-1 pixel (color) transformation, i.e.,  all	pixels
	     having  value  I  will be replaced	by F(I)	in output pixel, where
	     F(I) is the transformation	functions. The transformation  can  be
	     applied  to the entire image or a rectangular region of it	on RGB
	     separately	or simultaneously.

	     Upon entering PixTran mode, shown is a control panel  with	 three
	     XY	 graphs	 representing the RGB transformation function with the
	     horizontal	axis being the input pixel value and the vertical axis
	     being  the	 output	pixel value.  The initial transformation is an
	     identity  transformation,	i.e.,  F(I)  =	I.   To	  change   the
             transformation  function,  click  the mouse on the control points
             (shown as little squares) on  the  graphs  and  the  cursor  will
             change to a small cross. Keep mouse pressed and drag the  control
             points  to  change  the  transformation  function.  The number of
	     control  points  can  be	changed	  by   the   counter   labeled
	     ControlPoints.

	     Initial size is the entire	image, as indicated  by	 rubber	 band.
	     To	 adjust	the editing size, drag the small crosses on the	rubber
	     band or use keyboard key hjkl (or arrow keys) and xXyY.

	     On	top-right of the control panel,	three rounded buttons  labeled
	     Red,  Green,  and	Blue  are shown. Immediately below, there is a
	     large button labeled RGB. These four  buttons  control  to	 which
	     component,	 or  simultaneously  all three components, the current
	     transformation applies to.	These  four  settings  are  of	course
	     mutually exclusive	and setting one	will unset the other three.

	     In	 principle,  the  interaction	mentioned   above   with   the
	     transformation   function	 is  capable  of  any  transformations
	     imaginable, but in	practice, it is	not always  easy  to  set  the
	     transformation  to	 some  known  functions, nor to	change all the
	     control points by some given amount, such	as  gamma  corrections
	     and  brightness  adjustment.  To  solve  these  problems,	a math
	     expression	parser and several common functions  are  provided  as
	     shortcuts.	 The parser is rather lenient in the syntax and	error,
	     but demands you  name  the	 variable  x.  Photo  inversion,  step
	     functions,	gamma correction are among the shortcuts. In addition,
	     the intensity can be shifted either downward or upward. For large
	     number   of   control   points  with  upward  shifts,  the	 final
	     transformation  can  be  very  interesting	 because  of   ignored
	     overflows.	The overall brightness of the image can	be adjusted in
	     two ways:	the brightness can be increased	by an absolute	amount
	     (F(I)  = I	+ Delta	or by a	percentage (F(I) = (1 +	Delta *	I. The
	     selection	can  be	 changed  by  clicking	the  mouse   on	  text
	     Brightness.

	     Once a satisfactory transformation	is found, click	the  mouse  on
	     the  button  labeled Apply. The current image will	be transformed
	     according	to  the	 transformation	 and  the  settings  of	 which
	     component	or  components	the  transformation  applies  to.  The
	     transformed image will then replace the  original	image  as  the
	     current  image.   To  undo	the transformation, press the mouse on
	     the button	labeled	Undo. Note, however, unlike in crop, only  one
	     undo  is  supported,  that	 is, if	you did	two transformations in
	     succession, only the last transformation can be undone.

	     To	exit PixTran mode, press mouse on the Done button.

	     By	using combination of the  1-to-1  transformations,  some  very
	     pleasing  effects	can  be	achieved. For example, to simulate the
	     effect of looking the image through a bluish glass, shift red and
	     green  intensity  down  by	two bits, and shift the	blue intensity
	     down by one or zero bit, do the  transformation.  The  result  is
	     very  nice.   Similar  tricks can be applied for reddish glass or
	     greenish  glass.	Be   creative,	 when	you   find   something
             interesting,  please  let me know.  I might add a shortcut button
             for it.

             Note when I said the interaction mentioned above  is  capable  of
             any  transformation  imaginable,  I lied. It can't simply because
	     the transformation	is three one-dimensional graphs	instead	of the
	     correct   one   three-dimensional	 one.  For  this  reason,  two
	     additional	functions are supplied to swap	two  arbitrary	pixels
	     values (e.g., change black	to white and white to black) or	simply
	     replace all pixels	with a particular  color  with	another	 color
	     (e.g., change all dark gray pixels	to bright red).

     Text    A panel with many objects is shown	 in  text  mode.  Text	color,
	     size,  and	 orientation  can  be  set  by	clicking  the mouse on
	     appropriate objects  inside  the  text  control  panel,  and  any
	     changes in	attribute take effect immediately.

	     Initial text is the current filename and can be changed by	typing
	     into the control panel field labeled Text.	 The new text is shown
	     as	soon as	you type, both	inside	the  field  and	 in  the  main
	     window.  To  move the location of the text	string rendered, click
	     the mouse inside the main window, the string  will	 move  to  the
	     location  of  the	mouse.	You  can  also drag the	text string by
	     keeping the mouse button down. For	 precise  placement,  use  the
	     arrow keys	or hjkl.

	     Sometimes,	it is desirable	 to  render  the  text	onto  a	 fixed
	     (uniform) background. To this end,	turn on	the Bkgrnd button, and
	     a uniform background will appear beneath the text.	The background
	     color can be changed by clicking the mouse	on the BkColor button.
	     Note that if the  background  is  not  enabled,  neither  is  the
	     background	color. Similarly, if you like to have a	bounding frame
	     around the	text, turn on the frame	feature	by clicking the	 mouse
	     the Frame button. In conjunction with PixTran's region feature, a
	     special background	can be created that gives the image as appears
	     through semi-transparent glass.

	     Some special effects are available, currently,  Shadow,  engraved
	     and  emboss  are  implemented. For	any of these to	look nice, you
	     need to play with	the  text  and	background  color  a  bit.  In
	     general,  for  shadow  to look nice, a strong text	and background
	     are needed	and for	 engraved  to  look  nice,  a  mild  text  and
	     background	 should	 be  used and text should be stronger than the
	     background, and further, the background and text should be	close.
	     The same is true for emboss effects.

	     Note there	are two	modes of operation, one	is the	immediate  and
	     the  other	 is  the  deferred method. In immediate	mode, text are
	     rendered into the raster while in deferred	mode,  text  is	 saved
	     separately	from raster and	may be output separately to get	better
	     looking hardcopies. The mode of  operation	 can  be  toggled   by
	     pressing  on  the	appropriate  buttons.  If  text	 are  saved in
	     deferred mode and later on, you decide to render  the  text  into
	     the raster, you can do a crop.

	     If	the purpose of adding text is to get  an  annotated  hardcopy,
             justification  is  extremely  important. Keep in mind that screen
             has a much lower resolution  than  a  printer.  The  same  string
             displayed left justified and center justified (with  right  shift
             of  half of the string length) might look the same on the screen,
	     but could be very different on hardcopy.  Therefore,  always  use
	     proper justification if hardcopy is desired.  To preview what the
	     test might	look like on hardcopies,  choose  the  PrinterFont  by
	     toggling  the  ScreenFont.	 This  will  switch  the fonts used to
	     printer matched ones which	give better indication	how  long  the
	     text  would  be  or  how  different  lines	of text	would align on
	     paper.

	     If	special	symbols	are desired, you can input them	just  like  in
	     TeX(1),  where special symbols are	surrounded by dollar signs ($)
	     to	indicate  font	switching.  Unlike  in	TeX,  superscript  and
	     subscript do not work. Minor size changes on the same line	can be
	     achieved by using	command	 	iny	\small,	 
ormal,  \large  and
	     \huge.  For symbols not defined by	bit, you can still get them by
	     inputting their character code  directly  in  octal  preceded  by
	     backslash	(\), provided you know the encoding scheme of font you
	     are using.	For text  via  PostScript,  ISOLatin1Encoding  is  the
	     default (unless printer is	Level 1	only and in that case standard
	     PS	encoding is used).

	     Once everything, including	the location,  is  satisfactory	 click
	     the mouse on the OK button	to place the the current text into the
	     image  (not   necessarily	 into	the   raster,	depending   on
	     immediate/deferred	settings).  To exit text mode, click the mouse
	     on	the Done button.

	     Note: in immediate	mode, strings that are outside the  image  can
	     not  be  rendered.	 To  render  a	string	outside	the image, use
	     deferred mode and do a crop following the text mode and fill  the
	     empty region with whatever	color you might	choose.

     Marking Mark locations on image with simple geometric  figures,  (arrows,
	     circles,  rectangles  etc).  This	function  is  controlled  by a
	     control panel showing all available basic SGFs.  Location,	 size,
	     color,   orientation  and	line  thickness	 can  be  individually
	     adjusted by clicking on  appropriate  buttons.  By	 default,  the
	     origin  of	 the  coordinate system	is at the lower	left corner of
	     the image and all distances are measured in pixels	from origin.

	     Sometimes,	 the  underline	 image	may   have   intrinsic	 units
	     associated	 with  it,  and	working	in that	units might be easier,
	     such as a map with	one pixel-pixel	 distance  equal  to  0.83  km
	     (kilometers).   To	 switch	 to  this  unit,  toggle  on  the User
	     coordinate	button and enter the  conversion  between  pixels  and
	     this  unit,  defined  as  the  ratio  between 1 unit in the pixel
	     coordinate	system and the value it	represents  in	the  new  unit
	     system,  and  in  this example, you would enter 1.20482 (which is
	     1/0.83), meaning 1.20482  km  is  represented  by	1  pixel-pixel
	     distance.	Once  in  user	coordinates,  all  distances and sizes
	     reported and requested should be in the new units,	 for  example,
	     you  can  request	to  draw  a  circle of radius 120 km etc.  The
             origin of the coordinate can be changed by pressing the mouse  on
             the  SetOrigin  button, and the current location of the mark will
             be the new zero of the coordinate system.

	     To	move the location of the sgfs, you can either click inside the
	     main  window  where  you want the sgf to be, or you can input the
	     coordinates of the	locations you desire, and the SGF will move to
	     the  new location.	 The input feature is extremely	useful if user
	     coordinate	system is in force.

	     For speed reasons,	only the x- and	y- components of  the  current
	     location  is reported in the control panel	by default. To get the
	     distance from the origin, turn on the Dreport option.

	     To	place a	mark, press the	mouse on the OK	button,	current	object
	     together  with  all  of  its attributes, such as color, location,
	     etc, are saved. To	exit mark mode,	press done button.

	     The marks so "rendered" may or may	not be rendered	into the image
	     depending	on  the	 settings  of the Immediate/Deferred mode.  In
	     Immediate mode, sgf is rendered into the raster and  bit  has  no
	     record  of	 it.  In deferred mode,	full vector information	of the
	     sgf is retained and the sgf is drawn on top of the	image, but not
	     rendered  into  the  raster.  The	deferred  mode	is  useful for
	     generating	hardcopies via PostScript where	 the  vector  info  is
	     used  to  scan convert the	sgf on a printer which typically has a
	     better resolution (>300dpi) than the computer  screen  (<100dpi).
	     If	 sgfs  are  rendered in	deferred mode, and later on there is a
	     need to render them into the raster, do a crop.

	     Note in immediate mode, all sgfs that are outside the  image  are
	     clipped.  To  render  a mark outside the image, enlarge the image
	     first via crop.

	     For convenience, the following keyboard keys can be  used:	  xXyY
	     have the usual meaning, that is xy	decreases the width and	height
	     respectively and XY increases the the  width  and	height.	 Arrow
	     keys  (or hjkl) can be used for precise placement of the sgfs. rR
	     rotates the sgf in	discrete steps which can be set	by [1-9].

	     If	the hardware is	capable	of  drawing  anti-aliased  lines,  bit
	     will  try	to  draw all lines anti-aliased. However, for colormap
	     images or	lines with  width that is not  1,  anti-aliasing  will
	     not be performed.

     EditMap Only meaningful  if  the  current	image  is  in  colormap.  Upon
	     entering  this mode, current colormap, 64 entries per page, and a
	     color mixer are shown.  To	 select	 a  specific  entries  in  the
	     colormap,	click  on  the	little square inside the colormap. The
	     current selection will be marked by a  small  cross  and  current
	     selection's  RGB intensity	will be	shown in the color mixer.  You
	     can change	the color of current entry by  dragging	 the  specific
	     color channels in the mixer and corresponding color in the	map as
	     well as all pixels	in the image that match	the current entry will
	     reflect  current  settings.  On the bottom	of the colormap, there
             are five small boxes, showing respectively, the  index  into  the
             map,  the  red, green, blue and luminosity of the entry.  Entries
             in the map can be scrolled by the large arrows on  the  sides  of
             the colormap.

	     To	exit colormap editing, click the mouse on the Done  button  on
	     the colormap panel.

     Enhance This  is  really  histogram  equalization	generalized  to	 color
	     images.  Instead of equalizing the	RGB histograms separately with
	     their own	transformation	function,  a  function	based  on  the
	     luminosity	 will  be  applied  to the RGB components. There is no
	     interaction with this  function.  A  transformed  image  will  be
	     displayed	and  the  original  image  will	 be  replaced  by  the
	     transformed one.	In  cases  where  the  image  of  interest  is
	     superimposed  on  a  strong  (either  black or white) background,
	     histogram equalization  gives  poor  results  in  the  background
	     region, maybe a thresholding before equalization is called	for.

     Smooth  Apply a special convolution where each pixel  is  replaced	 by  a
	     weighted  sum  of	itself	and its	nearest	(3x3) and next nearest
	     (5x5) neighbors.

	     Upon entering this	mode, a	copy of	the current image is made  and
	     all  changes that occur are made to this copy until return	and at
	     that point, the changes becomes permanent.	To force  the  changes
	     to	be permanent before return, click on the Save button. Click on
	     Undo to undo all changes since last Save.

	     By	default, the smooth is performed  on  the  entire  image.   To
	     smooth  a	particular region of the image,	drag the small crosses
	     on	the rubber band. See Crop for more details on the  interactive
	     sizing of the rubber band.

	     To	preserve edges,	a threshold  may  be  used  according  to  the
	     following definition:

		  If(Abs(SmoothedPixel-	OldPixel) >= threshold)
		     NewPixel =	SmoothedPixel
		  else
		     NewPixel =	OldPixel

	     Different thresholds for  R,G,B  can  be  used  and  are  set  by
	     pressing on the counters.

	     To	start smooth, click on the Smooth button. To finish up,	 click
	     on	the Done button.

     Sharpen Apply a special convolution where each pixel  is  replaced	 by  a
	     weight  sum  of  itself  and its nearest neighbor.	 A rubber band
	     defines the region	to which the sharpen operation applies.

     MedianFilter
             Perform a 3x3 median filtering. Again,  A rubber band defines the
	     region of interests.

     Histogram
	     Clicking on this button will bring	up a window with four  panels,
	     showing  red, green, blue and white graphs.  These	graphs are the
	     separated histograms of the RGB components	of the current	image.
	     The  horizontal  axis  is	the intensity and vertical axis	is the
	     population	count. Note  that  this	 is  not  the  true  histogram
	     because correlation is ignored, nevertheless, some	insight	can be
	     gained by examining these graphs.

	     The graphs	are static for efficiency reasons and therefore,  even
	     when  image  has  been  changed,  the  histogram  is  not updated
	     automatically. To show the	histogram of current (changed)	image,
	     clicking the mouse	on the Histogram button	again.

	     Click on the title	bar brings up the pop-up menu,	whose  entries
	     include  re-scaling,  change of plotting styles etc.  Select Done
	     to	finish.

     Edge
     Uses a variant of orthogonal Sobel	gradient operators. If the input image
     is	in color, the output edge map will also	be in color. The colormap used
     depends somewhat on the image itself.  By looking at the histogram	of the
     edge  map,	a good threshold value can be chosen and then a	two-level step
     transformation will produce a bi-level image. No interaction.

     Image Difference
     Computes the differences between two identically sized  images  pixel  by
     pixel  and	 displays  the	results	 as  an	image. More information	can be
     gained by showing the histogram of	the difference image.

     Image Panning
     Image panning makes viewing images	larger than the	screen possible.   The
     panning  control panel consists of	nine buttons labeled by	the directions
     of	the movement. The center dots will center the  image  both  vertically
     and  horizontally.	 The  slider immediate below controls the pan step, in
     units of pixels.  In  SlideShow  mode,  image  panning  is	 automatically
     performed in both directions unless disabled by the initialization	file.

     Measuring Pixels Intensities Along	a Line
     The length	and angle of the defining line can be changed by dragging  the
     crosses  at the two ends of the line. The origin of the line is marked by
     a circle around the cross.	The intensity is presented as four graphs with
     horizontal	 axis  being  the distance, in pixels, along the line from the
     origin.  The vertical axes	are  the  Red,	Blue,  Green  intensities  and
     luminosity	 (or color index depending on the image	type).	To activate or
     update the	reporting, click mouse inside  the  main  window.   Menubutton
     again  controls  the  pop-up  menu	 through  which	 the line color	can be
     changed or online help can be obtained.

     Edit Individual Pixels
     Upon initiating, a rectangle attached to cursor is shown and  the  region
     within  the  rectangle is magnified and shown in the PixEdit window. Once
     you have found  the  region  you  intend  to  edit,  click	 leftmouse  or
     rightmouse  within the main window, the rectangle will cease to move with
     the cursor	and the	area within the	rectangle will be the region  you  can
     edit.

     To	select the pixel to edit, click	leftmouse on the pixel in the  PixEdit
     window.  Its  value  can be changed in the	same way as in Select a	color,
     i.e., by dragging the slider and/or changing the colormap entry.

     To	set a pixel to the current color (as  shown  in	 the  mixer/colormap),
     click  leftmouse  on  the	pixel  while  holding down the ALT key or.  by
     clicking middlemouse. Dragging will set all pixels	along the path.

     To	change all pixels that have a particular value	to  a  different  one,
     edit  one	first,	then  use the pop-up entry Repeat. For example,	if one
     wants to change all bluish	pixels to red, select  one  bluish  pixel  and
     change  it	 to  red, then do a Repeat thru	popup (To changing/swap	pixels
     for the entire image or a large region of it, See PixTran function).

     The pop-up	menu has the following entries Help, MarkCol, GridCol, Repeat,
     Cancel  and  Done.	 MarkColand GridCol cycles the the colors of the pixel
     mark and the grid;	Repeat Do the  last  editing  on  all  pixels  in  the
     PixEdit  window.	Cancel discard all changes and return.	and Done saves
     all changes and return.

     The following is not editing functions per	se,  but  its  interaction  is
     complex enough to warrant an explanation:

     Image Browser
     Click on the IBrowse  button  to  activate	 the  image  browser.  If  the
     thumbnail	images exist (created by an earlier session of bit), they will
     be	loaded and shown in the	browser. If thumbnail images do	not exist, bit
     will  only	 show  generic	icons,	i.e.,  the  program  will not generate
     thumbnail images upon startup.

     To	view an	image, double click on the filename  icon.  If	the  image  is
     successfully loaded, its thumbnail	image will be made and used to replace
     the original generic icon.	Double click on	a directory will spawn another
     image browser. Total of 7 directories can be simultaneously displayed.

     To	generate thumbnail images for all visible filenames  in	 the  browser,
     click  on	the  Update  button. If	a thumbnail has	a date that is earlier
     than that of the image, the thumbnail is re-generated.

     Directory entries are cached and to force a  re-read  after  addition  or
     deletion,	click  on the ReScan button. Note however, ReScan will also do
     an	update.	 In addition, thumbnails whose original	images no  long	 exist
     will be deleted.

     To	move forward and backward within the browser, the  arrow  buttons  and
     the  slider  can  be used. For efficiency reasons, slider change is acted
     upon only on its release, that is, program does  nothing  while  you  are
     changing the slider. Arrows move one-screenful of files at  a  time,  and
     thumbnails,  if they exist,  are loaded as you go.  This could be slow if
     many thumbnails exist,  to	move back and forth  quickly  without  loading
     any  thumbnail  images,  keep  CNTL  key down while pressing on the arrow
     buttons.

     To	cleanup	all thumbnail images,  click  on  DelAll  button.  To  cleanup
     manually, remove ./.btn directory and all entries in it.

     There is no built-in buttons to manipulate	 (for  example,	 deleting  the
     original  image) the original images. A mechanism via run time definition
     is	provided to achieve this operation. Once a definition  is  registered,
     it	 operates  on  all  marked files. To define an external	binding, click
     menubutton	on the button  next  to	 the  Close  button;  to  execute  the
     binding, click leftmouse on the button.

     The definition is consisted of two	strings, and two  booleans.   The  two
     strings  are  the	button	label and a shell command respectively and two
     booleans are Confirmation and MultiArgs. MultiArgs	indicates if the shell
     command  accepts  multiple	arguments and if Confirmation is set, bit will
     pause for a mouse click before the	actual execution of the	 binding.  The
     shell command takes the form
       cmd [options] [?] [options]

     where ? will be replaced by the filenames marked.	For example,
     mv	? /usr/people/good_dir

     Paint
     This function offers standard paint  functions,  namely,  pencil,	spray,
     brush and some other common operations.

     Upon entering  paint function, a  panel  containing  all  paint  function
     icons are shown. Click on the icon	to activate a specific function.

     On	the lower-right	corner of the  panel,  current	line  width  and  fill
     pattern  are  shown.  Two special entries are available to	facilitate the
     uniform operation of outlining and	fill.  By default, outlines are	drawn,
     possibly  with  a	different  color,  around  the	filled	area.  To turn
     outlining off, select None	(or  zero)  for	 line  width.  Similarly,  all
     closed area are filled unless the fill pattern is None.

     MPEG movies
     This is one of the	file formats that can hold more	than one images	in  it
     (PostScript  is  another).	Upon loading and displaying the	first frame, a
     control panel is shown.  Click on the Play	button to show the movie  non-
     stop,  interruptible by the Stop or Done button. To play and rewind/loop,
     click on the Play&Loop button, again, interruptible by Stop/Done  button.
     Number of frames per second is reported at	the end	of a sequence.

     To	display	frame by frame (stepping), click on the	NextFrame button.

     The default magnification factor for MPEG movie is  2x2.  To  change  it,
     click on the left-most box above the FrameControl box. Use menubutton for
     random selection.

     To	introduce a delay between two frames, click on the  box	 next  to  the
     magnification  box,  click	 leftmouse  for	 next  entry, middle mouse for
     previous entry and	rightmouse for random access.

     To	convert	the currently displayed	frame to other format,	click  on  the
     Convert button. The destination format is selected	by clicking the	box on
     top of the	Convert	button.	To convert all frames, starting	 from  current
     frame, click on ConvertAll	button.

     All other buttons have the	obvious	meanings.

     Also see sgimpeg(1L) for a	simpler, stand-alone MPEG player.

     Note: seeking of any kind does not	work. Clicking	on  PrevFrame  is  the
     same as NextFrame.

     PostScript	Files
     PostScript	 is  supported	via  GhostScript,  see	gs(1).	 Again,	  upon
     converting	 and  displaying  first	 page, a control panel is shown	if the
     document is multi-paged.

     The following functions are not directly supported	by bit program but can
     be	done indirectly:

     Measuring Pixel Intensities
     In	any mode where a color is prompted for,	e.g., rotate, scale crop, text
     etc,  click inside	the main window	while holding down CNTRL key will read
     the intensities of	the  pixel  under  the	mouse.	Again,	the  RGB,  and
     luminosity	 (or CI) will be reported. The mouse position can be gotten by
     turning on	the mouse reporting option through Setup menu. Also see	Select
     a Color.

ACKNOWLEDGMENT

     JPEG support is based on the Independent JPEG Group's library Version 4.

     The  Graphics  Interchange	 Format	 (c)  is  the  Copyright  property  of
     CompuServ	Incorporated.  GIF(sm) is a Service Mark property of CompuServ
     Incorporated.

     The FORMS library is developed by Mark Overmars.

     MPEG support is derived from the Berkeley source.

FILES

     /usr/local/lib/bit/*.hlp
     All online	helps. In case environment variable  BITHELP  exists,  BITHELP
     will be used instead of the default.

     /*.dat
     Some control files

     /Setup.opt
     Basic configuration. The first file bit reads unless -n is	present.

     ~/.bitrc/Setup.opt
     User configuration	file which is read after reading the system default.

     ~/.bitrc/BIT_filters
     The definition file for external filters.	It will	be  concatenated  with
     definitions read from /BIT_filter.

     ~/.bitrc/BIT_convolve
     The external convolution matrices.

SEE ALSO

     djpeg(1), cjpeg(1), ppm(5), pnm(5)

BUGS

     Command line options are single letters.

     Unable to load two	images simultaneously  due  to	loading	 module's  re-
     entrant problems.

     Can't run bit remotely, at	least not reliably.

AUTHOR

     Copyright (c) 1993, 1994 by T.C. Zhao (zhao@monte.svec.uh.edu)
smaller bigger reset
last modified: February 20 2004.