packages icon
 NAME xart - easy to use still-image pixel-based paint program for X.

 PAGEDATE 19980404

         [ -size " WIDTH" x HEIGHT ] [ -12 ] [ -24  ]          [  -rcFile  "
 file"]          [ -popped ]         [ -nowarn ]         [ -help ]         [
 filenames "... ]

 DESCRIPTION xart is a color image editing tool which  features  most  basic
 paint  program  options,  as  well  as  image  processing  algorithms,  rgb
 reductions,  and the quill tool does mouse motion smoothing,  which  should
 be  a big advantage for freehand sketching.  xart allows for the editing of
 multiple images simultaneously and supports various formats, including PPM,
 XBM,  TIFF, JPEG, GIF etc. It is hoped that xart will be found to be highly
 self-documenting. xart is derived from XPaint.

 The functionality of xart is divided into a toolbox area for selecting  the
 current  paint  operation and canvas windows for modifying/creating images.
 There are also zoom windows, a brush shape window,  and  various  transient
 windows.  Each canvas window has access to its own color palette and set of
 patterns, although the paint operation in use is globally selected for  all

 xart runs on a variety of X displays.   It  should  be  noted  that  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).

 There is also an extensive on-line help system available, the text of which
 is appended to this manpage.

 xart has no hooks for animations, does not do channels or layers, does  not
 have  "marching ants", and there is no way to blend pixels from two images.
 xart will not  preserve  image  information  greater  than  the  current  X
 display,  since  xart  derives much of it's functionality from X itself.  I
 consider a "translucent paste" of  some  kind  to  be  xart's  most  needed
 addition. xart's other shortcomings don't bother me as much (r.h.).

 OPTIONS In addition to being able to  specify  image  files  to  open,  the
 following options are available on the command line:

  -size  "w" x h Default width and height for new images.

  -12    Use a 12 bit PseudoColor visual.

  -24    Use a 24 bit TrueColor visual.

  -rcFile  "  file"  Load    file     instead  of  the   default   RC   file
         specified   at   compile   time.  See  also  the  section  RC  FILE
         FORMAT below.

  -popped   Popup an empty canvas on startup.

  -nowarn   Do  not  emit  warnings  about  possible  data   loss   due   to
         different depth of display and image. This is a good one         to
 add to an alias.

  -help  Give a summary of the available options.

 TOOLBOX The toolbox window is displayed when xart is started.  The  toolbox
 is  used to select an operation which can then be applied to any image area
 presented (painting window, fat bits, pattern editor,  etc.).   The  window
 has  a  selection  of  painting operations (as icons) and several pull down

 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

 RC FILE FORMAT The RC file can  be  used  to  customize  the  color/pattern
 palettes.  If  a  system-wide RC file is specified with the -rcFile option,
 that file is read first; otherwise, the defaults specified at compile  time
 are  loaded.   Then, the file .XPaintrc is searched for first in the user's
 home directory and then in the current directory.  Any  settings  specified
 here  are  appended  to  the one in the system-wide RC file. Any time a new
 canvas is created, the .XPaintrc file is read again if it has changed.

 The RC file can contain any of the following entries, in any order:

  #  or  !   at the start of a line initiates a comment.           The  rest
 of the line is ignored.
  solid  "  color"    where  color  is  a  color  in  standard  X11   format
         (eg.  GoldenRod1  ,  #a2b5cd - see also  X(1))         adds a solid
 color to the palette.
  "pattern BeginData" " bitmap " EndData  where  bitmap is a          bitmap
 specification  in  XBM  or  XPM  format, adds a fill         pattern to the

 Note that there must be a newline after BeginData  ,  and  that     EndData
 must appear on a line by itself.

 pattern " filename" where filename is a file containing a bitmap in XBM  or
 XPM format, also adds a pattern to the palette.

 The squares in the palette have a default size of 12 by 12 pixels. This can
 be changed by setting the XPaint.patternsize resource to a number between 4
 and 64. ( Maybe. There's also a note on this in the DefaultRC file. r.h.)

 AUTHORS David Koblas,   I  am  interested  in  how  this
 program  is  used,  if you find any bugs, I'll fix them.  If you notice any
 rough spots, or think of some way in which it could be better, feel free to
 drop me a message. ( Koblas seems to have lost interest. Hohensee, 1998)

 Torsten Martinsen,, is to  blame  for  any  (mis)features
 added in XPaint release 2.2 and following releases.

 Many people, too numerous to mention, have contributed to  the  development
 of XPaint. See the file Doc/CHANGES in the source distribution for details.
 #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

 Rick Hohensee,  re-worked XPaint 2.5.1 into xart.


 From here down is the text file for the xart on-line help features,  as  of
 the above PAGEDATE.

 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, these 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. xart
 does do rgb reductions. xart uses the TIFF  image  format  internally,  and
 patterns and brushes are XPMs.

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

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

 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

 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

 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

 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

 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

 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

 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

 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

 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.

 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

 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

 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

 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.

 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

 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

 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

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

 #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 (, except for the PNG  code,  which  is
 written and maintained by Greg Roelofs (  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 ( #NL Extra Mile Consulting #NL PO Box  1352
 #NL Mountain View, CA 94042-1352 USA

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

 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.