Subversion Repositories Kolibri OS

Rev

Rev 1300 | Rev 2430 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2288 clevermous 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
3
;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
8
$Revision: 2288 $
9
 
10
; // Alver 22.06.2008 // {
11
align 4
12
dtext_asciiz_esi:                          ; for skins title out
13
        push    eax
14
        xor     eax, eax
15
        inc     eax
16
        jmp     dtext.1
17
; } \\ Alver \\
18
 
19
align 4
20
dtext:  ; Text String Output (rw by Johnny_B[john@kolibrios.org])
21
        ; ebx x & y
22
        ; ecx style ( 0xX0000000 ) & color ( 0x00RRGGBB )
23
        ; X = ABnnb:
24
        ; nn = font
25
        ; A = 0 <=> output esi characters; otherwise output ASCIIZ string
26
        ; B = 1 <=> fill background with color eax
27
        ; edx start of text
28
        ; edi 1 force
29
 
30
; // Alver 22.06.2008 // {
31
        push    eax
32
        xor     eax, eax
33
.1:
34
; } \\ Alver \\
35
        pushad
36
        call    [_display.disable_mouse]
37
 
38
        movsx   eax, bx         ; eax=y
39
        sar     ebx, 16         ; ebx=x
40
        xchg    eax, ebx        ; eax=x, ebx=y
41
        cmp     esi, 255
42
        jb      .loop
43
        mov     esi, 255
44
.loop:
45
        test    ecx, ecx
46
        js      .test_asciiz
47
        dec     esi
48
        js      .end
49
        jmp     @f
50
.test_asciiz:
51
        cmp     byte [edx], 0
52
        jz      .end
53
; // Alver 22.06.2008 // {
54
        cmp     byte [esp+28], 1
55
        jne     @f
56
        dec     esi
57
        js      .end
58
; } \\ Alver \\
59
@@:
60
        inc     edx
61
        pushad
62
        movzx   edx, byte [edx-1]
63
        test    ecx, 0x10000000
64
        jnz     .font2
65
        mov     esi, 9
66
        lea     ebp, [FONT_I+8*edx+edx]
67
.symloop1:
68
        mov     dl, byte [ebp]
69
        or      dl, 1 shl 6
70
.pixloop1:
71
        shr     dl, 1
72
        jz      .pixloop1end
73
        jnc     .nopix
74
        call    [putpixel]
75
        jmp     .pixloop1cont
76
.nopix:
77
        test    ecx, 0x40000000
78
        jz      .pixloop1cont
79
        push    ecx
80
        mov     ecx, [esp+4+20h+20h]
81
        call    [putpixel]
82
        pop     ecx
83
.pixloop1cont:
84
        inc     eax
85
        jmp     .pixloop1
86
.pixloop1end:
87
        sub     eax, 6
88
        inc     ebx
89
        inc     ebp
90
        dec     esi
91
        jnz     .symloop1
92
        popad
93
        add     eax, 6
94
        jmp     .loop
95
.font2:
96
        add     edx, edx
97
        lea     ebp, [FONT_II+4*edx+edx+1]
98
        push    9
99
        movzx   esi, byte [ebp-1]
100
.symloop2:
101
        mov     dl, byte [ebp]
102
        push    esi
103
.pixloop2:
104
        shr     dl, 1
105
        jnc     .nopix2
106
        call    [putpixel]
107
        jmp     .pixloop2cont
108
.nopix2:
109
        test    ecx, 0x40000000
110
        jz      .pixloop2cont
111
        push    ecx
112
        mov     ecx, [esp+12+20h+20h]
113
        call    [putpixel]
114
        pop     ecx
115
.pixloop2cont:
116
        inc     eax
117
        dec     esi
118
        jnz     .pixloop2
119
        pop     esi
120
        sub     eax, esi
121
        inc     ebx
122
        inc     ebp
123
        dec     dword [esp]
124
        jnz     .symloop2
125
        pop     eax
126
        add     dword [esp+28], esi
127
        popad
128
        jmp     .loop
129
.end:
130
        popad
131
        pop     eax             ; << // Alver 22.06.2008 // <<
132
        ret