Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2521 → Rev 2522

/kernel/branches/Kolibri-A/trunk/gui/font.inc
1,13 → 1,13
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License ;;
;; Copyright (C) KolibriOS team 2004-2012. All rights reserved. ;;
;; Distributed FOR KOLIBRIOS AND ITS DIRECT BRANCHES ONLY ;;
;; under conditions of the GNU General Public License ;;
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
$Revision$
 
; // Alver 22.06.2008 // {
align 4
dtext_asciiz_esi: ; for skins title out
push eax
14,7 → 14,6
xor eax, eax
inc eax
jmp dtext.1
; } \\ Alver \\
 
align 4
dtext: ; Text String Output (rw by Johnny_B[john@kolibrios.org])
27,11 → 26,12
; edx start of text
; edi 1 force
 
; // Alver 22.06.2008 // {
test ecx, 0x20000000
jnz .font3
 
push eax
xor eax, eax
.1:
; } \\ Alver \\
pushad
call [_display.disable_mouse]
 
50,12 → 50,10
.test_asciiz:
cmp byte [edx], 0
jz .end
; // Alver 22.06.2008 // {
cmp byte [esp+28], 1 ; was the entry point = dtext.1 ?
jne @f
dec esi
js .end
; } \\ Alver \\
@@:
inc edx
pushad ; esp -= 64 !
92,6 → 90,7
popad
add eax, 6
jmp .loop
 
.font2:
add edx, edx
lea ebp, [FONT_II+4*edx+edx+1]
128,7 → 127,7
jmp .loop
.end:
popad
pop eax ; << // Alver 22.06.2008 // <<
pop eax
ret
 
diff10 "old font code size",dtext,$
137,7 → 136,56
; NEW FONTS
;_____________________________________________________
;
align 4
.font3:
pushad
call [_display.disable_mouse]
movsx eax, bx ; eax=y
sar ebx, 16 ; ebx=x
xchg eax, ebx ; eax=x, ebx=y
 
xor ebp, ebp ; font#
mov [font_check_routine], ebp
 
test ecx, ecx
js .checked
inc [font_check_routine]; .check_esi
.checked:
mov edi, ecx ; colour
and edi, 0x0FFFFFF ; RGB
align 4
.draw_char:
mov cl, byte[edx] ; char#
movzx ecx, cl
call nsvf_draw_char
add eax, 6
test [font_check_routine], 1
jz .check_asciz
 
.check_esi:
inc edx
dec esi
jz .exit
jmp .draw_char
 
align 4
.check_asciz:
or byte[edx], 0
jz .exit
inc edx
jmp .draw_char
 
align 4
.exit:
popad
ret
 
align 4
 
font_check_routine dd ?
 
 
 
align 8
sdsh_data:
 
169,10 → 217,10
mov ebp, edi
 
 
sdsh_draw_char:
nsvf_draw_char:
; eax = left side X
; ebx = bottom Y
; edi = color 0x0RRGGBB
; edi = colour 0x0RRGGBB
; ebp = font@
; ecx = ascii, zero-extended to 32bits
push ecx
180,10 → 228,10
push ebp
shl ebp, 4
add ebp, sdsh_data.info
; call ch_checkscreen
; jb .exit
; call ch_checkwin
; jc .exit
call ch_checkscreen
jb .exit
call ch_checkwin
jc .exit
mov edx, [ebp + 4] ; chartable addr
mov cx, word[edx + ecx*2] ; tick info
mov edx, ecx
470,11 → 518,12
; eax = x coordinate
; ebx = y coordinate
; ebp -> font info
;!destroys ch, edx!
 
push eax
push ebx
push ecx
push edx
mov ch, byte[CURRENT_TASK]
mov al, byte [ebp] ; char X-width
mov edx, [_display.width] ; screen X-size
imul edx, ebx
add edx, [_WinMapAddress]
481,7 → 530,7
add edx, eax
cmp ch, byte [edx]
jne .fail
movzx eax, byte [ebp]
movzx eax, byte [ebp] ; char X-width
cmp ch, byte [edx+eax]
jne .fail
movzx ebx, byte [ebp+1]
495,6 → 544,8
.fail:
stc ; CF means the charbox is invisible
.done:
pop edx
pop ecx
pop ebx
pop eax
ret
501,7 → 552,7
 
align 4
diff16 "ch_putpix : ",0,$
; ch_putpixel:
ch_putpixel:
; eax = x coordinate
; ebx = y coordinate
; edi = 0x0RRGGBB
513,7 → 564,7
pop edx
ret
;)
ch_putpixel:
;ch_putpixel2:
; test version!!! ===== to be removed!!
; eax = x coordinate
; ebx = y coordinate