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

📄 cbbm16p.c

📁 linux嵌入式开发程序
💻 C
字号:
#include <stdio.h>/************************************************************************* *     2D Graphics Library                                               * *     ALL RIGHTS RESERVED, COPYRIGHT (C) FUJITSU LIMITED 1993-2002      * *     LICENSED MATERIAL - PROGRAM PROPERTY OF FUJITSU LIMITED           * *************************************************************************/#include "gl.h"#include "defhook.h"extern DWORD (*_GL_LogicTable[])(DWORD,DWORD) ;/*    For 1 bit / plane */intBitBLTMask16p(GL_WP *gp){    int     i, lines, width , dbitp ;    DWORD   mask, image, d, o ;    DWORD   (*trns1)(DWORD, DWORD) ;    BYTE    *dadr, *dst ;    int     bx, bbx, by;    DWORD   *ip;    DWORD   color ;    int     dlbytes ;    trns1 = _GL_LogicTable[gp->bitblt.logic] ;    dlbytes = gp->bitblt.dlbytes ;    ip  =   (DWORD *)gp->bitblt.tilep;    for(i=0;i<gp->planes;i++){        if(gp->planes){            SelPlane(gp, i) ;            color = gp->bitblt.color >> i << 31 ;        } else            color = gp->bitblt.color << 31 ;        color = (long)color >> 31 ;        bx  =   (gp->bitblt.dx - gp->bitblt.bx) & 0x1f        bbx =   32-bx;        by  =   gp->bitblt.dy - gp->bitblt.by;        dadr = (BYTE *)gp->hwork.VRAMadr[gp->hwork.page][i] + gp->bitblt.doffs ;        dbitp = gp->bitblt.dbitp ;        lines = gp->bitblt.ty ;        while(lines--){            AdjAccAdr32(dadr, dbitp) ;            dst = dadr ;            image = ip[by&0x1f];            by++ ;            if(bx)                image = (image<<bx) | (image>>bbx);            width = gp->bitblt.tx ;            mask = image ;            if(dbitp){                image = (image>>dbitp) | (image<<32-dbitp) ;                mask = (DWORD)-1>>dbitp ;                mask &= image ;                width += dbitp ;            }            while(width>=32){                o = VR_UW(dst) ;                d = (*trns1)(color, o) ;                d = d & mask | o & ~mask ;                VW_W(dst, d) ;                dst += 4 ;                width -= 32 ;                mask = image ;            }            if(width){                mask &= (long)0x80000000 >> width-1 ;                o = VR_UW(dst) ;                d = (*trns1)(color, o) ;                d = d & mask | o & ~mask ;                VW_W(dst, d);            }            dadr += dlbytes ;        }    }    return GL_Ok ;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -