|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ T e ┃
Length: 8358 (0x20a6) Types: TextFile Names: »editorUtil.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─ ⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z« └─⟦2109abc41⟧ └─ ⟦this⟧ »./X.V10R4/Toolkit/Xr/src/Xrlib/Editor/editorUtil.c«
/* * $Source: /u1/Xr/src/Xrlib/Editor/RCS/editorUtil.c,v $ * $Header: editorUtil.c,v 1.1 86/12/17 09:06:22 swick Exp $ */ #ifndef lint static char *rcsid_editorUtil_c = "$Header: editorUtil.c,v 1.1 86/12/17 09:06:22 swick Exp $"; #endif lint #include <Xr/xr-copyright.h> /* $Header: editorUtil.c,v 1.1 86/12/17 09:06:22 swick Exp $ */ /* Copyright 1986, Hewlett-Packard Company */ /* Copyright 1986, Massachussetts Institute of Technology */ static char rcsid[] = "$Header: editorUtil.c,v 1.1 86/12/17 09:06:22 swick Exp $"; /*************************************<+>************************************* ***************************************************************************** ** ** File: editorUtil.c ** ** Project: X-ray Toolbox ** ** Description: ** This file contains several general purpose utility routines ** which may be used by all field editors. The utility routines ** include the following: ** ** _XrInitEditorStruct() ** _XrCatchableKey() * _XrMakeInvisible() ** ** ** ------------------------ MODIFICATION RECORD ------------------------ * * $Log: editorUtil.c,v $ * Revision 1.1 86/12/17 09:06:22 swick * Initial revision * * Revision 7.0 86/11/13 08:29:51 08:29:51 fred () * Final QA Release * * Revision 6.0 86/11/10 15:38:22 15:38:22 fred () * QA #2 release * * Revision 5.1 86/11/07 14:25:21 14:25:21 fred () * Added new copyright message. * * Revision 5.0 86/10/28 08:39:06 08:39:06 fred () * QA #1.1 release * * Revision 4.0 86/10/20 12:15:54 12:15:54 fred () * QA #1 release * * Revision 3.1 86/10/16 09:23:18 09:23:18 fred () * Performance enhanced: added use of register variables. * * Revision 3.0 86/10/02 16:04:21 16:04:21 fred () * Alpha release set to 3.0 * * Revision 2.2 86/09/19 07:14:20 07:14:20 fred () * Enlarged graphics context changeList structure. * * Revision 2.1 86/09/16 11:18:25 11:18:25 fred () * Filled in the procedure headers. * * Revision 2.0 86/09/16 08:14:25 08:14:25 fred () * Updated _XrCatchableKey() to process an XEvent instead of an xrEvent. * * Revision 1.1 86/09/03 13:59:10 13:59:10 fred () * Initial revision * * ***************************************************************************** *************************************<+>*************************************/ #include <X/Xlib.h> #include <Xr/defs.h> #include <Xr/types.h> \f /*************************************<->************************************* * * _XrInitEditorStruct (editorStructPtr, editorInfoPtr, editorDataPtr, * editorFunct) * * xrEditor * editorStructPtr; * xrEditorTemplate * editorInfoPtr; * char * editorDataPtr; * xrEditor * (*editorFunct)(); * * Description: * ----------- * This routine is invoked by every field editor, as part of its * MSG_NEW handling. It will fill in the following fields of the * editor instance structure pointed by the 'editorStructPtr' parameter: * * editorWindowId, editorFunct, editorState, editorREct, editorData * * * Inputs: * ------ * editorStructPtr = Points to the empty editor instance structure. * * editorInfoPtr = Points to an editor's 'info' structure; most of the * info which will be copied into the editor instance * structure is obtained from this 'info' structure. * * editorDataPtr = Points to the new editor instance's 'data' structure. * * editorFunct = This is a pointer to the handler routine associated * with the editor instance being created. * * Outputs: * ------- * The editor structure pointed to by 'editorStructPtr' is filled. * * Procedures Called * ----------------- * *************************************<->***********************************/ _XrInitEditorStruct (editorStructPtr, editorInfoPtr, editorDataPtr, editorFunct) register xrEditor * editorStructPtr; register xrEditorTemplate * editorInfoPtr; char * editorDataPtr; xrEditor * (*editorFunct)(); { editorStructPtr->editorWindowId = editorInfoPtr->editorWindowId; editorStructPtr->editorFunct = editorFunct; editorStructPtr->editorState = editorInfoPtr->editorState; XrCopyRect (&editorInfoPtr->editorRect, &editorStructPtr->editorRect); editorStructPtr->editorData = editorDataPtr; } \f /*************************************<->************************************* * * _XrCatchableKey (editorStructPtr, eventPtr) * * xrEditor * editorStructPtr; * XButtonEvent * eventPtr; * * Description: * ----------- * This routine takes an X button event, and determines whether * the specified field editor instance should process it. If the * location of the button event was within the editor's rectangle, * and if the editor was SENSITIVE and VISIBLE, then it will be * allowed to process the event; otherwise, it should ignore it. * * * Inputs: * ------ * editorStructPtr = Points to an editor instance structure, indicating * which editor instance is checking the input event. * * eventPtr = This is a pointer to an X button event. * * Outputs: * ------- * If the field editor should process the event, then a value of * TRUE is returned; otherwise, FALSE is returned. * * Procedures Called * ----------------- * XrSetPt() [calc.c] * XrPtInRect() [calc.c] * *************************************<->***********************************/ _XrCatchableKey (editorStructPtr, eventPtr) register xrEditor * editorStructPtr; register XButtonEvent * eventPtr; { POINT selectPt; if ((editorStructPtr == NULL) || (eventPtr == NULL) || (editorStructPtr->editorState & (XrSENSITIVE | XrVISIBLE)) != (XrSENSITIVE | XrVISIBLE)) return (FALSE); XrSetPt (&selectPt, eventPtr->x, eventPtr->y); if (! XrPtInRect (&selectPt, &editorStructPtr->editorRect)) return (FALSE); return (TRUE); } \f /*************************************<->************************************* * * _XrMakeInvisible (windowId, rectPtr, makeGCFlag) * * Window windowId; * RECTANGLE * rectPtr; * INT8 makeGCFlag; * * Description: * ----------- * If the 'makeGCFlag' parameter is set to TRUE, then this routine will * first create a graphics context which is set to do a tile fill, * using the background tile for the specified window; if 'makeGCFlag' * is set to FALSE, then it will assume that the application has * already set up the graphics context itself (in xrEditorGC8). * Then it will fill the rectangular region defined by the 'rectPtr' * parameter, using this graphics context. This has the effect of * 'erasing' anything in the window which reside in that rectangular * region. * * * * Inputs: * ------ * windowId = This indicates the window in which the tile fill is to * occur. * * rectPtr = This defines the region which is to be tile filled. * * makeGCFlag = This signals whether this routine needs to construct * a graphics context. * * Outputs: * ------- * * Procedures Called * ----------------- * XrInput() [input.c] * _XrCopyGC() [gcUtil.c] * _XrChangeGC() [gcUtil.c] * _XrFillRectangle() [rectUtil.c] * *************************************<->***********************************/ _XrMakeInvisible (windowId, rectPtr, makeGCFlag) Window windowId; register RECTANGLE * rectPtr; INT8 makeGCFlag; { if (makeGCFlag) { xrWindowData windowData; INT32 changeList[21]; INT32 changeMask; XrInput (windowId, MSG_GETWINDOWDATA, &windowData); _XrCopyGC (xrDefaultGC, xrEditorGC8); changeList[XrFILLSTYLEVAL] = Tiled; changeList[XrTILEVAL] = windowData.backTile; changeMask = (XrFILLSTYLE | XrTILE); _XrChangeGC (xrEditorGC8, changeMask, changeList); } _XrFillRectangle (windowId, xrEditorGC8, rectPtr); }