#BEGIN introduction "Introduction" "$Id: Help.txt,v 1.10 1997/05/02 05:54:04 torsten Exp $"
This is the help text for xart 19980404

xart is a color image-editing tool that features many standard paint
program options and some unique features. xart is compact, versatile,
uses only standard X libraries, works well with X, and reuse
constraints are limited to simple authorship aknowledgement.  It allows
for the editing of multiple images simultaneously, pasting imported
images, and supports various formats including PPM, XBM, TIFF, jpeg,
GIF etc. 

xart is derived from Xpaint 2.5.1.

xart is mouse driven. The main window of xart is the toolbox. It
will have whatever widgets your window manager wraps it in. It consists 
of a menu bar and a field of icons. The icons in the scrollable
area are the operators. They do the painting actions. You need something
to paint ON. This is what the   canvas   item in the menu bar is for.
When you load or initiate an image, you get a canvas window in addition
to the toolbox window. I usually keep the toolbox just peeking over the
canvas window. The canvas window is where many powerful features live, 
such as various filters, pattern grab and so on.

Now that we have a canvas, we need to know how to use the various tools.
The   line   menu bar item determines the line width for the tools that
use the XDrawLine call, notably the pencil, box, oval and arc tools.
The  font  toolbox menu bar is for the text tool. It gives you a choice
of fonts that you're very likely to have, and an option to browse all the 
fonts your X server knows about. So much for the menu bar intro.

The colored icons are representative of various hand-painting operators. 
Most icons were painted in part using the very tool they represent.  These
operators/tools are the methods for correlating mouse motion to changes in
an image. That is, there are the freehand tools.Left-click ( button 1) on
a tool icon. The icon border turns black. This is now the active tool for
all open canvases.  Right-click ( button 3) on a tool icon. You usually
get a menu, which may just be the tool name and a tool-specific help
prompt, or may have several options, which may each have options also.
Make sure you try all 3 mouse buttons with the various tools, since some
useful stuff is on the 2nd and third buttons, e.g. "remove pattern". 
There are more action widgets in the canvas window, and in windows that
may pop up from them. 

The set of "things" these various actions can operate on includes 
canvases, selected "regions" within a canvas, the "clipboard" for 
cutting and pasting regions, the palette of each canvas, the current
foreground and background of each palette, and the canvas background 
color. "pattern grab" can grab from anywhere on the screen. 
xart's concept of an image is limited by the current X display.
xart doesn't do channels, layers or separations. Note that much of
this functionality is available from e.g. xv. xart does do rgb reductions.
xart uses the TIFF image format internally.

xart runs on a variety of X display types, or visuals.  Saving
images will adapt them to the current visual (e.g., a color image
loaded on a greyscale screen will be saved as a grey image).  This can
result in the loss of data; see the Possible Data Loss section for details.

#BEGIN data_loss	"Possible Data Loss"
xart uses the current X display format for storing image info while editing;
the original image information is thrown away.  This means that, in general,
there will be image degradation if the X visual mode in use has lower color
resolution than the original image. 

Also note that any ancillary information associated with the original
image (embedded comments, time stamp, copyright, etc.) will always be lost.

#BEGIN command	"Command Line Options"
xart [-popped] [-nowarn] [-size WIDTHxHEIGHT] [-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		pop up an empty canvas on startup
#NL
	-nowarn		skip data-loss warnings
#NL
	-rcFile		use FILE instead of default .XPaintrc
#NL
	<files>		image filenames to open
#NL

#BEGIN config "Configuring xart"
See the TOUR file in the source directory. Quill get's it's initial 
palette from ~/.XPaintrc and from the compiled-in palette, which 
is file DefaultRC in the source. X resources, such as menu label text,
is from the app-defaults/XPaint file, ~/.Xdefaults, and/or the XPaint.ad.in
file in the source.

#BEGIN toolbox "Toolbox"
The toolbox is used to set those options that are applicable to all
canvases opened by this instance of xart. The current tool, brush, line 
width and font are global (common to all open canvases).
#PUSH
#BEGIN tool_file "Canvas Menu"
The canvas 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, xart
#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 xart clipboard
#NL
	for pasting.  Images that 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 a canvas window for more information.

*POOF*
#NL
	Exit xart, closing all windows. There will be an "are you sure?"
	if a canvas has unsaved changes.
#BEGIN tool_line "Line Menu"
The line menu sets the value of the line width.  This value is used by all
pencil family operations, 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 most of the fonts your X knows about are 
available through the font browser. The browser may not see all of the fonts you
have installed, if they do not have canonical 13-part names. The X cursor font
is an example, but is included in the top window font menu.

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).

The xart font browser supersedes xfontsel, since xfontsel has a
dysfunctional file browser. xart even has a selection field for pasting a
canonical fontname to some other text destination.

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. Getting an arbitrary point size working is tricky, but
does work. Remember to keep the cursor over the canvas when trying to type.

#POP
#BEGIN functions "Fn menu: pixel functions"
The tool window Fn menu gives access to the X pixel functions. Pixel
functions are how two pixels are combined to form a third. The two that
are combined are a source and a destination, and the result is placed in
the destination. The default pixel function for most operations is "copy",
which simply overwrites the destination pixel with the source pixel. The
previous value of the destination pixel has no effect on the new value of
the destination pixel. Where the source is a brush and the destination is
a canvas, the copy function overwrites the canvas pixels with the brush
pixels. The XOR (Boolean eXclusive OR) function is often used for
highlighting transients, like figure outlines as they are being pulled
around. There are 16 possible functions of two bits, known as minterms.
xart gives you access to all but NOOP ( no operation, do nothing). 

xart doesn't attempt to pretend that these functions are similar to
anything in regular non-computer art. That is, xart does not try to use
functions or to present functions as emulations of something. xart merely
gives you access to them, and tells you what they do, and lets you decide
or find out what they're for. They are powerful and varied, and fun. This
desription of pixel functions touches on some rudimentry computer
concepts, but they are computing at it's simplest, so bear with me. It's
worth it. Hang in there, you don't have to get all the details. 

As of this writing exactly which tools will have pixel functions is not
set in concrete, but what functions themselves do can be documented
anyway. 

The X pixel functions perform simple logic operations on the bits in each
pixel of the source and destination. The destination is always the canvas
in xart, and the source will be the active brush, pencil line, clipboard
image, nib, etc.. The current function is performed on each pair of bits
in each pixel of the source and desination. Some functions are effected by
both the source and destination pixel, some only care about one or the
other, and some functions produce a result pixel which has nothing to do
with the source pixel or the previous destination pixel. The BLACK
function just makes all destination bits zero, which results in a black
pixel, regardless of image depth. The WHITE function is the opposite,
making all destination bits one.  Neither of these cares what the input
pixels were. 
AND, OR, XOR, and NOT are minterms most programming languages use. AND, OR
and XOR use 2 arguments for a result. The AND function gives a result of
zero unless both inputs are one. Here's an example "truth table" for
AND...
#NL
inputs
#NL 
A    B     result
#NL 
0    0     0
#NL
0    1     0
#NL
1    0     0
#NL
1    1     1 

There are 4 possible outcomes for any two bit function. There are 16
possible four-bit outcomes, which is why there are 16 minterms of two
bits. The result line of the AND function can be thought of as the binary
number 0001, which is one.  

The behavior of the AND function on pixels is to blend images into a
result image that tends toward black. Bits in the result will only be
ones if the input bits are both ones. For example, if the destination
image is all black, the AND function will have no visible result, since
the source image will AND with all zeros to all zeros. More interesting
inputs will have more interesting results.

OR is the opposite of AND. It produces a blend that tends toward white,
since it only produces a zero bit if both inputs are zero. 

XOR is exclusive OR, the result is one if the inputs are un-equal, zero
if both inputs are one and zero if both inputs are zero. XOR is
often used to toggle, or reverse, bits. XOR with one input of one will
result in the opposite of the other input. XOR is used with multi-bit
entities like pixels to toggle all the bits in one input that have a one
in the corresponding bit in the other input. One of the inputs will be
considered the "toggle mask". In the case of xart pixels, the bits of the
source image pixel will determine which bits of the canvas pixel get
reversed. A white source pixel will invert a destination pixel. A black
pixel will not change the destination pixel. 

The COPY function is the default action of most paint tools. It's not as
useful in computer logic, since all it does is overwrite the source bit to
the destination. In graphics, though, it's "paste", which is widely
useful.


All the pixel function minterms.....
#NL
input bits
#NL
0	0 	1 	1	source ( brush, nib, etc.)
#NL    
0	1 	0 	1       canvas (desintation) 
#NL    
#NL    
result bits................	default menu name:::	graphics comment
#NL    
0	0	0	0	black			
#NL 
0	0	0	1 	AND			blend toward black
#NL 
0	0	1	0	and reverse
#NL 
0	0	1	1	NORMAL COPY		result=source
#NL 
0	1	0	0	And Inverted
#NL 
0	1	0	1	NOOP (not in xart) 	result=desination
#NL 
0	1	1	0	XOR 			average?
#NL 
0	1	1	1	OR			blend toward white
#NL  
1	0	0	0       NOT OR     		invert if dark
#NL  
1	0	0	1	Equiv			one if bits equal
#NL  
1	0	1	0 	Invert			invert canvas
#NL  
1	0	1	1	OR Reverse		
#NL  
1	1	0	0	Copy Inverted		invert source
#NL  
1	1	0	1	OR Inverted		
#NL  
1	1	1	0	NAND			NOT AND
#NL  
1	1	1	1	white


POSSIBLE BUG with pixel functions
The active pixel function is written to the X "graphic context", which may
persist into other tools than you like. That is, the current pixel
function is basically global and not all tools may be able to change it. 
If xart gets stuck in a pixel function you can go back to a tool that
supports changing the function and change to what you want, probably
NORMAL COPY, do a slight action with that tool, and then change to the
other tool. 


#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.

BRUSHES......
The brush family of operations is brush, erase and smear. They use the 
current brush for the shape of thier action area. The brush tool is the 
only tool with transparency, and that is only with solid colors.

FILLS......
The fill operations all have the same area control options, as affected
by thier menus and the 'select range' facility on each canvas window.
Plain fill can fill using a pattern. 

SELECTIONS......
There are 3 types of selection, square/oval, polygon and freehand. 
They are the tool icons with Guy's face.  Both may be sub-selected to
or from color ranges in a manner similar to fills.  Other tools may not
be active when a selection is, so actions on selections are limited to
filters and movements/resizes of the selection. The 'all of all' item
in the clips menu on the canvas window selects every pixel of the
canvas.

PENCILS......
The shape drawing tools, arc, rays, dot pencil, straight, and pencil
all use the line width specification from the line menu on the tool
window. Lines are drawn using the Button 1 palette color or pattern,
and filled items such as filled ovals are filled with the active
secondary palette selection. 

OTHER......
The text, quill, dyn-pencil and spray tools is each a tool family unto
itself, with it's own unique 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 quatrer-circle by
pressing the shift key while painting. The different quadrants of the
ellipse may be obtained by dragging out the arc in various directions.

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.

Selecting the 'pull from center' option from the menu found by pressing
button three on the icon 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. 

If the 'transparent' option is selected from the menu found by pressing
button three on the icon, the selected color is blended with the color
already on the canvas. You can change the opacity of the brush using
the 'Parameters..' option. Zero percent means that the canvas is not
changed at all, while 100 percent gives the same result as using a
non-transparent brush. Transparency only works with solid colors. 

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 shape 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.

Selecting the 'all of clicked color' option from the menu found by
pressing button three on the icon will enter Change Mode. In this mode,
all pixels in the image that have the same color as the selected one
will be changed to the primary or secondary color. 

Selecting the 'all within variance' option causes xart to consider not
only pixels of the exact same color as the selected one, but also
pixels within the variance (delta) set from the color selector found
under the 'Select Range...' popup menu item.

#BEGIN tfill "Gradient Fill"
The gradient fill operation will paint an area around a selected pixel with a
range of colors obtained by mixing the primary and secondary colors.
The area is determined by matching adjacent pixel values until a variation is
found.  Diagonal pixels are not considered adjacent.

The 'Contiguous', 'All of clicked color' and 'all within variance'
options in the popup menu work the same as for the ordinary fill
operation. 

Linear, Radial, Conical or Square gradient fill can be selected by clicking
mouse button three on the Gradient Fill icon. Also, several parameters can be
adjusted using the 'Parameters' item here:

Angle
#NL
	Defines the tilting of the pattern. Valid range is
#NL
	-360 to 360 degrees.

Pad	If this value is positive, the area where one color
#NL
	blends into the other will be compressed, yielding
#NL
	a sharper transition. If negative, the transition
#NL
	will be smoother. Valid range is -49 % to 49 %.

Horizontal/Vertical offset
#NL
	Defines the center of the pattern. Valid range is
#NL
	-100 % to 100 %.
#NL
	This parameter has no effect for the Linear pattern.

Steps 
#NL
	The maximum number of colors that will be used
#NL
	for the transition from one color to the other.
#NL
	For non-TrueColor displays, it can be useful to
#NL
	limit the number of colors used to avoid running
#NL
	out of palette entries.  Very small numbers can
#NL
	also be used to get a 'blocky' effect. Valid range
#NL
	is 1 trough 300.
#BEGIN ffill "Fractal Fill"
The fractal fill operation will paint an area around a selected pixel with a
range of colors obtained by mixing the primary and secondary colors.
The area is determined by matching adjacent pixel values until a variation is
found.  Diagonal pixels are not considered adjacent.

The 'Contiguous', 'all of clicked color' and 'all within variance'
options in the popup menu work the same as for the ordinary fill
operation. 

Several different fractal patterns can be selected by clicking
mouse button three on the Fractal Fill icon.

#BEGIN quill "the quill tool"
Quill does mouse velocity emulation in near-realtime. It draws curves
between mouse location sample points very similar to what the actual
path of the mouse must have been. It has several nibs, each of which can
be truncated to several sizes. It doesn't do patterns or transparent.
Quill strokes are usually easy to fill though. Some filtering with
edge-smooth or de-speckle may be helpful.

#BEGIN smear "Smear"
The smear operation paints each pixel under the brush the average color
of all the pixels. Smearing is done by holding down the mouse button and
moving the mouse in the canvas area. 

The current brush style may be changed through the brush chooser available
on the button three menu.
#BEGIN line "Line"
The 'straight' operation paints a straight line in the primary color/pattern
between two selected points on the canvas, using the global line width.
This works nicely with the snap feature for rectilinear work, like diagrams.

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 holding 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 that
inherently define a box around the area for the oval.  Pressing shift
while moving the mouse will constrain the oval to a circle. 

Selecting the 'pull from center' option from the menu found by pressing
button three on the icon 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.

The oval tool leaves a rectangular area around the drawn oval with the
charachteristics of a selection. This may confuse you when working with
selections. 

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. The drawn line may show visible straight
line segments. The quill tool is an alternative to this tool.

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 three operations for selecting regions:  Select Box, Lasso and
Select Polygon.
"Select Box" will select a rectangular or ellipse-shaped region (holding down
shift while pressing the mouse button with constrain the region to a
square or a circle, respectively).  "Lasso" selects an arbitrary region.
"Select Polygon" selects a region bounded by straight lines.

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
See "Range Selection" for more information on choosing a range of colors
for these operations.

Operations that may be performed on selected regions include the ability
to move and resize them. Resizing may be performed by dragging the black 
squares showing the overall borders of the selection, like in xv. Holding shift
down during resizing will constrain the region to its original aspect ratio.  
Holding shift down during moving will constrain movement to horizontal or vertical.  

Note that moving a region will result in the original location being painted
in the current background color. See "Background Color..." under the Resize/zoom/dbgc
menu of the Paint Window for more information.

You can also use the cursor keys to move the region one pixel at a time (hold
down the Control key to move in larger steps). This is handy to see a complex
selection, since oblique selections do not have highlighted borders, just the 
black squares at the overall rectangular limits of the selection area.

Selections can also be loaded and saved, making the possibilities rather
limitless. See the clips/undo menu on the canvas windows.

If you're having trouble doing a color-specific selection, try a narrow
color _range_ selection.

#PUSH
#BEGIN range_select "Range Selection"
This window, which pops up when you click the "Select Color Range" button
next to the palettes, 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 that 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 within a given radius.

It is possible to change the attributes of the spray operation to
achieve the desired effect.   There are three parameters that 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.
Changing a font while inserting will not allow backspacing over text
in a previous font.
The mouse cursor must be in the canvas for typing of a font to occur.
Hitting the return key with do a "carriage return" on the image, and
backspace only works on the current line.

#POP
#POP
#BEGIN canvas "Canvas Window"
Several canvases may be opened by an instance of xart. An instance of
xart has one tool window, but has a canvas window for each active
canvas. xart may have one open brush shape window also.

Each canvas window has 3 main sections, a menu bar at the top, a
painting area for the canvas and optional zoom scope, and a palette
area. The size of the canvas window and the size of the painting area
and palette area are quite flexible, depending on your X window manager. 
The canvas window as a whole is a pane widget, and the border between
the canvas area and the palette area has a small grip widget for moving
the boundary.

The canvas window menu bar has the controls for....... 
canvas, palette and clipboard loading/saving
cut/paste of clippings
movements of selected regions
image filters such as "blur"
The red/green/blue reductions 
zoom window and image resizing
snap-to-grid paint input x-y constraint
the default background color
undo

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

xart 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 xart.

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, PNG, 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.

Revert to as-loaded...
#NL
	Reloads the last saved image. This is
#NL
	equivalent to closing without saving
#NL
	and then opening the original file.
#NL
	You are asked for confirmation. If
#NL
	the image has not been changed since
#NL
	the last save, this operation does
#NL
	nothing.

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

#BEGIN editMenu "clip Menu"
The clip menu provides for a set of operations that interact with the
current selection and the paint clipboard.  The six first items in this menu
are also accessible through button three on the painting canvas.  
The clipboard is an off-screen image that is loaded either from a selected
region via these operations or from a file.

See "Load Clipboard..." on the toolbox "Canvas" menu for more
information about loading images from a file and the "bg" menu for more
information on the background color. 

Undo
#NL
	Reverse the last performed operation.
#NL
	Multiple undos are possible; see 'Undo Levels..'
#NL
	in the 'Image' menu. Default is 4. They use memory.
#NL
	If a region is selected, and you have not moved
#NL
	or resized it, the last region operation is undone.
#NL

Redo
#NL
	Cancel the effect of the last undo.
#NL
	This must be done immediately after an undo or
#NL
	redo (before drawing anything new on the canvas).
#NL

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

Copy
#NL
	Load the originally selected region into the
#NL
	xart 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 searched
#NL
	for in the X server clipboard and then the
#NL
	internal xart clipboard.

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

copy/paste
#NL
	Perform both the copy and paste operations in one.
	

#BEGIN regionMenu "Move Menu"
The  move menu  provides operations that 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 select all item is now here. It does not honor the color
range parameter for selection, and is therefor re-named all-all.
Note:  The 'undo' operation found under the Edit menu does not work
on these operations!

Flip Horizontal
#NL
	Flip the current region horizontally.

Flip vertical
#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 selection.
#NL
	Pressing the Shift button while doing this
#NL
	constrains the rotation to multiples of
#NL
	15 degrees.

Crop to region...
#NL
	Discard all portions of the image outside the region.
#NL
	This operation cannot be undone; therefore, you are
#NL
	required to confirm it.

Tilt ...........
tilt is an add-in, along with fractal fill. I haven't figured out how to
use it yet ;o)  (r.h.)

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 filterMenu  "Filters Menu"
The filters menu provides a set of image processing operations
that 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. 

Repeat prev.
#NL
	This applies the last filter you used again, without
#NL
	querying for any parameters.

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.

blur
#NL
	Attempts to blend the colors of the region
#NL
	by averaging the pixel's color values with
#NL
	those of its neighbors.

Edge Smooth
#NL
	Similar to blur, but avoids smearing edges
#NL
	by applying a more sophisticated algorithm.
#NL
	The effect is less pronounced than for blur.

Despeckle...
	Tries to remove scanning artifacts etc. by replacing 
	each pixel by the median of the pixels inside the
	n x n mask centered around that pixel. You are
	queried for the mask size; this must be odd and
	larger than 1.

Edge Detect
	Performs an image processing edge
	detection. A gaudy effect.

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

Oil paint...
#NL
	Does an effect similar to a paint-by-numbers painting.
#NL
	You are queried for the mask size, which must
#NL
	be an odd integer. Recommended values range
#NL
	from 3 to 15. Higher values result in a more
#NL
	pronounced effect.

Add Noise...
#NL
	Modify the color of each pixel randomly.
#NL
	You are queried for the maximum
#NL
	noise value. Recommended values range from 
#NL
	5 to 50. Higher values result in a more
#NL
	pronounced effect. 255 is total randomness.

Spread...
#NL
	This operation swaps each pixel in the region with
#NL
	a random pixel near it, giving an effect similar to
#NL
	frosted glass. You are queried for the maximum
#NL
	distance. Good values range from 1 to 10.
#NL
	You can also specify how many iterations you want
#NL
	performed. This is equivalent to manually selecting
#NL
	the operation that many times.

Pixelize...
#NL
	Makes the image look low resolution. This works by
#NL
	replacing each 'megapixel' with the average color 
#NL
	within that region. You are queried for the megapixel
#NL
	size; this can be specified as square (e.g., '5') or 
#NL
	rectangular (e.g., '2x4'). 

Blend
#NL
	This operation colors each pixel in the region
#NL
	with a weighted average of the center color and
#NL
	the color on the edge that intersects a line drawn
#NL
	from the center to the pixel in question.
#NL
	The result is to 'blend the region out of existence'. This
	seems geared to small regions, or very wild effects. It seems to
	find the edges or rectangles OK, but not e.g. ovals.

Solarize...
#NL
	Inverts pixels with a value larger than the 
#NL
	specified threshold. This simulates what happens
#NL
	to a photographic film that is exposed to light
#NL
	during development. Works best for greyscale
#NL
	images. You are queried for the threshold (1-99 %).

Contrast
#NL
	Normalizes the contrast by forcing the lightest pixels
#NL
	to white, the darkest pixels to black, and linearly
#NL
	rescaling the ones in between.
#NL
	You are queried for Black and White levels in %.
#NL
	Pixels darker than the Black level will become black,
#NL
	and pixels brighter than the White level will become
#NL
	white. The pixels in between will be rescaled linearly.
#NL
	'100 %' refers to the brightest pixel in the image.

Quantize Colors...
#NL
	Reduces the number of colors in the image. The
#NL
	algorithm selects the set of colors that gives
#NL
	the best result and then replaces the original
#NL
	colors with the best match in the new color set.
#NL
	You can choose the number of colors to use,
#NL
	from 2 to 256.

Turn into Greyscale
#NL
	Converts all colors in the image to greyscale.

Abuser
is a clone of "sharpen", with some junk in the convolve matrix. It is
provided if you want to play with the sourcecode without messing up the
legit filters or having to write the menu hooks. In the source directory, just
goof up the matrix in iprocess.c, make, and see what you get. Other filters
have convolve matrices and so are examples.

#BEGIN rgb "red/green/blue reductions"
The red, green, or blue components of a selected area can be reduced by 
3, 50 or 100 percent via this menu. Yes, white with no red is turquoise
(cyan, actually). By the same token, these have no effect on black pixels.
A "boost" option for these is a "TO DO". Go for it.

#BEGIN imageMenu  "size Menu"
Items in the size menu change the dimensions of the canvas, and change
how the canvas is displayed. 

Scope
#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. A small scope border can be dragged around the
        canvas, and an enlarged window of the scope area is
        displayed.

Black 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. This is great for schematics, diagrams and such.
	It causes some other funny effects, like sinusoids with the quill
	tool, brushes being centered on the grid points, etc..
	
Snap Spacing...
#NL
	Sets the distance between points on the
#NL
	invisible snap grid.

Change Background color...
#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 affects
#NL
	the actual image size.

Undo Levels ( now in the UN menu)...
#NL
	Changes the number of consecutive changes
#NL
	that can be undone or redone. Note that each
#NL
	undo level uses as much memory as the image
#NL
	itself, so large numbers can use up a lot of
#NL
	memory.

Autocrop...
#NL
	Changes the size of the current canvas by
#NL
	cutting away any borders. The border color
#NL
	is defined as the color common to at least
#NL
	two corners. If no two corners have the same
#NL
	color, nothing is done.
#NL
	This operation is not reversible and 
#NL
	affects the actual image size.
#NL

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. There is only zoom "in".
	Scope might be better.
	
#BEGIN patBox   "Palette Area"
There are 4 command buttons and a palette below the painting area. 
Commands allow picking a color or pattern from anywhere on the screen,
and for modifying the color range of fills and selections. The palette
has pots of colors and patterns. Solid color pots have colored borders. 
All pots are a button and a side button, which select the pot for button
1 and/or button 3, and for the interiors of filled shapes, such as the
filled oval tool. 

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 "pick from screen"
button.  This button allows the user to select any color visible
on the X screen and will either locate it in the current palette or
add it.   Once the color is found in the palette, it is selected.
If the color is already in the palette no new pot is created. This will
happen a lot at low bitplane depths.

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. It is a paint window unto itself.
The only way to select the painting color in this window is with
the "pick" widget, but all the painting tools are available.

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

Patterns are by default 24x24 pixels in size, but may be set to
any size up to 128x128 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. xart provides
several default patterns of size 1xN or Nx1, which gives vertical
or horizontal colorbars without using a huge amount of data. 

Patterns may be individually saved through the "Save As" option in
the "load/save" menu of the pattern edit window, or saved with the 
palette. The pattern edit window is reached by right-clicking on a
pattern. See "Save Palette..." under the Paint Window.  When loading 
an individual pattern, only the portion of the pattern that 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 that share this colormap index.

The "pick from screen" 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 xart 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 "pick" 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"
xart 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 xart.  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).  See the Possible Data Loss section for more
details.

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		yes		24-bit		no
#NL
PNG		yes		yes		8, 24-bit		yes
#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		8, 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
	A popular image format used across a variety
#NL
	of platforms, including PCs.

JPEG - Joint Photographic Experts Group Format
#NL
	A standardized, lossy format for storing
#NL
	compressed color and greyscale images
#NL
	of natural scenes.

PNG - Portable Network Graphics Format
#NL
	A new format designed to replace GIF and,
#NL
	to some extent, TIFF.  It has a better
#NL
	compression engine than either GIF or TIFF
#NL
	and is a lossless format (unlike JPEG).

PPM - Portable PixMap Format
#NL
	Image format provided by the PBMPlus/NetPBM
#NL
	toolkit that allows for converting to a wide variety
#NL
	of other formats.

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

SGI - Silicon Graphics, Inc., Format
#NL
	An SGI-specific image format, supported by the
#NL
	libraries on SGI machines.  This format is not
#NL
	available on other platforms.

TIFF - Tagged Image File Format
#NL
	A large, complex image format used by xart
#NL
	as its default format.

XBM - X Window BitMap
#NL
	A black and white image format used by the
#NL
	X Window System.

XPM - X Window PixMap
#NL
	XPM images are stored in an ASCII text
#NL
	format that can be included in C as arrays 
	in the sourcecode.

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

#BEGIN gotcha's   "gotcha's, bugs, klank and tips"
The more powerful features sometimes have more prerequisites to work. 
Some tools have option variations that will do nothing, particularly as
pertains to patterns and solids, e.g. transparent brush must be a
solid. A tool that does not support patterns will paint in the last
solid selected when a pattern is selected. Make sure you try all buttons
on all widgets. jpegs use a "lossy" compression scheme and GIFs are
8-bit. Undo and certain selection/filter combinations don't always
refresh correctly.  Drag some other window across the canvas to force it
to update if you think that's the case. The oval tool leaves a rectangular
region around the oval that acts like a selection until it is 
changed. 
Pattern editing is buggy, but works. You have to select a pot or two
before using   add/edit pattern or you'll crash. In the pattern
editing window you have to   pick   a color  before editing the
pattern image or the changes won't save.


#BEGIN about		"Whence xart"
xart is derived from XPaint 2.5.1.
#NL
#NL
NOTE: This (beta) version of XPaint is released and maintained by Torsten
Martinsen (torsten@danbbs.dk), except for the PNG code, which is
written and maintained by Greg Roelofs (newt@uchicago.edu).  It is
based on XPaint 2.1.1, which was written by David Koblas.  Please do NOT
send bug reports, etc., to David Koblas.

The message below is the original 'About' message from version 2.1.1.

               ----------------------------

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

Copyright (C) 1995, 1996, Torsten Martinsen
#NL
Copyright (C) 1996, Greg Roelofs
#NL
xart is no longer XPaint. Martensen doesn't have time to go over all
the changes in xart, and I believe he's also involved with the GIMP, so
xart will be released as a separate thing.  In my opinion, ( Hohensee)
xart completely supercedes XPaint. xart lacks XPaint's revert menu
item, because revert seems to have broken some palette editing
features, and revert functionality is easily available by reloading the
canvas. xart is a bit larger than XPaint, mostly due to additional
default patterns and brushes. Otherwise, nothing has been lost and much
has been added, including bugs.

quillOp.c is Copyright 1998 Richard Allen Hohensee, and is    
released under ( what I believe are) Koblas' original release terms,
which see below. 

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 are no representations about the
suitability of this software for any purpose.  This software is
provided "as is" without express or implied warranty.
