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 |