flag client relative for blit

git-svn-id: svn://kolibrios.org@6790 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
0CodErr 2016-12-07 18:33:17 +00:00
parent 4f831a4d79
commit 54932fe994
4 changed files with 21 additions and 6 deletions

View File

@ -362,6 +362,8 @@ SYSTEM_SHUTDOWN equ 2
SYSTEM_REBOOT equ 3
SYSTEM_RESTART equ 4
BLIT_CLIENT_RELATIVE equ 0x20000000
struct SYSCALL_STACK
_eip dd ?
_edi dd ? ; +4

View File

@ -4335,13 +4335,14 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* eax = 73 - номер функции
* ebx = ROP и опциональные флаги
31 6 5 4 3 0
[ reserved ][T][B][ROP]
31 30 29 28 6 5 4 3 0
[reserved][CR][reserved][T][B][ROP]
ROP - код растровых операций
0: копировать
1-15: Зарезервировано
B - блит на фоновую поферхность
T - блит с прозрачностью
CR - относительно клиентской области окна
* ecx = указатель на параметры функции
смещение цели и отсечение

View File

@ -4285,13 +4285,14 @@ Parameters:
* eax = 73 - function number
* ebx = ROP and optional flags
31 6 5 4 3 0
[ reserved ][T][B][ROP]
31 30 29 28 6 5 4 3 0
[reserved][CR][reserved][T][B][ROP]
ROP - raster operation code
0: Copy
1-15: reserved
B - blit into the background surface
T - transparent blit
CR - blit client relative
* ecx = pointer to the function parameters
destination offset and clipping

View File

@ -206,10 +206,13 @@ virtual at sizeof.BLITTER
.position dd ? ; (x shl 16) + y
; ???
.extra_var1 dd ?
.flags dd ?
.local_vars_size = $
end virtual
sub esp, .local_vars_size
mov [esp+.flags], ebx
mov eax, [TASK_BASE]
mov ebx, [eax-twdw + WDATA.box.width]
mov edx, [eax-twdw + WDATA.box.height]
@ -263,6 +266,14 @@ end virtual
add ebx, [eax-twdw + WDATA.box.left]
add ebp, [eax-twdw + WDATA.box.top]
test [esp+.flags], BLIT_CLIENT_RELATIVE
jz .no_client_relative
mov eax, [current_slot]
add ebx, [eax + APPDATA.wnd_clientbox.left]
add ebp, [eax + APPDATA.wnd_clientbox.top]
.no_client_relative:
mov ecx, ebx
add ecx, [esp+BLITTER.w]
shl ecx, 16