📄 cbbm16p.c
字号:
#include <stdio.h>/************************************************************************* * 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"extern DWORD (*_GL_LogicTable[])(DWORD,DWORD) ;/* For 1 bit / plane */intBitBLTMask16p(GL_WP *gp){ int i, lines, width , dbitp ; DWORD mask, image, d, o ; DWORD (*trns1)(DWORD, DWORD) ; BYTE *dadr, *dst ; int bx, bbx, by; DWORD *ip; DWORD color ; int dlbytes ; trns1 = _GL_LogicTable[gp->bitblt.logic] ; dlbytes = gp->bitblt.dlbytes ; ip = (DWORD *)gp->bitblt.tilep; for(i=0;i<gp->planes;i++){ if(gp->planes){ SelPlane(gp, i) ; color = gp->bitblt.color >> i << 31 ; } else color = gp->bitblt.color << 31 ; color = (long)color >> 31 ; bx = (gp->bitblt.dx - gp->bitblt.bx) & 0x1f bbx = 32-bx; by = gp->bitblt.dy - gp->bitblt.by; dadr = (BYTE *)gp->hwork.VRAMadr[gp->hwork.page][i] + gp->bitblt.doffs ; dbitp = gp->bitblt.dbitp ; lines = gp->bitblt.ty ; while(lines--){ AdjAccAdr32(dadr, dbitp) ; dst = dadr ; image = ip[by&0x1f]; by++ ; if(bx) image = (image<<bx) | (image>>bbx); width = gp->bitblt.tx ; mask = image ; if(dbitp){ image = (image>>dbitp) | (image<<32-dbitp) ; mask = (DWORD)-1>>dbitp ; mask &= image ; width += dbitp ; } while(width>=32){ o = VR_UW(dst) ; d = (*trns1)(color, o) ; d = d & mask | o & ~mask ; VW_W(dst, d) ; dst += 4 ; width -= 32 ; mask = image ; } if(width){ mask &= (long)0x80000000 >> width-1 ; o = VR_UW(dst) ; d = (*trns1)(color, o) ; d = d & mask | o & ~mask ; VW_W(dst, d); } dadr += dlbytes ; } } return GL_Ok ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -