免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1542 | 回复: 0
打印 上一主题 下一主题

DOS平台上SVGACC图形库介绍 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-11 16:18 |只看该作者 |倒序浏览

SVGACC图形库是由Zephyr Software - Stephen L. Balkum and Daniel A. Sill著于1992-1994,主要用于DOS平台。
   提供的图形库函数主要有 (用网友baofu.li的翻译) :
1.1 基本绘图函数
Drwbox(画矩形)
原型  extern void far drwbox (PixelMode mode, int colr, int x1, int y1, int x2, int y2)
  输入  mode - 写点模式
      colr - 颜色索引值
      x1, y1 - 左上角
      x2, y2 - 右下角
  输出  无返回值
用法  DRWBOX以(x1, y1)和(x2, y2)为对角顶点用指定的颜色和写模式画一个矩形。不必精确给出四个顶点的坐标,而只需给出矩形相对的两顶点坐标。矩形任何超出当前视口的部份将不会绘制。

Drwcircle(画圆)
原型  extern void far drwcircle (PixelMode mode, int colr, int xcenter, int ycenter, int radius)
  输入  mode - 写点模式
      colr - 颜色索引值
      xcenter, ycenter - 圆的圆心位置
      radius - 圆的半径
  输出  无返回值
  用法  DRWCIRCLE按照指定的圆心(xcenter, ycenter)和半径(radius)用指定的颜色和写模式画一个圆。所有的xcenter,ycenter和radius都是有效的。圆的任何超出当前视口的矩形部份将不会绘制。

Drwfillbox(画填充的矩形)
原型  extern void far drwfillbox (PixelMode mode, int colr, int x1,int y1, int x2, int y2)
  输入  mode - 写点模式
      colr - 颜色索引值
      x1, y1 - 左上角
      x2, y2 - 右下角
  输出  无返回值
  用法  DRWBOX以(x1, y1)和(x2, y2)为对角顶点用指定的颜色和写模式画一个填充的矩形。不必精确给出四个顶点的坐标,而只需给出矩形相对的两顶点坐标。矩形任何超出当前视口的部份将不会绘制。

drwfillcircle(画填充的圆)
原型  extern void far drwfillcircle (PixelMode mode, int colr, int xcenter, int ycenter, int radius)
  输入  mode - 写点模式
      colr - 颜色索引值
      xcenter, ycenter - 圆的圆心位置
      radius - 圆的半径
  输出  无返回值
  用法  DRWCIRCLE按照指定的圆心(xcenter, ycenter)和半径(radius)用指定的颜色和写模式画一个填充的圆。所有的xcenter,ycenter和radius都是有效的。圆的任何超出当前视口的矩形部份将不会绘制。

drwline(画线)
原型  extern void far drwline (PixelMode mode, int colr, int x1, int y1, int x2, int y2)
  输入  mode - 写点模式
      colr - 颜色索引值
      x1, y1 - 直线的一端
      x2, y2 - 直线的另一端
  输出  无返回值
  用法  DUWLINE以(x1, y1)和(x2, y2)为顶点用指定的颜色和写模式画一条直线 。所有x1,y1,x2和y2的值都是有效的。直线任何超出当前视口的矩形部份将不会绘制。

drwpoint(画点)
原型  extern void far drwpoint (PixelMode mode, int colr, int x, int y)
  输入  mode - 写点模式
      colr - 颜色索引值
      x, y - 待写点的位置
  输出  无返回值
  用法  DRWPOINT在(x,y)处用指定的颜色和写模式画一个点。如果点(x,y)位于当前视口的外面将不会绘制。
  
drwstring(画ASCII字符)
原型  extern void far drwstring (PixelMode mode, int fcolr, int bcolr, const char far *strng, int x, int y)
  输入  mode - 写模式
      fcolr - 前景色的索引值
      bcolr - 背景色的索引值
      strng - 指向待画ASCII字符串的字符型指针
      x,y - 绘制块的左上角
  输出  无返回值
  用法  DRWSTRING从strng开始提取以‘/0’结尾的ASCII字符串创建一个如同BLKGET和BLKPUT使用的图形块。字符串以当前字体用fcolr绘制,背景色为bcolr。当使用0(NO_ACTION)时,图形块在内存中创建,可用GETLASTSTRING得到,但不在屏幕上绘制。(注意:系统字体在调用WHICHVGA时自动安装)。
  
Fillpage(页颜色填充)
原型  extern void far fillpage (int colr)
  输入  colr - 颜色索引值
  输出  无返回值
  用法  FILLPAGE用指定的颜色擦除当前的活动页,页中所有的信息都将丢失。(注意:清除一页最快的方法是调用RES###函数。这将复位图形屏幕,将其用0索引颜色擦除,默认底板也将复位。)

Fillscreen(屏幕颜色填充)
原型  extern void far fillscreen (int colr)
  输入  colr - 颜色索引值
  输出  无返回值
  用法  FILLSCREEN用指定的颜色擦除整个屏幕。屏幕上的所有信息都将丢失。(注意:清除一页最快的方法是调用RES###函数。这将复位图形屏幕,将其用0索引颜色擦除,默认底板也将复位。)

Fillview(当前setview设置视窗颜色填充)
原型  extern void far fillview (int colr)
  输入  colr - 颜色索引值
  输出  无返回值
  用法  FILLWIEW用指定的颜色擦除当前视口,其中所有的信息都将丢失。

Fontset(字体设置)
原型  extern void far fontset (Font far *font)
  输入  font - Font型指针
  输出  无返回值
  用法  FONTSET将font中的字体数据加载到当前字体中。结构Font长4098个字节,前两个字节分别为字体的宽度和高度。

1.2 显存页操作

Pageactive(设置当前操作页)
原型  extern int far pageactive (int page)
  输入  page - 被激活的页号
  输出  成功返回1,否则返回0
  用法  PAGEACTIVE按指定的页号page设置活动页。它通过在发生换块时产生一个附加的偏移来起作用。这个函数不影响实际的显示。一页定义为一个64K块,以满足当前的屏幕分辨率。例如,640*480的分辨率需要307,200个字节也就是4.5个64K块多一点儿。在这种分辨率下一页为5块。

Pagedisplay(当前显示页)
原型  extern int far pagedisplay (int x, int y, int page)
  输入  x,y - 显示位置的左上角坐标
      page - 被激活的页号
  输出  成功返回1,否则返回0
  用法  PAGEDISPLAY告诉显卡从显存的什么位置开始显示。这个显示偏移通过指定的page,x,y计算得到。具体来说就是当前屏幕分辨率乘以y、加上x再加上相应数目(page)的64K块。X,y和page必须都是正数,但是不被限定。如果数值反常地大显示会扭曲。扭曲会发生在从一边到另一边或从存储器的高端到低端。

Setview(设置视口)
原型  extern void far setview (int x1, int y1, int x2, int y2)
  输入  x1,y1 - 视口的左上角
      x2,y2 - 视口的右下角
  输出  无返回值
  用法  SETVIEW在屏幕上定义一个剪裁的视口。在当前视口之外不能绘制任何图象。函数SES###将当前视口定义为整个屏幕。x1,y1,x2,y2有如下限制:
      0屏宽)
      0,最大的有效值)

1.3 显存区域操作

Xmsget(保存显存区域)
原型  extern int far xmsget (int xmshandle, long offset, void far *destmem, unsigned long count)
  输入  xmshandle - 源扩展内存块句柄
      offset - 源内存块距开始的偏移字节数
      count - 从源到目标拷贝的字节数量(必须是偶数)
  输出  成功返回1,否则返回0
      destmem - 常规内存中的数据副本
  用法  XMSGET从扩展内存中获取数据并放入常规内存。拷贝的字节数必须是偶数,并且不能大于65536。拷贝的开始位置可以通过非零offset来指定。如果函数调用失败,可通过检查XMSERROR得到相应的错误码。

Xmsput(显示显存句柄)
原型  extern int far xmsput (void far *sourcemem, int xmshandle, long offset, unsigned long count)
  输入  sourcemem - 常规内存中的数据
      xmshandle - 目标扩展内存的句柄
      offset -目标扩展内存中距开始的偏移字节数
      count - 从常规内存拷贝的字节数(必须是偶数)
  输出  成功返回1,否则返回0
  用法  XMSPUT将常规内存中的数据拷贝到扩展内存。拷贝的字节数必须是偶数,并且不能大于65536。拷贝的开始位置可以通过非零offset来指定。如果函数调用失败,可通过检查XMSERROR得到相应的错误码。

Xmsfree(释放显存句柄)
原型  extern int far xmsfree (int xmshandle)
  输入  xmshandle - 待释放的扩展内存句柄
  输出  成功释放扩展内存则返回1,否则返回0
  用法  XMSFREE释放指定数量的扩展内存块。所有申请的内存块必须在程序结束之前释放掉否则这块内存将丢失,除非计算机重启。简单的退出程序将不会释放分配的分配内存块。如果函数调用失败,可通过检查XMSERROR得到相应的错误码。

res640(设置图形模式)
原型  extern int far res640 (void)
  输入  无输入参数
  输出  成功返回1,否则返回0
  用法  RES640设置256色的640*480的图形模式。这个函数要求一个SVGA显卡和至少512K的显存。并且,函数WHICHVGA必须事先调用否则函数将调用失败并且不会改变显示模式。如果显卡没有足够的显存,RES640将不会改变显示模式。

Videomodeget(取显示模式)
原型  extern int far videomodeget (void)
  输入  无输入参数
  输出  当前的显示模式
  用法  VIDEOMODEGET返回当前的显示模式。这个函数最好用在程序的开始来获得当前使用的显示模式。当程序结束时,显示模式可通过VIDEOMODESET进行恢复。

Videomodeset(设置显示模式)
原型  extern void far videomodeset (int videomode)
  输入  mode - 显示模式号
  输出  无返回值
  用法  VIDEOMODESET通过mode设置显示模式。这个函数最好用在程序的结束来将显示模式恢复到程序开始之前的显示模式。程序应当在开始的时候通过VIDEOMODEGET获得显示模式。


Whichcpu(处理器类型)
原型  extern int far whichcpu (void)
  输入  无输入参数
  输出  处理器类型
  用法  WHICHCPU返回计算机处理器的类型,如86,286,386,486。任何使用此库的程序都应当调用这个函数来确保计算机至少是386兼容机,或者更高。

Whichmem(安装的显存大小)
原型  extern int far whichmem (void)
  输入  无输入参数
  输出  已安装的显存的千字节数
  用法  WHICHMEM在事先调用函数SHICHVGA以后来得到已安装显存的大小。WHICHVGA应当在WHICHMEM之前调用。这个函数应当在所有函数RES###之前调用,来检查是否有足够的显存支持想要的分辨率。如果函数SETCARD已经设定了显卡的类型和显存大小,函数WHICHMEM将返回SETCARD定义的大小。

Whichvga(显卡的标识码)
原型  extern VGAChipset far whichvga (void)
  输入  无输入参数
  输出  返回一个显卡的标识码
  用法  WHICHVGA识别显卡的类型并且得到显存的大小。另外,这个函数还安装默认的字体和鼠标指针。这个函数必须在所有图形函数之前调用。

下面这是DOS运行环境下SVGACC的例子

文件:
svgaccTest.rar
大小:
53KB
下载:
下载



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/61789/showart_527302.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP