Subversion Repositories Kolibri OS

Rev

Rev 5867 | Rev 5926 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5867 Rev 5921
Line 3... Line 3...
3
;; Copyright (C) KolibriOS team 2004-2015. All rights reserved. ;;
3
;; Copyright (C) KolibriOS team 2004-2015. All rights reserved. ;;
4
;; Distributed under terms of the GNU General Public License    ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 7... Line 7...
7
 
7
 
Line 8... Line 8...
8
$Revision: 5867 $
8
$Revision: 5921 $
9
 
9
 
10
dtext_asciiz_esi:
10
dtext_asciiz_esi:
11
        btr     ecx, 31
11
        btr     ecx, 31
Line 47... Line 47...
47
        shl     ebp, 2
47
        shl     ebp, 2
48
        imul    eax, ebp
48
        imul    eax, ebp
49
        shl     ebx, 2
49
        shl     ebx, 2
50
        add     eax, ebx
50
        add     eax, ebx
51
        js      .ret
51
        js      .ret
52
        add     edi, eax    ; linear address (32bit)
52
        add     edi, eax
53
        mov     eax, ecx
53
        mov     eax, ecx
54
        mov     ebx, ecx
54
        mov     ebx, ecx
55
        test    ecx, ecx
55
        test    ecx, ecx
56
        jns     @f
56
        jns     @f
57
        mov     esi, 256
57
        mov     esi, 256
58
@@:
58
@@:
59
        shr     ecx, 24
59
        shr     ecx, 24
60
        and     cl, 7
60
        and     cl, 7
61
        inc     ecx
61
        inc     ecx
62
        push    ebp ecx esi
62
        push    ebp ecx esi
63
        mov     esi, edx    ; -> string
63
        mov     esi, edx
64
        or      eax, 0xFF000000
64
        or      eax, 0xFF000000
65
        bt      ebx, 27
65
        bt      ebx, 27
66
        jc      .bufferReady
66
        jc      .bufferReady
67
        mov     eax, 9
67
        mov     eax, 9
68
        test    ebx, 0x30000000
68
        test    ebx, 0x30000000
Line 78... Line 78...
78
        mov     [esp+36], eax
78
        mov     [esp+36], eax
79
        sub     edi, eax
79
        sub     edi, eax
80
        mov     edx, eax
80
        mov     edx, eax
81
        mov     eax, [esp+24]
81
        mov     eax, [esp+24]
82
        cmp     eax, -1
82
        cmp     eax, -1
83
        jnz     .background
83
        jnz     @f
84
        mov     [esp+28], edi
84
        mov     [esp+28], edi
85
.background:
85
@@:
86
        mov     edi, edx
86
        mov     edi, edx
87
        rep stosd
87
        rep stosd
88
        mov     edi, edx
88
        mov     edi, edx
89
        mov     eax, ebx
89
        mov     eax, ebx
90
        and     eax, 0xFFFFFF
90
        and     eax, 0xFFFFFF
Line 98... Line 98...
98
        jmp     .draw866
98
        jmp     .draw866
99
@@:
99
@@:
100
        bt      ebx, 28
100
        bt      ebx, 28
101
        jc      .drawUTF8
101
        jc      .drawUTF8
Line -... Line 102...
-
 
102
 
-
 
103
; ebp = font color
-
 
104
; esi -> string
-
 
105
; edi -> buffer
102
 
106
 
103
; Stack map:
107
; Stack map:
104
; char counter +0
108
; char counter +0
105
fontMultiplier = 4
109
fontMultiplier = 4
106
widthX = 8
110
widthX = 8
Line 113... Line 117...
113
; temp buffer pointer +36
117
; temp buffer pointer +36
Line 114... Line 118...
114
 
118
 
115
.drawUTF16:
119
.drawUTF16:
116
        dec     dword [esp]
120
        dec     dword [esp]
117
        js      .done
-
 
118
        xor     ebx, ebx
121
        js      .done
119
        mov     bx, [esi]
122
        movzx   ebx, word [esi]
120
        test    ebx, ebx
123
        test    ebx, ebx
121
        jz      .done
124
        jz      .done
122
        inc     esi
125
        inc     esi
123
        inc     esi
126
        inc     esi
Line 139... Line 142...
139
 
142
 
140
.drawUTF8:
143
.drawUTF8:
141
        dec     dword [esp]
144
        dec     dword [esp]
142
        js      .done
145
        js      .done
143
@@:
-
 
144
        xor     ebx, ebx
146
@@:
145
        mov     bl, [esi]
147
        movzx   ebx, byte [esi]
146
        inc     esi
148
        inc     esi
147
        test    bl, bl
149
        test    bl, bl
148
        jz      .done
150
        jz      .done
149
        jns     .valid
151
        jns     .valid
150
        shl     bx, 10
152
        shl     bx, 10
151
        jnc     @b
-
 
152
        shr     bh, 2
153
        jnc     @b
-
 
154
        mov     bl, [esi]
-
 
155
        test    bl, bl
153
        mov     bl, [esi]
156
        jns     @b
-
 
157
        shl     bl, 2
-
 
158
        jc      @b
154
        shl     bl, 2
159
        shr     bh, 2
155
        shr     bx, 2
160
        shr     bx, 2
156
        inc     esi
161
        inc     esi
157
        cmp     bx, 1419
162
        cmp     bx, 1419
158
        jc      .valid
163
        jc      .valid
159
        shl     bx, 4
-
 
160
@@:
164
        shl     bh, 4
-
 
165
        jns     @f
-
 
166
.tail:
-
 
167
        mov     bl, [esi]
-
 
168
        shl     bl, 1
-
 
169
        jnc     @b
161
        jns     @f
170
        js      @b
162
        inc     esi
171
        inc     esi
163
        shl     bx, 1
172
        shl     bh, 1
164
        jmp     @b
173
        js      .tail
165
@@:
174
@@:
166
        xor     ebx, ebx
175
        xor     ebx, ebx
167
.valid:
176
.valid:
168
        pushd   esi edi 16
177
        pushd   esi edi 16
Line 178... Line 187...
178
        jmp     .drawUTF8
187
        jmp     .drawUTF8
Line 179... Line 188...
179
 
188
 
180
.draw866:
189
.draw866:
181
        dec     dword [esp]
190
        dec     dword [esp]
182
        js      .done
-
 
183
        xor     ebx, ebx
191
        js      .done
184
        mov     bl, [esi]
192
        movzx   ebx, byte [esi]
185
        test    ebx, ebx
193
        test    ebx, ebx
186
        jz      .done
194
        jz      .done
187
        inc     esi
195
        inc     esi
188
        pushd   esi edi 9
196
        pushd   esi edi 9
Line 197... Line 205...
197
        jmp     .draw866
205
        jmp     .draw866
Line 198... Line 206...
198
 
206
 
199
.draw866toUni:
207
.draw866toUni:
200
        dec     dword [esp]
208
        dec     dword [esp]
201
        js      .done
-
 
202
        xor     eax, eax
209
        js      .done
203
        mov     al, [esi]
210
        movzx   eax, byte [esi]
204
        test    eax, eax
211
        test    eax, eax
205
        jz      .done
212
        jz      .done
206
        call    ansi2uni_char
213
        call    ansi2uni_char
207
        shl     eax, 4
214
        shl     eax, 4
Line 258... Line 265...
258
        call    kernel_free
265
        call    kernel_free
259
        ret
266
        ret
Line 260... Line 267...
260
 
267
 
261
; scaling/smoothing algorithm
268
; scaling/smoothing algorithm
-
 
269
drawChar:
-
 
270
; ebp = font color
-
 
271
; esi = font multiplier
-
 
272
; edi -> buffer
262
drawChar:
273
; ebx -> char data
263
        mov     dl, [ebx]
274
        mov     dl, [ebx]
264
.raw:
275
.raw:
265
        bsf     eax, edx
276
        bsf     eax, edx
266
        jz      .nextRaw
277
        jz      .nextRaw