forked from KolibriOS/kolibrios
flag client relative for blit
git-svn-id: svn://kolibrios.org@6790 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
4f831a4d79
commit
54932fe994
@ -362,6 +362,8 @@ SYSTEM_SHUTDOWN equ 2
|
|||||||
SYSTEM_REBOOT equ 3
|
SYSTEM_REBOOT equ 3
|
||||||
SYSTEM_RESTART equ 4
|
SYSTEM_RESTART equ 4
|
||||||
|
|
||||||
|
BLIT_CLIENT_RELATIVE equ 0x20000000
|
||||||
|
|
||||||
struct SYSCALL_STACK
|
struct SYSCALL_STACK
|
||||||
_eip dd ?
|
_eip dd ?
|
||||||
_edi dd ? ; +4
|
_edi dd ? ; +4
|
||||||
|
@ -4335,13 +4335,14 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
|||||||
* eax = 73 - номер функции
|
* eax = 73 - номер функции
|
||||||
|
|
||||||
* ebx = ROP и опциональные флаги
|
* ebx = ROP и опциональные флаги
|
||||||
31 6 5 4 3 0
|
31 30 29 28 6 5 4 3 0
|
||||||
[ reserved ][T][B][ROP]
|
[reserved][CR][reserved][T][B][ROP]
|
||||||
ROP - код растровых операций
|
ROP - код растровых операций
|
||||||
0: копировать
|
0: копировать
|
||||||
1-15: Зарезервировано
|
1-15: Зарезервировано
|
||||||
B - блит на фоновую поферхность
|
B - блит на фоновую поферхность
|
||||||
T - блит с прозрачностью
|
T - блит с прозрачностью
|
||||||
|
CR - относительно клиентской области окна
|
||||||
|
|
||||||
* ecx = указатель на параметры функции
|
* ecx = указатель на параметры функции
|
||||||
смещение цели и отсечение
|
смещение цели и отсечение
|
||||||
|
@ -4285,13 +4285,14 @@ Parameters:
|
|||||||
* eax = 73 - function number
|
* eax = 73 - function number
|
||||||
|
|
||||||
* ebx = ROP and optional flags
|
* ebx = ROP and optional flags
|
||||||
31 6 5 4 3 0
|
31 30 29 28 6 5 4 3 0
|
||||||
[ reserved ][T][B][ROP]
|
[reserved][CR][reserved][T][B][ROP]
|
||||||
ROP - raster operation code
|
ROP - raster operation code
|
||||||
0: Copy
|
0: Copy
|
||||||
1-15: reserved
|
1-15: reserved
|
||||||
B - blit into the background surface
|
B - blit into the background surface
|
||||||
T - transparent blit
|
T - transparent blit
|
||||||
|
CR - blit client relative
|
||||||
|
|
||||||
* ecx = pointer to the function parameters
|
* ecx = pointer to the function parameters
|
||||||
destination offset and clipping
|
destination offset and clipping
|
||||||
|
@ -206,10 +206,13 @@ virtual at sizeof.BLITTER
|
|||||||
.position dd ? ; (x shl 16) + y
|
.position dd ? ; (x shl 16) + y
|
||||||
; ???
|
; ???
|
||||||
.extra_var1 dd ?
|
.extra_var1 dd ?
|
||||||
|
.flags dd ?
|
||||||
.local_vars_size = $
|
.local_vars_size = $
|
||||||
end virtual
|
end virtual
|
||||||
sub esp, .local_vars_size
|
sub esp, .local_vars_size
|
||||||
|
|
||||||
|
mov [esp+.flags], ebx
|
||||||
|
|
||||||
mov eax, [TASK_BASE]
|
mov eax, [TASK_BASE]
|
||||||
mov ebx, [eax-twdw + WDATA.box.width]
|
mov ebx, [eax-twdw + WDATA.box.width]
|
||||||
mov edx, [eax-twdw + WDATA.box.height]
|
mov edx, [eax-twdw + WDATA.box.height]
|
||||||
@ -263,6 +266,14 @@ end virtual
|
|||||||
add ebx, [eax-twdw + WDATA.box.left]
|
add ebx, [eax-twdw + WDATA.box.left]
|
||||||
add ebp, [eax-twdw + WDATA.box.top]
|
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
|
mov ecx, ebx
|
||||||
add ecx, [esp+BLITTER.w]
|
add ecx, [esp+BLITTER.w]
|
||||||
shl ecx, 16
|
shl ecx, 16
|
||||||
|
Loading…
Reference in New Issue
Block a user