604 lines
19 KiB
C
604 lines
19 KiB
C
|
/* VGAlib version 1.2 - (c) 1993 Tommy Frandsen */
|
||
|
/* */
|
||
|
/* This library is free software; you can redistribute it and/or */
|
||
|
/* modify it without any restrictions. This library is distributed */
|
||
|
/* in the hope that it will be useful, but without any warranty. */
|
||
|
|
||
|
/* Extended for svgalib by Harm Hanemaayer and Hartmut Schirmer */
|
||
|
|
||
|
#ifndef VGA_H
|
||
|
#define VGA_H
|
||
|
|
||
|
#include <sys/types.h>
|
||
|
#include <sys/time.h>
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C"
|
||
|
{
|
||
|
#endif
|
||
|
|
||
|
#define SVGALIB_VER 0x010922
|
||
|
|
||
|
#define TEXT 0 /* Compatible with VGAlib v1.2 */
|
||
|
#define G320x200x16 1
|
||
|
#define G640x200x16 2
|
||
|
#define G640x350x16 3
|
||
|
#define G640x480x16 4
|
||
|
#define G320x200x256 5
|
||
|
#define G320x240x256 6
|
||
|
#define G320x400x256 7
|
||
|
#define G360x480x256 8
|
||
|
#define G640x480x2 9
|
||
|
|
||
|
#define G640x480x256 10
|
||
|
#define G800x600x256 11
|
||
|
#define G1024x768x256 12
|
||
|
|
||
|
#define G1280x1024x256 13 /* Additional modes. */
|
||
|
|
||
|
#define G320x200x32K 14
|
||
|
#define G320x200x64K 15
|
||
|
#define G320x200x16M 16
|
||
|
#define G640x480x32K 17
|
||
|
#define G640x480x64K 18
|
||
|
#define G640x480x16M 19
|
||
|
#define G800x600x32K 20
|
||
|
#define G800x600x64K 21
|
||
|
#define G800x600x16M 22
|
||
|
#define G1024x768x32K 23
|
||
|
#define G1024x768x64K 24
|
||
|
#define G1024x768x16M 25
|
||
|
#define G1280x1024x32K 26
|
||
|
#define G1280x1024x64K 27
|
||
|
#define G1280x1024x16M 28
|
||
|
|
||
|
#define G800x600x16 29
|
||
|
#define G1024x768x16 30
|
||
|
#define G1280x1024x16 31
|
||
|
|
||
|
#define G720x348x2 32 /* Hercules emulation mode */
|
||
|
|
||
|
#define G320x200x16M32 33 /* 32-bit per pixel modes. */
|
||
|
#define G640x480x16M32 34
|
||
|
#define G800x600x16M32 35
|
||
|
#define G1024x768x16M32 36
|
||
|
#define G1280x1024x16M32 37
|
||
|
|
||
|
/* additional resolutions */
|
||
|
#define G1152x864x16 38
|
||
|
#define G1152x864x256 39
|
||
|
#define G1152x864x32K 40
|
||
|
#define G1152x864x64K 41
|
||
|
#define G1152x864x16M 42
|
||
|
#define G1152x864x16M32 43
|
||
|
|
||
|
#define G1600x1200x16 44
|
||
|
#define G1600x1200x256 45
|
||
|
#define G1600x1200x32K 46
|
||
|
#define G1600x1200x64K 47
|
||
|
#define G1600x1200x16M 48
|
||
|
#define G1600x1200x16M32 49
|
||
|
|
||
|
#define G320x240x256V 50
|
||
|
#define G320x240x32K 51
|
||
|
#define G320x240x64K 52
|
||
|
#define G320x240x16M 53
|
||
|
#define G320x240x16M32 54
|
||
|
|
||
|
#define G400x300x256 55
|
||
|
#define G400x300x32K 56
|
||
|
#define G400x300x64K 57
|
||
|
#define G400x300x16M 58
|
||
|
#define G400x300x16M32 59
|
||
|
|
||
|
#define G512x384x256 60
|
||
|
#define G512x384x32K 61
|
||
|
#define G512x384x64K 62
|
||
|
#define G512x384x16M 63
|
||
|
#define G512x384x16M32 64
|
||
|
|
||
|
#define G960x720x256 65
|
||
|
#define G960x720x32K 66
|
||
|
#define G960x720x64K 67
|
||
|
#define G960x720x16M 68
|
||
|
#define G960x720x16M32 69
|
||
|
|
||
|
#define G1920x1440x256 70
|
||
|
#define G1920x1440x32K 71
|
||
|
#define G1920x1440x64K 72
|
||
|
#define G1920x1440x16M 73
|
||
|
#define G1920x1440x16M32 74
|
||
|
|
||
|
/* The following modes have been introduced by SciTech Display Doctor */
|
||
|
|
||
|
#define G320x400x256V 75
|
||
|
#define G320x400x32K 76
|
||
|
#define G320x400x64K 77
|
||
|
#define G320x400x16M 78
|
||
|
#define G320x400x16M32 79
|
||
|
|
||
|
#define G640x400x256 80
|
||
|
#define G640x400x32K 81
|
||
|
#define G640x400x64K 82
|
||
|
#define G640x400x16M 83
|
||
|
#define G640x400x16M32 84
|
||
|
|
||
|
#define G320x480x256 85
|
||
|
#define G320x480x32K 86
|
||
|
#define G320x480x64K 87
|
||
|
#define G320x480x16M 88
|
||
|
#define G320x480x16M32 89
|
||
|
|
||
|
#define G720x540x256 90
|
||
|
#define G720x540x32K 91
|
||
|
#define G720x540x64K 92
|
||
|
#define G720x540x16M 93
|
||
|
#define G720x540x16M32 94
|
||
|
|
||
|
#define G848x480x256 95
|
||
|
#define G848x480x32K 96
|
||
|
#define G848x480x64K 97
|
||
|
#define G848x480x16M 98
|
||
|
#define G848x480x16M32 99
|
||
|
|
||
|
#define G1072x600x256 100
|
||
|
#define G1072x600x32K 101
|
||
|
#define G1072x600x64K 102
|
||
|
#define G1072x600x16M 103
|
||
|
#define G1072x600x16M32 104
|
||
|
|
||
|
#define G1280x720x256 105
|
||
|
#define G1280x720x32K 106
|
||
|
#define G1280x720x64K 107
|
||
|
#define G1280x720x16M 108
|
||
|
#define G1280x720x16M32 109
|
||
|
|
||
|
#define G1360x768x256 110
|
||
|
#define G1360x768x32K 111
|
||
|
#define G1360x768x64K 112
|
||
|
#define G1360x768x16M 113
|
||
|
#define G1360x768x16M32 114
|
||
|
|
||
|
#define G1800x1012x256 115
|
||
|
#define G1800x1012x32K 116
|
||
|
#define G1800x1012x64K 117
|
||
|
#define G1800x1012x16M 118
|
||
|
#define G1800x1012x16M32 119
|
||
|
|
||
|
#define G1920x1080x256 120
|
||
|
#define G1920x1080x32K 121
|
||
|
#define G1920x1080x64K 122
|
||
|
#define G1920x1080x16M 123
|
||
|
#define G1920x1080x16M32 124
|
||
|
|
||
|
#define G2048x1152x256 125
|
||
|
#define G2048x1152x32K 126
|
||
|
#define G2048x1152x64K 127
|
||
|
#define G2048x1152x16M 128
|
||
|
#define G2048x1152x16M32 129
|
||
|
|
||
|
#define G2048x1536x256 130
|
||
|
#define G2048x1536x32K 131
|
||
|
#define G2048x1536x64K 132
|
||
|
#define G2048x1536x16M 133
|
||
|
#define G2048x1536x16M32 134
|
||
|
|
||
|
#define G512x480x256 135
|
||
|
#define G512x480x32K 136
|
||
|
#define G512x480x64K 137
|
||
|
#define G512x480x16M 138
|
||
|
#define G512x480x16M32 139
|
||
|
|
||
|
#define G400x600x256 140
|
||
|
#define G400x600x32K 141
|
||
|
#define G400x600x64K 142
|
||
|
#define G400x600x16M 143
|
||
|
#define G400x600x16M32 144
|
||
|
|
||
|
#define G400x300x256X 145
|
||
|
|
||
|
#define G320x200x256V 146
|
||
|
|
||
|
#define __GLASTMODE G320x200x256V
|
||
|
#define GLASTMODE vga_lastmodenumber()
|
||
|
|
||
|
#define IS_IN_STANDARD_VGA_DRIVER(mode) ( \
|
||
|
((mode) < G640x480x256) || ((mode) == G720x348x2) || \
|
||
|
( ((mode) >= G400x300x256X) && ((mode) <= G400x300x256X) ) )
|
||
|
|
||
|
extern int vga_version;
|
||
|
|
||
|
extern int vga_setmode(int mode);
|
||
|
extern int vga_hasmode(int mode);
|
||
|
extern int vga_setflipchar(int c);
|
||
|
|
||
|
extern int vga_clear(void);
|
||
|
extern int vga_flip(void);
|
||
|
|
||
|
extern int vga_getxdim(void);
|
||
|
extern int vga_getydim(void);
|
||
|
extern int vga_getcolors(void);
|
||
|
|
||
|
extern int vga_setpalette(int index, int red, int green, int blue);
|
||
|
extern int vga_getpalette(int index, int *red, int *green, int *blue);
|
||
|
extern int vga_setpalvec(int start, int num, int *pal);
|
||
|
extern int vga_getpalvec(int start, int num, int *pal);
|
||
|
|
||
|
extern int vga_screenoff(void);
|
||
|
extern int vga_screenon(void);
|
||
|
|
||
|
extern int vga_setcolor(int color);
|
||
|
extern int vga_drawpixel(int x, int y);
|
||
|
extern int vga_drawline(int x1, int y1, int x2, int y2);
|
||
|
extern int vga_drawscanline(int line, unsigned char *colors);
|
||
|
extern int vga_drawscansegment(unsigned char *colors, int x, int y, int length);
|
||
|
extern int vga_getpixel(int x, int y); /* Added. */
|
||
|
extern int vga_getscansegment(unsigned char *colors, int x, int y, int length);
|
||
|
|
||
|
extern int vga_getch(void);
|
||
|
|
||
|
extern int vga_dumpregs(void);
|
||
|
|
||
|
|
||
|
/* Extensions to VGAlib v1.2: */
|
||
|
|
||
|
/* blit flags */
|
||
|
#define HAVE_BITBLIT 1
|
||
|
#define HAVE_FILLBLIT 2
|
||
|
#define HAVE_IMAGEBLIT 4
|
||
|
#define HAVE_HLINELISTBLIT 8
|
||
|
#define HAVE_BLITWAIT 16
|
||
|
|
||
|
/* other flags */
|
||
|
#define HAVE_RWPAGE 1 /* vga_setreadpage() / vga_setwritepage() available */
|
||
|
#define IS_INTERLACED 2 /* mode is interlaced */
|
||
|
#define IS_MODEX 4 /* ModeX style 256 colors */
|
||
|
#define IS_DYNAMICMODE 8 /* Dynamic defined mode */
|
||
|
#define CAPABLE_LINEAR 16 /* Can go to linear addressing mode. */
|
||
|
#define IS_LINEAR 32 /* Linear addressing has been set by vga_setlinearaddressing. */
|
||
|
#define EXT_INFO_AVAILABLE 64 /* Returned modeinfo contains valid extended fields */
|
||
|
#define RGB_MISORDERED 128 /* Mach32 32bpp uses 0BGR instead of BGR0. */
|
||
|
#define HAVE_EXT_SET 256 /* vga_ext_set() available */
|
||
|
#define LINEAR_CAN 512 /* Linear mode can be used (even if not set). */
|
||
|
#define IOCTL_SETDISPLAY 1024 /* The card supports ioctl method for setting display
|
||
|
start at next vertical blank time */
|
||
|
#define LINEAR_USE (IS_LINEAR|LINEAR_CAN)
|
||
|
|
||
|
typedef struct {
|
||
|
int width;
|
||
|
int height;
|
||
|
int bytesperpixel;
|
||
|
int colors;
|
||
|
int linewidth; /* scanline width in bytes */
|
||
|
int maxlogicalwidth; /* maximum logical scanline width */
|
||
|
int startaddressrange; /* changeable bits set */
|
||
|
int maxpixels; /* video memory / bytesperpixel */
|
||
|
int haveblit; /* mask of blit functions available */
|
||
|
int flags; /* other flags */
|
||
|
|
||
|
/* Extended fields: */
|
||
|
|
||
|
int chiptype; /* Chiptype detected */
|
||
|
int memory; /* videomemory in KB */
|
||
|
int linewidth_unit; /* Use only a multiple of this as parameter for set_logicalwidth and
|
||
|
set_displaystart */
|
||
|
char *linear_aperture; /* points to mmap secondary mem aperture of card (NULL if unavailable) */
|
||
|
int aperture_size; /* size of aperture in KB if size>=videomemory. 0 if unavail */
|
||
|
void (*set_aperture_page) (int page);
|
||
|
/* if aperture_size<videomemory select a memory page */
|
||
|
void *extensions; /* points to copy of eeprom for mach32 */
|
||
|
/* depends from actual driver/chiptype.. etc. */
|
||
|
} vga_modeinfo;
|
||
|
|
||
|
typedef struct {
|
||
|
int version;
|
||
|
int size;
|
||
|
int chipset;
|
||
|
long physmem;
|
||
|
long physmemsize; /* Will there be a card with more than 4GB? */
|
||
|
void * linearmem;
|
||
|
} vga_cardinfo;
|
||
|
|
||
|
extern vga_cardinfo *vga_getcardinfo(void);
|
||
|
extern vga_modeinfo *vga_getmodeinfo(int mode);
|
||
|
extern int vga_getdefaultmode(void);
|
||
|
extern int vga_getcurrentmode(void);
|
||
|
extern int vga_getcurrentchipset(void);
|
||
|
extern char *vga_getmodename(int mode);
|
||
|
extern int vga_getmodenumber(char *name);
|
||
|
extern int vga_lastmodenumber(void);
|
||
|
extern int vga_getoptmode(int x, int y, int colors, int bytesperpixel, int c);
|
||
|
|
||
|
extern unsigned char *graph_mem;
|
||
|
extern unsigned char *vga_getgraphmem(void);
|
||
|
|
||
|
extern void vga_setpage(int p);
|
||
|
extern void vga_setreadpage(int p);
|
||
|
extern void vga_setwritepage(int p);
|
||
|
extern void vga_setlogicalwidth(int w);
|
||
|
extern void vga_setdisplaystart(int a);
|
||
|
extern void vga_waitretrace(void);
|
||
|
extern int vga_claimvideomemory(int n);
|
||
|
extern void vga_disabledriverreport(void);
|
||
|
extern int vga_setmodeX(void);
|
||
|
extern int vga_init(void); /* Used to return void in svgalib <= 1.12. */
|
||
|
extern int vga_initf(int);
|
||
|
extern void vga_norevokeprivs(void);
|
||
|
extern int vga_getmousetype(void);
|
||
|
extern int vga_getmonitortype(void);
|
||
|
extern void vga_setmousesupport(int s);
|
||
|
extern void vga_lockvc(void);
|
||
|
extern void vga_unlockvc(void);
|
||
|
extern int vga_getkey(void);
|
||
|
extern int vga_oktowrite(void);
|
||
|
extern void vga_copytoplanar256(unsigned char *virtualp, int pitch,
|
||
|
int voffset, int vpitch, int w, int h);
|
||
|
extern void vga_copytoplanar16(unsigned char *virtualp, int pitch,
|
||
|
int voffset, int vpitch, int w, int h);
|
||
|
extern void vga_copytoplane(unsigned char *virtualp, int pitch,
|
||
|
int voffset, int vpitch, int w, int h, int plane);
|
||
|
extern int vga_setlinearaddressing(void);
|
||
|
extern void vga_safety_fork(void (*shutdown_routine) (void));
|
||
|
|
||
|
extern int vga_simple_init(void);
|
||
|
extern void vga_chipset_saveregs(unsigned char *);
|
||
|
extern void vga_chipset_setregs(unsigned char *);
|
||
|
|
||
|
#ifdef EGA /* Kernel headers may define this. */
|
||
|
#undef EGA
|
||
|
#endif
|
||
|
|
||
|
#define UNDEFINED 0
|
||
|
#define VGA 1
|
||
|
#define ET4000 2
|
||
|
#define CIRRUS 3
|
||
|
#define TVGA8900 4
|
||
|
#define OAK 5
|
||
|
#define EGA 6
|
||
|
#define S3 7
|
||
|
#define ET3000 8
|
||
|
#define MACH32 9
|
||
|
#define GVGA6400 10
|
||
|
#define ARK 11
|
||
|
#define ATI 12
|
||
|
#define ALI 13
|
||
|
#define MACH64 14
|
||
|
#define CHIPS 15
|
||
|
#define APM 16
|
||
|
#define NV3 17
|
||
|
#define ET6000 18
|
||
|
#define VESA 19
|
||
|
#define MX 20
|
||
|
#define PARADISE 21
|
||
|
#define RAGE 22
|
||
|
#define BANSHEE 23
|
||
|
#define SIS 24
|
||
|
#define I740 25
|
||
|
#define NEOMAGIC 26
|
||
|
#define LAGUNA 27
|
||
|
#define FBDEV 28
|
||
|
#define G400 29
|
||
|
#define R128 30
|
||
|
#define SAVAGE 31
|
||
|
#define MILLENNIUM 32
|
||
|
#define I810 33
|
||
|
#define TRIDENT 34
|
||
|
#define RENDITION 35
|
||
|
#define G450C2 36
|
||
|
#define PM2 37
|
||
|
#define UNICHROME 38
|
||
|
|
||
|
/* Hor. sync: */
|
||
|
#define MON640_60 0 /* 31.5 KHz (standard VGA) */
|
||
|
#define MON800_56 1 /* 35.1 KHz (old SVGA) */
|
||
|
#define MON1024_43I 2 /* 35.5 KHz (low-end SVGA, 8514) */
|
||
|
#define MON800_60 3 /* 37.9 KHz (SVGA) */
|
||
|
#define MON1024_60 4 /* 48.3 KHz (SVGA non-interlaced) */
|
||
|
#define MON1024_70 5 /* 56.0 KHz (SVGA high frequency) */
|
||
|
#define MON1024_72 6
|
||
|
|
||
|
extern void vga_setchipset(int c);
|
||
|
extern void vga_setchipsetandfeatures(int c, int par1, int par2);
|
||
|
extern void vga_disablechipset(int c);
|
||
|
extern void vga_gettextfont(void *font);
|
||
|
extern void vga_puttextfont(void *font);
|
||
|
extern void vga_settextmoderegs(void *regs);
|
||
|
extern void vga_gettextmoderegs(void *regs);
|
||
|
|
||
|
extern int vga_white(void);
|
||
|
extern int vga_setegacolor(int c);
|
||
|
extern int vga_setrgbcolor(int r, int g, int b);
|
||
|
|
||
|
extern void vga_bitblt(int srcaddr, int destaddr, int w, int h, int pitch);
|
||
|
extern void vga_imageblt(void *srcaddr, int destaddr, int w, int h, int pitch);
|
||
|
extern void vga_fillblt(int destaddr, int w, int h, int pitch, int c);
|
||
|
extern void vga_hlinelistblt(int ymin, int n, int *xmin, int *xmax, int pitch, int c);
|
||
|
extern void vga_blitwait(void);
|
||
|
extern int vga_ext_set(unsigned what,...);
|
||
|
extern int vga_accel(unsigned operation,...);
|
||
|
|
||
|
extern int vga_initcursor(int);
|
||
|
extern void vga_showcursor(int);
|
||
|
extern void vga_setcursorposition(int, int);
|
||
|
extern void vga_selectcursor(int);
|
||
|
extern void vga_setcursorimage(int, int, int, int, unsigned char *);
|
||
|
|
||
|
extern int vga_setcrtcregs(unsigned char *);
|
||
|
extern int vga_getcrtcregs(unsigned char *);
|
||
|
|
||
|
extern int vga_addtiming(int pixelClock,
|
||
|
int HDisplay,
|
||
|
int HSyncStart,
|
||
|
int HSyncEnd,
|
||
|
int HTotal,
|
||
|
int VDisplay,
|
||
|
int VSyncStart,
|
||
|
int VSyncEnd,
|
||
|
int VTotal,
|
||
|
int flags);
|
||
|
|
||
|
extern int vga_changetiming(int pixelClock,
|
||
|
int HDisplay,
|
||
|
int HSyncStart,
|
||
|
int HSyncEnd,
|
||
|
int HTotal,
|
||
|
int VDisplay,
|
||
|
int VSyncStart,
|
||
|
int VSyncEnd,
|
||
|
int VTotal,
|
||
|
int flags);
|
||
|
|
||
|
extern int vga_getcurrenttiming(int *pixelClock,
|
||
|
int *HDisplay,
|
||
|
int *HSyncStart,
|
||
|
int *HSyncEnd,
|
||
|
int *HTotal,
|
||
|
int *VDisplay,
|
||
|
int *VSyncStart,
|
||
|
int *VSyncEnd,
|
||
|
int *VTotal,
|
||
|
int *flags);
|
||
|
|
||
|
extern int vga_addmode(int xdim, int ydim, int cols,
|
||
|
int xbytes, int bytespp);
|
||
|
|
||
|
extern int vga_guesstiming(int x, int y, int clue, int arg);
|
||
|
|
||
|
extern void vga_dpms(int mode);
|
||
|
|
||
|
/* Valid values for what in vga_ext_set: */
|
||
|
#define VGA_EXT_AVAILABLE 0 /* supported flags */
|
||
|
#define VGA_EXT_SET 1 /* set flag(s) */
|
||
|
#define VGA_EXT_CLEAR 2 /* clear flag(s) */
|
||
|
#define VGA_EXT_RESET 3 /* set/clear flag(s) */
|
||
|
#define VGA_EXT_PAGE_OFFSET 4 /* set an offset for all subsequent vga_set*page() calls */
|
||
|
/* Like: vga_ext_set(VGA_EXT_PAGE_OFFSET, 42); */
|
||
|
/* returns the previous offset value. */
|
||
|
#define VGA_EXT_FONT_SIZE 5 /* the (maximal) size of the font buffer */
|
||
|
|
||
|
/* Valid params for VGA_EXT_AVAILABLE: */
|
||
|
#define VGA_AVAIL_SET 0 /* vga_ext_set sub funcs */
|
||
|
#define VGA_AVAIL_ACCEL 1 /* vga_accel sub funcs */
|
||
|
#define VGA_AVAIL_FLAGS 2 /* known flags for VGA_EXT_SET */
|
||
|
#define VGA_AVAIL_ROP 3 /* vga_accel ROP sub funcs */
|
||
|
#define VGA_AVAIL_TRANSPARENCY 4 /* vga_accel TRANSPARENCY sub funcs */
|
||
|
#define VGA_AVAIL_ROPMODES 5 /* vga_accel ROP modes supported funcs */
|
||
|
#define VGA_AVAIL_TRANSMODES 6 /* vga_accel TRANSPARENCY modes supported */
|
||
|
|
||
|
/* Known flags to vga_ext_set() */
|
||
|
#define VGA_CLUT8 1 /* 8 bit DAC entries */
|
||
|
|
||
|
/* Acceleration interface. */
|
||
|
|
||
|
/* Accel operations. */
|
||
|
#define ACCEL_FILLBOX 1 /* Simple solid fill. */
|
||
|
#define ACCEL_SCREENCOPY 2 /* Simple screen-to-screen BLT. */
|
||
|
#define ACCEL_PUTIMAGE 3 /* Straight image transfer. */
|
||
|
#define ACCEL_DRAWLINE 4 /* General line draw. */
|
||
|
#define ACCEL_SETFGCOLOR 5 /* Set foreground color. */
|
||
|
#define ACCEL_SETBGCOLOR 6 /* Set background color. */
|
||
|
#define ACCEL_SETTRANSPARENCY 7 /* Set transparency mode. */
|
||
|
#define ACCEL_SETRASTEROP 8 /* Set raster-operation. */
|
||
|
#define ACCEL_PUTBITMAP 9 /* Color-expand bitmap. */
|
||
|
#define ACCEL_SCREENCOPYBITMAP 10 /* Color-expand from screen. */
|
||
|
#define ACCEL_DRAWHLINELIST 11 /* Draw horizontal spans. */
|
||
|
#define ACCEL_SETMODE 12 /* Set blit strategy. */
|
||
|
#define ACCEL_SYNC 13 /* Wait for blits to finish. */
|
||
|
#define ACCEL_SETOFFSET 14 /* Set screen offset */
|
||
|
#define ACCEL_SCREENCOPYMONO 15 /* Monochrome screen-to-screen BLT. */
|
||
|
#define ACCEL_POLYLINE 16 /* Draw multiple lines. */
|
||
|
#define ACCEL_POLYHLINE 17 /* Draw multiple horizontal spans. */
|
||
|
#define ACCEL_POLYFILLMODE 18 /* Set polygon mode. */
|
||
|
|
||
|
/* Corresponding bitmask. */
|
||
|
#define ACCELFLAG_FILLBOX 0x1 /* Simple solid fill. */
|
||
|
#define ACCELFLAG_SCREENCOPY 0x2 /* Simple screen-to-screen BLT. */
|
||
|
#define ACCELFLAG_PUTIMAGE 0x4 /* Straight image transfer. */
|
||
|
#define ACCELFLAG_DRAWLINE 0x8 /* General line draw. */
|
||
|
#define ACCELFLAG_SETFGCOLOR 0x10 /* Set foreground color. */
|
||
|
#define ACCELFLAG_SETBGCOLOR 0x20 /* Set background color. */
|
||
|
#define ACCELFLAG_SETTRANSPARENCY 0x40 /* Set transparency mode. */
|
||
|
#define ACCELFLAG_SETRASTEROP 0x80 /* Set raster-operation. */
|
||
|
#define ACCELFLAG_PUTBITMAP 0x100 /* Color-expand bitmap. */
|
||
|
#define ACCELFLAG_SCREENCOPYBITMAP 0x200 /* Color-exand from screen. */
|
||
|
#define ACCELFLAG_DRAWHLINELIST 0x400 /* Draw horizontal spans. */
|
||
|
#define ACCELFLAG_SETMODE 0x800 /* Set blit strategy. */
|
||
|
#define ACCELFLAG_SYNC 0x1000 /* Wait for blits to finish. */
|
||
|
#define ACCELFLAG_SETOFFSET 0x2000 /* Set screen offset */
|
||
|
#define ACCELFLAG_SCREENCOPYMONO 0x4000 /* Monochrome screen-to-screen BLT. */
|
||
|
#define ACCELFLAG_POLYLINE 0x8000 /* Draw multiple lines. */
|
||
|
#define ACCELFLAG_POLYHLINE 0x10000 /* Draw multiple horizontal spans. */
|
||
|
#define ACCELFLAG_POLYFILLMODE 0x20000 /* Set polygon mode. */
|
||
|
|
||
|
/* Mode for SetTransparency. */
|
||
|
#define DISABLE_TRANSPARENCY_COLOR 0
|
||
|
#define ENABLE_TRANSPARENCY_COLOR 1
|
||
|
#define DISABLE_BITMAP_TRANSPARENCY 2
|
||
|
#define ENABLE_BITMAP_TRANSPARENCY 3
|
||
|
|
||
|
/* Flags for SetMode (accelerator interface). */
|
||
|
#define BLITS_SYNC 0
|
||
|
#define BLITS_IN_BACKGROUND 0x1
|
||
|
|
||
|
#ifdef ROP_XOR
|
||
|
#undef ROP_XOR
|
||
|
#endif
|
||
|
|
||
|
/* Raster ops. */
|
||
|
#define ROP_COPY 0 /* Straight copy. */
|
||
|
#define ROP_OR 1 /* Source OR destination. */
|
||
|
#define ROP_AND 2 /* Source AND destination. */
|
||
|
#define ROP_XOR 3 /* Source XOR destination. */
|
||
|
#define ROP_INVERT 4 /* Invert destination. */
|
||
|
|
||
|
/* For the poly funcs */
|
||
|
#define ACCEL_START 1
|
||
|
#define ACCEL_END 2
|
||
|
|
||
|
/*
|
||
|
* wait for keypress, mousemove, I/O, timeout. cf. select (3) for details on
|
||
|
* all parameters execept which.
|
||
|
* NULL is a valid argument for any of the ptrs.
|
||
|
*/
|
||
|
|
||
|
extern int vga_waitevent(int which, fd_set * in, fd_set * out, fd_set * except,
|
||
|
struct timeval *timeout);
|
||
|
|
||
|
/*
|
||
|
* valid values for what ( | is valid to combine them )
|
||
|
*/
|
||
|
#define VGA_MOUSEEVENT 1
|
||
|
#define VGA_KEYEVENT 2
|
||
|
|
||
|
/*
|
||
|
* return value >= has bits set for mouse/keyboard events detected.
|
||
|
* mouse and raw keyboard events are already handled and their bits removed
|
||
|
* from *in when vga_waitevent returns.
|
||
|
* VGA_KEYEVENT relates to vga_getch NOT vga_getkey.
|
||
|
* return values < 0 signal errors. In this case check errno.
|
||
|
*/
|
||
|
|
||
|
/* Background running */
|
||
|
extern void vga_runinbackground(int stat, ...);
|
||
|
#define VGA_GOTOBACK -1
|
||
|
#define VGA_COMEFROMBACK -2
|
||
|
extern int vga_runinbackground_version(void);
|
||
|
extern void vga_waitvtactive(void);
|
||
|
|
||
|
#ifdef _SVGALIB_LRMI
|
||
|
typedef struct {
|
||
|
int (*rm_init)(void);
|
||
|
int (*rm_call)(struct LRMI_regs *r);
|
||
|
int (*rm_int)(int interrupt, struct LRMI_regs *r);
|
||
|
void * (*rm_alloc_real)(int size);
|
||
|
void (*rm_free_real)(void *m);
|
||
|
} LRMI_callbacks;
|
||
|
extern int vga_set_LRMI_callbacks(LRMI_callbacks * LRMI);
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
#endif /* VGA_H */
|