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

📄 getblock.c

📁 汉字系统的c源代码
💻 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 + -