bbg422.c

来自「linux嵌入式开发程序」· C语言 代码 · 共 99 行

C
99
字号

/*===========================================================================
        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_bbgetYUV422(GL_WP *gp){    long    soffs ;    int     sbitp,dbitp,words,lines ;    char    *dadr ;    dadr = (char  *)gp->bitblt.doffs ;    soffs = gp->bitblt.soffs ;    sbitp = gp->bitblt.sbitp ;    dbitp = gp->bitblt.dbitp ;    lines = gp->bitblt.ty ;    AdjAccOffs32(soffs,sbitp) ;    AdjAccAdr32(dadr,dbitp) ;    words = ((gp->bitblt.tx<<BitSft)+dbitp)>>5 ;    if(sbitp==dbitp){        while(lines-->0){            register DWORD  *src ;            register DWORD  *dst ;            register long   tx ;            tx  = gp->bitblt.tx ;            src = _AddAdr(gp->hwork.VRAMadr[gp->hwork.page][0],soffs) ;            dst = (DWORD *)dadr ;            if(words>0){                if(dbitp>0){                    *dst = *dst & 0xffff0000 | *src & 0x0000ffff ;                    src++ ;                    dst++ ;                    tx-- ;                }                while(tx>=2){                    *dst++ = *src++ ;                    tx-=2 ;                }            }            if(tx>0){                *dst = *dst & 0x0000ffff | *src & 0xffff0000 ;            }            dadr = _AddAdr(dadr, gp->bitblt.dlbytes) ;            soffs += gp->bitblt.slbytes ;        }    } else {        while(lines-->0){            register DWORD  *src ;            register DWORD  *dst ;            register DWORD  d, o ;            register int    tx ;            tx  = gp->bitblt.tx ;            src = _AddAdr(gp->hwork.VRAMadr[gp->hwork.page][0],soffs) ;            dst = (DWORD *)dadr ;            d = src[0] ;            if(dbitp>0){                *dst = *dst & 0xffff0000 | (d >> 16) ;                dst++ ;                tx-- ;            }            while(tx>=2){                o = src[1] ;                src++ ;                tx -= 2 ;                *dst = (d << 16) | (o>>16) ;                dst++ ;                d = o ;            }            if(tx>1){                *dst = *dst & 0x0000ffff | (d << 16) ;            }            dadr = _AddAdr(dadr, gp->bitblt.dlbytes) ;            soffs += gp->bitblt.slbytes ;        }    }    return GL_Ok ;}

⌨️ 快捷键说明

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