'ProgramMode:GB1
' Font File Manager
' Version : 01.11
' 2018.04.22
' Copyright _#E59E_ 2018 Colon
'
' support sub routine
' for Font Editor _#E6B2_FEINT_#E6B2_ by Tsuru&s

SysCall(0X2B7,0
SysCall(0X2B8,3,3,0,0
If Version<45:Then 
"Your C.Basic for CG"
"Version does not"
"support this program."
"Upgrade C.Basic to"
"  Ver 0.45_#E640_ or later."
Blue Locate 10,7,"Press [EXIT]"
Do
SysCall(0X1D81
_DispVram
LpWhile Getkey1<>47
_ClrVram
Stop
IfEnd

SysCall(0X1D81
SysCall(0X2B7,3

'Set up
ClrMat 
'WARNINGChar!Char!
'_#E693_ Don't delete this or the system will crashChar!Char!
'#_Break_0
'_#E692_ Don't delete this or the system will crashChar!Char!
'#_Mat _0
0X12->Dim List 2.W
88->Dim List 3.B
'#CBINT
'#_Mat _1
CoordOff:GridOff
AxesOff:LabelOff
S-L-Thin:0->K:0->Z
RefrshCtrl 2:RefrshTime 0
Plot/Line-Color Black 
Version>=48=>SetFont 1

'GetBitmapFileList
SysCall(0X180E,0,0
IsExist("**.bmp")
RowSize(Ans)->R
{R,256}->Dim Mat <r>.B
For 1->A To R
StrMid(StrShift($Ans[A],(-)4),StrSrc($Ans[A],"//",2)+1->Str A
SysCall(0X180E,A,2R
Next
Mat <r>->Mat L

For 1->A To R
IsExist($Ans[A])->S
StrLeft("    "+$L[A]+"          ",16)+":"+StrChar(" ",6-StrLen(Sprintf("%u",%S)))+Sprintf("%u",%S->Str A
SysCall(0X180E,R+A,2R
Next
Mat <r>->Mat l
ClrMat <r>
ClrMat Ans

'GetIcon
BmpLoad("BMPICONU")->Mat a
BmpLoad("BMPICONS")->Mat b
SysCall(0X17F9

'Get language
SysCall(0X12FC,0,&List 3
StrCmp($List 3,"English")=0=>1->Z
StrCmp($List 3,"Fran_#E608_ais")=0=>2->Z
StrCmp($List 3,"Espa_#E612_ol")=0=>3->Z
StrCmp($List 3,"Portugu_#E60B_s")=0=>4->Z
StrCmp($List 3,"Deutsch")=0=>5->Z
StrCmp($List 3,"Chinese")=0=>6->Z
StrCmp($List 3,"Italiano")=0=>7->Z
StrCmp($List 3,"Russian")=0=>8->Z
StrCmp($List 3,"Japanese")=0=>9->Z
Z=1=>"  Bitmap File List"->Str 1
Z=2=>"  Liste Fichier Bitmap"->Str 1
Z=3=>"  Lista Archivo bitmap"->Str 1
Z=4=>"  Lista Arquivo Bitmap"->Str 1
Z=5=>"  BitmapChar-Dateiliste"->Str 1
Z=6=>"_#03A8__#CEBB__#CDBC__#CEC4__#BCFE__#C1D0__#B1ED_"->Str 1
Z=7=>"  Elenco file bitmap"->Str 1
Z=8=>"  _#E572__#E670__#E669__#E672__#E66F__#E66B_ _#E571__#E660__#E672__#E673__#E671__#E66F__#E662__#E67C__#E66A__#E675__#E660__#E66A__#E66C_"->Str 1
Z=9=>"_#03A8__#A5D3__#A5C3__#A5C8__#A5DE__#A5C3__#A5D7__#A5D5__#A5A1__#A5A4__#A5EB_"->Str 1
'File list
Lbl F
1->F:1->f
Lbl f
Screen.T
_ClrVram
'SetBackGraund
SysCall(0X1EF8,23
FkeyMenu(1,951
'_FkeyMenu(_2,389
'_FkeyMenu(_3,390
FkeyMenu(4,1170
FkeyMenu(5,1183
FkeyMenu(6,673
SysCall(0X2BB
BatteryStatus
RGB(190,0,0)Text @Char!(-)23,37,"_#E6B2_FEINT_#E6B2_"
Green Text @Char!(-)23,124,"Font File Manager"
SysCall(0X18F9,1,1,&Str 1,0X20,1
RowSize(L)->l
l>f+5=>f+5->l

For f->L To l
SysCall(0X18F9,1,(L-f)+2,&$l[L],0X20,0
WriteGraph @18,24((L-f)+1),18,24,Mat a
Next

SysCall(0X18F9,1,(F-f)+2,&$l[F],0X01,0
WriteGraph @18,24((F-f)+1),18,24,Mat b

'Scrollbar
f-1->List 2[0X09]:RowSize(L)->List 2[0X10]
SysCall(0X0C5A,&List 2

0->K
Do
_Point 27,(-)15,20,0
'KeyboardIcon
SysCall(0X1D8A,1
_DispVram
Getkey1->K
LpWhile MOD(K,10)<>9 And K<>28 And K<>37 And K<>47 And K<>68
'BkeyClrFrag
SysCall(0X0EA4,0X80
_Point 27,(-)15,20,0
K=39=>Gosub V
K=49 Or K=79=>Gosub D
K=29=>Gosub N
Switch K
Case 47
Screen.G
_ClrVram
Screen.T
_ClrVram
Return 
Break
Case 28
If F>1
Then Dsz F
F<f=>Dsz f
ElseIf F=1
RowSize(L)->F:F->f
IfEnd
Break
Case 37
If F<RowSize(L
Then Isz F
F>l=>Isz f
ElseIf F=RowSize(L
Then 1->F:1->f
IfEnd
Break
Case 68
SysCall(0X1E0D,0
SysCall(0X12FC,0,&List 3
0->Z
StrCmp($List 3,"English")=0=>1->Z
StrCmp($List 3,"Fran_#E608_ais")=0=>2->Z
StrCmp($List 3,"Espa_#E612_ol")=0=>3->Z
StrCmp($List 3,"Portugu_#E60B_s")=0=>4->Z
StrCmp($List 3,"Deutsch")=0=>5->Z
StrCmp($List 3,"Chinese")=0=>6->Z
StrCmp($List 3,"Italiano")=0=>7->Z
StrCmp($List 3,"Russian")=0=>8->Z
Z=1=>"  Bitmap File List"->Str 1
Z=2=>"  Liste Fichier Bitmap"->Str 1
Z=3=>"  Lista Archivo bitmap"->Str 1
Z=4=>"  Lista Arquivo Bitmap"->Str 1
Z=5=>"  BitmapChar-Dateiliste"->Str 1
Z=6=>"_#03A8__#CEBB__#CDBC__#CEC4__#BCFE__#C1D0__#B1ED_"->Str 1
Z=7=>"  Elenco file bitmap"->Str 1
Z=8=>"  _#E572__#E670__#E669__#E672__#E66F__#E66B_ _#E571__#E660__#E672__#E673__#E671__#E66F__#E662__#E67C__#E66A__#E675__#E660__#E66A__#E66C_"->Str 1
Break
SwitchEnd
Goto f

'View Image
Lbl V
_ClrVram
BmpLoad($L[F]),0,(-)24,1,1
_DispVram
Getkey1
_ClrVram
Return 

'Font File Information
Lbl D
_ClrVram
'#_Mat _0
53->Dim List 1.B
Load($L[F]+".bmp"->List 1
'#_Mat _1

'Check Bitmap File Header
(List 1[0]<>66) Or (List 1[1]<>77) Or List 1[6] Or List 1[7] Or List 1[8] Or List 1[9] Or (List 1[10]<>62) Or List 1[11] Or List 1[12] Or List 1[13]=>Goto U
'Check Bitmap Information Header
(List 1[14]<>40) Or List 1[15] Or List 1[16] Or List 1[17] Or (List 1[26]<>1) Or List 1[27] Or (List 1[28]<>1) Or List 1[29] Or List 1[30] Or List 1[31] Or List 1[32] Or List 1[33] Or (List 1[38]<>18) Or (List 1[39]<>11) Or List 1[40] Or List 1[41] Or (List 1[42]<>18) Or (List 1[43]<>11) Or List 1[44] Or List 1[45] Or (List 1[46] And (List 1[46]<>2)) Or List 1[47] Or List 1[48] Or List 1[49] Or (List 1[50] And (List 1[50]<>2)) Or List 1[51] Or List 1[52]=>Goto U

"0X"+StrRight("0"+Hex(List 1[5]),2)+StrRight("0"+Hex(List 1[4]),2)->Str 19
StrRight("0"+Hex(List 1[3]),2)+StrRight("0"+Hex(List 1[2]),2)->Str 20
Exp(Str 19+Str 20->S
"0X"+StrRight("0"+Hex(List 1[21]),2)+StrRight("0"+Hex(List 1[20]),2)->Str 19
StrRight("0"+Hex(List 1[19]),2)+StrRight("0"+Hex(List 1[18]),2)->Str 20
Exp(Str 19+Str 20->W
"0X"+StrRight("0"+Hex(List 1[25]),2)+StrRight("0"+Hex(List 1[24]),2)->Str 19
StrRight("0"+Hex(List 1[23]),2)+StrRight("0"+Hex(List 1[22]),2)->Str 20
Exp(Str 19+Str 20->H
"0X"+StrRight("0"+Hex(List 1[37]),2)+StrRight("0"+Hex(List 1[36]),2)->Str 19
StrRight("0"+Hex(List 1[35]),2)+StrRight("0"+Hex(List 1[34]),2)->Str 20
Exp(Str 19+Str 20->s
""->Str 19
""->Str 20

Screen.G
_ClrVram
SysCall(0X2BB
BatteryStatus
'KeyboardIcon
SysCall(0X1D8A,1
RGB(190,0,0)Text @Char!(-)23,37,"_#E6B2_FEINT_#E6B2_"
Green Text @Char!(-)23,124,"Font File Manager"

W=288 And H=144=>"External ASCII Standard Font"->Str 20
W=288 And H=48=>"External Gaiji Character Standard Font"->Str 20
W=288 And H=120=>"External Kana Standard Font"->Str 20
W=274 And H=114=>"External ASCII Mini_(-)_Font"->Str 20
W=274 And H=38=>"External Gaiji Character Mini_(-)_Font"->Str 20
W=274 And H=95=>"External Kana Mini_(-)_Font"->Str 20


StrLen(Str 20)=0=>Goto U

K=79=>Goto L



Blue LocateYX Char!0,0,$L[F]+".bmp"
Text Char!20,0,"Font Type :"
Text 23,119,Str 20,,M

_Rectangle 0,40,383,166,1,1,0
_Rectangle 2,42,381,164,0,0,1


Text 42,2,"Bitmap File Header",R,MB

Text 54,10,"<00> bfType",R,X
Text 64,10,"<02> bfSize",R,X
Text 74,10,"<06> bfReserved1",R,X
Text 84,10,"<08> bfReserved2",R,X
Text 94,10,"<10> bfOffBits",R,X

For 0->A To 4
Text 10A+54,110,":",R,X
Next
Text 54,120,"\"BM\"",R,X
Text 64,120,Sprintf("%u byte",S),R,X
Text 74,120,"00 00",R,X
Text 84,120,"00 00",R,X
Text 94,120,"62 byte",R,X



Text 42,180,"Bitmap Information Header",R,MB

Text 54,188,"<14> biSize",R,X
Text 64,188,"<18> biWidth",R,X
Text 74,188,"<22> biHeight",R,X
Text 84,188,"<26> biPlanes",R,X
Text 94,188,"<28> biBitCount",R,X
Text 104,188,"<30> biCompression",R,X
Text 114,188,"<34> biSizeImage",R,X
Text 124,188,"<38> biXPixPerXater",R,X
Text 134,188,"<42> biYPixPerXater",R,X
Text 144,188,"<46> biClrUsed",R,X
Text 154,188,"<50> biClrImportant",R,X
For 0->A To 10
Text 10A+54,308,":",R,X
Next
Text 54,318,"40 byte",R,X
Text 64,318,W,R,X
Text 74,318,H,R,X
Text 84,318,"1",R,X
Text 94,318,"1",R,X
Text 104,318,"0",R,X
Text 114,318,Sprintf("%u byte",s),R,X
Text 124,318,"2834 dot//m",R,X
Text 134,318,"2834 dot//m",R,X
Text 144,318,List 1[46],R,X
Text 154,318,List 1[50],R,X

FkeyMenu(1,951
'_FkeyMenu(_2,389
FkeyMenu(5,1183
'_FkeyMenu(_6,1018

Do
_Point 27,(-)15,20,0
'KeyboardIcon
SysCall(0X1D8A,1
_DispVram
Getkey1->k
LpWhile k<>47 And k<>28 And k<>37 And k<>39 And k<>79
ClrList 1

Switch k
Case 28
If F>1
Then Dsz F
F<f=>Dsz f
ElseIf F=1
RowSize(L)->F:F->f
IfEnd
Break
Case 37
If F<RowSize(L
Then Isz F
F>l=>Isz f
ElseIf F=RowSize(L
Then 1->F:1->f
IfEnd
Break
SwitchEnd
k=39=>Gosub V
k=79=>Gosub L

""->Str 19
""->Str 20
k=47=>Return 
Goto D


'Unsupported file
Lbl U
SysCall(0X2BB
BatteryStatus
RGB(190,0,0)Text @Char!(-)23,37,"_#E6B2_FEINT_#E6B2_"
Green Text @Char!(-)23,124,"Font File Manager"

SysCall(0X17FC,4
SysCall(0X18EC,1,1,2,2,0
Z=1 Or Z=8=>SysCall(0X18EC,2,1,1,1653,0
Z=4 Or Z=5=>SysCall(0X18EC,2,2,1,1653,0
Z=2 Or Z=3 Or Z=7=>SysCall(0X18EC,2,3,1,1653,0
Z=6=>SysCall(0X18EC,2,5,1,1653,0
If Z=9:Then 
"_#03A8__#A4B3__#A4CE__#A5D5__#A5A1__#A5A4__#A5EB__#A4CF__#A5D5__#A5A9__#A5F3__#A5C8__#A4CB_"->Str 19
"_#03A8__#C9E8__#B6A8__#A4B9__#A4EB__#A4B3__#A4C8__#A4AC__#B3F6__#C0B4__#A4DE__#A4BB__#A4F3__#A1A3_"->Str 20
SysCall(0X18F9,3,2,&Str 19,0,0
SysCall(0X18F9,3,3,&Str 20,0,0
IfEnd
0->K
Do
_Point 27,(-)15,20,0
'KeyboardIcon
SysCall(0X1D8A,1
_DispVram
LpWhile Getkey1<>47
'BkeyClrFrag
SysCall(0X0EA4,0X80
_Point 27,(-)15,20,0

SysCall(0X17F9
Return 


'Load Font Data
Lbl L
W-H=144=>BmpLoad(@AL$L[F]
W-H=240=>BmpLoad(@GL$L[F]
W-H=168=>BmpLoad(@KL$L[F]
W-H=160=>BmpLoad(@AM$L[F]
W-H=236=>BmpLoad(@GM$L[F]
W-H=179=>BmpLoad(@KM$L[F]

SysCall(0X17FC,1,0
SysCall(0X18EC,1,1,1,372,0
PutDispDD
SysCall(0X17F9
TicksWait 32
Return 

'Showing current font
Lbl N
Screen.T
_ClrVram
SysCall(0X2BB
BatteryStatus
RGB(190,0,0)Text @Char!(-)23,37,"_#E6B2_FEINT_#E6B2_"
Green Text @Char!(-)23,124,"Font File Manager"
'_Menu _"Showing now font","ASCII Standard",1,"Gaiji//Kana Standard",2,"ASCII Mini",3,"Gaiji//Kana Mini",4,"EXIT",5
Blue Locate Char!1,1,"Showing current font"
Locate Char!1,3,"1:ASCII Standard"
Locate Char!1,4,"2:Gaiji//Kana Standard"
Locate Char!1,5,"3:ASCII Mini"
Locate Char!1,6,"4:Gaiji//Kana Mini"
While Getkey:WhileEnd
0->k
Do
_Point 27,(-)15,20,0
'KeyboardIcon
SysCall(0X1D8A,1
_DispVram
Getkey1->k
LpWhile k<>72 And k<>62 And k<>52 And k<>73 And k<>47
ClrText
SysCall(0X2BB
BatteryStatus
RGB(190,0,0)Text @Char!(-)23,37,"_#E6B2_FEINT_#E6B2_"
Green Text @Char!(-)23,124,"Font File Manager"
k=72=>Goto 1
k=62=>Goto 2
k=52=>Goto 3
k=73=>Goto 4
_ClrVram
Return 
Lbl 1
Blue Locate Char!1,1,"ASCII Standard"
Locate 2,2," Char!\"#$%&'()**++,Char-.//"
Locate 2,3,"0123456789:;<=>?"
Locate 2,4,"@ABCDEFGHIJKLMNO"
Locate 2,5,"PQRSTUVWXYZ[\\]^_"
Locate 2,6,"`abcdefghijklmno"
Locate 2,7,"pqrstuvwxyz{|}~"
Getkey1
Goto N
Lbl 2
Blue Locate Char!1,1,"Gaiji//Kana Standard"
Locate 2,2,"_#FF80__#FF81__#FF82__#FF83__#FF84__#FF85__#FF86__#FF87__#FF88__#FF89__#FF8A__#FF8B__#FF8C__#FF8D__#FF8E__#FF8F_"
Locate 2,3,"_#FF90__#FF91__#FF92__#FF93__#FF94__#FF95__#FF96__#FF97__#FF98__#FF99__#FF9A__#FF9B__#FF9C__#FF9D__#FF9E__#FF9F_"
Locate 2,4,"_#FFA0_"
Locate 2,5,""
Locate 2,6,""
Locate 2,7,""
Locate 2,8,"_#FFE0__#FFE1__#FFE2__#FFE3__#FFE4__#FFE5__#FFE6__#FFE7__#FFE8__#FFE9__#FFEA__#FFEB__#FFEC__#FFEE__#FFEF_"
Getkey1
Goto N
Lbl 3
Blue Locate Char!1,1,"ASCII Mini"
Text @30,18," Char!\"#$%&'()**++,Char-.//"
Text @50,18,"0123456789:;<=>?"
Text @70,18,"@ABCDEFGHIJKLMNO"
Text @90,18,"PQRSTUVWXYZ[\\]^_"
Text @110,18,"`abcdefghijklmno"
Text @130,18,"pqrstuvwxyz{|}~"
Getkey1
Goto N
Lbl 4
Blue Locate Char!1,1,"Gaiji//Kana Mini"
Text @30,18,"_#FF80__#FF81__#FF82__#FF83__#FF84__#FF85__#FF86__#FF87__#FF88__#FF89__#FF8A__#FF8B__#FF8C__#FF8D__#FF8E__#FF8F_"
Text @50,18,"_#FF90__#FF91__#FF92__#FF93__#FF94__#FF95__#FF96__#FF97__#FF98__#FF99__#FF9A__#FF9B__#FF9C__#FF9D__#FF9E__#FF9F_"
Text @80,18,"_#FFA0_"
Text @100,18,""
Text @120,18,""
Text @140,18,""
Text @160,18,"_#FFE0__#FFE1__#FFE2__#FFE3__#FFE4__#FFE5__#FFE6__#FFE7__#FFE8__#FFE9__#FFEA__#FFEB__#FFEC__#FFEE__#FFEF_"
Getkey1
Goto N