forked from KolibriOS/kolibrios
03ec9a762d
git-svn-id: svn://kolibrios.org@706 a494cfbc-eb01-0410-851d-a64ba20cac60
161 lines
3.6 KiB
PHP
161 lines
3.6 KiB
PHP
|
|
im_control_data_size = 26
|
|
im_redraw_all = 10000000b
|
|
im_redraw_all_off = 01111111b
|
|
;im_special_redraw_on = 00000001b
|
|
;im_special_redraw_off = 11111110b
|
|
|
|
;****************************************************
|
|
;*******************craete Image**********************
|
|
;****************************************************
|
|
;IN
|
|
;pointer to parend
|
|
;pointer to Image's structure
|
|
;OUT
|
|
;pointer to initialized Image's structure
|
|
align 4
|
|
|
|
craete_image:
|
|
|
|
push ebx
|
|
push ecx
|
|
push edx
|
|
push esi
|
|
push edi
|
|
push ebp
|
|
|
|
mov ebx,[esp+24+4]
|
|
mov eax,[esp+24+8]
|
|
|
|
mov [PointerToStructureForImage],eax
|
|
|
|
mov eax,control_header_size+im_control_data_size
|
|
call craete_control
|
|
|
|
;set all image's parameters in control
|
|
mov [eax],dword image
|
|
|
|
mov ecx,im_control_data_size
|
|
mov esi,[PointerToStructureForImage]
|
|
mov edi,eax
|
|
add edi,control_header_size
|
|
rep movsb
|
|
|
|
call get_skin_height
|
|
|
|
mov ebx,[PointerToStructureForImage]
|
|
mov ecx,[ebx+6] ;x
|
|
mov edx,[ebx+10] ;y
|
|
mov esi,[ebx+14] ;size x
|
|
mov edi,[ebx+18] ;size y
|
|
add ecx,border_width
|
|
add edx,[skin_height]
|
|
;copy information to control
|
|
mov [eax+24],ecx
|
|
mov [eax+28],edx
|
|
mov [eax+32],esi
|
|
mov [eax+36],edi
|
|
|
|
pop ebp
|
|
pop edi
|
|
pop esi
|
|
pop edx
|
|
pop ecx
|
|
pop ebx
|
|
|
|
ret 8
|
|
|
|
;****************************************************
|
|
;********************Draw Image**********************
|
|
;****************************************************
|
|
;IN
|
|
;pointer to control of button
|
|
;message
|
|
;OUT
|
|
;not returned value
|
|
align 4
|
|
|
|
image:
|
|
|
|
;get message
|
|
mov eax,[esp+8]
|
|
|
|
;get pointer to control of image
|
|
mov esi,[esp+4]
|
|
mov [PointerForImage],esi
|
|
;copy control to local control
|
|
add esi,control_header_size
|
|
mov edi,dword Image
|
|
mov ecx,im_control_data_size
|
|
rep movsb
|
|
|
|
|
|
cmp [eax],dword 1
|
|
jne no_redraw_all_image
|
|
|
|
or [Image.type],im_redraw_all
|
|
no_redraw_all_image:
|
|
|
|
cmp [eax],dword 3
|
|
jne no_special_message_image
|
|
|
|
xor eax,eax
|
|
mov al,[Image.type]
|
|
and al,activate_trap
|
|
test al,al
|
|
jz no_activate_redraw_image
|
|
|
|
and [Image.type],deactivate_trap
|
|
or [Image.type],im_redraw_all
|
|
no_activate_redraw_image:
|
|
|
|
no_special_message_image:
|
|
|
|
;load coordinats and size from control
|
|
mov eax,[PointerForImage]
|
|
mov ebx,[eax+24] ;x
|
|
mov ecx,[eax+28] ;y
|
|
mov edx,[eax+32] ;size x
|
|
mov esi,[eax+36] ;size y
|
|
;set current coordinats and sizes in zakladka
|
|
mov [Image.x],ebx
|
|
mov [Image.y],ecx
|
|
mov [Image.sizex],edx
|
|
mov [Image.sizey],esi
|
|
|
|
xor eax,eax
|
|
mov al,[Image.type]
|
|
and al,im_redraw_all
|
|
test al,al
|
|
jz no_redraw_image_
|
|
|
|
and [Image.type],im_redraw_all_off
|
|
|
|
mov esi,dword Image
|
|
mov edi,[PointerForImage]
|
|
add edi,control_header_size
|
|
mov ecx,2
|
|
rep movsb
|
|
|
|
mov eax,7
|
|
mov ebx,[Image.pointer]
|
|
mov ecx,[Image.sizex]
|
|
shl ecx,16
|
|
add ecx,[Image.sizey]
|
|
mov edx,[Image.x]
|
|
shl edx,16
|
|
add edx,[Image.y]
|
|
mcall
|
|
|
|
no_redraw_image_:
|
|
|
|
exit_image:
|
|
|
|
mov edi,[PointerForImage]
|
|
add edi,control_header_size
|
|
mov esi,dword Image
|
|
mov ecx,im_control_data_size
|
|
rep movsb
|
|
|
|
ret 8
|