Subversion Repositories Kolibri OS

Rev

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

Rev 6900 Rev 7103
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: 6900 $
8
$Revision: 7103 $
9
 
9
 
10
dtext:
10
dtext:
11
; edx -> string
11
; edx -> string
Line 18... Line 18...
18
; R=1: edi -> user area for redirect
18
; R=1: edi -> user area for redirect
19
; FF=3: UTF-8 8x16, FF=2: UTF-16LE 8x16
19
; FF=3: UTF-8 8x16, FF=2: UTF-16LE 8x16
20
; FF=1: cp866 8x16, FF=0: cp866 6x9
20
; FF=1: cp866 8x16, FF=0: cp866 6x9
21
; SSS = (font multiplier)-1
21
; SSS = (font multiplier)-1
22
; edi=1: force output
22
; edi=1: force output    
-
 
23
; flag CF=1 means that we deal with asciiz but need to draw no more than esi symbols
-
 
24
        clc
-
 
25
._:        
-
 
26
        push    ecx edx
-
 
27
        setc    dl        
23
        and     eax, 0xFFFFFF
28
        and     eax, 0xFFFFFF
-
 
29
        and     ecx, 1 shl 31
-
 
30
        shl     edx, 29
-
 
31
        or      eax, ecx    
-
 
32
        or      eax, edx
-
 
33
        pop     edx ecx        
24
        bt      ecx, 30
34
        bt      ecx, 30
25
        jc      @f
35
        jc      @f
26
        xor     eax, eax
36
        or      eax, 1 shl 30
27
        dec     eax
-
 
28
@@:
37
@@:
29
        pushd   0 0 0 eax
38
        pushd   0 0 0 eax
30
        movsx   eax, bx
39
        movsx   eax, bx
31
        sar     ebx, 16
40
        sar     ebx, 16
32
        push    eax ebx edi
41
        push    eax ebx edi
Line 77... Line 86...
77
        shr     ecx, 2
86
        shr     ecx, 2
78
        mov     [esp+36], eax
87
        mov     [esp+36], eax
79
        sub     edi, eax
88
        sub     edi, eax
80
        mov     edx, eax
89
        mov     edx, eax
81
        mov     eax, [esp+24]
90
        mov     eax, [esp+24]
82
        cmp     eax, -1
91
        test    eax, 1 shl 30
83
        jnz     @f
92
        jz      @f
-
 
93
        or      eax, -1
84
        mov     [esp+28], edi
94
        mov     [esp+28], edi
-
 
95
        jmp     .1
85
@@:
96
@@:     
-
 
97
        and     eax, 0x00ffffff          
-
 
98
.1:
86
        mov     edi, edx
99
        mov     edi, edx
87
        rep stosd
100
        rep stosd
88
        mov     edi, edx
101
        mov     edi, edx
89
        mov     eax, ebx
102
        mov     eax, ebx
90
        and     eax, 0xFFFFFF
103
        and     eax, 0xFFFFFF
Line 130... Line 143...
130
fontMultiplier = 4
143
fontMultiplier = 4
131
widthX = 8
144
widthX = 8
132
; edi +12
145
; edi +12
133
; X +16
146
; X +16
134
; Y +20
147
; Y +20
135
; background +24
148
; internal flags & background +24
136
deltaToScreen = 28
149
deltaToScreen = 28
137
; temp buffer height +32
150
; temp buffer height +32
138
; temp buffer pointer +36
151
; temp buffer pointer +36
Line 139... Line 152...
139
 
152
 
140
.drawUTF16:
153
.drawUTF16:
141
        dec     dword [esp]
154
        dec     dword [esp]
142
        js      .done
155
        js      .done
-
 
156
        movzx   ebx, word [esi]
-
 
157
        test    dword [esp + 24], 1 shl 31
-
 
158
        jnz     @f                
-
 
159
        test    dword [esp + 24], 1 shl 29
-
 
160
        jz      .u16Still
143
        movzx   ebx, word [esi]
161
@@:        
144
        test    ebx, ebx
162
        test    ebx, ebx
-
 
163
        jz      .done
145
        jz      .done
164
.u16Still:        
146
        inc     esi
165
        inc     esi
147
        inc     esi
166
        inc     esi
148
        cmp     bx, 1419
167
        cmp     bx, 1419
149
        jc      @f
168
        jc      @f
Line 164... Line 183...
164
.drawUTF8:
183
.drawUTF8:
165
        dec     dword [esp]
184
        dec     dword [esp]
166
        js      .done
185
        js      .done
167
        xor     eax, eax
186
        xor     eax, eax
168
        call    utf8to16
187
        call    utf8to16
-
 
188
        test    dword [esp + 24], 1 shl 31
-
 
189
        jnz     @f                
-
 
190
        test    dword [esp + 24], 1 shl 29
-
 
191
        jz      .u8Still
-
 
192
@@:        
169
        test    eax, eax
193
        test    eax, eax
170
        jz      .done
194
        jz      .done
-
 
195
.u8Still:        
171
        cmp     eax, 1419
196
        cmp     eax, 1419
172
        jc      @f
197
        jc      @f
173
        xor     eax, eax
198
        xor     eax, eax
174
@@:
199
@@:
175
        shl     eax, 4
200
        shl     eax, 4
Line 186... Line 211...
186
 
211
 
187
.draw866:
212
.draw866:
188
        dec     dword [esp]
213
        dec     dword [esp]
189
        js      .done
214
        js      .done
-
 
215
        movzx   ebx, byte [esi]
-
 
216
        test    dword [esp + 24], 1 shl 31
-
 
217
        jnz     @f                
-
 
218
        test    dword [esp + 24], 1 shl 29
-
 
219
        jz      .866Still
190
        movzx   ebx, byte [esi]
220
@@:        
191
        test    ebx, ebx
221
        test    ebx, ebx
-
 
222
        jz      .done
192
        jz      .done
223
.866Still:        
193
        inc     esi
224
        inc     esi
194
        pushd   esi edi 9
225
        pushd   esi edi 9
195
        lea     ebx, [ebx*8+ebx+font1]
226
        lea     ebx, [ebx*8+ebx+font1]
196
        mov     esi, [esp+12+fontMultiplier]
227
        mov     esi, [esp+12+fontMultiplier]
Line 204... Line 235...
204
 
235
 
205
.draw866toUni:
236
.draw866toUni:
206
        dec     dword [esp]
237
        dec     dword [esp]
207
        js      .done
238
        js      .done
-
 
239
        movzx   eax, byte [esi]
-
 
240
        test    dword [esp + 24], 1 shl 31
-
 
241
        jnz     @f                
-
 
242
        test    dword [esp + 24], 1 shl 29
-
 
243
        jz      .8662uStill         
208
        movzx   eax, byte [esi]
244
@@:        
209
        test    eax, eax
245
        test    eax, eax
-
 
246
        jz      .done
210
        jz      .done
247
.8662uStill:        
211
        call    ansi2uni_char
248
        call    ansi2uni_char
212
        shl     eax, 4
249
        shl     eax, 4
213
        lea     ebx, [eax+fontUni]
250
        lea     ebx, [eax+fontUni]
214
        inc     esi
251
        inc     esi