/*
 *  VSM_LOCATOR                                 (C) Digital Design 1990
 *
 *  INPUT LOCATOR, SAMPLE MODE
 *
 *  Der Grafikcursor wird von einem Interrupt gesteuert. Das heit, das
 *  Programm mu die Bewegung des Cursors nicht koordinieren. Der Anwen-
 *  der kann den Cursor bewegen, auch wenn das Programm gerade mit
 *  Anderem besch„ftigt ist. Diese Funktion nun erm”glicht jederzeit
 *  festzustellen, was sich in der Zwischenzeit getan hat. Der Funktion
 *  wird eine initialisierende Koordinate bergeben. Die Funktion gibt
 *  dann zurck, ob die Koordinaten, also die Position des Grafikcursors,
 *  ge„ndert wurde und ob eine Taste bet„tigt wurde. Die entsprechende
 *  ge„nderte Position und die bet„tigte Taste werden selbstverst„ndlich
 *  auch bermittelt.
 */
#include <gemdefs.h>

int vsm_locator( int handle, int x, int y, int *xout, int *yout, int *term )
{
  ptsin[0] = x; /* initialisierende Position des Grafikcursors          *
                 * (x-Koordinate)                                       */
  ptsin[1] = y; /* initialisierende Position des Grafikcursors          *
                 * (y-Koordinate)                                       */
  VDI( 28, 1, 0, handle );

  *term = intout[0]; /* Funktions-Ende-Taste:                           *
                      * Im Low-Byte dieses Parameters wird der ASCII-   *
                      * Code der Taste eingetragen, die bet„tigt wurde  *
                      * (z.B. RETURN = 13). Spezielle Ende-Tasten sind  *
                      * z.B. die beiden Maus-Kn”pfe oder Tasten eines   *
                      * Grafiktabletts. Der Code dieser Tasten beginnt  *
                      * ab 20h (32). Die linke Taste der Maus hat den   *
                      * Code 20h (32), die rechte 21h (33).             */
  *xout = ptsout[0]; /* neue x-Position                                 */
  *yout = ptsout[1]; /* neue y-Position                                 */
  return (contrl[2] | (contrl[4] << 1)); /* = status:                   *
   * contrl[2]:  1 = Koordinaten sind ge„ndert worden                   *
   *             0 = Koordinaten sind nicht ge„ndert worden             *
   * contrl[4]:  1 = Taste wurde bet„tigt                               *
   *             0 = keine Taste wurde bet„tigt                         */
}
/* siehe auch: İvrq_locatorİVRQ_LOCA.Cİ, İvsin_modeİVSIN_MOD.Cİ */

