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 |