📄 bbm422.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 4
int
_GL_bbmaskYUV422(GL_WP *gp)
{
DWORD color1, color2, color3 ;
long doffs ;
int dbitp, lines, words, ti, tj ;
BYTE *sadr ;
color3 = gp->bitblt.color ;
color1 = color3 & 0x00ffffff ;
color2 = color3 & 0xffff00ff ;
doffs = gp->bitblt.doffs ;
dbitp = gp->bitblt.dbitp ;
lines = gp->bitblt.ty ;
AdjAccOffs32(doffs,dbitp) ;
words = ((gp->bitblt.tx<<BitSft) + dbitp)>>5 ;
sadr = (BYTE *)gp->bitblt.tilep ;
ti = (gp->bitblt.dx - gp->bitblt.bx) & 0x1f ;
tj = ((gp->bitblt.dy - gp->bitblt.by) & 0x1f) << (MaskSft-3) ;
while(lines-->0){
register DWORD *dst ;
register DWORD mask,dots ;
register int tx ;
dots = *(DWORD *)(sadr+tj) ;
dst = _AddAdr(gp->hwork.VRAMadr[gp->hwork.page][0],doffs) ;
tx = gp->bitblt.tx ;
if(dots!=0){
dots = (dots << ti) | (dots >> (32-ti)) ;
if(words>0){
if(dbitp>0){
mask = dots >> 31 ;
dots = (dots<<1) | mask ;
if(mask){
*dst = *dst & 0xff000000 | color1 ;
}
dst++ ;
tx-- ;
}
while(tx>=2){
tx -= 2 ;
mask = dots >> 30 ;
dots = (dots<<2) | mask ;
switch(mask){
case 1:
*dst = *dst & 0xff000000 | color1 ;
break ;
case 2:
*dst = *dst & 0x0000ff00 | color2 ;
break ;
case 3:
*dst = color3 ;
break ;
}
dst++ ;
}
}
if(tx>0){
if((long)dots<0){
*dst = *dst & 0x0000ff00 | color2 ;
}
}
}
tj += MaskBpl ;
tj &= MaskBpp-1 ;
doffs += gp->bitblt.dlbytes ;
}
return GL_Ok ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -