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