b97c8c8bf6
git-svn-id: svn://kolibrios.org@5452 a494cfbc-eb01-0410-851d-a64ba20cac60
201 lines
3.7 KiB
PHP
201 lines
3.7 KiB
PHP
;------------------------------------------------------------------------------
|
|
align 4
|
|
draw_appl_button:
|
|
; in:
|
|
; ebx = [x]*65536 + [size x]
|
|
; ecx = [y]*65536 + [size y]
|
|
; edx = internal color 0xRRGGBB
|
|
; esi = external color 0xRRGGBB
|
|
; edi = 0 up or 1 down
|
|
COLOR_CHANGE_MAGNITUDE_0 = 0x080808
|
|
COLOR_CHANGE_MAGNITUDE = 0x101010
|
|
COLOR_CHANGE_MAGNITUDE_1 = 0x202020
|
|
COLOR_CHANGE_MAGNITUDE_2 = 0x404040
|
|
pusha
|
|
add ebx,2 shl 16
|
|
sub bx,4
|
|
add ecx,2 shl 16
|
|
sub cx,4
|
|
mcall 13
|
|
;------------------------------------------------------------------------------
|
|
; mov edx,esi
|
|
test edi,edi
|
|
jnz @f
|
|
|
|
mov eax,COLOR_CHANGE_MAGNITUDE
|
|
call add_color_change_magnitude
|
|
jmp .1
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
mov eax,COLOR_CHANGE_MAGNITUDE
|
|
call subtract_color_change_magnitude
|
|
;--------------------------------------
|
|
align 4
|
|
.1:
|
|
call draw_four_extreme_lines
|
|
;------------------------------------------------------------------------------
|
|
mov edx,esi
|
|
mov eax,COLOR_CHANGE_MAGNITUDE_2
|
|
call subtract_color_change_magnitude
|
|
sub ecx,1 shl 16
|
|
add ecx,2
|
|
sub ebx,1 shl 16
|
|
add ebx,2
|
|
call draw_four_extreme_lines
|
|
;------------------------------------------------------------------------------
|
|
popa
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
align 4
|
|
draw_four_extreme_lines:
|
|
; top left point
|
|
push ebx ecx
|
|
shr ebx,16
|
|
shr ecx,16
|
|
mcall 1
|
|
pop ecx ebx
|
|
; bottom right point
|
|
push ebx ecx
|
|
movzx eax,bx
|
|
shr ebx,16
|
|
add ebx,eax
|
|
dec ebx
|
|
movzx eax,cx
|
|
shr ecx,16
|
|
add ecx,eax
|
|
dec ecx
|
|
mcall 1
|
|
pop ecx ebx
|
|
;--------------------------------------
|
|
; bottom left point
|
|
push ebx ecx
|
|
shr ebx,16
|
|
movzx eax,cx
|
|
shr ecx,16
|
|
add ecx,eax
|
|
dec ecx
|
|
mcall 1
|
|
pop ecx ebx
|
|
;--------------------------------------
|
|
; top right point
|
|
push ebx ecx
|
|
movzx eax,bx
|
|
shr ebx,16
|
|
add ebx,eax
|
|
dec ebx
|
|
shr ecx,16
|
|
mcall 1
|
|
pop ecx ebx
|
|
;--------------------------------------
|
|
; top line
|
|
push ecx
|
|
sub ecx,1 shl 16
|
|
mov cx,1
|
|
mcall 13
|
|
pop ecx
|
|
; bottom line
|
|
push ecx
|
|
mov ax,cx
|
|
shl eax,16
|
|
add ecx,eax
|
|
mov cx,1
|
|
mcall 13
|
|
pop ecx
|
|
; left line
|
|
push ebx
|
|
sub ebx,1 shl 16
|
|
mov bx,1
|
|
mcall 13
|
|
pop ebx
|
|
; right line
|
|
push ebx
|
|
mov ax,bx
|
|
shl eax,16
|
|
add ebx,eax
|
|
mov bx,1
|
|
mcall 13
|
|
pop ebx
|
|
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
align 4
|
|
subtract_color_change_magnitude:
|
|
; in:
|
|
; edx = original color
|
|
; eax = magnitude
|
|
; out:
|
|
; edx = processed color
|
|
sub dl,al
|
|
jae @f
|
|
|
|
xor dl,dl
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
ror edx,8
|
|
ror eax,8
|
|
sub dl,al
|
|
jae @f
|
|
|
|
xor dl,dl
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
ror edx,8
|
|
ror eax,8
|
|
sub dl,al
|
|
jae @f
|
|
|
|
xor dl,dl
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
rol edx,16
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
align 4
|
|
add_color_change_magnitude:
|
|
; in:
|
|
; edx = original color
|
|
; eax = magnitude
|
|
; out:
|
|
; edx = processed color
|
|
add dl,al
|
|
jae @f
|
|
|
|
mov dl,0xff
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
ror edx,8
|
|
ror eax,8
|
|
add dl,al
|
|
jae @f
|
|
|
|
mov dl,0xff
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
ror edx,8
|
|
ror eax,8
|
|
add dl,al
|
|
jae @f
|
|
|
|
mov dl,0xff
|
|
;--------------------------------------
|
|
align 4
|
|
@@:
|
|
rol edx,16
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
align 4
|
|
calculate_button_y_coordinate_and_size:
|
|
mov ecx,[button_top_offset]
|
|
shl ecx,16
|
|
add ecx,[height]
|
|
sub ecx,[button_top_offset]
|
|
sub ecx,[button_bottom_offset]
|
|
ret
|
|
;------------------------------------------------------------------------------
|