home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 3 / CDPDIII.bin / fish / 791-800 / ff793 / snap / snap.doc < prev    next >
Text File  |  1993-01-10  |  27KB  |  712 lines

  1.                      Snap 1.63
  2.                      =========
  3.                © Mikael Karlsson 1991
  4.  
  5.  
  6. Is it Public Domain?
  7.  
  8.   Snap is NOT Public Domain. Snap is 'Freely distributable
  9.   copyrighted software with a shareware option'.
  10.  
  11.   "Permission is hereby granted to copy Snap provided that
  12.    the copyright notice and this document is left intact.
  13.    Copies may not be made for profit. Modified copies may
  14.    not be distributed without the author's prior consent."
  15.  
  16.   I don't know if the above should hold in court but what
  17.   I mean is: Copy Snap if you want to but don't make a
  18.   business of it. It is of course free to include it on
  19.   public domain disks or putting it on a BBS.
  20.   If you find Snap useful, please feel free to send a
  21.   donation ($10 is a nice round number) or a nice program (PD).
  22.   Please don't send personal checks. It costs me $5 to
  23.   cash them. Or you can buy me a beer or two when we meet.
  24.   If you wish to include Snap with a commercial product,
  25.   please contact me first. I just want to make sure that
  26.   my ego can stand for it. Of course it would also be nice
  27.   with a registered copy of the product.
  28.   (How about including it with a '040 card? ;-)
  29.  
  30.  
  31. What Is It?
  32.  
  33.   Snap is the perfect tool for the lazy typer. Isn't it
  34.   irritating when you look at something on the screen
  35.   and think: "That is what I'm going to type."?
  36.   What if you could just point at it and get the computer to
  37.   type it for you? That's where Snap comes to the rescue.
  38.   Another thing that irritates me is that I'm sitting in
  39.   front of THE computer and still I must have pen and
  40.   paper available to scribble down something from the screen
  41.   that I know I will need later. Snap provides a solution
  42.   to that problem also. Just frame it and Snap creates a
  43.   window with a copy of the screen contents. Perfect for
  44.   snapping text from later on. This is another idea borrowed
  45.   from the computer scientists at Xerox Palo Alto Research
  46.   Center (you know, the ones who invented the mouse, windows,
  47.   icons and stuff like that).
  48.  
  49.  
  50. The First Time
  51.  
  52.   To try Snap, do the following:
  53.    1. Double click the Snap icon.
  54.    2. Move the mouse over a character.
  55.    3. Press and hold the left Amiga key.
  56.    4. Press the left mouse button. A frame should appear around
  57.       character you pointed at. If no frame appears, release
  58.       the mouse button and the Amiga key, and start again at 2.
  59.    5. Extend the selection by moving the mouse.
  60.    6. When you're satisfied with the selection, release first
  61.       the mouse button and then the Amiga key.
  62.    7. You can now insert the text by holding down the left
  63.       Amiga key and clicking the right mouse button.
  64.  
  65.  
  66. Why Use Snap Instead?
  67.  
  68.    a. Snap finds out the character coordinates automatically.
  69.    b. Snap uses the RastPort's current font, not just Topaz 8.
  70.    c. Snap was written by me.
  71.    d. Snap supports all fixed width fonts with width<16.
  72.    e. Snap supports accented characters (128-255).
  73.    f. Snap supports keymaps.
  74.    g. Snap does both column and text oriented snapping.
  75.    h. Snap snaps graphics.
  76.    i. Snap uses the clipboard, making it compatible with TxED (and NotePad).
  77.    j. Snap understands inverted characters.
  78.    k. Snap understands bold characters.
  79.    l. Snap understands underlined characters
  80.    m. Snap does word oriented snapping.
  81.    n. Snap has ants.
  82.    o. Snap has a key combination to do insert.
  83.    p. Snap supports Xerox style snapping with immediate insert.
  84.    q. Snap prepends and appends characters.
  85.    r. Snap saves graphics.
  86.    s. Snap caches the character offsets between windows.
  87.    t. Snap joins long lines.
  88.    u. Snap supports ARexx to read and set prepend and append strings.
  89.    v. Snap handles an extra pixel line between character rows.
  90.    w. Snap supports an alternate font for snapping.
  91.    x. Snap supports fonts of any height, settable at compile time.
  92.    y. Snap caches the fonts between windows.
  93.    z. Snap clips graphics to the clipboard.
  94.    w. Snap supports Workbench tooltype arguments
  95.  
  96.  
  97. Starting and Stopping
  98.  
  99.  From CLI
  100.    Start Snap with 'run >nil: snap'.
  101.    To remove Snap, execute 'snap -Q' (or snap QUIT).
  102.  
  103.  From Workbench
  104.    Double click on the Snap icon to install Snap. Double click
  105.    a second time to remove Snap.
  106.  
  107.    Make sure that you have 'clipboard.device' in devs:.
  108.  
  109.    Note that you can't remove Snap if you have any 'snapped'
  110.    windows left.
  111.  
  112.  
  113. Command Line Arguments
  114.  
  115.    Snap accepts a number of command line arguments. You can
  116.    use either unix or Amiga style arguments.
  117.  
  118.    Usage:
  119.     snap -pNN -tQQ -gQQ -iXX -wXX -Pstr -Astr -cNN -lNN
  120.       -aXXXX -x -X -e -E -r -R -j -J -s -S -uN -bXX -CNN
  121.       -BNN -Ffont -Q
  122.     or
  123.     snap PRIORITY/k TEXTQUAL/k GFXQUAL/k INSERTKEY/k CWKEY/k
  124.       PREPEND/k APPEND/k CHARDELAY/k LINEDELAY/k CRAWLPTRN/k
  125.       XEROX/s NOXEROX/s EARLYPATCH/s NOEARLYPATCH/s STARTUNIT/k
  126.       TRUEUNDERSCORE/s FAKEUNDERSCORE/s JOINLONG/s NOJOINLONG/s
  127.       SIMPLEREFRESH/s SMARTREFRESH/s PLANEMASK/k CACHESIZE/k
  128.       BADCHAR/s ALTFONT/k QUIT/s
  129.  
  130.    o XX is hex, specified as 0xXXXX.
  131.      Example: 0xF3
  132.  
  133.    o NN is decimal.
  134.  
  135.    o str is a string.
  136.  
  137.    o QQ are keyboard qualifiers. Qualifiers can be specified
  138.      either as a hex value combined from the following list:
  139.        0001    Left Shift
  140.        0002    Right Shift
  141.        0008    Control
  142.        0010    Left Alt
  143.        0020    Right Alt
  144.        0040    Left Amiga Key
  145.        0080    Right Amiga Key
  146.        1000    Middle Mouse Button
  147.  
  148.      Example: 0x18 gives Left Alt+Control
  149.  
  150.      Or as a combination of the following strings (separate the
  151.      qualifiers with '+'):
  152.        LSHIFT          Left Shift
  153.        RSHIFT          Right Shift
  154.        CONTROL         Control
  155.        LALT            Left Alt
  156.        RALT            Right Alt
  157.        LCOMMAND        Left Amiga
  158.        RCOMMAND        Right Amiga
  159.        MIDBUTTON       Middle Mouse Button
  160.  
  161.      Example: LALT+CONTROL gives Left Alt+Control
  162.  
  163.      Note: Combinations are allowed, in which case ALL of the elected
  164.            qualifiers at once along with the left or right mouse button
  165.            will cause the appropriate action to occur.
  166.  
  167.    o font is the name of a font, specified as 'fontname/size'.
  168.      Exampel: Topaz/8
  169.  
  170.     -pNN
  171.     PRIORITY NN
  172.             where NN is the priority to use when installing
  173.             the input handler. Default is 52. Note that it's
  174.             not possible to change the priority of the input
  175.             handler while Snap is running.
  176.     -tQQ
  177.     TEXTQUAL QQ
  178.             where QQ is the text qualifier to use in text
  179.             operations. Default is the left Amiga key.
  180.     -gQQ
  181.     GFXQUAL QQ
  182.             where QQ is the graphics qualifier to use in
  183.             graphics operations. Default is the right Amiga key.
  184.     -iXX
  185.     INSERTKEY XX
  186.             where XX is the raw key code for the key to be used
  187.             together with the left Amiga key as insert key.
  188.             Use together with Shift to get modidified inserts.
  189.             Use 0 to disable. Default is hex 17 ("I").
  190.     -wXX
  191.     CWKEY XX
  192.             where XX is the raw key code for the key to be used
  193.             together with the left Amiga key to open the Snap
  194.             control window. Default is hex 11 ("W").
  195.     -Pstr
  196.     PREPEND str
  197.             where str is the string that will be inserted in
  198.             front of every line in a modified insert. Max
  199.             length of the string is 16. Default is "> ".
  200.             If you use the Unix style argument and need to
  201.             enclose the string in quotes, add a space between
  202.             the 'P' and the quoted string.
  203.     -Astr
  204.     APPEND str
  205.             where str is the string that will be inserted after
  206.             every line in a modified insert. Max length of the
  207.             string is 16. Default is "".
  208.             If you use the Unix style argument and need to
  209.             enclose the string in quotes, add a space between
  210.             the 'A' and the quoted string.
  211.     -cNN
  212.     CHARDELAY NN
  213.             where NN is the amount of time that Snap should
  214.             wait after each character inserted into the input
  215.             stream. Default is 0.
  216.     -lNN
  217.     LINEDELAY NN
  218.             where NN is the amount of time that Snap should
  219.             wait after each carriage return inserted into the
  220.             input stream. Default is 0.
  221.     -aXXXX
  222.     CRAWLPTRN XXXX
  223.             where XXXX is a 16 bit number that specifies the
  224.             pattern for the crawling ants. Use FFFF to turn
  225.             the crawling off. If you specify 0 as the crawl
  226.             pattern, Snap will use different patterns for
  227.             each snapping mode (box/char/word/line).
  228.             Default is 7777.
  229.     -x
  230.     XEROX
  231.             tells Snap to use Xerox style snapping instead.
  232.             The snapped text is inserted immediately it has
  233.             been snapped.
  234.     -X
  235.     NOXEROX
  236.             turns off Xerox style snapping.
  237.     -e
  238.     EARLYPATCH
  239.             tells Snap to patch dangerous functions as soon as
  240.             the text qualifier goes down. This is done automatically
  241.             when you use Xerox style snapping.
  242.     -E
  243.     NOEARLYPATCH
  244.             turns off early patching. This is default.
  245.     -j
  246.     JOINLONG
  247.             tells Snap to join long lines. This means that Snap
  248.             joins (removes the line feed between) two lines if
  249.             the first line has a non-blank in the last position.
  250.             This is not done in rectangular snapping.
  251.     -J
  252.     NOJOINLONG
  253.             disables the join-long-lines behavior. This is default.
  254.     -s
  255.     SMARTREFRESH
  256.             tells Snap to use smart refresh for the graphics snap
  257.             windows. This is faster but uses up precious chip
  258.             memory. This is default.
  259.     -S
  260.     SIMPLEREFRESH
  261.             tells Snap to use simple refresh for the graphics snap
  262.             windows. This saves chip memory but the refreshing of
  263.             Snap's windows might be a bit slower than the smart
  264.             refresh approach.
  265.     -uN
  266.     STARTUNIT N
  267.             tells Snap which unit to use when you start snapping.
  268.             0 is rectangular snapping (FRAME).
  269.             1 is character snapping (CHAR). Default is 0.
  270.     -r
  271.     TRUEUNDERSCORE
  272.             tells Snap to do true checking of underscores when
  273.             snapping characters.
  274.     -R
  275.     FAKEUNDERSCORE
  276.             turns off true checking of underscores. Instead Snap
  277.             just skips the underscore line and hopes that the rest
  278.             of the character will provide correct matching. This
  279.             option is provided since there is a bug in the rendering
  280.             of underscored characters.
  281.     -bXX
  282.     PLANEMASK XX
  283.             where XX is the bit plane mask used when drawing the
  284.             selection frame for character snapping. This does not
  285.             affect graphics snapping. Default is 1.
  286.     -CNN
  287.     CACHESIZE NN
  288.             where NN is the number of windows that Snap will cache
  289.             character offsets for. Specifying a new value while Snap
  290.             is running means that you increase the cache size by N.
  291.             Default size is 10, default increase is 0.
  292.     -LNN
  293.     LEADING NN
  294.             specifies the number of extra pixels in the line spacing
  295.             that Snap should check for. Default is 1.
  296.  
  297.     -BNN
  298.     BADCHAR NN
  299.             where NN is the ascii value of the character that will
  300.             be used when Snap doesn't recognize a character.
  301.             Default is 63, a '?'.
  302.     -Ffont
  303.     ALTFONT font
  304.             where font specifies an alternate font that will be
  305.             tried if Snap can't find any character in the font
  306.             that is specified in the window's RastPort. Some
  307.             programs (CygnusEd 2.0 is one example) doesn't use
  308.             the RastPort's font to render text and this option
  309.             makes it possible to snap text from those programs
  310.             too. The font is specified as 'fontname/size',
  311.             eg 'Topaz/8'.
  312.     -Q
  313.     QUIT
  314.             removes Snap.
  315.  
  316.  
  317.    Some useful raw key codes:
  318.     17 I    seems to become the Amiga standard
  319.     34 V    as in Workbench 2.0
  320.     15 Y    good ol' Emacs
  321.  
  322.  
  323. Workbench Usage
  324.  
  325.   Snap recognizes the following tooltypes:
  326.  
  327.     PRIORITY=NN         Input handler priority
  328.     TEXTQUAL=QQ         Text qualifier
  329.     GFXQUAL=QQ          Graphics qualifier
  330.     INSERTKEY=XX        Insert key
  331.     CWKEY=XX            Control window key
  332.     PREPEND=str         Prepend string
  333.     APPEND=str          Append string
  334.     CHARDELAY=NN        Character delay
  335.     LINEDELAY=NN        Line delay
  336.     CRAWLPTRN=XXXX      Crawl pattern
  337.     XEROX               Xerox mode on
  338.     NOXEROX             Xerox mode off
  339.     EARLYPATCH          Early patch on
  340.     NOEARLYPATCH        Early patch off
  341.     STARTUNIT=NN        Starting unit
  342.     TRUEUNDERSCORE      True underscores
  343.     FAKEUNDERSCORE      Fake underscores
  344.     JOINLONG            Join long lines
  345.     NOJOINLONG          Don't join long lines
  346.     SIMPLEREFRESH       Simple refresh
  347.     SMARTREFRESH        Smart refresh
  348.     PLANEMASK=XX        Plane mask
  349.     CACHESIZE=NN        Cache size
  350.     BADCHAR=str         Bad character
  351.     ALTFONT=font        Alternate font
  352.  
  353.    To change the Workbench tooltypes, select the Snap icon and
  354.    choose 'Information' (for Workbench 2.0) or 'Info' (for
  355.    Workbench 1.3).
  356.  
  357.    Workbench 1.2/1.3 users must include an '=' in a tooltype,
  358.    eg 'JOINLONG' must be specified as 'JOINLONG='
  359.  
  360. Modified Inserts
  361.  
  362.    Modified insert means that extra characters are added in front of
  363.    and after each line as it is inserted. The characters in front
  364.    are set via the -P/PREPEND command line argument, the characters
  365.    after via the -A/APPEND command line argument.
  366.    These strings can also be set from ARexx using the commands
  367.    'PREPEND newstring' and
  368.    'APPEND newstring'.
  369.    These commands should be addressed to Snap using the ARexx command
  370.    'ADDRESS SNAP'.
  371.    The old string is returned in the RESULT variable, provided that
  372.    'OPTIONS RESULTS' is given.
  373.    If no newstring is given then no change is made.
  374.    A small example:
  375.  
  376.     /* Change PREPEND and APPEND strings for my mail answering program */
  377.  
  378.     PARSE ARG ReplyTo
  379.  
  380.     OPTIONS RESULTS
  381.  
  382.     ADDRESS SNAP 'prepend' ReplyTo'>'
  383.     oldprepend = RESULT
  384.     ADDRESS SNAP 'append' ""
  385.     oldappend = RESULT
  386.  
  387.  
  388. Delays
  389.  
  390.    The character and line delays may be necessary with some programs
  391.    that can't handle the amount of characters that Snap inserts into
  392.    the input stream. CygnusEd is known to have problems with this.
  393.    TxED and UEdit handles inserted characters very nicely.
  394.    The delay is specified in milliseconds, eg a value of 1000 gives
  395.    a delay of 1 second. A delay of 20 milliseconds will be enough
  396.    to solve the problem for most programs.
  397.  
  398.  
  399. Watch Out For
  400.  
  401.    The Early Patch behavior may cause problems if you use the Left
  402.    Amiga key as the text qualifier together with MachII. What
  403.    happens is that MachII can't activate a new window when you do
  404.    a Left Amiga-M.
  405.    Underscored characters can give problems. Apart from the bug
  406.    mentioned above there's another problem. In some fonts the
  407.    underscore character (_) and an underscored space looks the
  408.    same. Snap tries to be smart and usually gets it right. The
  409.    algorithm used is the following:
  410.    An underscore/underscored space is interpreted as an underscored
  411.    space if the previous character was underscored, otherwise it's
  412.    interpreted as a true underscore character.
  413.  
  414.  
  415. Snapping
  416.  
  417.    Snapping comes in two flavors; characters and graphics.
  418.    Snapping graphics simply means that you can frame an
  419.    area on screen and that area is copied into a window.
  420.    Character snapping can be made in four different ways:
  421.    * rectangular snapping
  422.    * character oriented snapping
  423.    * word oriented snapping
  424.    * line oriented snapping
  425.  
  426.    Rectangular snapping makes it possible to snap a column
  427.    of text. A carriage return is inserted after each row,
  428.    except the last one.
  429.  
  430.    Line oriented snapping is much the same as rectangular
  431.    snapping, except that the width of the rectangle is the
  432.    width of the window.
  433.  
  434.    Character oriented snapping is much harder to explain than
  435.    to use. Character oriented snapping starts at one character,
  436.    extends to the right edge of the window, goes on with
  437.    complete lines, and ends at another character. The select box
  438.    can look like this: ________________________
  439.     __________________|                        |
  440.    |                                           |
  441.    |                 __________________________|
  442.    |________________|
  443.  
  444.    or like this:                      _________
  445.     _____                            |_________|
  446.    |_____|
  447.  
  448.    and of course like this:    ________________
  449.                               |________________|
  450.  
  451.    Word oriented snapping works the same way as character
  452.    oriented, except that you can only extend the selection
  453.    word by word. A word is defined as non-blanks surrounded
  454.    by blanks.
  455.  
  456.  
  457.    Let's define some actions used when controlling snap.
  458.  
  459.    CLICK
  460.       1. Press the mouse button.
  461.       2. Release the mouse button.
  462.  
  463.    MOVE
  464.       1. Move the mouse.
  465.  
  466.    PREPARE_TEXT
  467.       1. If you are using Xerox style snapping, make sure that your
  468.          intended destination window is active.
  469.       2. Press and hold the text qualifier (Default: Left Amiga key).
  470.       3. MOVE to the first character you want to copy.
  471.  
  472.    PREPARE_GFX
  473.       1. Press and hold the graphics qualifier (Default: Right Amiga key).
  474.       2. MOVE to the upper left corner of the area you want to copy
  475.  
  476.    EXTEND
  477.       1. MOVE
  478.       2. (Press and) Release the mouse button.
  479.  
  480.    END
  481.       1. Release the mouse button.
  482.       2. Release the qualifier.
  483.  
  484.    CANCEL
  485.       1. Release the qualifier.
  486.       2. Release the mouse button.
  487.  
  488.  
  489.    Ways to use these actions:
  490.    This is with starting unit FRAME. Selecting starting unit CHAR will
  491.    skip rectangular snapping and take you directly to character oriented
  492.    snapping. To do rectangular snapping you have to click through char,
  493.    word and line oriented back to rectangular snapping.
  494.  
  495.    To do rectangular snapping:
  496.     1. PREPARE_TEXT.
  497.     2. Press the left mouse button.
  498.     3. MOVE.
  499.     4. EXTEND until satisfied.
  500.     5. END or CANCEL.
  501.  
  502.    To do character oriented snapping
  503.     1. PREPARE_TEXT.
  504.     2. CLICK the left mouse button.
  505.     3. EXTEND until satisfied.
  506.     4. END or CANCEL.
  507.  
  508.    To do word oriented snapping
  509.     1. PREPARE_TEXT.
  510.     2. Double-CLICK left mouse button.
  511.     3. EXTEND until satisfied.
  512.     4. END or CANCEL.
  513.  
  514.    To do line oriented snapping
  515.     1. PREPARE_TEXT.
  516.     2. Triple-CLICK left mouse button.
  517.     3. EXTEND until satisfied.
  518.     4. END or CANCEL.
  519.  
  520.    To insert snapped characters (BKSYSBUF "You know ;-)")
  521.     1. PREPARE_TEXT.
  522.     2. CLICK the right mouse button.
  523.    or
  524.     1. Press and hold the left amiga key.
  525.     2. Type the insert key as specified with -i (Default "I").
  526.  
  527.    To insert snapped characters including prepend and append strings
  528.     1. Press and hold the left amiga key and either shift key.
  529.     2. Type the insert key as specified with -i (Default "I").
  530.  
  531.    To abort insertion
  532.     1. CLICK the left mouse button.
  533.  
  534.    To snap graphics
  535.     1. PREPARE_GFX.
  536.     2. Press the left mouse button.
  537.     3. MOVE.
  538.     4. EXTEND until satisfied.
  539.     5. END or CANCEL.
  540.  
  541.    To open the Snap Control Window
  542.     1. Press and hold the left amiga key.
  543.     2. Type the control window key as specified with -w (Default "W").
  544.  
  545.    When snapping text you can go directly from snapping to
  546.    inserting by replacing "END or CANCEL" above with
  547.    "Release left mouse button - CLICK right mouse button".
  548.    If you are using Xerox style snapping, the snapped text
  549.    will be inserted as soon as you END.
  550.    When selecting snapping unit a fourth click takes you
  551.    back to character oriented snapping. Each click steps
  552.    one unit. Note that rectangular snapping only is available
  553.    if you MOVE before you release the mouse button.
  554.  
  555.  
  556. Snapping Characters, Character Coordinates and Caching
  557.  
  558.    You must always start snapping at a character, otherwise
  559.    Snap won't get the coordinates right. This applies to all
  560.    kinds of snapping including line snapping.
  561.    Snap caches the character coordinates for the N last used
  562.    windows, where N is specified by the -C/CACHESIZE parameter.
  563.    When you start snapping in a window Snap checks it's cache
  564.    to see whether you have snapped in this window before.
  565.    If the window is in the cache then Snap first tries to find
  566.    a character at the previous coordinates. If no character is
  567.    found at the cached coordinates then Snap goes through the
  568.    complete lookup process. Of course this is transparent to
  569.    the user, so you don't have to worry about it. The size of
  570.    the cache can be specified by the user and is managed on a
  571.    Least Recently Used basis.
  572.    The caching makes it possible for Snap to get the correct
  573.    character coordinates even if you start snapping on a space,
  574.    provided that you've snapped in that window before.
  575.  
  576.    Trailing blanks are removed on each line when you're snapping
  577.    characters, words or lines, but not when doing rectangular
  578.    snapping.
  579.  
  580.  
  581. Snapping and Saving Graphics
  582.  
  583.    Windows with graphic snaps are always opened on the Workbench
  584.    screen. If you've snapped graphics from a screen with different
  585.    colors then you can switch to the graphic snap's original colors
  586.    by holding down the left mouse button inside the snap window.
  587.    Saving of graphics is done via the Snap Control Window (SCW).
  588.    Below a Snap window's window-to-front and window-to-back gadgets
  589.    is a small gadget that looks like a disk. Clicking this disk
  590.    gadget has different effects according to a two conditions.
  591.  
  592.      SCW        Graphics Window
  593.    not open      not selected     Opens the SCW, selects the Graphics Window
  594.      open        not selected     Selects the Graphics Window.
  595.      open          selected       Saves the contents of the Graphics Window
  596.  
  597.    The Snap Control Window looks something like this:
  598.     _______________________________
  599.    |x|Snap_Control_Window________|||
  600.    | ____      __________________  |
  601.    ||Save| as |Name gadget       | |
  602.    | ~~~~      ~~~~~~~~~~~~~~~~~~  |
  603.    | Transparent color |0~~|       |
  604.    |                    ~~~        |
  605.     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  606.    The Save gadget will be ghosted if no window is selected.
  607.    Clicking the Save gadget will save the contents of the
  608.    selected Graphics Window as an IFF file.
  609.    The Transparent color gadget is used to specify which color
  610.    will be transparent in the saved IFF file.
  611.    The Name gadget is used to specify the name of the IFF file
  612.    to save. The Name gadget is a string gadget if req.library
  613.    isn't available. If req.library is available it will be a
  614.    click-gadget that brings up a Req File Requester.
  615.    Below the disk gadget is a scissors gadget. Clicking this
  616.    gadget saves the snapped graphics in the clipboard.
  617.    Asl.library is used instead of req.library in Workbench 2.0.
  618.  
  619.  
  620. Compiling
  621.  
  622.    A 'makefile' is provided. Depending on which compiler you
  623.    use, remove and insert '#'s.
  624.    I seem to have some problem with the detaching when using
  625.    Lattice. Everything works ok, except that you can't close
  626.    the CLI-window. If anybody solves it, I'd be very grateful
  627.    to know about it.
  628.    The makefile gives you some options when compiling Snap.
  629.    The first choice is whether or not you want graphics
  630.    snapping. This gives a smaller executable better suited
  631.    for floppy users. The second choice is ARexx support.
  632.    The third chioce is whether or not you want to compile
  633.    with suport for req.library.
  634.    When you've made your choices, add and/or remove comment
  635.    characters (#) in front of the appropriate lines, touch
  636.    (setdate) all source files and compile (make).
  637.  
  638.  
  639. Some Things to Remember
  640.  
  641.    a. The text is sent to the active window. Make sure that
  642.       the correct window is active.
  643.    b. Don't interfere when the text is being inserted. Any key
  644.       pressed by you will be inserted in the middle of the text
  645.       being inserted.
  646.    c. Snap begins with an attempt to find the character coordinates.
  647.       Therefore if you begin snapping on a space, Snap will almost
  648.       certainly get the wrong coordinates, unless Snap has cached
  649.       the character coordinates from a previous snap.
  650.    d. To be able to do Xerox style snapping, Snap disables
  651.       ActivateWindow when the text qualifier is held down.
  652.       By doing this Snap makes sure that the destination window
  653.       remains active when you move out of it, even if you are
  654.       using DMouse or another Sun mouse utility.
  655.  
  656.  
  657. Bugs
  658.  
  659.    Of course, what did you think. Well, as far as I know there
  660.    are no explicit bugs. Oh yes, there is one that I don't know
  661.    how to solve. The problem is that some font editors optimize
  662.    the character image data. The result is that two characters
  663.    with the same image (e.g. I and l in some fonts) uses the
  664.    same image data, thereby making it impossible for Snap to
  665.    determine which character was printed in the first place.
  666.    This can be solved by editing the font so that each character
  667.    is unique.
  668.    Oh yes, there are also some problems in the input handler
  669.    state machine. I'll rewrite that in the next version.
  670.  
  671.  
  672. Acknowledgements
  673.  
  674.    Thanks to:
  675.  
  676.    o Amiga-Lorraine for the machine.
  677.    o Radical Eye Software for "minrexx".
  678.    o William Hawes for ARexx, WShell, ConMan, etc.
  679.    o Marc Boucher for his invaluable help with making Snap
  680.      compatible with 2.0. "Help"? Actually, he did most of the work.
  681.    o Björn Knutsson, Dominic Giampaolo, Marc Boucher, Eddy Carroll,
  682.      Ismo Suihko, Kent D. Polk, Jonas Petersson and Loren J Rittle
  683.      for testing.
  684.    o All of you who has sent or will send comments, contributions
  685.      or questions.
  686.  
  687. Improvements
  688.  
  689.    I've been thinking about adding a way for programs to "register"
  690.    their windows with Snap so that Snap can let the program handle
  691.    the snapping by itself. As an example: Snapping an icon as text
  692.    doesn't make much sense, so the program displaying the icon
  693.    could take over and put the name of the file in the clipboard.
  694.    A character-mapped window could also benefit from this.
  695.    Proportional fonts. Sigh. Ok, I'll take a look at it.
  696.    Intuitionized interface. It's coming, it's coming. Hold on.
  697.  
  698.    A version that takes advantage of all the nifty 2.0-stuff will
  699.    be available as soon as I can get hold of some documentation.
  700.  
  701.  
  702. s-mail: Mikael Karlsson
  703.         Lövsättersvägen 10
  704.         S-585 98  LINKÖPING
  705.         SWEDEN
  706.  
  707. e-mail: micke@slaka.sirius.se
  708.         micke@slaka.UUCP
  709.         {mcvax|seismo}!sunic!liuida!slaka!micke
  710.  
  711. Phone:  +46-13 50479
  712.