forked from KolibriOS/kolibrios
00b0341730
git-svn-id: svn://kolibrios.org@4060 a494cfbc-eb01-0410-851d-a64ba20cac60
124 lines
3.1 KiB
PHP
124 lines
3.1 KiB
PHP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; ;;
|
|
;; 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
|
|
|