Subversion Repositories Kolibri OS

Rev

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