/* * txcommands.h -- * * Declarations for textio command routines. * * ********************************************************************* * * Copyright (C) 1985, 1990 Regents of the University of California. * * * Permission to use, copy, modify, and distribute this * * * software and its documentation for any purpose and without * * * fee is hereby granted, provided that the above copyright * * * notice appear in all copies. The University of California * * * makes no representations about the suitability of this * * * software for any purpose. It is provided "as is" without * * * express or implied warranty. Export of this software outside * * * of the United States of America may require an export license. * * ********************************************************************* * * rcsid $Header: /usr/cvsroot/magic-8.0/textio/txcommands.h,v 1.1.1.1 2008/02/03 20:43:50 tim Exp $ */ #ifndef _TXCOMMANDS_H #define _TXCOMMANDS_H #include "utils/magic.h" #include "utils/geometry.h" /* Structure of one Magic command. All commands are in the same format. * Commands are tagged with the point and window at which the command was * invoked. */ /* The definitions below should be made variable. Especially with the * Tcl/Tk version of magic, it is possible to auto-generate very long * commands such as, for example, "polygon" */ #define TX_MAXARGS 200 #define TX_MAX_CMDLEN 2048 typedef struct { /* A command -- either a button push or * a textual command. */ Point tx_p; /* The location of the pointing device * when this command was invoked. */ int tx_button; /* The event type (button number). * See below. */ int tx_buttonAction; /* The action of the button (if any), such as * TX_BUTTON_UP, DOWN */ int tx_argc; /* The number of textual command words, * including the command itself. 0 means * no textual command. */ char *tx_argv[TX_MAXARGS]; /* An array of pointers to the words (if any) * that make up the command. */ int tx_wid; /* The ID of the window that this command * is destined for. The point 'tx_p' is * in this window's coordinate system. * (See windows.h for window IDs.) */ char tx_argstring[TX_MAX_CMDLEN]; /* The storage used for the command line. * Tx_argv[] points into this. */ } TxCommand; /* Structure of one low-level input event. This can be either a button event * (such as a button down or a button up) or a keyboard event (such as a * character typed. */ typedef struct { Point txe_p; /* The point at which this action took place.*/ int txe_wid; /* The window that the event occured in (see * windows.h for details, may be defaulted to * WIND_UNKNOWN_WINDOW by some low-level * device drivers). */ int txe_button; /* The event type. */ int txe_buttonAction; /* The button action, if a button. */ int txe_ch; /* The character typed, if a character. */ } TxInputEvent; /* Event types (button numbers) in the above structures, carefully chosen so * there is 1 bit per event (as they are used elsewhere in masks). */ #define TX_CHARACTER 0x00 #define TX_NO_BUTTON 0x00 /* for backward compat. only */ #define TX_LEFT_BUTTON 0x01 #define TX_MIDDLE_BUTTON 0x02 #define TX_RIGHT_BUTTON 0x04 #define TX_EXPOSE 0x08 /* graphics commands for separate */ #define TX_CONFIGURE 0x10 /* graphics event loops. */ #define TX_CREATE 0x20 #define TX_BYPASS 0x40 /* Input line is ready, but needs * and event to trigger the callback */ #define TX_EOF 0x80 /* Never leaves this module, it is * filtered out. */ #define TX_BUTTON_4 0x100 /* For scroll wheels and such */ #define TX_BUTTON_5 0x200 /* For scroll wheels and such */ #ifdef MAGIC_WRAPPER extern TxCommand TxCurCommand; #endif /* Button actions for the above structures. */ #define TX_BUTTON_DOWN 0 #define TX_BUTTON_UP 1 #define TX_KEY_DOWN 2 /* procedures to help in making device command routines */ extern TxCommand *TxDeviceStdin(); extern TxCommand *TxButtonMaskToCommand(); extern void TxAddInputDevice(); /* Can read multiple file desc. */ extern void TxAdd1InputDevice(); /* Can read only 1 file desc. */ extern void TxDeleteInputDevice(); extern void TxDelete1InputDevice(); /* Routines to manipulate the current point. Only really used for command * scripts. */ extern void TxSetPoint(); extern int TxGetPoint(); extern void TxClearPoint(); /* Routines to handle command logging. */ extern void TxLogStart(); extern void TxLogStop(); extern void TxLogUpdate(); extern void TxLogSuspend(); extern void TxLogResume(); /* Routines for handling input events. A typical device driver in the * graphics module will get one or more free events via TxNewEvent() and * then put them in the input queue via TxAddEvent(). */ extern TxInputEvent *TxNewEvent(); extern void TxAddEvent(); extern void TxPrintEvent(); extern void TxFreeEvent(); extern void TxReleaseButton(); /* Routines for dealing with commands. Usually only used within this * module, although they may be used elsewhere. */ extern void TxPrintCommand(); extern TxCommand *TxNewCommand(); extern void TxFreeCommand(); extern void TxParseString(); extern void TxDispatch(); extern void TxRebuildCommand(); extern int TxCommandNumber; /* Serial number of current command. */ #ifdef MAGIC_WRAPPER extern int TxTclDispatch(); #endif #endif /* _TXCOMMANDS_H */