Subversion Repositories Kolibri OS

Rev

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

Rev 6830 Rev 7433
Line 35... Line 35...
35
    dd StrLen	;24
35
    dd StrLen	;24
36
    dd Color	;28
36
    dd Color	;28
37
    dd Align	;32
37
    dd Align	;32
38
}
38
}
Line 39... Line -...
39
 
-
 
40
; font options structure
-
 
41
struc BGIrec FontName,CharsCount,FirstChar,UpperMargin,LowerMargin,\
-
 
42
    Widths,FirstData,EOF,font_data
-
 
43
{
-
 
44
 .FontName     dd ?  ; 0
-
 
45
 .CharsCount   db ?  ; 4
-
 
46
 .FirstChar    db ?  ; 5
-
 
47
 .UpperMargin  db ?  ; 6
-
 
48
 .LowerMargin  db ?  ; 7
-
 
49
 .Widths       dd ?  ; 8
-
 
50
 .FirstData    dd ?  ; 12
-
 
51
 .EOF	       dd ?    ; 16
-
 
52
 .font_data    dd ?  ; 20 follows (Offsets)
-
 
53
}
-
 
54
 
39
 
55
macro BGIfont_GetID
40
macro BGIfont_GetID
56
{
41
{
57
    call _BGIfont_GetID
42
    call _BGIfont_GetID
Line 78... Line 63...
78
if BGI_LEVEL eq KERNEL
63
if BGI_LEVEL eq KERNEL
79
    dw _size
64
    dw _size
80
end if
65
end if
81
}
66
}
Line 82... Line -...
82
 
-
 
83
BGIfont_names:
-
 
84
_FI 'LCOM',11485   ;7
-
 
85
_FI 'EURO',8117    ;5
-
 
86
_FI 'GOTH',13816   ;6
-
 
87
_FI 'LITT',3596    ;8
-
 
88
_FI 'TRIP',11932   ;14
-
 
89
_FI 'SCRI',8490    ;11
-
 
90
_FI 'SMAL',4162    ;13
-
 
91
_FI 'TSCR',12134   ;15
-
 
92
_FI 'SANS',8453    ;10
-
 
93
_FI 'SIMP',9522    ;12
-
 
94
BGIfont_names_end:
-
 
95
 
-
 
96
macro BGIfont_Init
-
 
97
{
-
 
98
; in:  ecx - number of fonts to load;
-
 
99
;      esi-> _FI structure
-
 
100
;      edi-> where to load
-
 
101
    push edi
-
 
102
if  BGI_LEVEL eq KERNEL
-
 
103
    mov  edi,0x40000
-
 
104
end if
-
 
105
  .nfont:
-
 
106
    mov  edx,[esi]
-
 
107
if  BGI_LEVEL eq KERNEL
-
 
108
    movzx ebx,word[esi+4]
-
 
109
    mov  [BGIfont_Prepare.okflag],'N'
-
 
110
end if
-
 
111
    call _BGIfont_Prepare
-
 
112
if ~ BGI_LEVEL eq KERNEL
-
 
113
    add  esi,4
-
 
114
else
-
 
115
    push esi
-
 
116
    test eax,eax
-
 
117
    jz	 .fail
-
 
118
    mov  [BGIfont_Prepare.okflag],'*'
-
 
119
  .fail:
-
 
120
    mov  esi,BGIfont_Prepare.font
-
 
121
    call boot_log
-
 
122
    pop  esi
-
 
123
    add  esi,6
-
 
124
end if
-
 
125
    loop .nfont
-
 
126
    dph2 _BGI_BOLD,300,550
-
 
127
;    movzx edi,byte[0x40000]
-
 
128
    pop  edi
-
 
129
}
-
 
130
 
67
 
131
BGIfont_get2head:
68
BGIfont_get2head:
132
    shr  ecx,28 ; font #
69
    shr  ecx,28 ; font #
133
    sub  ecx,4
70
    sub  ecx,4
134
    jb	 .exit2	; invalid #
71
    jb	 .exit2	; invalid #
Line 144... Line 81...
144
  .exit2:
81
  .exit2:
145
    xor  edi,edi
82
    xor  edi,edi
146
  .ex:
83
  .ex:
147
    ret
84
    ret
Line 148... Line -...
148
 
-
 
149
BGIfont_GetName:
-
 
150
; in: ecx-fontID;
-
 
151
; out: edx-font name.
-
 
152
    call BGIfont_get2head
-
 
153
    xor  edx,edx
-
 
154
    test edi,edi
-
 
155
    jz   .ex
-
 
156
    mov  edx,[edi]
-
 
157
  .ex:
-
 
158
    ret
-
 
159
 
85
 
160
macro dps2 _str
86
macro dps2 _str
161
{
-
 
162
if ~ BGI_LEVEL eq KERNEL
87
{
163
  if LOAD_MSG eq 1
88
	if LOAD_MSG eq 1
164
    dps _str
89
	dps _str
165
  end if
-
 
166
else
-
 
167
    pusha
-
 
168
    mov  esi,BGIfont_Prepare.okflag
-
 
169
    mov  byte[esi], _str
-
 
170
    call boot_log
-
 
171
    popa
-
 
172
end if
90
	end if
Line 173... Line 91...
173
}
91
}
174
 
92
 
175
macro dph2 num,x,y
93
macro dph2 num,x,y
Line 234... Line 152...
234
    loop .fnext
152
    loop .fnext
235
  .fload:
153
  .fload:
236
    mov  dword[.font],edx ; filename
154
    mov  dword[.font],edx ; filename
237
    mov  esi,edi     ; esi->FontName
155
    mov  esi,edi     ; esi->FontName
238
    mov  [.dest],edi ; ptr to load font
156
    mov  [.dest],edi ; ptr to load font
239
if ~ BGI_LEVEL eq KERNEL
-
 
240
        mov     eax, 70
157
        mov     eax, 70
241
        mov     ebx, .fontattr
158
        mov     ebx, .fontattr
242
        mcall
159
        mcall
243
        test    eax, eax
160
        test    eax, eax
244
        jnz     .fail
161
        ;jnz     .fail
245
        dps2    '1'
162
        dps2    '1'
246
        mov     eax, [.fileattr+32]
163
        mov     eax, [.fileattr+32]
247
        mov     [.fsize], eax
164
    mov  [.fsize], litt_end-litt_file
248
    mov  ebx,.fontinfo
165
    mov  ebx,.fontinfo
249
    mov  eax,70
166
    mov  eax,70
250
    mcall	     ; ebx - file size
167
    mcall	     ; ebx - file size
251
else
-
 
252
    push edi esi edx
-
 
253
    mov  eax,.font
168
    ;mov ebx, litt_end-litt_file
254
    xor  ebx,ebx
-
 
255
    mov  esi,12
-
 
256
    mov  ecx,ebx
-
 
257
    mov  edx,edi
169
    ;mov edi, litt_file
258
    call fileread
170
	;mov  [.dest],litt_file ; ptr to load font
259
    pop  edx esi edi
-
 
260
    mov  ebp,edi
-
 
261
    add  ebp,ebx
-
 
262
    cmp  ebp,0x50000
-
 
263
    ja	 .fail
-
 
264
end if
171
 
265
    cmp  dword[edi],0x08084b50 ; 'PK',8,8
172
    cmp  dword[edi],0x08084b50 ; 'PK',8,8
266
    jne  .fail
173
    jne  .fail
267
    dps2 '2'
174
    dps2 '2'
268
    inc  edi
175
    inc  edi
269
    mov  eax,26 ; #EOF
176
    mov  eax,26 ; #EOF
Line 332... Line 239...
332
  .exit:
239
  .exit:
333
    mov  [esp+28],eax
240
    mov  [esp+28],eax
334
    popa
241
    popa
335
    ret
242
    ret
Line 336... Line -...
336
 
-
 
337
if ~ BGI_LEVEL eq KERNEL
243
 
338
.fontinfo:
244
.fontinfo:
339
	dd 0
245
	dd 0
340
	dd 0
246
	dd 0
341
	dd 0
247
	dd 0
342
.fsize	dd 0
248
.fsize	dd 0
343
.dest	dd 0
249
.dest	dd 0
344
.fontfullname:
250
.fontfullname:
345
	db BGIFONT_PATH
251
	db BGIFONT_PATH
Line 346... Line 252...
346
.font	db 'FONT.CHR',0
252
.font	db 'LITT.CHR',0
347
 
253
 
348
.fontattr:
254
.fontattr:
349
        dd      5
255
        dd      5
350
        dd      0
256
        dd      0
351
        dd      0
257
        dd      0
352
        dd      0
258
        dd      0
353
        dd      .fileattr
259
        dd      .fileattr
354
        db      0
260
        db      0
355
        dd      .fontfullname
261
        dd      .fontfullname
356
.fileattr rd 40/4
-
 
357
else
-
 
358
  .dest   dd 0
-
 
359
  .font   db 'FONT    CHR'
-
 
Line 360... Line 262...
360
  .okflag db ' ',0
262
.fileattr rd 40/4
361
end if
263
 
362
 
264
 
363
BGIfont_Coo:
265
BGIfont_Coo: