Rev 2465 | Rev 3500 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2465 | Rev 2987 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2004-2012. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2012. 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: 2465 $ |
8 | $Revision: 2987 $ |
9 | 9 | ||
10 | ;------------------------------------------------------------------------------ |
10 | ;------------------------------------------------------------------------------ |
11 | align 4 |
11 | align 4 |
12 | dtext_asciiz_esi: ; for skins title out |
12 | dtext_asciiz_esi: ; for skins title out |
13 | push eax |
13 | push eax |
14 | xor eax, eax |
14 | xor eax, eax |
15 | inc eax |
15 | inc eax |
16 | jmp dtext.1 |
16 | jmp dtext.1 |
17 | ;------------------------------------------------------------------------------ |
17 | ;------------------------------------------------------------------------------ |
18 | align 4 |
18 | align 4 |
19 | dtext: ; Text String Output (rw by Johnny_B[john@kolibrios.org]) |
19 | dtext: |
20 | ; ebx x & y |
20 | ; ebx x & y |
21 | ; ecx style ( 0xX0000000 ) & color ( 0x00RRGGBB ) |
21 | ; ecx style ( 0xX0000000 ) & color ( 0x00RRGGBB ) |
22 | ; X = ABnnb: |
22 | ; X = ABnnb: |
23 | ; nn = font |
23 | ; nn = font |
24 | ; A = 0 <=> output esi characters; otherwise output ASCIIZ string |
24 | ; A = 0 <=> output esi characters; otherwise output ASCIIZ string |
25 | ; B = 1 <=> fill background with color eax |
25 | ; B = 1 <=> fill background with color eax |
26 | ; edx start of text |
26 | ; edx start of text |
27 | ; edi 1 force |
27 | ; edi 1 force or user area for redirect |
28 | push eax |
28 | push eax |
29 | xor eax, eax |
29 | xor eax, eax |
30 | ;-------------------------------------- |
30 | ;-------------------------------------- |
Line 34... | Line 34... | ||
34 | movsx eax, bx ; eax=y |
34 | movsx eax, bx ; eax=y |
35 | sar ebx, 16 ; ebx=x |
35 | sar ebx, 16 ; ebx=x |
36 | xchg eax, ebx ; eax=x, ebx=y |
36 | xchg eax, ebx ; eax=x, ebx=y |
37 | cmp esi, 255 |
37 | cmp esi, 255 |
38 | jb .loop |
38 | jb .loop |
- | 39 | ||
39 | mov esi, 255 |
40 | mov esi, 255 |
40 | ;-------------------------------------- |
41 | ;-------------------------------------- |
41 | align 4 |
42 | align 4 |
42 | .loop: |
43 | .loop: |
43 | test ecx, ecx |
44 | test ecx, ecx |
44 | js .test_asciiz |
45 | js .test_asciiz |
- | 46 | ||
45 | dec esi |
47 | dec esi |
46 | js .end |
48 | js .end |
- | 49 | ||
47 | jmp @f |
50 | jmp @f |
48 | ;-------------------------------------- |
51 | ;-------------------------------------- |
49 | align 4 |
52 | align 4 |
50 | .test_asciiz: |
53 | .test_asciiz: |
51 | cmp byte [edx], 0 |
54 | cmp byte [edx], 0 |
52 | jz .end |
55 | jz .end |
Line 53... | Line 56... | ||
53 | 56 | ||
54 | cmp byte [esp+28], 1 |
57 | cmp byte [esp+28], 1 |
- | 58 | jne @f |
|
55 | jne @f |
59 | |
56 | dec esi |
60 | dec esi |
57 | js .end |
61 | js .end |
58 | ;-------------------------------------- |
62 | ;-------------------------------------- |
59 | align 4 |
63 | align 4 |
60 | @@: |
64 | @@: |
61 | inc edx |
65 | inc edx |
62 | pushad |
66 | pushad |
63 | movzx edx, byte [edx-1] |
67 | movzx edx, byte [edx-1] |
64 | test ecx, 0x10000000 |
68 | test ecx, 0x10000000 |
- | 69 | jnz .font2 |
|
65 | jnz .font2 |
70 | |
66 | mov esi, 9 |
71 | mov esi, 9 |
67 | lea ebp, [FONT_I+8*edx+edx] |
72 | lea ebp, [FONT_I+8*edx+edx] |
68 | ;-------------------------------------- |
73 | ;-------------------------------------- |
69 | align 4 |
74 | align 4 |
Line 73... | Line 78... | ||
73 | ;-------------------------------------- |
78 | ;-------------------------------------- |
74 | align 4 |
79 | align 4 |
75 | .pixloop1: |
80 | .pixloop1: |
76 | shr dl, 1 |
81 | shr dl, 1 |
77 | jz .pixloop1end |
82 | jz .pixloop1end |
- | 83 | ||
78 | jnc .nopix |
84 | jnc .nopix |
- | 85 | ||
- | 86 | test ecx, 0x08000000 ; redirect the output to the user area |
|
- | 87 | jz @f |
|
- | 88 | ||
- | 89 | call draw_text_to_user_area |
|
- | 90 | jmp .pixloop1cont |
|
- | 91 | ;-------------------------------------- |
|
- | 92 | align 4 |
|
- | 93 | @@: |
|
79 | and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area |
94 | and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area |
80 | ; call [putpixel] |
95 | ; call [putpixel] |
81 | call __sys_putpixel |
96 | call __sys_putpixel |
82 | jmp .pixloop1cont |
97 | jmp .pixloop1cont |
83 | ;-------------------------------------- |
98 | ;-------------------------------------- |
84 | align 4 |
99 | align 4 |
85 | .nopix: |
100 | .nopix: |
86 | test ecx, 0x40000000 |
101 | test ecx, 0x40000000 |
87 | jz .pixloop1cont |
102 | jz .pixloop1cont |
- | 103 | ||
88 | push ecx |
104 | push ecx |
89 | mov ecx, [esp+4+20h+20h] |
105 | mov ecx, [esp+4+20h+20h] |
- | 106 | ||
- | 107 | test ecx, 0x08000000 ; redirect the output to the user area |
|
- | 108 | jz @f |
|
- | 109 | ||
- | 110 | call draw_text_to_user_area |
|
- | 111 | pop ecx |
|
- | 112 | jmp .pixloop1cont |
|
- | 113 | ;-------------------------------------- |
|
- | 114 | align 4 |
|
- | 115 | @@: |
|
90 | and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area |
116 | and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area |
91 | ; call [putpixel] |
117 | ; call [putpixel] |
92 | call __sys_putpixel |
118 | call __sys_putpixel |
93 | pop ecx |
119 | pop ecx |
94 | ;-------------------------------------- |
120 | ;-------------------------------------- |
Line 102... | Line 128... | ||
102 | sub eax, 6 |
128 | sub eax, 6 |
103 | inc ebx |
129 | inc ebx |
104 | inc ebp |
130 | inc ebp |
105 | dec esi |
131 | dec esi |
106 | jnz .symloop1 |
132 | jnz .symloop1 |
- | 133 | ||
107 | popad |
134 | popad |
108 | add eax, 6 |
135 | add eax, 6 |
109 | jmp .loop |
136 | jmp .loop |
110 | ;-------------------------------------- |
137 | ;-------------------------------------- |
111 | align 4 |
138 | align 4 |
Line 122... | Line 149... | ||
122 | ;-------------------------------------- |
149 | ;-------------------------------------- |
123 | align 4 |
150 | align 4 |
124 | .pixloop2: |
151 | .pixloop2: |
125 | shr dl, 1 |
152 | shr dl, 1 |
126 | jnc .nopix2 |
153 | jnc .nopix2 |
- | 154 | ||
- | 155 | test ecx, 0x08000000 ; redirect the output to the user area |
|
- | 156 | jz @f |
|
- | 157 | ||
- | 158 | call draw_text_to_user_area |
|
- | 159 | jmp .pixloop2cont |
|
- | 160 | ;-------------------------------------- |
|
- | 161 | align 4 |
|
- | 162 | @@: |
|
127 | and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area |
163 | and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area |
128 | ; call [putpixel] |
164 | ; call [putpixel] |
129 | call __sys_putpixel |
165 | call __sys_putpixel |
130 | jmp .pixloop2cont |
166 | jmp .pixloop2cont |
131 | ;-------------------------------------- |
167 | ;-------------------------------------- |
132 | align 4 |
168 | align 4 |
133 | .nopix2: |
169 | .nopix2: |
134 | test ecx, 0x40000000 |
170 | test ecx, 0x40000000 |
135 | jz .pixloop2cont |
171 | jz .pixloop2cont |
- | 172 | ||
136 | push ecx |
173 | push ecx |
137 | mov ecx, [esp+12+20h+20h] |
174 | mov ecx, [esp+12+20h+20h] |
- | 175 | ||
- | 176 | test ecx, 0x08000000 ; redirect the output to the user area |
|
- | 177 | jz @f |
|
- | 178 | ||
- | 179 | call draw_text_to_user_area |
|
- | 180 | pop ecx |
|
- | 181 | jmp .pixloop2cont |
|
- | 182 | ;-------------------------------------- |
|
- | 183 | align 4 |
|
- | 184 | @@: |
|
138 | and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area |
185 | and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area |
139 | ; call [putpixel] |
186 | ; call [putpixel] |
140 | call __sys_putpixel |
187 | call __sys_putpixel |
141 | pop ecx |
188 | pop ecx |
142 | ;-------------------------------------- |
189 | ;-------------------------------------- |
143 | align 4 |
190 | align 4 |
144 | .pixloop2cont: |
191 | .pixloop2cont: |
145 | inc eax |
192 | inc eax |
146 | dec esi |
193 | dec esi |
147 | jnz .pixloop2 |
194 | jnz .pixloop2 |
- | 195 | ||
148 | pop esi |
196 | pop esi |
149 | sub eax, esi |
197 | sub eax, esi |
150 | inc ebx |
198 | inc ebx |
151 | inc ebp |
199 | inc ebp |
152 | dec dword [esp] |
200 | dec dword [esp] |
153 | jnz .symloop2 |
201 | jnz .symloop2 |
- | 202 | ||
154 | pop eax |
203 | pop eax |
155 | add dword [esp+28], esi |
204 | add dword [esp+28], esi |
156 | popad |
205 | popad |
157 | jmp .loop |
206 | jmp .loop |
158 | ;-------------------------------------- |
207 | ;-------------------------------------- |
Line 160... | Line 209... | ||
160 | .end: |
209 | .end: |
161 | popad |
210 | popad |
162 | pop eax |
211 | pop eax |
163 | ret |
212 | ret |
164 | ;------------------------------------------------------------------------------=>=> |
213 | ;------------------------------------------------------------------------------ |
- | 214 | ; eax = x coordinate |
|
- | 215 | ; ebx = y coordinate |
|
- | 216 | ; ecx = ?? RR GG BB |
|
- | 217 | ; edi = user area |
|
- | 218 | align 4 |
|
- | 219 | draw_text_to_user_area: |
|
- | 220 | pushad |
|
- | 221 | imul ebx, [edi+0] |
|
- | 222 | add eax, ebx |
|
- | 223 | shl eax, 2 |
|
- | 224 | add eax, edi |
|
- | 225 | add eax, 8 |
|
- | 226 | and ecx, 0xffffff |
|
- | 227 | or ecx, 0xff000000 ; not transparent |
|
- | 228 | mov [eax], ecx ; store pixel |
|
- | 229 | popad |
|
- | 230 | ret |
|
- | 231 | ;------------------------------------------------------------------------------ |
|
- | 232 | align 4 |
|
- | 233 | FONT_I: |
|
- | 234 | file 'char.mt' |
|
- | 235 | ;------------------------------------------------------------------------------ |
|
- | 236 | align 4 |
|
- | 237 | FONT_II: |
|
- | 238 | file 'char2.mt' |
|
- | 239 | ;------------------------------------------------------------------------------=>=> |
|
165 | 240 |