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

📄 bbg888.c

📁 linux嵌入式开发程序
💻 C
字号:

/*===========================================================================
        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"#define BitLen  24int_GL_bbgetRGB888(GL_WP *gp){    long    soffs ;    int     sbitp,dbitp,words,lines ;    DWORD   dmask_head, dmask_tail ;    char    *dadr ;    soffs = gp->bitblt.soffs ;    sbitp = gp->bitblt.sbitp ;    dadr  = (char *)gp->bitblt.doffs ;    dbitp = gp->bitblt.dbitp ;    lines = gp->bitblt.ty ;    while(lines--){        AdjAccOffs32(soffs,sbitp) ;        AdjAccAdr32(dadr, dbitp) ;        dmask_head = (DWORD)-1L >> dbitp ;        words      = gp->bitblt.tx * BitLen + dbitp ;        dmask_tail = ~((DWORD)-1L >> (words&31)) ;        words    >>= 5 ;        if(words==0){            dmask_head &= dmask_tail ;            dmask_tail  = 0 ;        } else            words-- ;        {            register DWORD   *src ;            register DWORD   *dst ;            register DWORD   d, o ;            register int     n ;            src = _AddAdr(gp->hwork.VRAMadr[gp->hwork.page][0],soffs) ;            dst = (DWORD  *)dadr ;            n = sbitp-dbitp ;            if(n){                register int un ;                d = *src++ ;                if(n<0){                    un = -n ;                    n += 32 ;                    *dst++ = *dst & ~dmask_head | (d>>un) & dmask_head ;                } else {                    un = 32 - n ;                    o = *src++ ;                    d = (d<<n)|(o>>un) ;                    *dst++ = *dst & ~dmask_head | d & dmask_head ;                    d = o ;                }                while(words--){                    o = *src++ ;                    *dst++ = (d<<n)|(o>>un) ;                    d = o ;                }                if(dmask_tail)                    *dst = *dst & ~dmask_tail| ((d<<n)|(*src>>un)) & dmask_tail ;             } else {                *dst++ = *dst & ~dmask_head | *src++ & dmask_head ;                while(words--)                    *dst++ = *src++ ;                if(dmask_tail)                    *dst = *dst & ~dmask_tail| *src & dmask_tail ;            }        }        soffs += gp->bitblt.slbytes ;        dadr   = _AddAdr(dadr, gp->bitblt.dlbytes) ;    }    return GL_Ok ;}

⌨️ 快捷键说明

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