kolibrios/programs/develop/libGUI/src/image.inc
andrew_programmer 03ec9a762d Save of registers after an entrance in function libGUI is added.
git-svn-id: svn://kolibrios.org@706 a494cfbc-eb01-0410-851d-a64ba20cac60
2008-01-31 12:50:35 +00:00

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