Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 4059 → Rev 4060

/programs/network/ircc/textbox.inc
0,0 → 1,123
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; Copyright (C) KolibriOS team 2004-2013. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License ;;
;; ;;
;; ;;
;; GNU GENERAL PUBLIC LICENSE ;;
;; Version 2, June 1991 ;;
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
print_text: ; eax = start ptr
; dl = end char
pusha
ptr2:
mov bl, [eax]
 
cmp bl, dl
je .done
test bl, bl
jz .done
call print_character
 
inc eax
jmp ptr2
 
.done:
popa
ret
 
 
 
print_text2: ; esi = ptr to ASCIIZ string
 
pusha
.loop:
lodsb
test al, al
jz .done
mov bl, al
call print_character
jmp .loop
 
.done:
popa
ret
 
 
 
; Character in bl
print_character:
 
pusha
mov ecx, TEXTBOX_LINES
imul ecx, [textbox_width]
mov esi, [text_start]
 
cmp bl, 10 ; line down
je .linefeed
 
mov eax, [text_pos]
mov byte[esi + eax], bl ; write the byte
inc [text_pos]
 
cmp [text_pos], ecx
jb .done
 
.linefeed:
; scroll all text one line to the top
mov edi, esi
add esi, [textbox_width]
rep movsb
 
mov ecx, TEXTBOX_LINES - 1
imul ecx, [textbox_width]
mov [text_pos], ecx
 
.done:
call window_is_updated
 
popa
ret
 
 
 
draw_channel_text: ; edx = pointer to text
 
pusha
 
mov ebx, TEXT_X shl 16 + TEXT_Y
mov ecx, TEXTBOX_LINES
 
.drawloop:
pusha
mov cx, bx
shl ecx, 16
mov cx, 9 ; character height
mov ebx, TEXT_X shl 16
mov bx, word[textbox_width]
imul bx, 6 ; character width
mov edx, [colors.work]
mcall 13 ; draw rectangle
popa
 
push ecx
mov ecx, [colors.work_text]
 
.draw:
mov esi, [textbox_width]
mcall 4 ; draw text
add edx, [textbox_width]
add ebx, 10 ; height distance between lines
 
pop ecx
loop .drawloop
 
mov eax, [window_active]
and [eax + window.flags], not FLAG_UPDATED ; clear the 'window is updated' flag
 
popa
ret