unit Menu6;
{$I Sets.inc}

interface
uses GO240128;          { Graficke objekty pro 240 x 128 pixelu         }

procedure UserMenu;     { spousti uzivatelske menu }

{-----------------------------------------------------------------------}
const
    SledRealVel : Real=10.5;    { Sledovana velicina real               }
    SledIntVel  : Integer=221;  { Sledovana velicina integer            }
    Teplota     : Real=0;       { Zapisovana teplota                    }
    Parametr    : Real=1234;    { Editovany parametr                    }
    VicEdInt    : Integer=9867; { Editovany parametr integer            }
    VicEdByte   : Byte=$34;     { Editovany parametr byte               }
    VicEdLong   : Longint=$89abcdef; { Editovany parametr integer       }
    VicEdString : String[10]='POKUS EDIT'; { Editovany parametr string  }



var MyGrArea    : tGraphicArea; { Bitmapa v pameti RWM                  }
    MyGrRecorder: tGrRecorder;  { Zapisovac                             }

{=======================================================================}

implementation
uses
  BMPTCh,               { data pouzite bitmapy - Tynsky chram           }
  BMPHR,                { data pouzite bitmapy - Ruce a pres. hodiny    }
  BMPZap,               { data bitmapy natahovane do pozadi zapisovace  }

  F8x8c,                { data fontu 8x8                                }
  F12x16c,              { data fontu 12x16                              }
  F16x32c,              { data fontu 16x32                              }
  F24x64n,              { data fontu 24x64                              }
  F16X32pc,             { data fontu 16x32 patkovy                      }

  G240x128,             { Grafika 240 x 128 pixelu                      }

  uAMenu,               { Abstraktni Menu                               }
  uMenuChr,             { Znakove Menu                                  }
  uMenuGr,              { Graficke Menu                                 }

  uATerm,               { Abstraktni terminal                           }
  uTermT10,             { Terminal TERM10                               }

  NumToStr,             { Konverze cisel na stringy                     }

 {$IFDEF SimPC}         { Je zapnut simulator TERM10 na obrazovce PC ?  }
  uSimT10,              { Simulator TERM10 na obrazovce a klavesnici PC }
 {$ELSE}
  uDispT10,             { Displej terminalu TERM10                      }
  uKeybT10,             { Klavesnice terminalu TERM10                   }
 {$ENDIF}
  uInit;                { Inicializace - pro priznak FlEnd              }


{-----------------------------------------------------------------------}


const

    DispStr     : String='';    { String pro vypis textu na display     }
    HlpStr      : String='';    { String pro help                       }
    GraphStr    : String='';    { String pro grafiku                    }
    BkBMP       : Integer=-1;   { Bitmapa pozadi                        }


{-----------------------------------------------------------------------}
type                    { Vyctovy typ jednotlivych menuobrazovek        }
  tSelector=(tMPozdrav,
             tMPridana,
               tMSledovani,
               tMZapisovac,
             tMEditace,
             tMEditVice,
               tMEditViceI,
               tMEditViceB,
               tMEditViceL,
               tMEditViceT,
             tMKonec
            );

const                   { Konstanta prvni a posledni menu-obrazovky     }
  BegMenu = tMPozdrav;
  EndMenu = tMKonec;

{-----------------------------------------------------------------------}
{               M e n u - o b r a z o v k y                             }
{-----------------------------------------------------------------------}

procedure pMPozdrav(P: pMenuGr); far;       { TERM10 vas zdravi         }

begin
  with P^ do
  begin
    if ChangeMenu then          { Doslo k zmene Menu-obrazovky ?        }
    begin
      BkBmp     :=-1;           { Nastaveni pozadi -1= prazdne          }
                                { Formatovany text pro vypis            }
      DispStr   :=zESC+ 'F1,20,40;' +'TERM10 vás zdraví';
                                { Formatovany text pro help             }
      HlpStr    :=zESC+'F1,60,12;'  +'NÁPOVĚDA';

      GraphStr  :='R(2,2,237,125)';
      EditWaitPress(2000);      { 2000ms ceka a pak posle zDn           }
    end;
  end;
end;

{-----------------------------------------------------------------------}

procedure pMPridana(P: pMenuGr); far;       { Pridana menu-obrazovka    }

begin
  with P^ do
  begin
    if ChangeMenu then          { Doslo k zmene Menu-obrazovky ?        }
    begin
      BkBmp     :=1;            { Nastaveni pozadi                      }
                                { Formatovany text pro vypis            }
      DispStr   :=zESC+ 'F2,60,5;'  +'Přidaná'+
                  zESC+ 'F0,60,40;' +'menu-obrazovka';
                                { Formatovany text pro help             }
      HlpStr    :=zESC+'F1,60,12;'  +'NÁPOVĚDA'+
                  zESC+'F0,20,40;'  +'K přidané menu-obrazovce';
      GraphStr  :='R(1,1,238,126)L(60,35,180,35)';
      AddTerminateChar(['S']);  { Pridani ukoncovaci klavesy            }
                                { Prechod na spravnou menu-obr. pri Dn  }
      SetCtrlTab([iDn],Word(tMEditace));
                                { Prechod na spravnou menu-obr. pri Up  }
      SetCtrlTab([iUp],Word(tMKonec));
                                { Prechod na menu-obr.sledovani pri 'S' }
      SetTransCtrlTab(['S'],iCall1,Word(tMSledovani));
    end;
  end;
end;

{-----------------------------------------------------------------------}

procedure pMSledovani(P: pMenuGr); far;     { Menu-obrazovka sledovani  }

begin
  with P^ do
  begin                         { Formatovany text pro vypis            }
    DispStr   :=zESC+ 'F0,10,10;'  +'Veličina typu real:'+
                zESC+ 'F4,30,20;'  +RealStrDec(SledRealVel,5,2)+
                zESC+ 'F0,10,70;'  +'Veličina typu'+
                zESC+ 'F0,10,80;'  +'     integer:'+
                zESC+ 'F3,160,50;' +IntegerStrDec(SledIntVel,2);

    if ChangeMenu then          { Doslo k zmene Menu-obrazovky ?        }
    begin
      BkBmp     :=-1;           { Nastaveni pozadi                      }
                                { Formatovany text pro help             }
      HlpStr    :=zESC+'F1,60,12;'  +'NÁPOVĚDA'+
                  zESC+'F0,20,40;'  +'Ukázka sledování veličin'+
                  zESC+'F0,20,50;'  +'návrat klávesou [ESC].';
      GraphStr  :='R(1,1,238,126)C(183,80,40)';
      SetCtrlTab([iUp],Word(tMZapisovac));
    end;
  end;
end;

{-----------------------------------------------------------------------}

procedure pMZapisovac(P: pMenuGr); far; { Menu-obrazovka se zapisovacem }

begin
  with P^ do
  begin
                                { Formatovany text pro vypis            }
    DispStr   :=zESC+ 'F1,80,5;'     +'Teplota'+
                zESC+ 'F0,150,108;'  +RealStrDec(Teplota,5,2);
    if ChangeMenu then          { Doslo k zmene Menu-obrazovky ?        }
    begin
      BkBmp     :=2;            { Nastaveni pozadi - bitmapa v RWM      }
                                { Formatovany text pro help             }
      HlpStr    :=zESC+'F1,60,12;'  +'NÁPOVĚDA'+
                  zESC+'F0,20,40;'  +'Ukázka zapisovače';
      GraphStr  :='R(1,1,238,126)L(1,25,238,25)';
                                { Prechod na spravnou menu-obr. pri Dn  }
      SetCtrlTab([iDn],Word(tMSledovani));
    end;
  end;
end;

{-----------------------------------------------------------------------}

procedure pMEditace(P: pMenuGr); far;       { Menu-obrazovka s editaci  }

begin
  with P^ do
  begin
    if ChangeMenu then          { Doslo k zmene Menu-obrazovky ?        }
    begin
      BkBmp     :=-1;           { Nastaveni pozadi                      }
                                { Formatovany text pro vypis            }
      DispStr   :='12345678'+   { Pro editacni okenko                   }
                  zESC+ 'F1,10,5;'  +'Editovaný parametr'+
                  zESC+ 'F3,24,40;';    { Umisteni editacniho okenka    }
                                { Formatovany text pro help             }
                                     {123456789012345678901234567890}
      HlpStr    :=zESC+'F1,72,12;'  +'NÁPOVĚDA'+
                  zESC+'F0,60,40;'  +'Po stisku ENTER'+
                  zESC+'F0,40,50;'  +'lze editovat hodnotu'+
                  zESC+'F0,44,60;'  +'parametru v rozsahu'+
                  zESC+'F0,72,70;'  +'100 az 5000.';
      GraphStr  :='R(1,1,238,126)L(1,25,238,25)R(24,40,216,104)';
      Term^.Flins:=false;       { Nastaveni rezimu prepisovani          }
      SetEditWin(1,1,8,1);      { Nastaveni editacniho okenka           }
                                { Editace realneho cisla                }
      EditReal(Parametr,100,5000,8,3);
      AddTerminateChar(['S']);  { Pridani ukoncovaci klavesy            }
                                { Prechod na menu-obr.sledovani pri 'S' }
      SetTransCtrlTab(['S'],iCall1,Word(tMSledovani));
                                { Prechod na spravnou menu-obr. pri Up  }
      SetCtrlTab([iUp],Word(tMPridana));
    end;
  end;
end;

{-----------------------------------------------------------------------}

procedure pMEditVice(P: pMenuGr); far;{ Menu-obrazovka s editaci vice p.}

begin
  with P^ do
  begin
    if ChangeMenu then          { Doslo k zmene Menu-obrazovky ?        }
    begin
      BkBmp     :=-1;           { Nastaveni pozadi                      }
                                { Formatovany text pro vypis            }
      DispStr   :=zESC+'F1,6,5;'   +'Edit více parametrů'+

                  zESC+'F0,10,30;' +'Integer dekadicky:' +
                  zESC+'F1,180,30;'+IntegerStrDec(VicEdInt,4)+

                  zESC+'F0,10,50;' +'Byte binárně:' +
                  zESC+'F1,120,50;'+ByteStrBin(VicEdByte)+

                  zESC+'F0,10,70;' +'Longint hexadecimálně:' +
                  zESC+'F1,132,80;'+LongIntStrHex(VicEdLong)+

                  zESC+'F0,10,100;' +'sTtring délky 10:' +
                  zESC+'F1,108,110;'+VicEdString;
                                { Formatovany text pro help             }
                                     {123456789012345678901234567890}
      HlpStr    :=zESC+'F1,72,12;'  +'NÁPOVĚDA'+
                  zESC+'F0,52,40;'  +'Stiskněte I,B,L,T'+
                  zESC+'F0,28,50;'  +'pro editaci příslušného'+
                  zESC+'F0,80,60;'  +'parametru.';
      GraphStr  :='R(1,1,238,126)L(1,25,238,25)';
      Term^.Flins:=false;       { Nastaveni rezimu prepisovani          }
                                { Pridani ukoncovaci klavesy            }
      AddTerminateChar(['S','I','B','L','T']);
                                { Prechod na menu-obr.sledovani pri 'S' }
      SetTransCtrlTab(['S'],iCall1,Word(tMSledovani));

      SetTransCtrlTab(['I'],iCall2,Word(tMEditViceI));
      SetTransCtrlTab(['B'],iCall3,Word(tMEditViceB));
      SetTransCtrlTab(['L'],iCall4,Word(tMEditViceL));
      SetTransCtrlTab(['T'],iCall5,Word(tMEditViceT));
      SetCtrlTab([iDn],Word(tMKonec))   { Dn                            }
    end;
  end;
end;

{-----------------------------------------------------------------------}

procedure pMEditViceI(P: pMenuGr); far;{ Menu-obrazovka s editaci vice p.}

begin
  with P^ do
  begin
    if ChangeMenu then          { Doslo k zmene Menu-obrazovky ?        }
    begin
      BkBmp     :=-1;           { Nastaveni pozadi                      }
                                { Formatovany text pro vypis            }
      DispStr   :='1234'+       { Pro editacni okenko                   }
                  zESC+'F1,6,5;'   +'Edit více parametrů'+

                  zESC+'F0,10,50;' +'Byte binárně:' +
                  zESC+'F1,120,50;'+ByteStrBin(VicEdByte)+

                  zESC+'F0,10,70;' +'Longint hexadecimálně:' +
                  zESC+'F1,132,80;'+LongIntStrHex(VicEdLong)+

                  zESC+'F0,10,100;' +'sTtring délky 10:' +
                  zESC+'F1,108,110;'+VicEdString+

                  zESC+'F0,10,30;' +'Integer dekadicky:' +
                  zESC+'F1,180,30;';
                                { Formatovany text pro help             }
                                     {123456789012345678901234567890}
      HlpStr    :=zESC+'F1,72,12;'  +'NÁPOVĚDA'+
                  zESC+'F0,8,40;'   +'Zadej číslo -9999 až 9999.';
      GraphStr  :='R(1,1,238,126)L(1,25,238,25)';
      EditEnter :=false;
      SetEditWin(1,1,4,1);      { Nastaveni editacniho okenka           }
                                { Editace integer                       }
      EditInteger(VicEdInt,-9999,9999,4);
                                { Nastaveni ukoncovacich klaves         }
      SetTerminateChar([zCr,zESC]);
      SetTransTab([zCr],iRet);
    end;
  end;
end;

{-----------------------------------------------------------------------}

procedure pMEditViceB(P: pMenuGr); far;{ Menu-obrazovka s editaci vice p.}

begin
  with P^ do
  begin
    if ChangeMenu then          { Doslo k zmene Menu-obrazovky ?        }
    begin
      BkBmp     :=-1;           { Nastaveni pozadi                      }
                                { Formatovany text pro vypis            }
      DispStr   :='123456789'+
                  zESC+'F1,6,5;'   +'Edit více parametrů'+

                  zESC+'F0,10,30;' +'Integer dekadicky:' +
                  zESC+'F1,180,30;'+IntegerStrDec(VicEdInt,4)+

                  zESC+'F0,10,70;' +'Longint hexadecimálně:' +
                  zESC+'F1,132,80;'+LongIntStrHex(VicEdLong)+

                  zESC+'F0,10,100;' +'sTtring délky 10:' +
                  zESC+'F1,108,110;'+VicEdString+

                  zESC+'F0,10,50;' +'Byte binárně:' +
                  zESC+'F1,120,50;';
                                { Formatovany text pro help             }
                                     {123456789012345678901234567890}
      HlpStr    :=zESC+'F1,72,12;'  +'NÁPOVĚDA'+
                  zESC+'F0,52,40;'  +'Zadej byte binárně';
      GraphStr  :='R(1,1,238,126)L(1,25,238,25)';
      EditEnter :=false;
      SetEditWin(1,1,9,1);      { Nastaveni editacniho okenka           }
                                { Editace bytu binarne                  }
      EditByteBin(VicEdByte);
                                { Nastaveni ukoncovacich klaves         }
      SetTerminateChar([zCr,zESC]);
      SetTransTab([zCr],iRet);
    end;
  end;
end;

{-----------------------------------------------------------------------}

procedure pMEditViceL(P: pMenuGr); far;{ Menu-obrazovka s editaci vice p.}

begin
  with P^ do
  begin
    if ChangeMenu then          { Doslo k zmene Menu-obrazovky ?        }
    begin
      BkBmp     :=-1;           { Nastaveni pozadi                      }
                                { Formatovany text pro vypis            }
      DispStr   :='12345678'+
                  zESC+'F1,6,5;'   +'Edit více parametrů'+

                  zESC+'F0,10,30;' +'Integer dekadicky:' +
                  zESC+'F1,180,30;'+IntegerStrDec(VicEdInt,4)+

                  zESC+'F0,10,50;' +'Byte binárně:' +
                  zESC+'F1,120,50;'+ByteStrBin(VicEdByte)+


                  zESC+'F0,10,100;' +'sTtring délky 10:' +
                  zESC+'F1,108,110;'+VicEdString+

                  zESC+'F0,10,70;' +'Longint hexadecimálně:' +
                  zESC+'F1,132,80;';
                                { Formatovany text pro help             }
                                     {123456789012345678901234567890}
      HlpStr    :=zESC+'F1,72,12;'  +'NÁPOVĚDA'+
                  zESC+'F0,12,40;'  +'Zadej longint hexadecimálně.';
      GraphStr  :='R(1,1,238,126)L(1,25,238,25)';
      EditEnter :=false;
      SetEditWin(1,1,8,1);      { Nastaveni editacniho okenka           }
                                { Editace longint hexadecimalne         }
      EditLongintHex(VicEdLong);
                                { Nastaveni ukoncovacich klaves         }
      SetTerminateChar([zCr,zESC]);
      SetTransTab([zCr],iRet);
    end;
  end;
end;

{-----------------------------------------------------------------------}

procedure pMEditViceT(P: pMenuGr); far;{ Menu-obrazovka s editaci vice p.}

begin
  with P^ do
  begin
    if ChangeMenu then          { Doslo k zmene Menu-obrazovky ?        }
    begin
      BkBmp     :=-1;           { Nastaveni pozadi                      }
                                { Formatovany text pro vypis            }
      DispStr   :='1234567890'+
                  zESC+'F1,6,5;'   +'Edit více parametrů'+

                  zESC+'F0,10,30;' +'Integer dekadicky:' +
                  zESC+'F1,180,30;'+IntegerStrDec(VicEdInt,4)+

                  zESC+'F0,10,50;' +'Byte binárně:' +
                  zESC+'F1,120,50;'+ByteStrBin(VicEdByte)+

                  zESC+'F0,10,70;' +'Longint hexadecimálně:' +
                  zESC+'F1,132,80;'+LongIntStrHex(VicEdLong)+

                  zESC+'F0,10,100;' +'sTtring délky 10:' +
                  zESC+'F1,108,110;';
                                { Formatovany text pro help             }
                                     {123456789012345678901234567890}
      HlpStr    :=zESC+'F1,72,12;'  +'NÁPOVĚDA'+
                  zESC+'F0,17,40;'  +'Zadej string max. délky 10';
      GraphStr  :='R(1,1,238,126)L(1,25,238,25)';
      EditEnter :=false;
      SetEditWin(1,1,10,1);     { Nastaveni editacniho okenka           }
                                { Editace stringu                       }
      EditString(VicEdString);
                                { Nastaveni ukoncovacich klaves         }
      SetTerminateChar([zCr,zESC]);
      SetTransTab([zCr],iRet);
    end;
  end;
end;


{-----------------------------------------------------------------------}

procedure pMKonecThird(P: pMenuGr); far;  { Procedura pro ukonceni      }
begin              { Doslo-li k stisku [Q] nastavi se priznak ukonceni  }
  if p^.ActChar='Q' then FlgEnd:=True;
end;



procedure pMKonec(P: pMenuGr); far;       { Tynsky chram , Quit         }
begin
  with P^ do
  begin
    if ChangeMenu then          { Doslo k zmene Menu-obrazovky ?        }
    begin
      BkBMP:=0;                 { Nastaveni pozadi 0 = Tynsky chram     }
                                { Formatovany text pro vypis            }
      DispStr:=zESC+'F0,190,110;'  +'Quit';
                                { Formatovany text pro help             }
      HlpStr :=zESC+'F0,40,45;'    +'   Stisk Q ukončí   '+
                                    '       program      ';
                                { Grafika - nic                         }
      GraphStr:='';
      AddTerminateChar(['Q','S']);  { Pridani ukoncovaci klavesy        }
                                { Instalace procedury pro ukonceni      }
      SetUserThird(Addr(pMKonecThird));
      SetCtrlTab([iUp],Word(tMEditVice));  { Up                         }
                                { Prechod na spravnou menu-obr. pri Dn  }
      SetCtrlTab([iDn],Word(TMPridana));
                                { Prechod na menu-obr.sledovani pri 'S' }
      SetTransCtrlTab(['S'],iCall1,Word(tMSledovani));
    end;
  end;
end;

{-----------------------------------------------------------------------}
{-----------------------------------------------------------------------}

const                           { Pole procedur menu-obrazovek          }
ProcPtrArray  :array [tSelector] of tMMenuGr =
             (
             pMPozdrav,
             pMPridana,
               pMSledovani,
               pMZapisovac,
             pMEditace,
             pMEditVice,
               pMEditViceI,
               pMEditViceB,
               pMEditViceL,
               pMEditViceT,
             pMKonec
             );


{-----------------------------------------------------------------------}

const                   { Adresa terminalu TERM10 v IO prostoru         }
 {$ifdef SimPC}
  AdrTerm =$300;
 {$else}
  {$ifdef VerPC}
  AdrTerm =$300;
  {$endif}
 {$endif}

 {$ifdef VerMc}
  AdrTerm =$2300;
 {$endif}
                        { Nastaveni parametru terminalu                 }
  sParTerm='CMODE=2 CCHAR='+#$80+' REF=ON';

                        { Definice procesu Tick  - viz o.s.RETOS        }
  TermName  = 'TICK';   { Jmeno procesu                                 }
  TermStk   = 8000;     { Velikost zasobniku procesu                    }
  TermSPrio = 99;       { Staticka priorita                             }
  TermDPrio = 254;      { Dynamicka priorita                            }

                        { Definice procesu Menu                         }
  Menuname  = 'MENU';   { Jmeno procesu                                 }
  MenuStk   = 8000;     { Velikost zasobniku procesu                    }
  MenuSPrio = 101;      { Staticka priorita                             }
  MenuDPrio = 254;      { Dynamicka priorita                            }

{-----------------------------------------------------------------------}

procedure UserMenu;
var pMyMenu  :pMenuGr;  { Ukazatel na objekt uzivatelskeho menu         }
    pMyTerm  :pTermT10; { Ukazatel na objekt terminalu                  }

begin
 {$IFDEF SimPC}         { Je zapnut simulator TERM10 na obrazovce PC ?  }
                        { Inicializace simulatoru terminalu TERM10 }
  pMyTerm:=New(pTermT10,Init(New(PSimDispT10,Init(nil,20,6,AdrTerm,true,
                                                0,0,2,2,265,165,False)),
                             New(PSimKeybT10,Init(nil,20,AdrTerm,FlgEnd)),
                             AdrTerm,nil,nil));

 {$ELSE}                { Neni zapnut simulator TERM10 na obrazovce PC  }
                        { Inicializace terminalu TERM10                 }
  pMyTerm:=New(pTermT10,Init(New(PDispT10A,Init(nil,20,6,AdrTerm,True)),
                             New(PKeybT10,Init(nil,20,AdrTerm)),
                             AdrTerm,nil,nil));
 {$ENDIF}
                        { Nastaveni parametru terminalu                 }
  pMyTerm^.SetTDispParam(sParTerm);
                        { Inicializace menu                             }
  pMyMenu:=New(pMenuGr,Init(@ProcPtrArray,
                            ord(EndMenu),
                            DispStr,
                            HlpStr,
                            GraphStr,
                            @BkBMP,
                            pMyTerm,
                            '',
                            2));
                        { Spusteni menu                                 }
  InitRunMenu(pMyMenu,
              MenuName,MenuStk,MenuSPrio,MenuDPrio,
              TermName,TermStk,TermSPrio,TermDPrio,
              2,2,
              edNop,edNop,
              FlgEnd);

end;

{-----------------------------------------------------------------------}

procedure InitializeBMPs;
var Lng:word;

                        { Prirazeni adresy bitmapy s Tynskym chramem    }
begin                   { do pole ukazatelu na uzivatelske bitmapy.     }
  User_BkBMPs[0].AssignBMPAddr(GetBMPAddr_BMPTCH(Lng),Lng);
  User_BkBMPs[1].AssignBMPAddr(GetBMPAddr_BMPHR(Lng),Lng);

  MyGrArea.Init(240,128);
  MyGrArea.LoadBkBMP(GetBMPAddr_BMPZap(Lng),Lng);
  MyGrRecorder.Init(MyGrArea);
  MyGrRecorder.DefRecorderRect(8,35,223,99);
  User_BkBMPs[2].AssignBMPAddr(Addr(MyGrArea),Lng);
end;

{-----------------------------------------------------------------------}
const
 { Identifikatory typu pouzitych fontu }
    cF8x8c    = 0;
    cF12x16n  = 1;
    cF16x32n  = 2;
    cF24x64n  = 3;
    cF16x32pc = 4;

{-----------------------------------------------------------------------}

procedure InitializeAppFonts;       { Inicializace fontu                }
var   PomLng  :word;
begin
  { Inicializace pole zobrazovacich procedur }
  with User_FontArray[cF8x8c   ] do
  begin
    P:=pViewFont08x08;
    U:=GetFontAddr_F8x8c(PomLng);
  end;

  with User_FontArray[cF12x16n ] do
  begin
    P:=pViewFont12x16;
    U:=GetFontAddr_f12x16c(PomLng);
  end;

  with User_FontArray[cF16x32n ] do
  begin
    P:=pViewFont16x32;
    U:=GetFontAddr_f16x32c(PomLng);
  end;

  with User_FontArray[cF24x64n ] do
  begin
    P:=pViewFont24x64;
    U:=GetFontAddr_f24x64n(PomLng);
  end;

  with User_FontArray[cF16x32pc] do
  begin
    P:=pViewFont16x32;
    U:=GetFontAddr_f16x32pc(PomLng);
  end;

end;

Begin
  InitializeAppFonts;               { Inicializace bitmap               }
  InitializeBMPs;                   { Inicializace fontu                }
End.

