#BEGIN introduction "Introduction"
Welcome to the latest version of XPaint.

XPaint is a color image editing tool which features most standard paint
program options.
It allows for the editing of multiple images simultaneously and supports
various formats, including PPM, XBM, TIFF, etc.

The functionality of XPaint is divided into a toolbox area for selecting
the current paint operation and paint windows for modifying/creating
images.  Each paint window has access to its own color palette and set
of patterns, although the paint operation in use is globally selected
for all windows.

XPaint runs on a variety of displays.  Saving
images will adapt them to the current display type (i.e. a color image 
loaded on a greyscale screen will be saved as a grey image).

More information is available under the specific topics.  Enjoy!

#BEGIN command	"Command Line Options"
xpaint	[-popped][-size WIDTHxHEIGTH][-rcFile FILE][-12][-24][<files>...]
#NL
	-size	default width and height for new images
#NL
	-12		use a 12 bit PseudoColor visual
#NL
	-24		use a 24 bit TrueColor visual
#NL
	-popped		popup an empty canvas on startup
#NL
	-rcFile		use file instead of default .XPaintrc		
#NL
	<files>	image filenames to open
#NL
#BEGIN toolbox "Toolbox"
The toolbox is used to set those options which are applicable to all
XPaint canvases.
#PUSH
#BEGIN tool_file "File Menu"
The file menu is used to create a new canvas or load an image from a file.

New Canvas
#NL
	Create a new blank canvas (default size:
#NL
	640x480).  See "Command Line Options" for
#NL
	changing the default size.

New with Size...
#NL
	Create a new canvas with the specified
#NL
	dimensions.

Open...
#NL
	Open an image file for painting.  Images can
#NL
	be opened in a variety of formats.  If none
#NL
	of the specific formats is selected, XPaint
#NL
	will attempt to perform a "Best Guess" as to
#NL
	the image format.  Unknown formats will result
#NL
	in an error message.

Load Clipboard...
#NL
	Open an image file into the XPaint clipboard
#NL
	for pasting.  Images which have been saved in
#NL
	a format supporting odd-shaped regions will be
#NL
	loaded as they were selected, otherwise all
#NL
	images are rectangular.  See "Paste" and
#NL
	"Save Region..." under the Edit and File menus
#NL
	of the Painting Window for more information.

Quit
#NL
	Exit XPaint, closing all windows.
#BEGIN tool_line "Line Menu"
The line menu sets the value of the line width.  This value is used by all
operations which paint any type of line, including the borders of boxes,
ovals and polygons.
#BEGIN tool_font "Font Menu"
This menu selects the current font to use for the text operation.  There are
a few specific fonts choices listed, but all fonts are available through
the font browser.

Note:  Changing a font while inserting will not allow backspacing over text
in a previous font.

See "Font Browser" for more information on its use.
#PUSH
#BEGIN font_browser "Font Browser"
The font browser is designed to allow any available font to be used for
painting with the text operation.  A font is selected by choosing an item
from each of the given lists until the font is displayed in the "selection"
area.  As items are selected, all lists will adjust to reflect existing
fonts with the selected characteristics.  Clicking in the blank area
of a item list will reset that list to all available options (i.e. unselect
the current one).

If the X server supports variable sized fonts, the point size list will
contain a "0" entry, which will use the value specified in the
"Point Size" field.

#POP
#BEGIN tools "Painting Tools"
The painting tool icons set the current painting operation for all canvases.

Operations are selected with mouse button one.  Pressing mouse button three
while over any of the icons will bring up a menu of options available for
that tool.  Some icons also allow double-clicking as a faster method of
bringing up style options.

See the specific paint operation for more information.
#PUSH
#BEGIN arc "Arc"
The arc operation paints an arc between two selected points in the primary
color/pattern, using the current line width.  Arcs are generally a
quarter of an ellipse, but may be restricted to a circular shape by
pressing the shift key while painting.

See "Line Menu" under the toolbox for more information about line width.
#BEGIN box "Boxes"
The box operations paint either rectangles or squares using the current line
width. Pressing shift while moving the mouse after selecting the first point
will constrain the box to a square.

Squares can also be painted by selecting the 'center' option from the menu
found by pressing button three on the icon.  This will define the first point
as the center of the square with the second point being on the perimeter.

Filled boxes are painted in the primary color/pattern and filled
with the secondary color/pattern for the canvas.

See "Line Menu" under the toolbox for more information about line width.
#BEGIN brush "Brush"
The brush operation uses the current brush to paint on the canvas(es).
Painting is accomplished by holding down the mouse button and
moving the mouse in the canvas area.  Button one paints in the selected primary
color/pattern, while button two uses the secondary one.

The current brush style may be changed through the brush chooser available
on the button three menu for either the brush or erase operation icons.
#BEGIN cline "Connected Line"
The connected line operation paints a series of straight lines connected at
selected vertices.  Each new vertex is selected using the first mouse button.
The second mouse button ends this operation, without forming a new vertex.

All painting is done in the primary color/pattern using the currently defined
line width.

See "Line Menu" under the toolbox for more information about line width.
#BEGIN dotPencil "Dot Pencil"
The dot pencil operation paints a series of dots on the canvas, following the
cursor while the mouse button is pressed.

Button one paints in the primary color/pattern, button two the secondary
color/pattern.

See "Pencil" for painting connected lines.
#BEGIN erase "Erase"
The erase operation is designed to either erase a section of the painting to
the set background color for the canvas or to revert the erased area to
the originally loaded image.  (Note:  This is not the last saved image!)

The eraser is the style of the current brush, and the brush selection
window is accessible through the menu found by clicking mouse button
three on either the erase or brush icons.

See help on the "Brush" or on "Change Background..." under the Image menu of
the Painting Window for more information.
#BEGIN fill "Fill"
The fill operation will paint an area around a selected pixel the current
primary or secondary color/pattern (based on which mouse button used).  The
area is determined by matching adjacent pixel values until a variation is
found.  Diagonal pixels are not considered adjacent.
#BEGIN line "Line"
The line operation paints a straight line in the primary color/pattern
between two selected points on the canvas, using the global line width.

See "Line Menu" under the toolbox for more information about line width.

Lines may also be restricted to increments of 45 degrees (i.e.
horizontal, vertical, or diagonal) by pressing down the shift key while
painting.
#BEGIN oval "Ovals"
The oval operations paint either circles or ovals using the current line width.
Ovals/circles are painted by selecting two points which inherently define
a box around the area for the oval.  Pressing shift while moving the mouse will
constrain the oval to a circle.

Circles can also be painted by selecting the 'center' option from the menu
found by pressing button three on the icon.  This will define the first point
as the center of the circle with the second point being the radius.

Filled ovals and circles are painted in the primary color/pattern and filled
with the secondary color/pattern for the canvas.

See "Line Menu" under the toolbox for more information about line width.
#BEGIN pencil "Pencil"
The pencil operation paints a connected line on the canvas, following the
cursor while the mouse button is pressed.  The global line width is used
to determine the width of this line.

Button one paints in the primary color/pattern, button two the secondary
color/pattern.

See "Line Menu" under the toolbox for more information about line width.
#BEGIN poly "Polygons"
Polygon operations paint polygons as defined by a series of straight lines
between selected vertices.  Each new vertex is selected using the first mouse
button.  Ending this operation (done through pressing the second mouse
button) does not create a new vertex and results in the last created
vertex being joined to the first.

All painting is done in the primary color/pattern using the currently defined
line width.  Filled polygons are filled in the secondary color/pattern.

See "Line Menu" under the toolbox for more information about line width.
#BEGIN ray "Ray"
The ray operation paints rays from the first selected point to all
subsequent points in the primary color/pattern.  Button two ends this
operation without selecting a new ray point.  Rays may also be restricted
to slopes based on a 45 degree increment (i.e. horizontal, vertical,
or diagonals) by pressing the shift key while painting.

The width of the rays is determined by the global value for the line
width, set via the "Line" menu.

See "Line Menu" under the toolbox for more information about line width.
#BEGIN select "Select Regions"
There are two operations for selecting regions:  Select Box and Select Area.
"Select Box" will select a rectangular or square region (holding down
shift while pressing the mouse button with constrain the region to a
square).  "Select Area" selects an arbitrary region.  The three possible
modes used by these operations are set by the options on the button three
menu for either icon:

All Colors 	        Select the entire region.
#NL
Omit Color Range	Select the region, excluding the
#NL
				specified range of colors.
#NL
Only Color Range	Select only the specified color range
#NL
				in the region.
#NL
Select Range...		Brings up a window to select the
#NL
				range of colors for these operations.

See "Range Selection" for more information on choosing a range of colors
for these operations.

Operations which may be performed on selected regions include the ability
to move and resize them.  Holding shift down during resizing will constrain
the region to its original aspect ratio.  Note that moving a region will
result in the original location being painted in the current background
color.

See "Background Color..." under the Image menu of the Paint Window for
more information.
#PUSH
#BEGIN range_select "Range Selection"
This window is designed for selecting a range of colors for use with
the select region operations.  The color range is determined by setting a
base color and the amount of variance in each of the RGB values around
this color.  Colors are considered in this range if they match a value based
on the base color +/- the given variance.   Default base color is white.

The "Pixel Delta" button allows the user to choose another color which will
be used to calculate the variance from the base color.

More information on colors and the use of the color wheel may be found
under the "Pattern Editor on the "Painting Window".
#POP
#BEGIN blob "Shape"
Shape operations allow the user to draw closed objects with a 
pencil-like operation.  When the mouse button is released, the last drawn 
point is connected to the starting point. 

Painting can either be done in the primary color/pattern with button one or
in the secondary color/pattern with button two.  Filled shapes are filled in
the other palette color/pattern.  Border width is determined by the current
setting for line width.

See "Line Menu" under the toolbox for more information about line width.
#BEGIN spray "Spray"
The spray operation is designed to emulate a spray can.  It will paint
a random set of dots withing a given radius.

It is possible to change the attributes of the spray operation to
achieve the desired effect.   There are three parameters which will
modify the configuration of the spray tool:
#NL
	radius	how large of a circle to fill
#NL
	density	number of dots in the given area
#NL
	rate		speed to fill the area in tenths of a second

Additionally, it is possible to change the distribution of the dots to
be either even or gaussian (usually only noticeable at large radii).
These options are found in the menu brought up by clicking button three
on the spray icon.

As with many other operations, the spray operation can make use of either
the primary or secondary color/pattern based on which button (one or two,
respectively) is held down while painting on the canvas.
#BEGIN text "Text"
The text operation allows for typing in the currently selected font.
Pressing mouse button two in the canvas area while inserting text
will paste text from the X clipboard at the current insertion point.

See the "Font Menu" for information on changing the selected font.

Note:  Changing a font while inserting will not allow backspacing over text
in a previous font.
#POP
#POP
#BEGIN canvas "Painting Window"
The painting window holds a canvas area for painting the displayed image,
menus for performing operations on this image, and primary and secondary
color/pattern palettes along with buttons for adding to these.

Painting on the image is accomplished by selecting a operation from
the global toolbox and applying it in the canvas area.  See help on the
specific paint operation for its use.

#PUSH
#BEGIN fileMenu "File Menu"
The file menu on the painting window is for saving information associated
with the image displayed on the current paint canvas. 

XPaint runs on a variety of displays.  Saving
images will adapt them to the current display type (i.e. a color image 
loaded on a greyscale screen will be saved as a grey image).

See "Image Formats" for a description of the image formats usable
by XPaint.

Save
#NL
	Save the current image with the original
#NL
	filename and format.  If this is a new
#NL
	image, perform the "Save As" operation.

Save As
#NL
	Save the current image with the specified
#NL
	filename and format (default is TIFF).

Save Region...
#NL
	Save the selected region, in the original
#NL
	form that it was selected (width, height and
#NL
	rotation).  Odd-shaped regions will be saved
#NL
	as rectangles filled with the background
#NL
	color.  If the output format supports image
#NL
	masks (e.g. TIFF, XPM), then this
#NL
	information will also be saved.  See "Load
#NL
	Clipboard..." under the toolbox file menu
#NL
	for more information about odd-shaped
#NL
	images.

Save Palette...
#NL
	Save the current palette. See "Palette
#NL
	Area" for more information on how
#NL
	patterns are loaded.

Close
#NL
	Close the current painting window, saving
#NL
	the image if desired.

#BEGIN editMenu "Edit Menu"
The edit menu provides for a set of operations which interact with the
current selection and the paint clipboard.  This menu is also accessible
through button three on the painting canvas.  The clipboard is an off-screen
image which is loaded either from a selected region via these operations
or from a file.

See "Load Clipboard..." on the toolbox "File Menu" for more information
about loading images from a file and "Change Background..." under the
"Image Menu" for more information on the background color.

Undo
#NL
	Reverse the last performed operation (with
#NL
	the exception of the region operations).

Cut
#NL
	Load the originally selected region into
#NL
	both the XPaint and X server clipboards and
#NL
	change the area on the screen to the
#NL
	background color.

Copy
#NL
	Load the originally selected region into the
#NL
	XPaint and X server clipboards.

Paste
#NL
	Place the image in the clipboard onto the
#NL
	canvas at the last position where button one
#NL
	or two was pressed.  Images are first
#NL
	searched for in the X server clipboard and
#NL
	then the internal XPaint clipboard.

Clear
#NL
	Remove the current selection from the paint	
#NL
	canvas.

Duplicate
#NL
	Perform both the copy and paste operations in one.
	
Select All
#NL
	Select the entire image on the canvas.
#NL
	(Note:  This does not use the color range
#NL
	options which the select area operators from
#NL
	the toolbox do!)
	

#BEGIN regionMenu "Region Menu"
This menu provides operations which can be applied to the currently
selected region.  See the "Select Regions" item under the toolbox
Painting tools for information on how to select regions.

Note:  The 'undo' operation found under the Edit menu does not work
on these operations!

Flip X Axis
#NL
	Flip the current region horizontally.

Flip Y Axis
#NL
	Flip the current region vertically.

Rotate By
#NL
Rotate...
#NL
	Both of these operations allow for rotating
#NL
	the current image by a specified number of
#NL
	degrees.  Rotation may also be done
#NL
	by pressing button two on the
#NL
	selection.

Invert
#NL
	Inverts the colors of the selected region
#NL
	(e.g. black to white).

Sharpen
#NL
	Applies an image processing algorithm in an
#NL
	attempt to increase the detail on the
#NL
	selected region.  This operation is not
#NL
	reversible.

Smooth
#NL
	Attempts to blend the colors of the region
#NL
	by averaging the pixel's color values with
#NL
	those of its neighbors.  This operation is
#NL
	not reversible.

Edge Detect
#NL
	Performs an image processing edge
#NL
	detection.  Not reversible and ugly.

Emboss
#NL
	Converts the selected region to a grey image
#NL
	which is highlighted such that the details
#NL
	appear to stand out from the screen.

Reset
#NL
	Return the current image to its original
#NL
	size and orientation.  Note:  None of the
#NL
	image processing operations will be undone.
	
#BEGIN imageMenu  "Image Menu"
The image menu provides a set of operations which are applied to
the current image/paint canvas. 

Fat Bits
#NL
	Brings up the Fat Bits editor which allows
#NL
	for editing an enlarged area of the current
#NL
	image without having to enlarge the entire
#NL
	image.

Visible Grid
#NL
	Turns on and off a visible black grid
#NL
	between the original pixels on images with a
#NL
	scale greater than 1 (i.e. zoomed).  This
#NL
	grid is only for painting purposes.  It does
#NL
	not affect the actual image.

Snap
#NL
	Turns on/off restriction of the current x
#NL
	and y position for most operations to an
#NL
	invisible grid.

Snap Spacing...
#NL
	Sets the distance between points on the
#NL
	invisible snap grid.

Change Background...
#NL
	This operation changes the background color
#NL
	for the current image (default color is
#NL
	white).  This is only used when a region is
#NL
	erased or cut from the current image and
#NL
	when odd-shaped regions are saved. See
#NL
	"Color Wheel" under the "Pattern Editor" for
#NL
	more information on selecting a color.

Change Size...
#NL
	Changes the size of the current canvas by
#NL
	cutting away or adding area on the right and
#NL
	lower sides.  This operation is not
#NL
	reversible and affects the actual image
#NL
	size.

Change Zoom...
#NL
	Enlarges the working image by the specified
#NL
	scale.  This does not affect the size of the
#NL
	image for saving, etc.
	
#BEGIN patBox   "Palette Area"
There are two palette areas found on the painting window to
select the primary and secondary colors or patterns. These two
selections are accessible by many of the painting tools through
use of either mouse button one or button two, respectively.   See the
specific tool for more information.  All filled objects (i.e. boxes,
ovals, and polygons) are always filled in the secondary color/pattern,
with a border of the primary color/pattern.

Colors or patterns may be modified by double-clicking on the icon.
On a colormapped display (i.e. using less than 24-bit colors), changes
to a selected color will change that color in all locations on the
paint canvas as well.  Color selection is done through a color
wheel similar to that used under the "Pattern Editor".  See help on
the "Pattern Editor" for more details as well as for information
on editing patterns.

Colors and patterns are loaded from information merged
from the following files each time a canvas is created:
#NL
	.XPaintrc in the user's home directory
#NL
	.XPaintrc in the current directory

A quick method for adding a new color is found by using the "Lookup"
button.  This button allows the user to select any color available
on the screen and will either locate it in the current palette or
add it.   Once the color is found in the palette, it is selected.

Note:  Color/pattern changes affect both primary and secondary palettes.

All of the patterns and colors can be saved with the "Save Palette..."
item in the file menu.
#PUSH
#BEGIN pattern "Pattern Editor"
The pattern editor creates new patterns or modifies existing ones
for use on the painting canvas.

The window contains the current pattern and (depending on display
type) the current colormap and a color selection area.

Patterns are by default 24x24 in size, but may be set to any size
through the "Size" menu.  The other menus available provide
similar functionality to those in the paint window and pattern
editing uses the normal paint operations.

Patterns may be individually saved through the "Save As" option in
the "File" menu or saved with the palette.  See "Save Palette..."
under the Paint Window.  When loading an individual pattern, only
the portion of the pattern which fits in the pattern area will be
included.

The "Grab" button allows the user to select a portion of the current
screen to fill the pattern area. 
#PUSH
#BEGIN colormap "Colormap Area"
When using a colormapped display, selecting a colormap entry will
allow the user to change the value of that entry.  This will change
all pixels on the canvas which share this colormap index.

The "Lookup" button allows the user to select any color available on
the screen and will locate the colormap entry for this color value.

Note:  Manipulating colormap entries effects the canvas immediately
and does not revert when "Cancel" is chosen.

#BEGIN colorwheel "Color Wheel"
The XPaint color selection allows access to both the HSV or RGB color
space models.  The color wheel along with the value
slider represents HSV, while the red, green, and blue sliders are for
manipulating the color in an RGB space.  Modifications in either of
these color spaces will effect the other.

Colors can be selected on the color wheel by using the mouse to drag
the selection circle or to click on a desired color.   Changes
to value will determine the brightness of the chosen color.  Colors
can also be modified through the red, green, or blue sliders or by
entering values in the text fields.

The "Match" button will set the current color by allowing the user to
select any color on the screen.  The exact color will be determined
using the colormap of the selected window.
#POP
#POP
#POP
#BEGIN fileformat	"Image Formats"
XPaint can support a variety of image file formats, based on
library availability at compile time.  Some of these formats may not
be accessible in the current running version.

The table below provides a short summary of the features of each image
format and support provided by XPaint.  Note that not all formats are
supported for both read and write operations.

Color depth is given in terms of the number of bits used to store the
colors in the image.  This means that a color depth of 1-bit can only
store black/white images, while 24-bit color formats can store images
containing up to 2**24 (or approx. 16 million) colors.  Regardless of
the image format, saved images always reflect the ability of current 
display type (i.e. a color image loaded on a greyscale screen will be 
saved as a grey image).

The image mask feature of an image format provides the ability to
save/load odd-shaped regions (i.e. regions are not required to be 
rectangular and may have "holes" in them).   See "Save Region" and 
"Load Clipboard..." for more information.

Detailed information about each format is at the end of this section.

						Color		Image
#NL
		Read	Write	depth		mask
#NL
GIF		yes		yes		8-bit			no
#NL
JPEG	yes		no		24-bit		no
#NL
PPM		yes		yes		24-bit		no
#NL
PS		no		yes		24-bit		no
#NL
SGI		yes		yes		24-bit		no
#NL
TIFF		yes		yes		24-bit		yes
#NL
XBM		yes		yes		1-bit			no
#NL
XPM		yes		yes		8-bit			yes
#NL
XWD	yes		yes		24-bit		no

GIF - Graphics Interchange Format
#NL
	Popular image format used across a variety
#NL
	of platforms, including PCs.

JPEG - JPEG Format
#NL
	A standardized format for storing compressed
#NL
	color and greyscale images.

PPM - Portable PixMap Format
#NL
	Image format provided by the PBMplus toolkit
#NL
	which allows for converting to a wide
#NL
	variety of formats.

PS - PostScript Format
#NL
	PostScript images are normally used by most
#NL
	printers and text processing packages.

SGI - Silicon Graphics Image Format
#NL
	This is a Silicon Graphics (SGI) specific
#NL
	image format, supported by the libraries on
#NL
	SGI machines.  It is not accessible on other
#NL
	platforms.

TIFF - Tag Image File Format
#NL
	Default image format used by XPaint.  

XBM - X Window BitMap
#NL
	This is a black and white image format which
#NL
	is used by X windows system.

XPM - X Window PixMap
#NL
	XPM images are stored in an ASCII text
#NL
	format which can be included in programs.

XWD - X Window Dump
#NL
	Used for screen dumps by the X window
#NL
	system.

#BEGIN about		"About XPaint"
Hopefully, you find this software useful. If you find any bugs or have
any comments, feel free to contact me.

This software is created as DonateWare. If you enjoy using XPaint,
it would be appreciated if you would make a donation to the
author in the form of cookies, money, employment, or whatever.

If you or your firm is looking to hire a skilled consultant, contact
me for more details.

David Koblas (koblas@netcom.com)
#NL
Extra Mile Consulting
#NL
PO Box 1352
#NL
Mountain View, CA 94042-1352 USA

#BEGIN copyright	"Copyright Information"
Copyright (C) 1993, David Koblas

Permission to use, copy, modify, and to distribute this software and
its documentation for any purpose is hereby granted without fee,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation.  There is no representations about the
suitability of this software for any purpose.  This software is
provided "as is" without express or implied warranty.
