glenda.party
term% ls -F
term% cat index.txt
SCRIBBLE(2)                   System Calls Manual                  SCRIBBLE(2)



NAME
       scribblealloc, recognize - character recognition

SYNOPSIS
       #include <u.h>
       #include <libc.h>
       #include <draw.h>
       #include <scribble.h>

       Scribble    *scribblealloc(void);
       Rune        recognize(Scribble *);

DESCRIPTION
       The  scribble  library  implements  simple  character recognition.  All
       characters are drawn using a single stroke of the pen (mouse button  1)
       as on a palmtop computer.

       The library is not really intended for standalone use.  Its primary use
       is by the scribble graphical control (see control(2)).

       Scribblealloc allocates and returns an appropriately initialized Scrib‐
       ble structure:

              #define CS_LETTERS          0
              #define CS_DIGITS           1
              #define CS_PUNCTUATION  2

              struct Scribble {
                  /* private state */
                  Point           *pt;
                  int         ppasize;
                  Stroke     ps;
                  Graffiti        *graf;
                  int         capsLock;
                  int         puncShift;
                  int         tmpShift;
                  int         ctrlShift;
                  int         curCharSet;
              };

       This  structure  encodes  the  points making up the stroke to be recog‐
       nized, as well as the character group in which  the  stroke  should  be
       searched.

       There  are  three  such  groups: letters, digits, and punctuation.  The
       current group is encoded in the curCharSet field of the Scribble struc‐
       ture.  Special strokes are recognized to switch between groups.  In ad‐
       dition, the charater recognized is influenced by  mode  parameters  and
       modifies  them.   These are identified by the capsLock, puncShift, tmp‐
       Shift, and ctrlShift fields of the Scribble structure.  When  puncShift
       is  non-zero,  the character is recognized in the punctuation character
       set.  Similarly, when the character recognized is printable  and  ctrl‐
       Shift  is  set,  the associated control character is returned as if the
       control key were depressed, and when the character is a letter and cap‐
       sLock  or  tmpShift  is  set,  the upper-case version is returned.  The
       puncShift and tmpShift flags are turned off once a character  has  been
       recognized; the others are left set.

       The  character to be recognized is encoded as an array of pen_points in
       the ps field.  To allow easy drawing of the stroke as it is drawn,  the
       pt and ppasize fields are available to the application code for storing
       an array of points for a call to poly (see draw(2)).

       Recognize recognizes the character provided in  the  ps  field  of  the
       Scribble  structure;  it returns the rune or zero if nothing was recog‐
       nized.

FILES
       /sys/lib/scribble/classifiers contains the stroke definitions.

SOURCE
       /sys/src/libscribble

       This library is adapted from software reproduced by permission:

       Graffiti.c is  based  on  the  file  Scribble.c  copyrighted  by  Keith
       Packard:

              Copyright © 1999 Keith Packard

       Permission to use, copy, modify, distribute, and sell this software and
       its documentation for any purpose is hereby granted without  fee,  pro‐
       vided  that  the  above  copyright notice appear in all copies and that
       both that copyright notice and this permission notice  appear  in  sup‐
       porting  documentation,  and that the name of Keith Packard not be used
       in advertising or publicity pertaining to distribution of the  software
       without  specific,  written  prior  permission.  Keith Packard makes no
       representations about the suitability of this software for any purpose.
       It is provided "as is" without express or implied warranty.

       Portions of the software Copyright © 1994 by Sun Microsystems Computer
       Company.

       Portions of the software Copyright © 2000 by Compaq Computer  Corpora‐
       tion.

SEE ALSO
       Keyboard and prompter in bitsyload(1), draw(2), control(2)



                                                                   SCRIBBLE(2)