Linux程式设计入门 - SVGALIB

王朝system·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

SvgaLib是LinuxConsole下的VGA驱动函数库。虽然它的品质还是有点低,支援的萤幕卡种类不算太多,但是有许多的游戏及程式都是用它来做开发,可以算是非官方的标准了。如果您准备要在Console下撰写图形功能的程式,目前来说

SVGALIB是您唯一的选择。目前使用SVGALIB的程式有许多,中文终端机使用SVGALIB的就有a4c.tty/yact/bcs16。

这里我只讲一些简单的使用方法,如启动vga及mouse的使用。要有效地、高阶的运用,技巧复杂很多,例如a4c.tty就另外往上架一层StarWindowManager,来管理一个小型视窗系统。

vga

vgamouse

intvga_setmode(intmode);

intvga_hasmode(intmode);

intvga_setpalette(intindex,intred,intgreen,intblue);

intvga_getpalette(intindex,int*red,int*green,int*blue);

intvga_setcolor(intcolor);

intvga_drawpixel(intx,inty);

intvga_drawline(intx1,inty1,intx2,inty2);

intvga_getpixel(intx,inty);

vga_modeinfo*vga_getmodeinfo(intmode);

unsignedchar*graph_mem;

unsignedchar*vga_getgraphmem(void);

voidvga_setpage(intp);

voidvga_setreadpage(intp);

voidvga_setreadpage(intp);

voidvga_setwritepage(intp);

voidvga_setdisplaystart(inta);

voidvga_waitretrace(void);

intvga_init(void);

intvga_setrgbcolor(intr,intg,intb);

#defineTEXT0/*CompatiblewithVGAlibv1.2*/

#defineG320x200x161

#defineG640x200x162

#defineG640x350x163

#defineG640x480x164

#defineG320x200x2565

#defineG320x240x2566

#defineG320x400x2567

#defineG360x480x2568

#defineG640x480x29

#defineG640x480x25610

#defineG800x600x25611

#defineG1024x768x25612

#defineG1280x1024x25613/*Additionalmodes.*/

#defineG320x200x32K14

#defineG320x200x64K15

#defineG320x200x16M16

#defineG640x480x32K17

#defineG640x480x64K18

#defineG640x480x16M19

#defineG800x600x32K20

#defineG800x600x64K21

#defineG800x600x16M22

#defineG1024x768x32K23

#defineG1024x768x64K24

#defineG1024x768x16M25

#defineG1280x1024x32K26

#defineG1280x1024x64K27

#defineG1280x1024x16M28

#defineG800x600x1629

#defineG1024x768x1630

#defineG1280x1024x1631

#defineG720x348x232/*Herculesemulationmode*/

#defineG320x200x16M3233/*32-bitperpixelmodes.*/

#defineG640x480x16M3234

#defineG800x600x16M3235

#defineG1024x768x16M3236

#defineG1280x1024x16M3237

/*additionalresolutions*/

#defineG1152x864x1638

#defineG1152x864x25639

#defineG1152x864x32K40

#defineG1152x864x64K41

#defineG1152x864x16M42

#defineG1152x864x16M3243

#defineG1600x1200x1644

#defineG1600x1200x25645

#defineG1600x1200x32K46

#defineG1600x1200x64K47

#defineG1600x1200x16M48

#defineG1600x1200x16M3249

typedefstruct{

intwidth;

intheight;

intbytesperpixel;

intcolors;

intlinewidth;/*scanlinewidthinbytes*/

intmaxlogicalwidth;/*maximumlogicalscanlinewidth*/

intstartaddressrange;/*changeablebitsset*/

intmaxpixels;/*videomemory/bytesperpixel*/

inthaveblit;/*maskofblitfunctionsavailable*/

intflags;/*otherflags*/

/*Extendedfields:*/

intchiptype;/*Chiptypedetected*/

intmemory;/*videomemoryinKB*/

intlinewidth_unit;/*Useonlyamultipleofthisas

parameterforset_displaystart*/

char*linear_aperture;/*pointstommapsecondarymemaperture

ofcar

intaperture_size;/*sizeofapertureinKBif

size>=videomemory.

void(*set_aperture_page)(intpage);

/*ifaperture_size<videomemoryselectamemorypage*/

void*extensions;/*pointstocopyofeepromformach32*/

/*dependsfromactualdriver/chiptype..etc.*/

}vga_modeinfo;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航