magic/graphics/grNull.c

289 lines
6.2 KiB
C

/*
* grNull.c -
*
* *********************************************************************
* * 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. *
* *********************************************************************
*
* This file contains dummy functions for use when there is no
* graphics display.
*/
#include <stdio.h>
#include <string.h>
#include "utils/magsgtty.h"
#include "utils/magic.h"
#include "utils/geometry.h"
#include "windows/windows.h"
#include "graphics/graphics.h"
#include "graphics/graphicsInt.h"
#include "textio/textio.h"
#include "textio/txcommands.h"
#include "utils/signals.h"
#ifndef lint
static char rcsid[] __attribute__ ((unused)) = "$Header: /usr/cvsroot/magic-8.0/graphics/grNull.c,v 1.1.1.1 2008/02/03 20:43:50 tim Exp $";
#endif /* not lint */
/* Forward declarations */
extern bool nullReturnFalse();
extern void nullDoNothing();
extern int nullReturnZero();
/*
*---------------------------------------------------------
*
* nullDoNothing --
*
* This procedure does nothing.
*
* Results:
* None.
*
* Side Effects:
* None.
*
*---------------------------------------------------------
*/
void
nullDoNothing()
{
}
/*
*---------------------------------------------------------
*
* nullReturnFalse --
*
* This procedure does nothing, and returns FALSE.
*
* Results:
* Returns FALSE always.
*
* Side Effects:
* None.
*
*---------------------------------------------------------
*/
bool
nullReturnFalse()
{
return (FALSE);
}
/*
*---------------------------------------------------------
*
* nullReturnZero --
*
* This procedure does nothing, and returns 0.
*
* Results:
* Returns 0 always.
*
* Side Effects:
* None.
*
*---------------------------------------------------------
*/
int
nullReturnZero()
{
return (0);
}
/*
*---------------------------------------------------------
*
* NullInit --
*
* NullInit doesn't do much of anything.
*
* Results:
* TRUE always.
*
* Side Effects:
* None.
*
*---------------------------------------------------------
*/
bool
NullInit()
{
return TRUE;
}
/*
* ----------------------------------------------------------------------------
*
* NullTextSize --
*
* Determine the size of a text string.
*
* Results:
* None.
*
* Side effects:
* A rectangle is filled in that is the size of the text in pixels.
* The origin (0, 0) of this rectangle is located on the baseline
* at the far left side of the string.
*
* ----------------------------------------------------------------------------
*/
void
NullTextSize(text, size, r)
char *text;
int size;
Rect *r;
{
ASSERT(r != NULL, "nullTextSize");
r->r_xbot = 0;
r->r_xtop = strlen(text);
r->r_ybot = 0;
r->r_ytop = 1;
}
/*
* ----------------------------------------------------------------------------
*
* nullStdin --
*
* Handle the stdin device for the NULL driver.
*
* Results:
* None.
*
* Side Effects:
* Adds events to the event queue.
*
* ----------------------------------------------------------------------------
*/
void
nullStdin(fd, cdata)
int fd;
ClientData cdata;
{
int ch;
TxInputEvent *event;
ch = getc(stdin);
event = TxNewEvent();
if (ch == EOF)
event->txe_button = TX_EOF;
else
event->txe_button = TX_NO_BUTTON;
event->txe_buttonAction = 0;
event->txe_ch = ch;
event->txe_wid = WIND_UNKNOWN_WINDOW;
event->txe_p.p_x = GR_CURSOR_X;
event->txe_p.p_y = GR_CURSOR_Y;
TxAddEvent(event);
}
/*
* ----------------------------------------------------------------------------
*
* NullBitBlt --
*
* A no-op BitBlt operation for devices that don't have one (such as
* the NULL device).
*
* Results:
* None.
*
* Side Effects:
* None, for sure, for sure.
*
* ----------------------------------------------------------------------------
*/
void
NullBitBlt()
{
}
/*
*---------------------------------------------------------
*
* nullSetDisplay --
*
* This routine sets the appropriate parameters so that
* Magic will work with the particular display type.
*
* Results:
* Returns TRUE.
*
* Side Effects:
* Depends on the display type.
*
*---------------------------------------------------------
*/
bool
nullSetDisplay(dispType, outFileName, mouseFileName)
char *dispType;
char *outFileName;
char *mouseFileName;
{
TxPrintf("Using NULL graphics device.\n");
TxAdd1InputDevice(fileno(stdin), nullStdin, (ClientData) NULL);
if (TxStdinIsatty) SigWatchFile(fileno(stdin), "stdin");
/* Set up the procedure values in the indirection table. */
GrLockPtr = grSimpleLock;
GrUnlockPtr = grSimpleUnlock;
GrInitPtr = NullInit;
GrClosePtr = nullDoNothing;
GrSetCMapPtr = nullDoNothing;
GrEnableTabletPtr = nullDoNothing;
GrDisableTabletPtr = nullDoNothing;
GrSetCursorPtr = nullDoNothing;
GrTextSizePtr = NullTextSize;
GrDrawGlyphPtr = nullDoNothing;
GrBitBltPtr = NullBitBlt;
GrReadPixelPtr = nullReturnZero;
GrFlushPtr = nullDoNothing;
/* local indirections */
grSetSPatternPtr = nullDoNothing;
grPutTextPtr = nullDoNothing;
grFontTextPtr = nullDoNothing;
grDefineCursorPtr = nullDoNothing;
grDrawGridPtr = nullReturnFalse;
grDrawLinePtr = nullDoNothing;
grSetWMandCPtr = nullDoNothing;
grFillRectPtr = nullDoNothing;
grSetStipplePtr = nullDoNothing;
grSetLineStylePtr = nullDoNothing;
grSetCharSizePtr = nullDoNothing;
GrScreenRect.r_xtop = 511;
GrScreenRect.r_ytop = 483;
/* Set GrDisplayStatus to force graphics updates to be suspended */
GrDisplayStatus = DISPLAY_SUSPEND;
return TRUE;
}