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

📄 bbd422.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 BitSft  4int_GL_bbdotYUV422(GL_WP *gp){    DWORD   color1, color2, color3 ;    long    doffs ;    int     sbitp, dbitp, lines, words ;    char    *sadr ;    color3 = gp->bitblt.color ;    color1 = color3 & 0x00ffffff ;    color2 = color3 & 0xffff00ff ;    sadr = (char  *)gp->bitblt.soffs ;    sbitp = gp->bitblt.sbitp ;    doffs = gp->bitblt.doffs ;    dbitp = gp->bitblt.dbitp ;    lines = gp->bitblt.ty ;    AdjAccOffs32(doffs,dbitp) ;    words = ((gp->bitblt.tx<<BitSft) + dbitp)>>5 ;    while(lines-->0){        register DWORD  *src ;        register DWORD  *dst ;        register DWORD  mask,dots ;        register int    dnum, tx ;        AdjAccAdr32(sadr,sbitp) ;        tx      = gp->bitblt.tx ;        src     = (DWORD *)sadr ;        dst     = _AddAdr(gp->hwork.VRAMadr[gp->hwork.page][0],doffs) ;        dots    = *src << sbitp ;        dnum    = 32 - sbitp ;        src++ ;        if(words>0){            if(dbitp>0){                mask = dots >> 31 ;                dots <<= 1 ;                dnum -= 1 ;                if(mask){                    *dst = *dst & 0xff000000 | color1 ;                }                dst++ ;                tx-- ;            }            while(tx>=2){                tx -= 2 ;                if(dnum>=2){                    mask = dots >> 30 ;                    dots <<= 2 ;                    dnum -= 2 ;                } else {                    mask   = dots >> 31 << 1 ;                    dots   = *src ;                    mask  |= dots>>(30+dnum) ;                    dots <<= 2 - dnum ;                    dnum  += 30 ;                    src++ ;                }                switch(mask){                case 1:                    *dst = *dst & 0xff000000 | color1 ;                    dst++ ;                    break ;                case 2:                    *dst = *dst & 0x0000ff00 | color2 ;                    dst++ ;                    break ;                case 3:                    *dst = color3 ;                    dst++ ;                    break ;                default:                    dst++ ;                }            }        }        if(tx>0){            if(dnum<1){                dots = *src ;            }            if((long)dots<0){                *dst = *dst & 0x0000ff00 | color2 ;            }        }        sadr = _AddAdr(sadr, gp->bitblt.slbytes) ;        doffs += gp->bitblt.dlbytes ;    }    return GL_Ok ;}

⌨️ 快捷键说明

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