home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / graphics / process_1 / !Process / !Guide < prev    next >
Text File  |  1993-09-03  |  44KB  |  1,113 lines

  1.  
  2.                                    !Process
  3.                           ===========================
  4.                           256 colour image processing
  5.                                       by
  6.                           Henrik Bjerregaard Pedersen
  7.  
  8.  
  9.    About !Process
  10.   ================
  11.    !Process is a 256-colour image processing/manipulation program.
  12.    It enables you to manipulate 256-colour sprites in a variety of ways,
  13.  including noise-removal, sharpening, smoothening, inverting, colour
  14.  separation, conversion to black/white or greytones, edge-detection and more.
  15.    Besides that, !Process also includes some of the features found in !Paint or
  16.  other basic drawing packages.
  17.  
  18.    The following is only a brief summary of the features of !Process. The
  19.  number of ways you can distort/alter/manipulate an image are endless, and
  20.  would therefor require a RATHER large !Help-file to describe in details.
  21.    The best (and most amusing) way to discover the possibilities in (and the
  22.  limits of) !Process, is to load an image and simply try the different
  23.  operations one by one. However, I strongly recommend that you read this file,
  24.  otherwise you may have trouble with some of the features.
  25.  
  26.    Problems
  27.   ==========
  28.    Whenever possible, you should ensure that the images you load into Process
  29.  are created without mask, and that the spritefile contains only one sprite.
  30.  
  31.    Glossary
  32.   ==========
  33.    Source image      ... the image from which pixels/information is READ.
  34.    Destination image ... the image to which pixels/information is WRITTEN.
  35.    Colour component  ... a value in the range 0-255, describing the amount of
  36.                          either RED, GREEN or BLUE. 0 is nothing, 255 is full.
  37.    Kernel            ... a 3x3 matrix which is multiplied with the colour
  38.                          components of a center pixel and its 8 neighbours.
  39.                          The average of the 9 elements of the kernel is
  40.                          calculated, and this becomes the colour of the center
  41.                          pixel.
  42.    Image viewer      ... any of the (from two to nine) image windows.
  43.  
  44.    Starting
  45.   ==========
  46.    Double click on the !Process-icon, and the program installs itself on the
  47.  iconbar.
  48.    !Process will claim approx. 224k as long as no image is loaded. After
  49.  loading an image, the wimpslot will be increased with at least twice the size
  50.  of the spritefile.
  51.  
  52.    Stopping
  53.   ==========
  54.    Select the option Quit from the iconbar menu.
  55.    If you end up in an endless loop of error messages, you can in most cases
  56.   exit the program by pressing DELETE while clicking on the OK icon in the
  57.   error box.
  58.  
  59.    Loading
  60.   =========
  61.    Drag as spritefile containing a 256 colour sprite as the first sprite to the
  62.  iconbar icon, and it will be loaded and will appear in a window.
  63.    Click MENU when the mouse is inside this window, and the main menu appears.
  64.    Process will also load AIM files, Clear files (in 256 greytones), Clear
  65.  files in 24bpp and sprites with a greyscaled 256 entries palette. 24bpp Clear
  66.  files are loaded as 3 8bpp files.
  67.    If the sprite holds a palette (other than greyscaled) this will be used.
  68.  You can force Process to ignore the palette by holding down Ctrl while
  69.  loading the spritefile.
  70.    After applying a filter/effect the processed image will appear in another
  71.  window. If you drag a spritefile to either of these windows, !Process will
  72.  attempt to load the file. If the file has the exact same size as the already
  73.  loaded file, it will simply overwrite the image in the window to which you
  74.  load it, otherwise it will be loaded as given in the submenu
  75.  Miscellaneous.Import sprite.
  76.  
  77.    Palette
  78.   =========
  79.    Usually Process wil ignore the palette of the sprite you load, but if the
  80.  option -pal is set, Process will recognise and use the palette (if present).
  81.    All three types of palettes are valid (16, 64 or 256 (true-colour) entries).
  82.  However, to speed up operations, Process needs to calculate a translation
  83.  table from RGB to 8bit pixel values. This will usually take 10 seconds (on an
  84.  ARM2), and is done when the sprite is loaded. The calculation isn't performed
  85.  if the sprite doesn't have a palette; instead the file
  86.  !Process.Resources.Palette is loaded.
  87.    The calculation of the palette can be suppressed by holding down Ctrl while
  88.  loading the sprite file. Process will then act as if the -pal option wasn't
  89.  set and ignore the palette.
  90.  
  91.    Printing
  92.   ==========
  93.    This isn't what !Process is best at. In fact, it doesn't print at all, so
  94.  what you'll need to do is to save the image (either to disc or directly to
  95.  !Paint) and then use !Paint's printing facilities in conjunction with a
  96.  RISC OS PDriver to get your piece of art on paper.
  97.  
  98.    Greyscaled images
  99.   ===================
  100.    !Process accepts 3 types of greyscaled images:
  101.  
  102.    AIM (256x256 pixels, 8 bpp, always greyscaled)
  103.    Clear (8 bpp, greyscaled palette)
  104.    Sprites (with a palette with 256 greyscaled entries).
  105.  
  106.    Beside these, Process can convert any loaded colour sprite to 8 bpp
  107.  greytones.
  108.    Some of the operations provided by Process are meaningless when applied to
  109.  a greyscaled image (eg RGB separation, Greyscale conversion etc.). In these
  110.  cases the operation will be inaccesible/shaded in the menu.
  111.  
  112.    Options
  113.   =========
  114.    When started, !Process reads the systemvariable Process$Options which may
  115.  contain the following options:
  116.  
  117.          Name        Meaning
  118.         -------------------------------------------------------------
  119.          max2        Sets the number of copies of the image !Process
  120.          max3        creates when a file is loaded.
  121.          max4  etc   Minimum is 2, maximum is 9. If you don't set max
  122.          max9        or set it to an illegal value, max4 is used.
  123.  
  124.          swap        Automatic swapping on.
  125.  
  126.          dma         Disable DMA during lengthy calculations.
  127.  
  128.          tools       Show toolbox.
  129.  
  130.          pal         Use the sprite palette (if present). See above.
  131.  
  132.          mask        Don't ignore the mask (if present)
  133.  
  134.          colour0     Use the extended colour selector RGB (fixed red)
  135.          colour1     Use the extended colour selector RGB (fixed green)
  136.          colour2     Use the extended colour selector RGB (fixed blue)
  137.          colour4     Use the extended colour selector CMY (fixed cyan)
  138.          colour5     Use the extended colour selector CMY (fixed magenta)
  139.          colour6     Use the extended colour selector CMY (fixed yellow)
  140.  
  141.    To perform RGB or HSV separation, max4 is needed, to perform CMYK separation
  142.  max5 is needed.
  143.  
  144.    The system variable Process$WindowTitle holds the template string for the
  145.  text in the titlebar of the image viewers.
  146.    The variable is set in !Process.!Run, and may be altered to include any of
  147.  the given pieces of information:
  148.  
  149.          Arg       Substituted with
  150.          --------------------------
  151.          %%0       "Process"
  152.          %%1       The name (full path) of the sprite file
  153.          %%2       The name (last part) of the sprite file
  154.          %%3       The name of the sprite
  155.          %%4       The mode in which the sprite was created
  156.          %%5       Size X of sprite (pixels)
  157.          %%6       Size Y of sprite (pixels)
  158.          %%7       The image viewer's number (1 - max)
  159.          %%8       Zoom factor X
  160.          %%9       Zoom factor Y
  161.  
  162.    Maps
  163.   ======
  164.    Maps are tables translating one colour to another. 256-colour images use one
  165.  byte per pixel, so mapping is simply done using a 256-bytes table, so that a
  166.  byte with value n is translated into the n'th entry in the table.
  167.    Many of the operations in !Process are performed using maps, to name a few:
  168.  Invert, Add colour, RGB filter, Translate, Greytones, Brighten, Stretch
  169.  histogram, Equalize histogram, Expand/Reduce range etc.
  170.    It is possible to create your own map and apply it to the loaded image. If
  171.  you drag a 256-bytes Data-file (filetype &FFD) to any of the image viewers,
  172.  the file will be loaded and used as a map on that particular image.
  173.    You can edit the BASIC-program GenMap to suit your own purposes.
  174.  
  175.    The colour selector
  176.   =====================
  177.    The colour selector is a window that pops up whenever a selected operation
  178.  needs a colour as input. The window contains three slidebars, Red, Green and
  179.  Blue which can be used to select the colour, which will be shown to the right
  180.  of the slidebars. The five icons at the bottom of the window are:
  181.  
  182.    Black       Sets all three slidebars to 0 (RGB) or full (CMY) (=black).
  183.    White       Sets all three slidebars to full (RGB) or 0 (CMY) (=white).
  184.    Cancel      Abort the operation/close the window.
  185.    OK          Apply the filter/effect/operation or close the window.
  186.  
  187.    If you click ADJUST on either of the slidebars, all three bars will be moved.
  188.    The palette in the right side of the image can be used to select any of the
  189.  256 default colours used in 8 bpp modes. If the image you are edited uses
  190.  another palette, it will still be the same 256 colours that are shown, so they
  191.  should not be consider as the palette but simply as 256 preset colours. If the
  192.  sprite doesn't use the default palette, it is very likely that some of the
  193.  preset colours are not available.
  194.    If the option -colour is set, the 256 preset colour will be substituted with\ a display of a cut thru the RGB colour cube, for a fixed value of either red,
  195.  green or blue. Eg. if red is fixed, you will get a display of green and blue
  196.  colours. When you alter the red (by dragging the red slidebar) you also alter
  197.  the amount of red that is added to the green and blue.
  198.    The display is only update when a drag of the slidebars is ended, or when
  199.  you are dragging the fixed colour.
  200.    You can alter which colour is fixed by clicking ADJUST on the words 'Red',
  201. 'Green' or 'Blue' to the left of the slidebars.
  202.    If the number following the -colour option is 4, 5 or 6, the colour selector
  203.  will show CMY values instead of RGB value. You can still select which colour
  204.  to fix, by clicking on either 'Cyan', 'Magenta' or 'Yellow'.
  205.    You can pick a colour from the source or destination image by selecting the
  206.  Pick tool from the toolbox.
  207.  
  208.    The grey value selector
  209.   =========================
  210.    This is exactly the same as the colour selector, except that you only use a
  211.  single slidebar to select the colour/grey value.
  212.  
  213.    The windows
  214.   =============
  215.    The two main windows in !Process are the source and destination windows.
  216.    The source window can be identified by the toolbox, the destination window
  217.  by the pane window with the arrows.
  218.  
  219.    The toolbox
  220.   =============
  221.    The toolbox contains icons for various of the most frequently used
  222.    operations, such as zoom, pan, copy image, set colour etc. Most operations
  223.  can be aborted by selecting another operation or by clicking ADJUST on the
  224.  selected icon. From top to bottom, left to right, the icons are:
  225.  
  226.       Select area
  227.       -----------
  228.       This works exactly as the menu option Misc.Image.Select area.
  229.  
  230.       Use selected area
  231.       -----------------
  232.       If this icon is set (slabbed inwards) only the selected area of the
  233.       source image will be processed. If an area is selected and used,
  234.       pressing MENU over this icon will open a window containing icons to
  235.       control the selected area. These icons work in the same way as the
  236.       sub menu to the menu option Image.Select area.
  237.  
  238.       Copy to destination
  239.       -------------------
  240.       This copies the source image (or the selected part of the source image)
  241.       to the destination image.
  242.  
  243.       Copy from destination
  244.       ---------------------
  245.       The reverse of 'Copy to destination'.
  246.  
  247.       Calculate histogram
  248.       -------------------
  249.       Calculate and display the histogram of the source image.
  250.  
  251.       Open RGB colour selector
  252.       ------------------------
  253.  
  254.       Swap images
  255.       -----------
  256.       Swap source and destination images.
  257.  
  258.       Zoom
  259.       ----
  260.       When this is selected, you can enlarge a portion of the image simply by
  261.       dragging a box in the source image window. Click MENU over this icon to
  262.       open a window with 8 preset zoom factors.
  263.  
  264.       Painting tools
  265.       --------------
  266.       Click MENU over this to reveal the 16 painting tools:
  267.             Pencil
  268.             Filled rectangle
  269.             Rectangle
  270.             Filled circle
  271.             Circle outline
  272.             Lines
  273.             Flood fill
  274.             Global replace
  275.             Spraycan
  276.             Triangle fill
  277.             Triangle
  278.             Parallelogram fill
  279.             Parallelogram outline
  280.             Ellipse fill
  281.             Ellipse outline
  282.             Smooth line
  283.  
  284.       Note that the painting tools write to the source image, NOT to the
  285.       destination image.
  286.  
  287.       Record
  288.       ------
  289.       This starts/stops the recorder.
  290.       Currently, the following operations are recorded:
  291.         Everything in the Process/Filter/Arithmetic submenus
  292.         Swap images (including auto-swapping)
  293.         Effects: Squash/Pointilise/Mix/Whirl/Scratch
  294.           Extend area/Mask/Trace edges
  295.         Expand/Reduce range
  296.         Transfer median/Equalize histogram
  297.         Gamma correction
  298.         More tools: Flip/Rotate/Clear
  299.         (De-)Selction of an area
  300.  
  301.       Pick
  302.       ----
  303.       This allows you to select a colour from the source or destination image.
  304.  
  305.       Pan
  306.       ---
  307.       Simple, really.
  308.  
  309.  
  310.    The menus
  311.   ===========
  312.  
  313.       The icon bar menu
  314.       =================
  315.  
  316.       Info
  317.       ----
  318.       ...with the usual program info window.
  319.  
  320.       Views.Tidy
  321.       ----------
  322.       Tries ever so hard to tidy the image viewers.
  323.  
  324.       Views.----
  325.       ----------
  326.       A list of all the image viewers.
  327.  
  328.       Create image
  329.       ------------
  330.       Creates a new blank image.
  331.  
  332.       Drop file
  333.       ---------
  334.  
  335.       Quit
  336.       ----
  337.  
  338.  
  339.       The main menu
  340.       =============
  341.  
  342.       Image.Image info
  343.       ----------------
  344.       Leads to a window with image info.
  345.  
  346.       Image.Convert to greyscale
  347.       --------------------------
  348.       Converts the image to 256 greytones. If the image already is a greyscaled
  349.       image, this option is substituted with Convert to colour. Of course the
  350.       image cannot be reversed to full colour, but the greytones can be mapped
  351.       to the greytones in the default 256 colour palette.
  352.  
  353.       Image.Copy source image
  354.       -----------------------
  355.       Selecting this option will copy the source image to the destination
  356.       image.
  357.  
  358.       Image.Select area
  359.       -----------------
  360.       This entry allows you to select a part of the image. Almost all
  361.       operations on the image will only have effect in the selected area.
  362.       Select the option, then click SELECT in one corner of the rectangle you
  363.       wish to select and click SELECT again in the other corner.
  364.       You can abort the cutting by clicking MENU.
  365.       If an area already has been selected, it is possible to adjust the
  366.       position/size of the area using the options in the sub-menu to this entry.
  367.              Extend top/bottom/right/left will move to appropiate side of
  368.              the rectangle to the top/bottom/right side/left side of the
  369.              full image.
  370.              Top/bottom/right/left neighbour will set the rectangle to an
  371.              area with the same width/height as before, but positioned
  372.              above/below/to the right of/to the left of the previous area,
  373.              so that no pixels overlap.
  374.  
  375.       Image.Clear area
  376.       ----------------
  377.       This will reset the selected part of the image to the full image.
  378.  
  379.       Image.Use full image
  380.       --------------------
  381.       If this option is selected (ticked), the full image is be used.
  382.  
  383.       Image.Use selected area
  384.       -----------------------
  385.       If this option is selected, only the selected part of the image will be
  386.       affected by the processing.
  387.  
  388.  
  389.       Miscellaneous.Options.Automatic swap
  390.       ------------------------------------
  391.       If this options is selected, the source and destination image will be
  392.       swapped automatically after any operation has been applied to the image.
  393.  
  394.       Miscellaneous.Options.Disable DMA
  395.       ---------------------------------
  396.       If this option is selected, the sound and video DMA will be disabled
  397.       while !Process is processing an image. In hi-res modes on an ARM2 this
  398.       can increase processing-speed with as much 100% or more.
  399.  
  400.       Miscellaneous.Options.Show toolbox
  401.       ----------------------------------
  402.       If this option is selected, a toolbox will appear on the left side of the
  403.       source image window, and a pane window appears on the left side of the
  404.       destination image window.
  405.  
  406.       Miscellaneous.Options.Normal panning
  407.       ------------------------------------
  408.       Switches between the two different types of panning.
  409.  
  410.       Miscellaneous.Options.Display in greytones
  411.       ------------------------------------------
  412.       Displays the images (if they are in colour) in greytones.
  413.       Greyscaled image can also be shown in colour, by deselecting this option.
  414.  
  415.       Miscellaneous.Options.Load palette
  416.       ----------------------------------
  417.       If on, the palette of a sprite is used instead of the default palette.
  418.  
  419.       Miscellaneous.Options.Extended RGB selection
  420.       --------------------------------------------
  421.       This is really only suited for use in 256 colour modes.
  422.       The 256 preset (default) colours in the colour selector is substituted
  423.       with a (very colourful) display of a cut thru the RGB colour cube for a
  424.       fixed value of of either red, green or blue. See The colour selector.
  425.  
  426.       Miscellaneous.Options.Cyan/Magenta/Yellow
  427.       -----------------------------------------
  428.       This toggles from RGB to CMY or back.
  429.  
  430.       Miscellaneous.Options.Ignore sprite mask
  431.       ----------------------------------------
  432.       When set, the mask (if present) will be ignore. Otherwise it will
  433.       be used for all plotting. Actually, most operations continue to function
  434.       as they did before, ignoring the mask completely. It's only operations
  435.       like Mosaic, Rotate, Flip X/Y and others using OS_SpriteOp that will
  436.       use the mask.
  437.  
  438.       Miscellaneous.Edit pencil/spraycan
  439.       ----------------------------------
  440.       Select this to set the shape/size of the pencil tool or the size/
  441.       intensity of the spraycan.
  442.  
  443.       Miscellaneous.Plot type
  444.       -----------------------
  445.       This enables you to select which plot action the painting tools should
  446.       use. The default is Set, which means plot the selected colour. The other
  447.       possible plot actions are:
  448.             OR          OR the colour in the image with the selected colour.
  449.             AND         AND ......
  450.             EOR         EOR ......
  451.             Invert      Invert the colour in the image (ignore the selected
  452.                          colour).
  453.             Don't plot  Speaks for itself, doesn't it?
  454.             AND NOT     AND the colour in the image with the inverse of the
  455.                         selected colour.
  456.             OR NOT      OR ......
  457.       The plot type affects all the painting tools except Spraycan, Flood fill
  458.       and Global replace.
  459.  
  460.       Miscellaneous.Recorder.Start recording
  461.       --------------------------------------
  462.       This will start the recorder without resetting it.
  463.       There is room for almost 120 operations.
  464.       The record will be kept until you delete it (or quit).
  465.       
  466.       Miscellanoeus.Recorder.Stop recording
  467.       -------------------------------------
  468.       Select this to stop the recorder.
  469.       
  470.       Miscellaneous.Recorder.Delete
  471.       -----------------------------
  472.       This will delete all recorded operations.
  473.       
  474.       Miscellaneous.Recorder.Play record
  475.       ----------------------------------
  476.       This will redo all the recorded operations.
  477.  
  478.       Miscellaneous.Import sprite
  479.       ---------------------------
  480.       This selects if (and how) a spritefile dragged to the source or
  481.       destination window is loaded.
  482.       Both 2, 4, 16 and 256 colours sprites can be loaded, but the palette
  483.       (if present) isn't used.
  484.  
  485.       Miscellaneous.Reload last
  486.       -------------------------
  487.       This enables you to reload the last saved image (for that particular
  488.       image viewer). In some cases you might experience an error like
  489.       'Not enough room in spritearea'. This will typically happen if the image
  490.       you are trying to reload has a palette, as !Process stores the images
  491.       without palette. There simply isn't room for the extra palette data.
  492.       The error 'You can only load spritefiles' means that the image hasn't
  493.       been saved yet (or that Process has screwed up it's internal tables).
  494.  
  495.       Miscellaneous.Calculate palette
  496.       -------------------------------
  497.       This will recalculate the palette used for creating the colour display
  498.       in the colour selector. This is only useful if you're using another 256
  499.       colour palette than the default one (i.e. using a ColourCard).
  500.  
  501.  
  502.       Range.Reduce range
  503.       ------------------
  504.       This uses a simple algorithme to reduce the range of the colours in the
  505.       source image. All colours are moved towards a boring greytone (red, green
  506.       and blue = 128).
  507.  
  508.       Range.Expand range
  509.       ------------------
  510.       All colours are moved away from the greytone mentioned above.
  511.  
  512.       Range.Calculate histogram
  513.       -------------------------
  514.       This calculates and displays the colour histogram of the image.
  515.       There will almost always be at least a small amount of both red, green
  516.       and blue in all images, even after the image has been thru e.g. a blue
  517.       filter. This is due to the fact that the bottom two bits of each byte is
  518.       common to the three colour components.
  519.  
  520.       Range.Stretch
  521.       -------------
  522.       Stretches the colour range of the image. This will stretch a selected
  523.       part of the colour histogram so that this part fills the entire range.
  524.       If a colour component is outside the selected part it becomes either 0
  525.       (if below) or 255 (=full, if above).
  526.       Selecting a part of the histogram is done using the lowered rectangle
  527.       below the histogram. Clicking ADJUST in this sets the upper limit,
  528.       clicking SELECT sets the lower limit.
  529.  
  530.       Range.Equalize
  531.       --------------
  532.       Histogram equalisation. This will attempt to equalize the histogram so
  533.       that there is a (roughly) equal number of pixels in each of the possible
  534.       shades.
  535.  
  536.       Range.Transfer median
  537.       ---------------------
  538.       Calculates the mean colour of the image, and transfers it to the RGB
  539.       colour selector. This is especially useful if you want to convert a
  540.       colour image to greytones, as the mean colour will ensure a reasonably
  541.       good conversion.
  542.  
  543.       Range.Colour correction
  544.       -----------------------
  545.       Uses one of three algorithems to perform colour-correction. The curve
  546.       shows 'New colour' vs 'Old colour'.
  547.  
  548.       Gamma (Gamma-correction): Each colour-component is translated to a new
  549.       colour using the formula:   NewCol = (OldCol ^ Gamma)
  550.       Gamma is set using the two up- and down-icons.
  551.       Gamma-correction is particually useful on scanned/digitized images.
  552.  
  553.       P-lin: Basically the same as Gamma-corr. You can adjust the curve by
  554.       clicking SELECT on it.
  555.  
  556.       Step: Allows you to control the translation of each RGB value to a new
  557.       RGB-value.
  558.  
  559.  
  560.       Process.Invert
  561.       --------------
  562.       This will invert the image, giving a negative image.
  563.       Destination RED = 255 - Source RED
  564.  
  565.       Process.Remove TINT
  566.       -------------------
  567.       This simply removes the bottom two bits (the TINT part) of all pixels in
  568.       the source image.
  569.  
  570.       Process.Brighten
  571.       ----------------
  572.       This adds a small amount to each of the colour components, giving a
  573.       brighter image.
  574.       Destination RED = Source RED + 16
  575.  
  576.       Process.Darken
  577.       --------------
  578.       The reverse of Brighten.
  579.  
  580.       Process.Black & White
  581.       ---------------------
  582.       Converts the image to black and white. The colour components are weighted
  583.       according to the selected colour, the median of the three components are
  584.       calculated, and if this is above 50% intensity, the pixel becomes white
  585.       otherwise it becomes black.
  586.  
  587.       Process.Greytones
  588.       -----------------
  589.       Converts the image to greytones. The colour components are weighted
  590.       according to the selected colour, the median of the three components are
  591.       calculated and this is used to select a greytone.
  592.       The sensitivity of the eye is approx. 3:5:1 (red,green,blue).
  593.  
  594.       Process.Threshold
  595.       -----------------
  596.       Converts the image to black and white using thresholding.
  597.       Thresholding means that any pixel with 2 or 3 colour components above the
  598.       selected colour will become white, the rest will become black.
  599.  
  600.       Process.Add colour
  601.       ------------------
  602.       Adds an variable amount of colour to the red, green and blue colour
  603.       components.
  604.  
  605.       Process.Sub colour
  606.       ------------------
  607.       The reverse of Add colour.
  608.  
  609.       Process.RGB filter
  610.       ------------------
  611.       This acts like a sort of coloured glass you put in front of the image.
  612.       If the glass is blue, only the blue parts of the image will pass thru
  613.       the glass.
  614.  
  615.       Process.Translate
  616.       -----------------
  617.       The colours in the destination image becomes a weighted sum of the
  618.       colour components from the source image, eg:
  619.          Dest RED = 30% Source RED + 60% Source GREEN + 40% Source BLUE (etc.)
  620.       Anything above 100% is cut off.
  621.  
  622.       Process.Shade
  623.       -------------
  624.       All colours are move towards the selected colour. How much they are
  625.       moved is set using the Effect slidebar in the colour selector.
  626.  
  627.       Process.Isolate
  628.       ---------------
  629.       This will turn all pixel black, except for those that are in the same
  630.       colour as the selected colour (these are turned white).
  631.  
  632.       Process.Isolate range
  633.       ---------------------
  634.       This will turn all pixels black, except for those whose colour is within
  635.       the given range from the selected colour (these are turned white).
  636.       Use Arithmetic.Overlay afterwards to copy the affected pixels to the
  637.       destination image.
  638.  
  639.       Process.RGB separation.True colour
  640.       ----------------------------------
  641.       Process.RGB separation.8 bit per pixel
  642.       --------------------------------------
  643.       Works only if you've got 4 (or more) copies of the image.
  644.       Creates three copies of the source image, one with the red part of the
  645.       image, one with the green part and one with the blue part.
  646.       Actually, two version of this routine is available.
  647.       'True colour' will give you a red, a green and a blue image.
  648.       '8 bit per pixel' will give you three very ugly ill-looking images. These
  649.       images have 256 levels of red/green or blue, but these levels are mapped
  650.       directly to the bytes written to the screen. The effect of this can be
  651.       seen by displaying the image in greytones (see Miscellaneous.Options).
  652.       The 'true colour' version can also be applied by using
  653.        Process.RGB filter.Red/Green/Blue.
  654.  
  655.       Process.CMYK separation
  656.       -----------------------
  657.       Works only if you've got 5 (or more) copies of the image (see Options).
  658.       See 'RGB seperation'.
  659.  
  660.       Process.HSV separation
  661.       ----------------------
  662.       Works only if you've got 4 (or more) copies of the image.
  663.       Creates three images showing the values of Hue, Saturation and Value.
  664.       Not really very useful, but someone might find it interesting.
  665.  
  666.       Filters.Noise (weak)
  667.       --------------------
  668.       Noise removing filter. If the two neighbours of a pixel is in the same
  669.       colour, the center pixel becomes that colour too.
  670.  
  671.       Filters.Noise (strong)
  672.       ----------------------
  673.       The center pixel is compared with its neighbours to the left, right, top
  674.       and bottom. If the center pixel is the brightest of these, it becomes the
  675.       average of the four other pixels.
  676.  
  677.       Filters.Average
  678.       ---------------
  679.       Smoothen the image a lot.....
  680.       The center pixels becomes the average of colour of itself and its 8
  681.       neighbours. The kernel looks like this:
  682.                                                 1   1   1
  683.                                                 1   1   1
  684.                                                 1   1   1
  685.  
  686.       Filters.Sharpen
  687.       ---------------
  688.       Sharpens the edges in an image.
  689.       Uses the following kernel:
  690.                                                 0  -1   1
  691.                                               - 1   5   1
  692.                                                 0  -1   0
  693.  
  694.       Filters.Smoothen (strong)
  695.       -------------------------
  696.       Doesn't smoothen the image quite as much a 'Average'.
  697.       Uses the following kernel:
  698.                                                 1   2   1
  699.                                                 2   4   2
  700.                                                 1   2   1
  701.  
  702.       Filters.Smoothen (weak)
  703.       -----------------------
  704.       Hardly doesn't smoothen the image at all.
  705.       Uses the following kernel:
  706.                                                 1   1   1
  707.                                                 1   24  1
  708.                                                 1   1   1
  709.  
  710.       Filters.Median
  711.       --------------
  712.       The center pixel becomes the median of the 8 surrounding pixels.
  713.  
  714.       Filters.Vertical edges
  715.       ----------------------
  716.       Detects vertical edges.
  717.       Uses the following kernel:
  718.                                                 1   0  -1
  719.                                                 2   0  -2
  720.                                                 1   0  -1
  721.  
  722.       Filters.Horizontal edges
  723.       ------------------------
  724.       Detects horizontal edges.
  725.       The kernel is simply the transposed of the one used for vertical edges.
  726.  
  727.       Filters.Edges (emboss)
  728.       ----------------------
  729.       Detects edges of any orientation.
  730.       Kernel:                                   2   1   0
  731.                                                 1   0  -1
  732.                                                 0  -1  -2
  733.  
  734.       Filters.Minimum
  735.       ---------------
  736.       The minimum of the 9 pixels (the center pixel and its 8 neighbour) is
  737.       found, and this is the new colour of the center pixel.
  738.  
  739.       Filters.Maximum
  740.       ---------------
  741.       As 'Minimum', except it finds the maximum.
  742.  
  743.       Filters.Difference
  744.       ------------------
  745.       My own invention! If the difference between the center pixel and the
  746.       average of the 8 others is larger than the selected colour, the average
  747.       is used, otherwise the pixel is left unchanged.
  748.  
  749.       Filters.Kernel
  750.       --------------
  751.       A generel purpose kernel. You can insert whatever value you fancy, and
  752.       apply the kernel to the image.
  753.       The routine is very slow (3000 pixels/second on an ARM2) but the results
  754.       can be very impressive.
  755.       Currently, the routine doesn't consider the two border rows/coloums of
  756.       pixels.
  757.       You can load pre-defined kernels by dragging a text file to the icon bar
  758.       icon. The file must have the following format:
  759.       Line 0:      "KERNEL"
  760.       Line 1:      Name/describtion
  761.       Line 2:      Values to insert in the first row of the kernel.
  762.       Line 3-6:    As line 2, but inserted in rows 2-5 in the kernel
  763.       The values should be separated by commas, and ALL lines must be terminated
  764.       by an ASCII 10 (even the last line). Avoid values outside the range -99
  765.       to 99. See the supplied example !Process.Emboss.
  766.  
  767.       Filters.Emboss
  768.       --------------
  769.       This is a hard core version of the emboss filter mentioned above.
  770.       Basically, it's just a front end for the generel purpose kernel, so it
  771.       is every bit as slow as that. The angle defines the position of a light
  772.       source, so 135 will give the effect of a light in the top left corner of
  773.       the image, while -45 will put the light in the bottom right corner, and
  774.       thereby make the image look inverted (anti-embossed or whatever it is
  775.       called).
  776.       
  777.  
  778.       Effects.Scratch
  779.       ---------------
  780.       Gives the impression that the surface of the image was scratched with a
  781.       nail while the paint was still wet.
  782.  
  783.       Effects.Ripple
  784.       --------------
  785.       An old-time favourite of all demo-makers.
  786.       If the 'Double' option is on, a special ripple will be used... 
  787.  
  788.       Effects.Trace edges
  789.       -------------------
  790.       If the distance between any of the three colour component (for any two
  791.       adjectant pixels) are greater than the selected minimum distance, the
  792.       pixels are said to lie on an edge and are coloured black (the rest is
  793.       coloured white).
  794.  
  795.       Effects.Mosaic
  796.       --------------
  797.       Select this, then click somewhere in the bottom left corner of the source
  798.       image window, and see what happens. Abort by clicking MENU or ADJUST.
  799.  
  800.       Effects.Pointillise
  801.       -------------------
  802.       Dots, Overlap, Wild : Try them, perhaps you'll like them.
  803.       Overlap gives a sort of impressionistic look to the image.
  804.  
  805.       Effects.Twist
  806.       -------------
  807.       Experiment......
  808.  
  809.       Effects.Extend area
  810.       -------------------
  811.       Any white or black area (blob) in the image will be extended by adding a
  812.       new set of white or black pixels all around its border.
  813.  
  814.       Effects.Add noise
  815.       -----------------
  816.       A simple yet effective noise generator. Adds noise to either the source
  817.       or the destination image.
  818.       Higher intensity means more noise, but due to the primitive nature of the
  819.       noise-generator the position of the noisy pixels will rapidly begin to
  820.       repeat themself.
  821.  
  822.       Effects.Cycle bytes
  823.       -------------------
  824.       Adds/subtracts 1 from each byte in source image, and writes the byte to
  825.       the destination image.
  826.  
  827.       If Repeatedly is selected (ticked) the bytes in the destination image
  828.       will be cycled repeatedly until you click MENU.
  829.       Works only in 256 colour modes (for speed reasons).
  830.       If Multi-tasking is selected, the colour cycling will multitask, and
  831.       stops when you click any of the mouse buttons over any window/icon that
  832.       belongs to !Process.
  833.  
  834.       Effects.Mask
  835.       ------------
  836.       Only those pixels that are black on the destination image will be copied
  837.       from the source image, the rest will be left unchanged.
  838.  
  839.       Effects.Mix colours
  840.       -------------------
  841.       Mixes the colours randomly.
  842.  
  843.       Effects.Wheel
  844.       -------------
  845.       Basically, this is just a left-over from the Distort-routine (see More
  846.       tools). You select an area (triangular) and a circle, and 9 copies of the
  847.       triangle are then distorted to fill the circle.
  848.  
  849.       Effects.Squash.Circle
  850.       ---------------------
  851.       Squashed the image to fit inside a circle.
  852.       
  853.       Effects.Squash.Triangle
  854.       -----------------------
  855.       See above. Works with all images.
  856.       
  857.       Effects.Whirl.Whirl
  858.       -------------------
  859.       Hmm, not really that easy to explain, but...
  860.       A kind of rotation. The rotation angle depends on the distance from the
  861.       center fo the image. The routine is quite slow (10000 pixels/second) due
  862.       the the amount of maths that is required.
  863.       The rotation angle increases when you get closer to the center of the
  864.       image.
  865.  
  866.       Effects.Whirl.Son of Whirl
  867.       --------------------------
  868.       Like above, just different!
  869.       The rotation angle decreases when you get closer to the center of the
  870.       image.
  871.  
  872.       Effects.Whirl.Whirl revisited
  873.       -----------------------------
  874.       Like above and the one above that one, but again it's different from
  875.       the other one and from the other other one coz otherwise there wouldn't
  876.       really be any meaning in including this effect or the one above it.
  877.       Has a small bug that causes black rings to occur if the angle is <30.
  878.  
  879.       
  880.       Arithmetic
  881.       ----------
  882.       These options perform arithmetic and logical operations on pairs of
  883.       pixels from the source and destination images. The result is written to
  884.       the destination image as always.
  885.  
  886.       Arithmetic.Source + Dest
  887.       ------------------------
  888.       The destination image becomes the sum of the two images.
  889.  
  890.       Arithmetic.Source - Dest
  891.       ------------------------
  892.       See above.
  893.  
  894.       Arithmetic.Dest - Source
  895.       ------------------------
  896.       See above.
  897.  
  898.       Arithmetic.Source EOR Dest
  899.       --------------------------
  900.       The two pixels are EORed bit by bit.
  901.  
  902.       Arithmetic.Source AND Dest
  903.       --------------------------
  904.       The two pixels are ANDed.
  905.  
  906.       Arithmetic.Source OR Dest
  907.       -------------------------
  908.       The two pixels are ORed.
  909.  
  910.       Arithmetic.Source = Dest
  911.       ------------------------
  912.       The destination pixel becomes white if the source pixel is in the same
  913.       colour as the old destination pixel, otherwise it becomes black.
  914.  
  915.       Arithmetic.Source <> Dest
  916.       -------------------------
  917.       The destination pixel becomes white if the source-pixel is in a different
  918.       colour than the old destination pixel.
  919.  
  920.       Arithmetic.Source < Dest
  921.       ------------------------
  922.       See above.
  923.  
  924.       Arithmetic.Source > Dest
  925.       ------------------------
  926.       See above.
  927.  
  928.       Arithmetic.MAX(Source;Dest)
  929.       ---------------------------
  930.       The new pixel is coloured as the maximum of each of the three colour
  931.       components.
  932.  
  933.       Arithmetic.MIN(Source;Dest)
  934.       ---------------------------
  935.       As 'MAX(Source;Dest)', except it uses the minimum.
  936.  
  937.       Arithmetic.Overlay
  938.       ------------------
  939.       The destination image is used as a RGB-filter for the source image:
  940.       White is transparent, black is non-transparent, red allows red colour to
  941.       pass thru the filter etc.
  942.       Destination RED = (Source RED * Destination RED)/256
  943.  
  944.       Arithmetic.Combine
  945.       ------------------
  946.       The destination image becomes a weighted average of the two images, the
  947.       weight is set in the sub-window to this option.
  948.       The weight is a number from 0-255, and is used like this:
  949.       Dest RED = ((255-Weight) * Source RED  +  Weight * Dest RED)/255
  950.       Thus weight=0 will copy the source image to the destination image, and
  951.       weight=255 will leave the destination image unaltered.
  952.  
  953.       Arithmetic.ABS(Source - Dest)
  954.       -----------------------------
  955.       See 'Source - Dest'.
  956.  
  957.  
  958.       More tools.Clear
  959.       ----------------
  960.       An easy way of clearing either the source or destination image.
  961.  
  962.       More tools.Flip about X-axis
  963.       ----------------------------
  964.       Flip the source/destination image about the X-axis.
  965.  
  966.       More tools.Flip about Y-axis
  967.       ----------------------------
  968.       Flip the source/destination image about the Y-axis.
  969.  
  970.       More tools.Rotate
  971.       -----------------
  972.       The destination image becomes a rotated copy of the source image.
  973.       Rotation is anti-clockwise, and if an area is selected only that part of
  974.       the image will be rotated.
  975.  
  976.       More tools.Shading.Radial to black
  977.       ----------------------------------
  978.       This generates a radial shading from the selected colour to black. The
  979.       area affected is selected using the usual rubberband-circle. The colour
  980.       outside the circle becomes black (hence the name 'to black'). Note that
  981.       although you select the circle in the source window, the shading will
  982.       appear in the destination image. The reason for this is that this tool
  983.       is meant to be follow by Arithmetic.Overlay to create a shading of the
  984.       whole image.
  985.  
  986.       More tools.Shading.Radial to white
  987.       ----------------------------------
  988.       See above.
  989.  
  990.       More tools.Shading.Radial from black
  991.       ------------------------------------
  992.       See above.
  993.  
  994.       More tools.Shading.Radial from white
  995.       ------------------------------------
  996.       See above.
  997.  
  998.       More tools.Shading.Linear to black
  999.       ----------------------------------
  1000.       As the 'More tools.Shading.Radial ....' tools, but performs a linear
  1001.       shading.
  1002.  
  1003.       More tools.Shading.Linear to white
  1004.       ----------------------------------
  1005.       See above.
  1006.  
  1007.       More tools.Shading.Use dithering
  1008.       --------------------------------
  1009.       This toggles whether the shading tools should use dithering to increase
  1010.       the number of shade or not. The image quality is greatly improved when
  1011.       dithering is ON, but the dithering makes it much harder to process the
  1012.       image afterwards.
  1013.  
  1014.       More tools.Distort triangle
  1015.       ---------------------------
  1016.       This allows you to specify two triangles and then distort the first one
  1017.       to fit into the second one. The triangle will be read from the source
  1018.       image, and is written to the destination image.
  1019.  
  1020.       More tools.Distort quadrangle
  1021.       -----------------------------
  1022.       Allows you to distort (almost) any four sided shape.
  1023.  
  1024.       More tools.Smudge
  1025.       -----------------
  1026.       Basically, this is just RECTANGLE x1,y1,s TO x2,y2, but it looks good
  1027.       anyway, doesn't it?
  1028.  
  1029.       Save image
  1030.       ----------
  1031.       All images can be saved in the usual way. When you save an image from any
  1032.       of the image viewers, the new spritefile becomes the 'last saved image'
  1033.       for that particular image viewer, which means that it is this file that
  1034.       will be loaded by the 'Reload last' option.
  1035.       The images can only be saved as sprites, with or without a palette with
  1036.       256 entries. This format is only understood by Translator, ChangeFSI and
  1037.       a few other programs. !Paint in RISC OS 2 doesn't recognise the palette,
  1038.       but RISC OS 3 !Paint does.
  1039.  
  1040.  
  1041.       Zoom
  1042.       ----
  1043.       The images can be shown in any magnification from 10% to 1999%.
  1044.  
  1045.  
  1046.       The other menu that hasn't been mentioned yet
  1047.       =============================================
  1048.       This menu appears when you click MENU over an image viewer that contains
  1049.       neither the source image nor the destination image.
  1050.  
  1051.       Use as source
  1052.       -------------
  1053.       Will select the image as the new source image.
  1054.  
  1055.       Use as destination
  1056.       ------------------
  1057.       See above.
  1058.  
  1059.       Copy.Copy from source
  1060.       ---------------------
  1061.       This entry (and the three entries below) allows you to copy the image to
  1062.       either the source or the destination image.
  1063.  
  1064.       Copy.Copy from destination
  1065.       --------------------------
  1066.  
  1067.       Copy.Copy to source
  1068.       -------------------
  1069.  
  1070.       Copy.Copy to destination
  1071.       ------------------------
  1072.  
  1073.       Reload last
  1074.       -----------
  1075.       See Misc.Reload last
  1076.  
  1077.       Save image
  1078.       ----------
  1079.       See above.
  1080.  
  1081.       Zoom
  1082.       ----
  1083.       See above.
  1084.  
  1085.  
  1086.    Known problems, bugs and unfinished things
  1087.   ============================================
  1088.    The filters doesn't work on the pixels on the edges of the image/selected
  1089.  area. This isn't a bug, it was just so much easier and faster to do it that
  1090.  way.......
  1091.    Redrawing isn't always correct after using the rubberband tools (circle,
  1092.  lines, rectangles etc.) outside a selected area.
  1093.    Redrawing is never correct after using the rubberband tools inside the
  1094.  masked area of a sprite.
  1095.    The Distort quadrangle routine doesn't allow shapes where any of the
  1096.  interior angles are > 180 (deg.). It doesn't generate an error, it just
  1097.  doesn't give the expected result.
  1098.    A small bug prevents !Process from displaying some spritefiles if the sprite-
  1099.  file header isn't entirely correct, eg. word #3 is invalid, although this
  1100.  doesn't cause problems with !Paint. Loading the file into Paint and resaving
  1101.  will usually cure the problem.
  1102.    The whirl effect-family may fail on very large image or when using very
  1103.  small angles.
  1104.  
  1105. ------------------------------------------------------------------------------
  1106.  
  1107.    Henrik Bjerregaard Pedersen
  1108.    Stengaards Alle 13 B
  1109.    DK-2800 Lyngby
  1110.    Denmark
  1111.  
  1112.    Phone (+45) 42 88 37 56
  1113.