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

📄 svgacc.h

📁 MSC或BC开发的SVGA图形开发库(允许使用300x200,640x480,80x600,1024x768等多种模式) 此开发库特别适合嵌入式系统
💻 H
字号:
/* SVGACC Include File for MS C/C++/QuickC and Borland C/C++
 * Copyright 1994 by Stephen L. Balkum and Daniel A. Sill
 * Zephyr Software P.O. Box 7704, Austin, Texas  78713-7704
 */

#ifndef SVGACC_H
#define SVGACC_H

typedef unsigned char byte;

typedef struct {
	char r;
	char g;
	char b;
} RGB;

typedef RGB PaletteData[256];

typedef struct {
	byte hotspotx;
	byte hotspoty;
	byte data[384];
} MouseCursor;

typedef struct {
	byte width;
	byte height;
	byte data[4096];
} Font;

typedef enum {
	NO_ACTION = 0,
	SET,
	XOR,
	OR,
	AND
} PixelMode;

typedef enum {
	UNKNOWN = 0,
	ACUMOS,
	ATI,
	AHEADA,
	AHEADB,
	CHIPSTECH,
	CIRRUS,
	EVEREX,
	GENOA,
	NCR,
	OAKTECH,
	PARADISE,
	REALTEK,
	TRIDENT,
	TSENG3,
	TSENG4,
	VESA,
	VIDEO7,
	AVANCE,
	MXIC,
	PRIMUS
} VGAChipset;

typedef struct {
	unsigned int width;
	unsigned int height;
	byte data[1];
} RasterBlock;

typedef struct {
	int x;
	int y;
} D2Point;

typedef struct {
	int x;
	int y;
	int z;
} D3Point;

typedef struct {
	int eyex;
	int eyey;
	int eyez;
	int scrd;
	int theta;
	int phi;
} ProjParameters;

#ifdef __cplusplus
extern "C" {
#endif

/* Global variables */
extern const int far maxx;
extern const int far maxy;
extern const int far viewx1;
extern const int far viewy1;
extern const int far viewx2;
extern const int far viewy2;

/* 'BLocK' methods to manipulate RasterBlocks on and off the screen */

extern int  far blkget (int x1, int y1, int x2, int y2, RasterBlock far *gfxblk);
extern void far blkput (PixelMode mode, int x, int y, RasterBlock far *gfxblk);
extern void far blkresize (unsigned newxsize, unsigned newysize, RasterBlock far *sourcegfxblk, RasterBlock far *destgfxblk);
extern int  far blkrotate (int ang, int backfill, RasterBlock far *sourcegfxblk, RasterBlock far *destgfxblk);
extern int  far blkrotatesize (int ang, RasterBlock far *sourcegfxblk);

/* 'BYTECOPY' method for fast memory copy */

extern void far bytecopy (void far *src, void far *dst, unsigned long numbytes);

/* '2D' methods to transform D2Points */

extern void far d2rotate (int points, int xorigin, int yorigin, int ang, D2Point far *inary, D2Point far *outary);
extern void far d2scale (int points, int xscale, int yscale, D2Point far *inary, D2Point far *outary);
extern void far d2translate (int points, int xtrans, int ytrans, D2Point far *inary, D2Point far *outary);

/* '3D' methods to transform D3Points */

extern int  far d3project (int points, ProjParameters far *params, D3Point far *inary, D2Point far *outary);
extern void far d3rotate (int points, int xorigin, int yorigin, int zorigin, int zrang, int yrang, int xrang, D3Point far *inary, D3Point far *outary);
extern void far d3scale (int points, int xscale, int yscale, int zscale, D3Point far *inary, D3Point far *outary);
extern void far d3translate (int points, int xtrans, int ytrans, int ztrans, D3Point far *inary, D3Point far *outary);

/* 'DRaW' methods for placing text and graphics primitives on screen */

extern void far drwbox (PixelMode mode, int colr, int x1, int y1, int x2, int y2);
extern void far drwcircle (PixelMode mode, int colr, int centerx, int centery, int radius);
extern void far drwellipse (PixelMode mode, int colr, int centerx, int centery, int radiusx, int radiusy);
extern void far drwfillbox (PixelMode mode, int colr, int x1, int y1, int x2, int y2);
extern void far drwfillcircle (PixelMode mode, int colr, int centerx, int centery, int radius);
extern void far drwfillellipse (PixelMode mode, int colr, int centerx, int centery, int radiusx, int radiusy);
extern void far drwline (PixelMode mode, int colr, int x1, int y1, int x2, int y2);
extern void far drwpoint (PixelMode mode, int colr, int x, int y);
extern void far drwstring (PixelMode mode, int fcolr, int bcolr, const char far *strng, int x, int y);
extern void far drwstringdn (PixelMode mode, int fcolr, int bcolr, const char far *strng, int x, int y);
extern void far drwstringlt (PixelMode mode, int fcolr, int bcolr, const char far *strng, int x, int y);
extern void far drwstringrt (PixelMode mode, int fcolr, int bcolr, const char far *strng, int x, int y);

/* 'FILL' methods for filling various regions on screen with a color */

extern void far fillarea (int xseed, int yseed, int bordercolr, int fillcolr);
extern void far fillcolor (int xseed, int yseed, int oldcolr, int newcolr);
extern void far fillpage (int colr);
extern void far fillscreen (int colr);
extern void far fillview (int colr);

/* 'FONT' methods for setting the current font */

extern void far fontgetinfo (int far *wdth, int far *hght);
extern void far fontset (Font far *font);
extern void far fontsystem (void);

/* 'GET' methods to return information held by library */

extern void far getlaststring (RasterBlock far *strnggfxblk);
extern long far getarccos (long cosvalue);
extern long far getarcsin (long sinvalue);
extern long far getarctan (long tanvalue);
extern long far getcos (long angle);
extern int  far getpoint (int x, int y);
extern long far getsin (long angle);
extern long far gettan (long angle);

/* 'GIF' methods to read / write GIF files and place images on screen */

extern int  far gifgetinfo (const char far *name, int far *gifxsize, int far *gifysize, int far *numcolors, RGB far *pal);
extern int  far gifmake (int x1, int y1, int x2, int y2, const char far *name);
extern int  far gifput (PixelMode mode, int xloc, int yloc, const char far *name);

/* 'JOYSTICK' method to read joysticks' status */

extern void far joystickinfo (int far *jax, int far *jay, int far *jabuts, int far *jbx, int far *jby, int far *jbbuts);

/* 'MOUSE' methods to interact with mouse driver */

extern void far mousebutpress (int reqbut, int far *xloc, int far *yloc, int far *num, int far *mbuts);
extern void far mousebutrelease (int reqbut, int far *xloc, int far *yloc, int far *num, int far *mbuts);
extern void far mousecursordefault (void);
extern void far mousecursorset (MouseCursor far *mousecursor);
extern void far mouseenter (void);
extern void far mouseexit (void);
extern void far mousehide (void);
extern void far mouseinfo (int far *drvmajorver, int far *drvminorver, int far *mousetype, int far *irqnumber);
extern void far mouselocset (int xloc, int yloc);
extern void far mouserangeset (int x1, int y1, int x2, int y2);
extern void far mouserestorestate (byte far *mousebuf);
extern void far mousesavestate (byte far *mousebuf);
extern void far mousesensset (int xsens, int ysens, int dblspdthresh);
extern void far mouseshow (void);
extern void far mousestatus (int far *x, int far *y, int far *mbuts);
extern int  far mousestoragesize (void);

extern void far overscanset (int colr);

/* 'PAGE' methods to control paging abilities */

extern int  far pageactive (int page);
extern int  far pagedisplay (int x, int y, int page);

/* 'PALette' methods to manipulate and activate palettes */

extern void far palchgauto (RGB far *pal, RGB far *newpal, int firstcolr, int lastcolr, int speed);
extern void far palchgstep (RGB far *pal, RGB far *newpal, int firstcolr, int lastcolr, int percent);
extern void far palcopy (RGB far *srcpal, RGB far *destpal, int firstcolr, int lastcolr);
extern void far paldimstep (RGB far *pal, int firstcolr, int lastcolr, int percent);
extern void far palget (RGB far *pal, int firstcolr, int lastcolr);
extern void far palioauto (RGB far *pal, int firstcolr, int lastcolr, int speed);
extern void far palrotate (RGB far *pal, int firstcolr, int lastcolr, int shift);
extern void far palset (RGB far *pal, int firstcolr, int lastcolr);

/* 'RESolution' methods to set various video modes */

extern int  far res320 (void);
extern int  far res640 (void);
extern int  far res640l (void);
extern int  far res800 (void);
extern int  far res1024 (void);
extern int  far restext (void);

/* 'SCROLL' methods for scrolling various sections of the screen */

extern void far scrolldn (int x1, int y1, int x2, int y2, int num, int colr);
extern void far scrolllt (int x1, int y1, int x2, int y2, int num, int colr);
extern void far scrollrt (int x1, int y1, int x2, int y2, int num, int colr);
extern void far scrollup (int x1, int y1, int x2, int y2, int num, int colr);

/* 'Sync' DELAY method */

extern void far sdelay (int count);

/* 'SET' methods to adjust library internal variables */

extern void far setcard (VGAChipset chip, int mem);
extern void far setview (int x1, int y1, int x2, int y2);

/* 'SPRITE' methods for manipulating sprites on and off screen */

extern int  far spritecolldetect (int transcolr, int x1, int y1, int x2, int y2, RasterBlock far *sprite1, RasterBlock far *sprite2);
extern void far spritegap (int transcolr, int x, int y, RasterBlock far *sprite, RasterBlock far *spritebkgnd);
extern void far spriteget (int transcolr, int x, int y, RasterBlock far *sprite, RasterBlock far *spritebkgnd);
extern void far spriteput (PixelMode mode, int transcolr, int x, int y, RasterBlock far *sprite);

/* 'VIDEO' methods to interact with video mode and display */

extern int  far videomodeget (void);
extern void far videomodeset (int videomode);
extern void far videooff (void);
extern void far videoon (void);

/* 'Identification' methods to discover WHICH hardware is available */

extern int  far whichcpu (void);
extern int  far whichjoystick (void);
extern int  far whichmem (void);
extern int  far whichmouse (void);
extern VGAChipset far whichvga (void);
extern int  far whichxms (unsigned int far *xmskbytesavail, unsigned int far *xmshandlesavail);

/* 'XMS' methods to store and retrieve extended memory */

extern int  far xmsallocate (unsigned int reqkbytes);
extern int  far xmscopy (int xmssrchandle, long srcoffset, int xmsdesthandle, long destoffset, unsigned long count);
extern int  far xmserror (void);
extern int  far xmsfree (int xmshandle);
extern int  far xmsget (int xmshandle, long offset, void far *destmem, unsigned long count);
extern int  far xmsput (void far *sourcemem, int xmshandle, long offset, unsigned long count);

#ifdef __cplusplus
}
#endif

#endif
/* SVGACC_H */

⌨️ 快捷键说明

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