⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grafdata.h

📁 nucleus 文件系统,内核和彩色图形系统,在小系统上非常好用
💻 H
📖 第 1 页 / 共 2 页
字号:
/*************************************************************************/
/*                                                                       */
/*        Copyright (c) 1997 Accelerated Technology, Inc.                */
/*                                                                       */
/* PROPRIETARY RIGHTS of Accelerated Technology are involved in the      */
/* subject matter of this material.  All manufacturing, reproduction,    */
/* use, and sales rights pertaining to this subject matter are governed  */
/* by the license agreement.  The recipient of this software implicitly  */
/* accepts the terms of the license.                                     */
/*                                                                       */
/*************************************************************************/

/*************************************************************************/
/*                                                                       */
/* FILE NAME                                            VERSION          */
/*                                                                       */
/*      grafdata.h                                       1.9             */
/*                                                                       */
/* COMPONENT                                                             */
/*                                                                       */
/*      All                                                              */
/*                                                                       */
/* DESCRIPTION                                                           */
/*                                                                       */
/*      This file is the MetaWINDOW Global Graphics Data Area.           */
/*                                                                       */
/* AUTHOR                                                                */
/*                                                                       */
/*      Robert G. Burrill, Accelerated Technology, Inc.                  */
/*                                                                       */
/* DATA STRUCTURES                                                       */
/*                                                                       */
/*      None                                                             */
/*                                                                       */
/* FUNCTIONS                                                             */
/*                                                                       */
/*      None                                                             */
/*                                                                       */
/* DEPENDENCIES                                                          */
/*                                                                       */
/* HISTORY                                                               */
/*                                                                       */
/*		   NAME            DATE                    REMARKS               */
/*                                                                       */
/*                                                                       */
/*************************************************************************/

/*  Start of graphics data block  */

/* ========== Tracking Globals ==========

The ISR switches to this data area as part of it's service. Our
cursor routine typically requires more stack than the OS provides, so
this special data area is for our tracking ISR. Guessing at the size
is a little problematic, because those nasty mouse drivers can do all
kinds of nutty stuff and use stack like crazy. By placing this data
area at the top of our data space, a variety of these nasty ISR/protected
mode/stack problems can be caught, as a segment violation will occur
should a stack overflow arise.
*/
#include "Nu_math.h"
			      
extern short ISR_STACK[512];	/* Local Tracking ISR stack */

extern struct _mouseRcd *curTrack;	/* current tracking input device */

/* ========== Generic Globals =================== */
extern short LocX;				/* Current global X location */
extern short LocY;				/* Current global Y location */
extern rect ViewClip;			/* "Global" Clipping Limit Rectangle */
extern DEFN localXconst;		/* Local co-ordinate conversion constants */
extern DEFN localYconst;
extern DEFN localXinvert;
extern DEFN localYinvert;

extern short virtXnumer;		/* Virtual co-ordinate conversion factors */
extern short virtYnumer;
extern short virtXdenom;
extern short virtYdenom;
extern short virtXround;
extern short virtYround;
extern DEFN virtXconst;
extern DEFN virtYconst;
extern short globalLevel;		/* Global co-ordinate indicator ( < 0 = global) */

extern short grafError;		/* Error post code */
extern short hugeSelAdd;		/* 186/286 selector addition value */
extern short biosSeg;			/* selector/segment to fetch BIOS data */

		 #ifdef CPU386
extern short dllSeg;			/* data segment that the dll runs is */
extern short dllFill;
extern long dllFixup;			/* offset to add to address to = dll address */
		 #endif
		
extern short gFlags;			/* Graphic flags */

/* 'gFlags' Bit Flags */
#define gfGrafInit	0x01	/* InitGrafix - notInitialized(0)/Initialized(1) */
#define gfTmrInit	0x02	/* Hi-res timer - notInitialized(0)/Initialized(1) */
#define gfRgnOpen	0x04	/* Region Capture  - not open (0) / open (1) */	
#define gfTrkEnab	0x08	/* Tracking	- notEnabled(0)/Enabled(1) */
#define gfCurInit	0x10	/* Cursor - notInitialized(0)/Initialized(1) */
#define gfCurPHid	0x20	/* Cursor - hidden via protect rectangle(1) */
#define gfEvtInit	0x40	/* Event - notInitialized(0)/Initialized(1) */
#define gfEvtEnab	0x80	/* Event - notEnabled(0)/Enabled(1) */

/* ========== Global grafPort and grafMap Variables =================== */

extern struct _metaPort *thePort;	/* pointer to current grafPort */
extern struct _metaPort grafPort;	/* Shadow copy of current grafPort */
extern struct _metaPort defPort;	/* Default grafPort */
extern struct _grafMap defGrafMap;	/* Default grafMap */

/* ========== Global Blit Record and Blit List =================== */

extern struct _blitRcd grafBlit;	/* Default blit record */
typedef struct _grafBlist{	/* Default blit list */
	short Xmin;
	short Ymin;
	short Xmax;
	short Ymax;
	short skipStat;
	short temp1;
	short temp2;
	short temp3;
} grafBlistDef;
extern struct _grafBlist grafBlist;

/* ==================== Indirect Vectors ============ */
#define IDVStart QueueIDV	/* start of indirect vectors */
extern long QueueIDV;			/* event queue posting code */
extern void (*TrackIDV)();		/* cursor tracking code */
extern void (*MovCursIDV)();	/* cursor update (resume) */

extern long lineExecIDV;		/* vector to current line routine */
extern long lineThinIDV;		/* vector to thin line primitive */
extern long lineDashIDV;		/* vector to dashed line routine (thin or square pen) */	
extern long linePattIDV;		/* vector to patterned thin, square any thin or square pen */
extern long lineOvalIDV;		/* vector to oval pen (patterned, no dash though!) */
extern long lineOvPolyIDV;		/* vector to oval pen polyline */
extern long lineSqPolyIDV;		/* vector to square pen polyline */

extern void (*txtAlnIDV)();	/* vector to current aligned text func */
extern void (*txtDrwIDV)();	/* vector to current plain text func */
extern void (*txtAPPIDV)();	/* vector for text align pre-processor */
extern void (*txtStrokeIDV)();	/* vector for stroked draw function	*/

extern void (*stpEventIDV)();	/* vector for StopEvent */
extern int (*stpMouseIDV)();	/* vector for StopMouse */
extern long IDVEnd;			/* end of indirect vectors */

/* ==================== Line Style Lookup Table ============ */
/* this relates pen flags to a line style IDV */
extern long *lineStyleTbl[16];	/* 0 = thin, 1 = dash, 2 = patterned, 3 = oval */

/* this macro uses the pen flags to set the current line style vector */
#define SETLINESTYLE(pen_flags) \
	(lineExecIDV = *lineStyleTbl[(pen_flags & 0xF)])

/* ==================== Device Procedure List space ============ */
#include "metaproc.h"


/* ======= Shadow of EGA palette hardware ======== */
extern byte EGApaldata[16];		/* 16 byte entries */

/* ========== Input Device Globals ========== */
extern struct _mouseRcd *curInput;	/* current input device	*/
extern struct _mouseRcd defMouse;	/* default input record */
extern long driverMouse;			/* pointer to mouse record for our internal drivers */
extern long msSerialMouse;
extern long moSerialMouse;
extern long joyMouse;

/* ========== Event System Globals ========== */
extern short eventMask;			/* system event mask */
extern short eventMaskFill;		/* address filler */
extern struct _mouseRcd defKBrd;	/* default keyboard input record */

		/* Event Queue */

extern DEFN q_Size;			/* event queue size in elements */
extern long q_Start;			/* pointer to top of event queue */
extern long q_End;				/* pointer to end of event queue */
extern DEFN q_Head;			/* offset to current last queue entry */
extern DEFN q_Tail;			/* offset to current first queue entry */


/* ========== Hi Resolution Timer Globals ========== */
extern long tmrTimeBase;			/* user time base setting */

/* ========== Global Dash Lists ========== */

extern byte dashList1[8];
extern byte dashList2[8];
extern byte dashList3[8];
extern byte dashList4[8];
extern byte dashList5[8];
extern byte dashList6[8];
extern byte dashList7[8];

extern dashRcd DashTable[8];	/* Current dash list */

extern dashRcd DefDashTable[8];	/* Default dashlist */

/* ==================== Cursor Globals ======================= */

#define maxBytePix	2	 	/* max bytes per pixel */

#define maxCurSize	32 		/* max cursor size in pixels */

/*  Structure to define "image" header values */
typedef struct _ImageHeader
{
	short imWidth;				/* Image pixel width (X)				*/
	short imHeight;				/* Image pixel height (Y)				*/
	byte imAlign;				/* Image alignment						*/
	byte imFlags;				/* Image flags							*/
	short imBytes;				/* Image bytes per row					*/
	short imBits;				/* Image bits per pixel					*/
	short imPlanes;				/* Image planes per pixel				*/
} ImageHeader;

typedef struct _IMAGSTRUCT
{
	short imWidth;				/* Image pixel width (X)				*/
	short imHeight;				/* Image pixel height (Y)				*/
	byte imAlign;				/* Image alignment						*/
	byte imFlags;				/* Image flags							*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -