📄 clipblit.inc
字号:
// 计算要复制的位图是否在剪裁矩形之外
MOV ebx, dest_bmp;
MOV eax, x;
CMP eax, [ebx]BMP.clipright;
JG _bitblt_end;
MOV eax, y;
CMP eax, [ebx]BMP.clipbottom;
JG _bitblt_end;
MOV eax, x;
ADD eax, w;
DEC eax;
CMP eax, [ebx]BMP.clipleft;
JL _bitblt_end;
MOV eax, y;
ADD eax, h;
DEC eax;
CMP eax, [ebx]BMP.cliptop;
JL _bitblt_end;
// x和y小于剪裁矩形的剪裁
MOV edx, x;
CMP edx, [ebx]BMP.clipleft;
JNL _align_clip_x;
MOV eax, [ebx]BMP.clipleft;
SUB eax, x;
SUB w, eax;
MOV edx, [ebx]BMP.clipleft;
MOV x, edx;
MOV ecx, srcx;
ADD ecx, eax;
MOV srcx, ecx;
_align_clip_x:
MOV edx, y;
CMP edx, [ebx]BMP.cliptop;
JNL _align_clip_y;
MOV eax, [ebx]BMP.cliptop;
SUB eax, y;
SUB h, eax;
MOV edx, [ebx]BMP.cliptop;
MOV y, edx;
MOV ecx, srcy;
ADD ecx, eax;
MOV srcy, ecx;
_align_clip_y:
// x和y大于剪裁矩形的剪裁
MOV edx, [ebx]BMP.clipright;
SUB edx, [ebx]BMP.clipleft;
INC edx;
MOV eax, x;
ADD eax, w;
CMP eax, edx;
JLE _align_clip_right;
SUB eax, edx;
MOV ecx, w;
SUB ecx, eax;
MOV w, ecx;
_align_clip_right:
MOV edx, [ebx]BMP.clipbottom;
SUB edx, [ebx]BMP.cliptop;
INC edx;
MOV eax, y;
ADD eax, h;
CMP eax, edx;
JLE _align_clip_bottom;
SUB eax, edx;
MOV ecx, h;
SUB ecx, eax;
MOV h, ecx;
_align_clip_bottom:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -