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

📄 cbbm16.c

📁 linux嵌入式开发程序
💻 C
字号:
/*#define   _DEBUG  1*//************************************************************************* *     2D Graphics Library                                               * *     ALL RIGHTS RESERVED, COPYRIGHT (C) FUJITSU LIMITED 1993-2002      * *     LICENSED MATERIAL - PROGRAM PROPERTY OF FUJITSU LIMITED           * *************************************************************************/#include <stdio.h>#include "gl.h"#include "defhook.h"extern DWORD (*_GL_LogicTable[])(DWORD,DWORD) ;/*    BitBLT mask for 4 bits x 1 plane */const  WORD BitBLTMask4Table[16] = {    0x0000, 0x000f, 0x00f0, 0x00ff, 0x0f00, 0x0f0f, 0x0ff0, 0x0fff,    0xf000, 0xf00f, 0xf0f0, 0xf0ff, 0xff00, 0xff0f, 0xfff0, 0xffff} ;intBitBLTMask16(GL_WP *gp){    int     i, n, lines, width , dbitp ;    DWORD   mask, image, d, o ;    DWORD   (*trns1)(DWORD, DWORD) ;    BYTE    *dadr, *dst ;    int     bx,bbx,by;    DWORD   *ip;    DWORD   color ;    DWORD   imagemask[4] ;#ifdef _DEBUGputs("BitBLTMask16\r") ;#endif    if(gp->bitblt.tx==0)        return GL_Ok ;    lines = gp->bitblt.ty ;    if(lines==0)        return GL_Ok ;    trns1 = _GL_LogicTable[gp->bitblt.logic] ;    bx  =   (gp->bitblt.dx - gp->bitblt.bx) & 0x1f;    bbx =   32-bx;    by  =   gp->bitblt.dy - gp->bitblt.by;    ip  =   (DWORD *)gp->bitblt.tilep;    color = gp->bitblt.color ;    color |= color << 4 ;    color |= color << 8 ;    color |= color << 16 ;    dadr = (BYTE *)gp->hwork.VRAMadr[gp->hwork.page][0] + gp->bitblt.doffs ;    dbitp = gp->bitblt.dbitp ;#ifdef _DEBUGprintf("w=%d l=%d ip=%08X c=%08X dadr=%08X dbitp=%d\r\n", gp->bitblt.tx, lines, ip, color,dadr, dbitp) ;#endif    while(lines--){        AdjAccAdr32(dadr, dbitp) ;        dst = dadr ;        image   =   ip[by++&0x1f];        if(bx)            image = (image<<bx) | (image>>bbx);        mask = 0 ;        i = 0 ;        n = 8 ;        width = gp->bitblt.tx  ;        if(dbitp){            i-- ;            n -= dbitp >> 2 ;            width += dbitp >> 2 ;        }#ifdef _DEBUGprintf("i=%d n=%d\r\n", i, n) ;#endif        do {            DWORD m = image >> 32-n ;            mask = ((DWORD)BitBLTMask4Table[m>>4]<<16)|BitBLTMask4Table[m&0x0f] ;            image =(image>>32-n)|(image<<n);            if(width<8)                goto last_word ;            width -= 8 ;            imagemask[i&3] = mask ;            o = VR_UW(dst) ;            d = (*trns1)(color, o) ;            d = d & mask | o & ~mask ;            VW_W(dst, d) ;            dst += 4 ;            n = 8 ;        } while(++i<4) ;        for(;;){            mask = imagemask[i++&3] ;            if(width<8)                break ;            width -= 8 ;            o = VR_UW(dst) ;            d = (*trns1)(color, o) ;            d = d & mask | o & ~mask ;            VW_W(dst, d) ;            dst += 4 ;        }    last_word:        if(width){            mask &= (long)0x80000000 >> width*4-1 ;            o = VR_UW(dst) ;            d = (*trns1)(color,o) ;            d = d & mask | o & ~mask ;            VW_W(dst, d );        }        dadr += gp->bitblt.dlbytes ;    }    return GL_Ok ;}

⌨️ 快捷键说明

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