kolibrios/programs/develop/libGUI/src/text.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

184 lines
4.0 KiB
PHP

tx_control_data_size = 26
tx_no_show_text = 00000001b
tx_text_and_background = 00000010b
tx_redraw_all = 10000000b
tx_redraw_all_off = 01111111b
;tx_special_redraw_on = 00000100b
;tx_special_redraw_off = 11111011b
;****************************************************
;********************craete Text**********************
;****************************************************
;IN
;pointer to parend
;pointer to Text's structure
;OUT
;pointer to initialized Texr's structure
align 4
craete_text:
push ebx
push ecx
push edx
push esi
push edi
push ebp
mov ebx,[esp+24+4]
mov eax,[esp+24+8]
mov [PointerToStructureForText],eax
mov eax,control_header_size+tx_control_data_size
call craete_control
;set all image's parameters in control
mov [eax],dword text
mov ecx,tx_control_data_size
mov esi,[PointerToStructureForText]
mov edi,eax
add edi,control_header_size
rep movsb
call get_skin_height
mov ebx,[PointerToStructureForText]
mov ecx,[ebx+6] ;x
mov edx,[ebx+10] ;y
mov esi,[ebx+14] ;length x
imul esi,6
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],dword 9
pop ebp
pop edi
pop esi
pop edx
pop ecx
pop ebx
ret 8
;****************************************************
;********************Draw Text**********************
;****************************************************
;IN
;pointer to control of text
;message
;OUT
;not returned value
align 4
text:
;get message
mov eax,[esp+8]
;get pointer to control of image
mov esi,[esp+4]
mov [PointerForText],esi
;copy control to local control
add esi,control_header_size
mov edi,dword Text
mov ecx,tx_control_data_size
rep movsb
cmp [eax],dword 1
jne no_redraw_all_text
xor ebx,ebx
mov bl,[Text.type]
and bl,tx_no_show_text
test bl,bl
jnz no_redraw_all_text
or [Text.type],tx_redraw_all
no_redraw_all_text:
cmp [eax],dword 3
jne no_special_message_for_text
xor ebx,ebx
mov bl,[Text.type]
and bl,activate_trap
test bl,bl
jz no_special_message_for_text
or [Text.type],tx_redraw_all
and [Text.type],deactivate_trap
no_special_message_for_text:
;load coordinats and size from control
mov eax,[PointerForText]
mov ebx,[eax+24] ;x
mov ecx,[eax+28] ;y
;set current coordinats and sizes in zakladka
mov [Text.x],ebx
mov [Text.y],ecx
;get standart colors table
mov eax,48
mov ebx,3
mov ecx,dword pointer2
mov edx,40
mcall
xor eax,eax
mov al,[Text.type]
and al,tx_redraw_all
test al,al
jz no_redraw_text_
and [Text.type],tx_redraw_all_off
mov esi,dword Text
mov edi,[PointerForText]
add edi,control_header_size
mov ecx,2
rep movsb
mov ecx,[Text.color]
xor eax,eax
mov al,[Text.type]
and al,tx_text_and_background
test al,al
jz no_background_color
mov edi,[Text.background_color]
or ecx,01000000000000000000000000000000b
no_background_color:
mov eax,4
mov ebx,[Text.x]
shl ebx,16
add ebx,[Text.y]
mov edx,[Text.pointer]
mov esi,[Text.length]
mcall
no_redraw_text_:
exit_text:
mov edi,[PointerForText]
add edi,control_header_size
mov esi,dword Text
mov ecx,tx_control_data_size
rep movsb
ret 8