📄 getblock.c
字号:
/*-----------------------------------------------------------
函数 getblock : 保存屏幕映象块。
-----------------------------------------------------------*/
#include <hanenv.h>
#include <alloc.h>
char **getblock(col,line,width,high)
int col; /* 屏幕图象块左上角列坐标(以字节为单位) */
int line; /* 屏幕图象块左上角行坐标(以象素为单位) */
int width; /* 屏幕图象块宽度(以字节为单位) */
int high; /* 屏幕图象块高度(以象素为单位) */
{
char **block; /* 屏幕图象块存储缓冲区 */
unsigned i,j;
unsigned blocksize = high*width;
char *p;
/*-- 如果内存空间不够则退出 -----------*/
if(coreleft()<blocksize*4+16)
return NULL;
/*-- 为缓冲区分配空间 -----------------*/
block = (char **)malloc(sizeof(char *)*4);
/*-- 分别拷贝屏幕图象块的4个颜色平面 --*/
_VideoBusy = YES;
for(i=0;i<4;i++)
{
/*-- 为屏幕映象块的每个位平面申请存储 --*/
block[i] = (char *)malloc(blocksize);
p = block[i];
/*-- 选择颜色平面i ----------------*/
outportb(0x3ce,4);
outportb(0x3cf,i);
for(j=0;j<high;j++)
{
movedata(0xa000,(line+j+_ScreenTop)*_ScreenWidth+col,FP_SEG(p),FP_OFF(p),width);
p += width;
}
}
/*-- 恢复读平面选择寄存器为省缺值 -----*/
outportb(0x3ce,4);
outportb(0x3cf,0);
_VideoBusy = NO;
return block;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -