📄 bbd422.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 + -