- Hlavní stránka
- Balíky
- Třídy
- Soubory

- Seznam souborů

# Konstanty.java

Zobrazit dokumentaci tohoto souboru.

    00001 /******************************************************************************
    00002  * Název projektu: Aplet pro demonstraci Boyerova-Mooreova algoritmu
    00003  * Balíček: boyermooredemo
    00004  * Soubor: Konstanty.java
    00005  * Datum:  11.4.2008
    00006  * Poslední změna: 18.4.2008
    00007  * Autor:  Jaroslav Dytrych xdytry00
    00008  *
    00009  * Popis: Třída s konstantami (barvy, čísla prvků, texty do panelů, ...)
    00010  *
    00011  ******************************************************************************/
    00012
    00013 /**
    00014  * @file Konstanty.java
    00015  *
    00016  * @brief Třída Konstanty - třída s konstantami
    00017  */
    00018
    00019 package boyermooredemo;
    00020
    00021 import java.awt.Color;
    00022
    00023 /**
    00024  * Třída s konstantami (barvy, čísla prvků, texty do panelů, ...)
    00025  *
    00026  * @brief Třída s konstantami
    00027  */
    00028 public class Konstanty {
    00029   /** Barvy pro textové pole s algoritmem - barva zvýrazněného textu */
    00030   public static final Color BARVA_ZVYRAZNENI_T = new Color(255,255,255);
    00031   /** Barvy pro textové pole s algoritmem - barva pozadí zvýrazněného textu */
    00032   public static final Color BARVA_ZVYRAZNENI_P = new Color(26,6,153);
    00033   /** Barvy pro textové pole s algoritmem - barva komentářů */
    00034   public static final Color BARVA_KOMENTARU = new Color(118,118,249);
    00035   /** Barvy pro textové pole s algoritmem - barva datových typů a modifikátorů */
    00036   public static final Color BARVA_TYPU = new Color(46,139,87);
    00037   /** Barvy pro textové pole s algoritmem - barva klíčových slov řídících struktur */
    00038   public static final Color BARVA_RIDICICH = new Color(165,42,42);
    00039   /** Barvy pro textové pole s algoritmem - barva literálů */
    00040   public static final Color BARVA_LITERALU = new Color(255,59,252);
    00041   /** Barvy pro textové pole s algoritmem - barva zbylého textu (identifikátory, ...) */
    00042   public static final Color BARVA_CERNA = new Color(0,0,0);
    00043    /** Barvy pro textové pole s algoritmem - barva pozadí */
    00044   public static final Color BARVA_BILA = new Color(255,255,255);
    00045
    00046   /** Barvy pro zvýrazňování v tabulkách - barvy proměnných - proměnná i */
    00047   public static final Color BARVA_I = new Color(99, 255, 99);
    00048   /** Barvy pro zvýrazňování v tabulkách - barvy proměnných - proměnná j */
    00049   public static final Color BARVA_J = new Color(115, 255, 255);
    00050   /** Barvy pro zvýrazňování v tabulkách - barvy proměnných - proměnná i-j+1 */
    00051   public static final Color BARVA_IJ = new Color(255, 255, 66);
    00052   /** Barvy pro zvýrazňování v tabulkách - barvy proměnných - proměnná m-j+1 */
    00053   public static final Color BARVA_MJ = new Color(255, 165, 165);
    00054   /** Barvy pro zvýrazňování v tabulkách - barvy proměnných - proměnná s */
    00055   public static final Color BARVA_S = new Color(255, 165, 214);
    00056   /** Barvy pro zvýrazňování v tabulkách - barvy proměnných - proměnná t */
    00057   public static final Color BARVA_T = new Color(198, 198, 255);
    00058   /** Barvy pro zvýrazňování v tabulkách - barvy proměnných - proměnná L */
    00059   public static final Color BARVA_L = new Color(255, 222, 214);
    00060   /** Barvy pro zvýrazňování v tabulkách - barvy proměnných - proměnná poz */
    00061   public static final Color BARVA_POZ = new Color(255, 181, 99);
    00062
    00063   /** Operace změn v GUI (vizualizace) - změna hodnoty políčka v tabulce */
    00064   public static final int ZM_T_H = 1;
    00065   /** Operace změn v GUI (vizualizace) - změna barvy políčka v tabulce */
    00066   public static final int ZM_T_B = 2;
    00067   /** Operace změn v GUI (vizualizace) - posun řádku tabulky */
    00068   public static final int ZM_T_P = 3;
    00069   /** Operace změn v GUI (vizualizace) - změna rozměrů tabulky */
    00070   public static final int ZM_T_R = 4;
    00071   /** Operace změn v GUI (vizualizace) - výměna bloku v panelu s algoritmem */
    00072   public static final int ZM_A_B = 5;
    00073   /** Operace změn v GUI (vizualizace) - změna zvýrazněného řádku v poli s algoritmem */
    00074   public static final int ZM_A_Z = 6;
    00075   /** Operace změn v GUI (vizualizace) - změna hodnoty proměnné */
    00076   public static final int ZM_P = 7;
    00077   /** Operace změn v GUI (vizualizace) - změna obsahu pole s nápovědou */
    00078   public static final int ZM_N = 8;
    00079   /** Operace změn v GUI (vizualizace) - změna popisku */
    00080   public static final int ZM_PO = 9;
    00081
    00082   /** Tabulky - tabulkaSR  */
    00083   public static final int TAB_SR = 1;
    00084   /** Tabulky - tabulkaDelta1  */
    00085   public static final int TAB_D1 = 2;
    00086   /** Tabulky - tabulkaDelta2  */
    00087   public static final int TAB_D2 = 3;
    00088
    00089   /** Políčka s proměnnými - jTextFieldm (proměnná m) */
    00090   public static final int PROM_M = 1;
    00091   /** Políčka s proměnnými - jTextFieldn (proměnná n) */
    00092   public static final int PROM_N = 2;
    00093   /** Políčka s proměnnými - jTextFieldi (proměnná i) */
    00094   public static final int PROM_I = 3;
    00095   /** Políčka s proměnnými - jTextFieldj (proměnná j) */
    00096   public static final int PROM_J = 4;
    00097   /** Políčka s proměnnými - jTextFieldij (proměnná i-j+1) */
    00098   public static final int PROM_IJ = 5;
    00099   /** Políčka s proměnnými - jTextFieldmj (proměnná m-j+2) */
    00100   public static final int PROM_MJ = 6;
    00101   /** Políčka s proměnnými - jTextFields (proměnná s) */
    00102   public static final int PROM_S = 7;
    00103   /** Políčka s proměnnými - jTextFieldt (proměnná s) */
    00104   public static final int PROM_T = 8;
    00105   /** Políčka s proměnnými - jTextFieldL (proměnná L) */
    00106   public static final int PROM_L = 9;
    00107   /** Políčka s proměnnými - jTextFieldpoz (proměnná poz) */
    00108   public static final int PROM_POZ = 10;
    00109
    00110   /** Měnitelné popisky - popisek jLabelij (má varianty i-j+1 a i+j-1) */
    00111   public static final int POPISEK_IJ = 1;
    00112   /** Měnitelné popisky - popisek jLabelmj (má varianty m-j+1 a n-m+1) */
    00113   public static final int POPISEK_MJ = 2;
    00114   /** Měnitelné popisky - popisek jLabelL (má varianty L a d1P)*/
    00115   public static final int POPISEK_L = 3;
    00116
    00117   /** Texty na měnitelné popisky - popisek jLabelij - varianta i-j+1 */
    00118   public static final String TEXTY_POPISKU_IMJ = "i-j+1 = ";
    00119   /** Texty na měnitelné popisky - popisek jLabelij - varianta i+j-1 */
    00120   public static final String TEXTY_POPISKU_IPJ = "i+j-1 = ";
    00121   /** Texty na měnitelné popisky - popisek jLabelmj - varianta m-j+1 */
    00122   public static final String TEXTY_POPISKU_MJ = "m-j+1 = ";
    00123   /** Texty na měnitelné popisky - popisek jLabelmj - varianta n-m+1 */
    00124   public static final String TEXTY_POPISKU_NM = "n-m+1 = ";
    00125   /** Texty na měnitelné popisky - popisek jLabelL - varianta L */
    00126   public static final String TEXTY_POPISKU_L = "     L = ";
    00127   /** Texty na měnitelné popisky - popisek jLabelL - varianta d1p */
    00128   public static final String TEXTY_POPISKU_D1P = "d1P = ";
    00129
    00130   /** Konstanta pro směr posunu vlevo */
    00131   public static final int POSUN_VLEVO = 0;
    00132   /** Konstanta pro směr posunu vpravo */
    00133   public static final int POSUN_VPRAVO = 1;
    00134
    00135   /** Výchozí rozměry tabulky tabulkaSR */
    00136   public static final int[] TAB_SR_VR = {2,36};
    00137   /** Výchozí rozměry tabulky delta1 */
    00138   public static final int[] TAB_D1_VR = {2,22};
    00139   /** Výchozí rozměry tabulky delta2 */
    00140   public static final int[] TAB_D2_VR = {4,22};
    00141
    00142   /**
    00143    * Pole s nápovědami
    00144    */
    00145   public static final String[] textyNapovedy = {
    00146     /* 0 */ "Návod k použití:\n" +
    00147             "1. zadejte hledaný řetězec a prohledávaný text\n" +
    00148             "2. zahajte vizualizaci kliknutím na tlačítko \"Vpřed\"\n" +
    00149             "3. prohlížejte si vizualizaci klikáním na tlačítka \"Vpřed\" a \"Zpět\"\n" +
    00150             "4. chcete-li zadat jiný hledaný řetězec, nebo prohledávaný text,\n" +
    00151             "    klikněte na tlačítko \"Reset\" a upravte řetězce dle potřeby",
    00152     /* 1 */ "Nyní si můžete prohlížet vizualizaci algoritmu pomocí tlačítek\n" +
    00153             "\"Vpřed\" (provede další krok vizualizace) a \"Zpět\" (návrat o 1 krok). \n" +
    00154             "     Chcete-li změnit vyhledávaný řetězec, nebo prohledávaný text, \n" +
    00155             "klikněte na tlačítko \"Reset\", upravte řetězce dle potřeby a znovu\n" +
    00156             "spusťte vizualizaci."
    00157   };  // textyNapovedy
    00158
    00159   /**
    00160    * Pole s jednotlivými úseky zdrojového textu algoritmu
    00161    */
    00162   public static final String[] textyAlgoritmu = {
    00163     /* Deklarace proměnných  */
    00164     /*  0:  0 -  2 */ "private char","[] text;  ","// prohledávaný text\n",
    00165     /*  1:  3 -  5 */ "private char","[] pat;  ","// hledaný řetězec\n",
    00166     /*  2:  6 -  8 */ "private int ","m;  ","// délka hledaného řetězce\n",
    00167     /*  3:  9 - 11 */ "private int ","n;  ","// délka prohledávaného textu\n",
    00168     /*  4: 12 - 14 */ "private ","TreeMap<Character,Integer> delta1;  ","// kontejner delta1\n",
    00169     /*  5: 15 - 17 */ "private int ","delta1Jine;  ","// delta1 pro znaky, které nejsou v kontejneru\n",
    00170     /*  6: 18 - 19 */ "private int","[] delta2;\n",
    00171     /*  7: 20 - 21 */ "private int","[] shoda;\n",
    00172     /*  8:      22 */ "  \n",
    00173     /* Metoda BMA */
    00174     /*  9: 23 - 24 */ "public int"," BMA(String P, String T) {\n",
    00175     /* 10:      25 */ "  // inicializace\n",
    00176     /* 11: 26 - 27 */ "  m = P.length();  ","// délka hledaného řetězce\n",
    00177     /* 12: 28 - 33 */ "  pat = ","new ","char","[m + ","1","];\n",
    00178     /* 13: 34 - 40 */ "  for ","(","int"," i = ","0","; i < m; i++)  ","// uloží hledaný řetězec do pole pat\n",
    00179     /* 14: 41 - 43 */ "    pat[i+","1","] = P.charAt(i);\n",
    00180     /* 15: 44 - 45 */ "  n = T.length();  ","// délka prohledávaného textu\n",
    00181     /* 16: 46 - 51 */ "  text = ","new ","char","[n + ","1","];\n",
    00182     /* 17: 52 - 58 */ "  for ","(","int ","i = ","0","; i < n; i++)  ","// uloží prohledávaný řetězec do pole\n",
    00183     /* 18: 59 - 61 */ "    text[i+","1","] = T.charAt(i);\n",
    00184     /* 19:      62 */ "  \n",
    00185     /* 20: 63 - 64 */ "  vypocetDelta1();  ","// výpočet tabulky delta1\n",
    00186     /* 21: 65 - 66 */ "  vypocetDelta2();  ","// výpočet tabulky delta2\n",
    00187     /* 22:      67 */ "  \n",
    00188     /* 23: 68 - 72 */ "  int ","i = ","1",";  ","// pozice v textu\n",
    00189     /* 24: 73 - 75 */ "  int ","j;  ","// pozice v pat\n",
    00190     /* 25: 76 - 77 */ "  Integer d1P;  ","// pomocná delta1\n",
    00191     /* 26: 78 - 81 */ "  while"," (i <= (n-m+","1",")) {  \n",
    00192     /* 27:      82 */ "    j = m;\n",
    00193     /* 28: 83 - 89 */ "    while ","((j >= ","1",") && (pat[j] == text[i+j-","1","]))  ","// dokud do chází ke shodě\n",
    00194     /* 29: 90 - 91 */ "      j--;  ","// posun na další znak (testuje od konce)\n",
    00195     /* 30: 92 - 96 */ "    if ","(j == ","0",")  ","// pokud byl řetězec nalezen\n",
    00196     /* 31:  97 - 101 */ "      return ","i-","1",";  ","// řetězec v poli začíná o 1 dál\n",
    00197     /* 32: 102 - 104 */ "    else ","{  ","// pokud řetězec nebyl nalezen\n",
    00198     /* 33: 105 - 107 */ "      d1P = delta1.get(text[i+j-","1","]);\n",
    00199     /* 34: 108 - 112 */ "      if ","(d1P == ","null",")  ","// pokud se jedná o znak, který není v kontejneru\n",
    00200     /* 35:       113 */ "        d1P = delta1Jine;\n",
    00201     /* 36: 114 - 115 */ "      i += Math.max(d1P, delta2[j]);  ","// posun\n",
    00202     /* 37:       116 */ "    }\n",
    00203     /* 38:       117 */ "  }\n",
    00204     /* 39: 118 - 121 */ "  return ","-1",";  ","// řetězec nebyl nalezen\n",
    00205     /* 40: 122 - 123 */ "}  ","// public int BMA()\n",
    00206     /* 41:       124 */ "  \n",
    00207     /* Metoda pro výpočet delta1 */
    00208     /* 42: 125 - 126 */ "private void ","vypocetDelta1()  {\n",
    00209     /* 43:       127 */ "  // inicializace kontejneru\n",
    00210     /* 44: 128 - 130 */ "  delta1 = ","new ","TreeMap();\n",
    00211     /* 45:       131 */ "  // výpočet pole delta1 (pro velký počet možných znaků je zde toto pole\n",
    00212     /* 46:       132 */ "  // nahrazeno kontejnerem pro uvedené znaky a proměnnou pro hodnotu\n",
    00213     /* 47:       133 */ "  // delta1 neuvedených (jiných) znaků)\n",
    00214     /* 48: 134 - 140 */ "  for ","(","int ","i = ","1","; i <= m; i++) {  ","// výpočet delta1\n",
    00215     /* 49:       141 */ "    delta1.put(pat[i],(m-i));\n",
    00216     /* 50:       142 */ "  }\n",
    00217     /* 51:       143 */ "  delta1Jine = m;\n",
    00218     /* 52: 144 - 145 */ "}  ","// private void vypocetDelta1()\n",
    00219     /* 53:       146 */ "  \n",
    00220     /* Metoda pro výpočet delta2 */
    00221     /* 54: 147 - 148 */ "private void ","vypocetDelta2() {\n",
    00222     /* 55:       149 */ "  // inicializace polí\n",
    00223     /* 56: 150 - 155 */ "  delta2 = ","new ","int","[m+","1","];\n",
    00224     /* 57: 156 - 161 */ "  shoda = ","new ","int","[m+","1","];\n",
    00225     /* 58: 162 - 164 */ "  shoda[m] = ","0",";\n",
    00226     /* 59: 165 - 167 */ "  delta2[m] = ","1",";\n",
    00227     /* 60: 168 - 175 */ "  for ","(","int ","j = ","0","; j <= (m-","1","); j++)  {\n",
    00228     /* 61: 176 - 178 */ "    shoda[j] = ","1",";\n",
    00229     /* 62:       179 */ "    delta2[j] = m;\n",
    00230     /* 63:       180 */ "  }\n",
    00231     /* 64:       181 */ "  // fáze 1: hledání podřetězců shodných s koncem pat\n",
    00232     /* 65: 182 - 186 */ "  int ","j = ","1",";  ","// index, od kterého se pat kontroluje\n",
    00233     /* 66: 187 - 191 */ "  int ","i = m-","1",";  ","// počet shodných znaků\n",
    00234     /* 67: 192 - 193 */ "  while ","(i >= j) {\n",
    00235     /* 68: 194 - 200 */ "    while ","((i >= j) && (pat[m-j+","1","] == pat[i-j+","1","])) {  ","// hlední nejdelší shody\n",
    00236     /* 69:       201 */ "      j++;\n",
    00237     /* 70: 202 - 204 */ "      shoda[i-j+","1","] = j;\n",
    00238     /* 71:       205 */ "    }\n",
    00239     /* 72: 206 - 210 */ "    if ","(j > ","1",") ","// pokud byla nalezena shoda, provede aktualizaci\n",
    00240     /* 73: 211 - 215 */ "      delta2[m-j+","1","] = Math.min(m-i, delta2[m-j+","1","]);\n",
    00241     /* 74: 216 - 218 */ "    i = i-j+shoda[m-j+","1","];\n",
    00242     /* 75: 219 - 223 */ "    j = Math.max(shoda[m-j+","1","],","1",");\n",
    00243     /* 76:       224 */ "  }\n",
    00244     /* 77:       225 */ "  // fáze 2: výpočet tabulky posunutí\n",
    00245     /* 78: 226 - 230 */ "  int ","t = shoda[","0","];  ","// délka shodného řetězce s koncem pat\n",
    00246     /* 79: 231 - 235 */ "  int ","L = ","1",";  ","// aktuální znak pat\n",
    00247     /* 80: 236 - 238 */ "  int ","s;  ","// maximální posunutí úseku\n",
    00248     /* 81: 239 - 242 */ "  while ","(t > ","0",") {\n",
    00249     /* 82: 243 - 245 */ "    s = m-t+","1",";\n",
    00250     /* 83: 246 - 247 */ "    for ","(j = L; j <= s; j++) {\n",
    00251     /* 84:       248 */ "      delta2[j] = Math.min(delta2[j], s);\n",
    00252     /* 85:       249 */ "    }\n",
    00253     /* 86:       250 */ "    t = shoda[s];\n",
    00254     /* 87: 251 - 253 */ "    L = s+","1",";\n",
    00255     /* 88:       254 */ "  }\n",
    00256     /* 89: 255 - 256 */ "}  ","// private void vypocetDelta2()"
    00257   };  // textyAlgoritmu
    00258
    00259
    00260   /**
    00261    * Pole s barvami jednotlivých úseků textu algoritmu
    00262    */
    00263   public static final Color[] barvyAlgoritmu = {
    00264     /* Deklarace proměnných  */
    00265     /*  0:  0 -  2 */ BARVA_TYPU,BARVA_CERNA,BARVA_KOMENTARU,
    00266     /*  1:  3 -  5 */ BARVA_TYPU,BARVA_CERNA,BARVA_KOMENTARU,
    00267     /*  2:  6 -  8 */ BARVA_TYPU,BARVA_CERNA,BARVA_KOMENTARU,
    00268     /*  3:  9 - 11 */ BARVA_TYPU,BARVA_CERNA,BARVA_KOMENTARU,
    00269     /*  4: 12 - 14 */ BARVA_TYPU,BARVA_CERNA,BARVA_KOMENTARU,
    00270     /*  5: 15 - 17 */ BARVA_TYPU,BARVA_CERNA,BARVA_KOMENTARU,
    00271     /*  6: 18 - 19 */ BARVA_TYPU,BARVA_CERNA,
    00272     /*  7: 20 - 21 */ BARVA_TYPU,BARVA_CERNA,
    00273     /*  8:      22 */ BARVA_CERNA,
    00274     /* Metoda BMA */
    00275     /*  9: 23 - 24 */ BARVA_TYPU,BARVA_CERNA,
    00276     /* 10:      25 */ BARVA_KOMENTARU,
    00277     /* 11: 26 - 27 */ BARVA_CERNA,BARVA_KOMENTARU,
    00278     /* 12: 28 - 33 */ BARVA_CERNA,BARVA_RIDICICH,BARVA_TYPU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00279     /* 13: 34 - 40 */ BARVA_RIDICICH,BARVA_CERNA,BARVA_TYPU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00280     /* 14: 41 - 43 */ BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00281     /* 15: 44 - 45 */ BARVA_CERNA,BARVA_KOMENTARU,
    00282     /* 16: 46 - 51 */ BARVA_CERNA,BARVA_RIDICICH,BARVA_TYPU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00283     /* 17: 52 - 58 */ BARVA_RIDICICH,BARVA_CERNA,BARVA_TYPU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00284     /* 18: 59 - 61 */ BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00285     /* 19:      62 */ BARVA_CERNA,
    00286     /* 20: 63 - 64 */ BARVA_CERNA,BARVA_KOMENTARU,
    00287     /* 21: 65 - 66 */ BARVA_CERNA,BARVA_KOMENTARU,
    00288     /* 22:      67 */ BARVA_CERNA,
    00289     /* 23: 68 - 72 */ BARVA_TYPU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00290     /* 24: 73 - 75 */ BARVA_TYPU,BARVA_CERNA,BARVA_KOMENTARU,
    00291     /* 25: 76 - 77 */ BARVA_CERNA,BARVA_KOMENTARU,
    00292     /* 26: 78 - 81 */ BARVA_RIDICICH,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00293     /* 27:      82 */ BARVA_CERNA,
    00294     /* 28: 83 - 89 */ BARVA_RIDICICH,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00295     /* 29: 90 - 91 */ BARVA_CERNA,BARVA_KOMENTARU,
    00296     /* 30: 92 - 96 */ BARVA_RIDICICH,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00297     /* 31:  97 - 101 */ BARVA_RIDICICH,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00298     /* 32: 102 - 104 */ BARVA_RIDICICH,BARVA_CERNA,BARVA_KOMENTARU,
    00299     /* 33: 105 - 107 */ BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00300     /* 34: 108 - 112 */ BARVA_RIDICICH,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00301     /* 35:       113 */ BARVA_CERNA,
    00302     /* 36: 114 - 115 */ BARVA_CERNA,BARVA_KOMENTARU,
    00303     /* 37:       116 */ BARVA_CERNA,
    00304     /* 38:       117 */ BARVA_CERNA,
    00305     /* 39: 118 - 121 */ BARVA_RIDICICH,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00306     /* 40: 122 - 123 */ BARVA_CERNA,BARVA_KOMENTARU,
    00307     /* 41:       124 */ BARVA_CERNA,
    00308     /* Metoda pro výpočet delta1 */
    00309     /* 42: 125 - 126 */ BARVA_TYPU,BARVA_CERNA,
    00310     /* 43:       127 */ BARVA_KOMENTARU,
    00311     /* 44: 128 - 130 */ BARVA_CERNA,BARVA_RIDICICH,BARVA_CERNA,
    00312     /* 45:       131 */ BARVA_KOMENTARU,
    00313     /* 46:       132 */ BARVA_KOMENTARU,
    00314     /* 47:       133 */ BARVA_KOMENTARU,
    00315     /* 48: 134 - 140 */ BARVA_RIDICICH,BARVA_CERNA,BARVA_TYPU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00316     /* 49:       141 */ BARVA_CERNA,
    00317     /* 50:       142 */ BARVA_CERNA,
    00318     /* 51:       143 */ BARVA_CERNA,
    00319     /* 52: 144 - 145 */ BARVA_CERNA,BARVA_KOMENTARU,
    00320     /* 53:       146 */ BARVA_CERNA,
    00321     /* Metoda pro výpočet delta2 */
    00322     /* 54: 147 - 148 */ BARVA_TYPU,BARVA_CERNA,
    00323     /* 55:       149 */ BARVA_KOMENTARU,
    00324     /* 56: 150 - 155 */ BARVA_CERNA,BARVA_RIDICICH,BARVA_TYPU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00325     /* 57: 156 - 161 */ BARVA_CERNA,BARVA_RIDICICH,BARVA_TYPU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00326     /* 58: 162 - 164 */ BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00327     /* 59: 165 - 167 */ BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00328     /* 60: 168 - 175 */ BARVA_RIDICICH,BARVA_CERNA,BARVA_TYPU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00329     /* 61: 176 - 178 */ BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00330     /* 62:       179 */ BARVA_CERNA,
    00331     /* 63:       180 */ BARVA_CERNA,
    00332     /* 64:       181 */ BARVA_KOMENTARU,
    00333     /* 65: 182 - 186 */ BARVA_TYPU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00334     /* 66: 187 - 191 */ BARVA_TYPU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00335     /* 67: 192 - 193 */ BARVA_RIDICICH,BARVA_CERNA,
    00336     /* 68: 194 - 200 */ BARVA_RIDICICH,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00337     /* 69:       201 */ BARVA_CERNA,
    00338     /* 70: 202 - 204 */ BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00339     /* 71:       205 */ BARVA_CERNA,
    00340     /* 72: 206 - 210 */ BARVA_RIDICICH,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00341     /* 73: 211 - 215 */ BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00342     /* 74: 216 - 218 */ BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00343     /* 75: 219 - 223 */ BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00344     /* 76:       224 */ BARVA_CERNA,
    00345     /* 77:       225 */ BARVA_KOMENTARU,
    00346     /* 78: 226 - 230 */ BARVA_TYPU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00347     /* 79: 231 - 235 */ BARVA_TYPU,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,BARVA_KOMENTARU,
    00348     /* 80: 236 - 238 */ BARVA_TYPU,BARVA_CERNA,BARVA_KOMENTARU,
    00349     /* 81: 239 - 242 */ BARVA_RIDICICH,BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00350     /* 82: 243 - 245 */ BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00351     /* 83: 246 - 247 */ BARVA_RIDICICH,BARVA_CERNA,
    00352     /* 84:       248 */ BARVA_CERNA,
    00353     /* 85:       249 */ BARVA_CERNA,
    00354     /* 86:       250 */ BARVA_CERNA,
    00355     /* 87: 251 - 253 */ BARVA_CERNA,BARVA_LITERALU,BARVA_CERNA,
    00356     /* 88:       254 */ BARVA_CERNA,
    00357     /* 89: 255 - 256 */ BARVA_CERNA,BARVA_KOMENTARU
    00358   };  // barvyAlgoritmu
    00359
    00360
    00361   /**
    00362    * Pole s označeními tučných úseků textu algoritmu
    00363    */
    00364   public static final boolean[] tucneCastiAlgoritmu = {
    00365     /* Deklarace proměnných  */
    00366     /*  0:  0 -  2 */ true,false,false,
    00367     /*  1:  3 -  5 */ true,false,false,
    00368     /*  2:  6 -  8 */ true,false,false,
    00369     /*  3:  9 - 11 */ true,false,false,
    00370     /*  4: 12 - 14 */ true,false,false,
    00371     /*  5: 15 - 17 */ true,false,false,
    00372     /*  6: 18 - 19 */ true,false,
    00373     /*  7: 20 - 21 */ true,false,
    00374     /*  8:      22 */ false,
    00375     /* Metoda BMA */
    00376     /*  9: 23 - 24 */ true,false,
    00377     /* 10:      25 */ false,
    00378     /* 11: 26 - 27 */ false,false,
    00379     /* 12: 28 - 33 */ false,true,true,false,false,false,
    00380     /* 13: 34 - 40 */ true,false,true,false,false,false,false,
    00381     /* 14: 41 - 43 */ false,false,false,
    00382     /* 15: 44 - 45 */ false,false,
    00383     /* 16: 46 - 51 */ false,true,true,false,false,false,
    00384     /* 17: 52 - 58 */ true,false,true,false,false,false,false,
    00385     /* 18: 59 - 61 */ false,false,false,
    00386     /* 19:      62 */ false,
    00387     /* 20: 63 - 64 */ false,false,
    00388     /* 21: 65 - 66 */ false,false,
    00389     /* 22:      67 */ false,
    00390     /* 23: 68 - 72 */ true,false,false,false,false,
    00391     /* 24: 73 - 75 */ true,false,false,
    00392     /* 25: 76 - 77 */ false,false,
    00393     /* 26: 78 - 81 */ true,false,false,false,
    00394     /* 27:      82 */ false,
    00395     /* 28: 83 - 89 */ true,false,false,false,false,false,false,
    00396     /* 29: 90 - 91 */ false,false,
    00397     /* 30: 92 - 96 */ true,false,false,false,false,
    00398     /* 31:  97 - 101 */ true,false,false,false,false,
    00399     /* 32: 102 - 104 */ true,false,false,
    00400     /* 33: 105 - 107 */ false,false,false,
    00401     /* 34: 108 - 112 */ true,false,false,false,false,
    00402     /* 35:       113 */ false,
    00403     /* 36: 114 - 115 */ false,false,
    00404     /* 37:       116 */ false,
    00405     /* 38:       117 */ false,
    00406     /* 39: 118 - 121 */ true,false,false,false,
    00407     /* 40: 122 - 123 */ false,false,
    00408     /* 41:       124 */ false,
    00409     /* Metoda pro výpočet delta1 */
    00410     /* 42: 125 - 126 */ true,false,
    00411     /* 43:       127 */ false,
    00412     /* 44: 128 - 130 */ false,true,false,
    00413     /* 45:       131 */ false,
    00414     /* 46:       132 */ false,
    00415     /* 47:       133 */ false,
    00416     /* 48: 134 - 140 */ true,false,true,false,false,false,false,
    00417     /* 49:       141 */ false,
    00418     /* 50:       142 */ false,
    00419     /* 51:       143 */ false,
    00420     /* 52: 144 - 145 */ false,false,
    00421     /* 53:       146 */ false,
    00422     /* Metoda pro výpočet delta2 */
    00423     /* 54: 147 - 148 */ true,false,
    00424     /* 55:       149 */ false,
    00425     /* 56: 150 - 155 */ false,true,true,false,false,false,
    00426     /* 57: 156 - 161 */ false,true,true,false,false,false,
    00427     /* 58: 162 - 164 */ false,false,false,
    00428     /* 59: 165 - 167 */ false,false,false,
    00429     /* 60: 168 - 175 */ true,false,true,false,false,false,false,false,
    00430     /* 61: 176 - 178 */ false,false,false,
    00431     /* 62:       179 */ false,
    00432     /* 63:       180 */ false,
    00433     /* 64:       181 */ false,
    00434     /* 65: 182 - 186 */ true,false,false,false,false,
    00435     /* 66: 187 - 191 */ true,false,false,false,false,
    00436     /* 67: 192 - 193 */ true,false,
    00437     /* 68: 194 - 200 */ true,false,false,false,false,false,false,
    00438     /* 69:       201 */ false,
    00439     /* 70: 202 - 204 */ false,false,false,
    00440     /* 71:       205 */ false,
    00441     /* 72: 206 - 210 */ true,false,false,false,false,
    00442     /* 73: 211 - 215 */ false,false,false,false,false,
    00443     /* 74: 216 - 218 */ false,false,false,
    00444     /* 75: 219 - 223 */ false,false,false,false,false,
    00445     /* 76:       224 */ false,
    00446     /* 77:       225 */ false,
    00447     /* 78: 226 - 230 */ true,false,false,false,false,
    00448     /* 79: 231 - 235 */ true,false,false,false,false,
    00449     /* 80: 236 - 238 */ true,false,false,
    00450     /* 81: 239 - 242 */ true,false,false,false,
    00451     /* 82: 243 - 245 */ false,false,false,
    00452     /* 83: 246 - 247 */ true,false,
    00453     /* 84:       248 */ false,
    00454     /* 85:       249 */ false,
    00455     /* 86:       250 */ false,
    00456     /* 87: 251 - 253 */ false,false,false,
    00457     /* 88:       254 */ false,
    00458     /* 89: 255 - 256 */ false,false
    00459   };  // tucneCastiAlgoritmu
    00460
    00461
    00462   /**
    00463    * Pole se začátky a konci řádků algoritmu (pro zvýrazňování)
    00464    */
    00465   public static final int[][] radkyAlgoritmu = {
    00466    /* Deklarace proměnných  */
    00467    /*  0 */ {0,2},
    00468    /*  1 */ {3,5},
    00469    /*  2 */ {6,8},
    00470    /*  3 */ {9,11},
    00471    /*  4 */ {12,14},
    00472    /*  5 */ {15,17},
    00473    /*  6 */ {18,19},
    00474    /*  7 */ {20,21},
    00475    /*  8 */ {22,22},
    00476    /* Metoda BMA */
    00477    /*  9 */ {23,24},
    00478    /* 10 */ {25,25},
    00479    /* 11 */ {26,27},
    00480    /* 12 */ {28,33},
    00481    /* 13 */ {34,40},
    00482    /* 14 */ {41,43},
    00483    /* 15 */ {44,45},
    00484    /* 16 */ {46,51},
    00485    /* 17 */ {52,58},
    00486    /* 18 */ {59,61},
    00487    /* 19 */ {62,62},
    00488    /* 20 */ {63,64},
    00489    /* 21 */ {65,66},
    00490    /* 22 */ {67,67},
    00491    /* 23 */ {68,72},
    00492    /* 24 */ {73,75},
    00493    /* 25 */ {76,77},
    00494    /* 26 */ {78,81},
    00495    /* 27 */ {82,82},
    00496    /* 28 */ {83,89},
    00497    /* 29 */ {90,91},
    00498    /* 30 */ {92,96},
    00499    /* 31 */ {97,101},
    00500    /* 32 */ {102,104},
    00501    /* 33 */ {105,107},
    00502    /* 34 */ {108,112},
    00503    /* 35 */ {113,113},
    00504    /* 36 */ {114,115},
    00505    /* 37 */ {116,116},
    00506    /* 38 */ {117,117},
    00507    /* 39 */ {118,121},
    00508    /* 40 */ {122,123},
    00509    /* 41 */ {124,124},
    00510    /* Metoda pro výpočet delta1 */
    00511    /* 42 */ {125,126},
    00512    /* 43 */ {127,127},
    00513    /* 44 */ {128,130},
    00514    /* 45 */ {131,131},
    00515    /* 46 */ {132,132},
    00516    /* 47 */ {133,133},
    00517    /* 48 */ {134,140},
    00518    /* 49 */ {141,141},
    00519    /* 50 */ {142,142},
    00520    /* 51 */ {143,143},
    00521    /* 52 */ {144,145},
    00522    /* 53 */ {146,146},
    00523    /* Metoda pro výpočet delta2 */
    00524    /* 54 */ {147,148},
    00525    /* 55 */ {149,149},
    00526    /* 56 */ {150,155},
    00527    /* 57 */ {156,161},
    00528    /* 58 */ {162,164},
    00529    /* 59 */ {165,167},
    00530    /* 60 */ {168,175},
    00531    /* 61 */ {176,178},
    00532    /* 62 */ {179,179},
    00533    /* 63 */ {180,180},
    00534    /* 64 */ {181,181},
    00535    /* 65 */ {182,186},
    00536    /* 66 */ {187,191},
    00537    /* 67 */ {192,193},
    00538    /* 68 */ {194,200},
    00539    /* 69 */ {201,201},
    00540    /* 70 */ {202,204},
    00541    /* 71 */ {205,205},
    00542    /* 72 */ {206,210},
    00543    /* 73 */ {211,215},
    00544    /* 74 */ {216,218},
    00545    /* 75 */ {219,223},
    00546    /* 76 */ {224,224},
    00547    /* 77 */ {225,225},
    00548    /* 78 */ {226,230},
    00549    /* 79 */ {231,235},
    00550    /* 80 */ {236,238},
    00551    /* 81 */ {239,242},
    00552    /* 82 */ {243,245},
    00553    /* 83 */ {246,247},
    00554    /* 84 */ {248,248},
    00555    /* 85 */ {249,249},
    00556    /* 86 */ {250,250},
    00557    /* 87 */ {251,253},
    00558    /* 88 */ {254,254},
    00559    /* 89 */ {255,256}
    00560   };  // radkyAlgoritmu
    00561
    00562   /**
    00563    * Pole se začátky a konci bloků algoritmu (pro vypisování)
    00564    */
    00565   public static final int[][] blokyAlgoritmu = {
    00566     /* 0 */ {0,22},  // deklarace proměnných
    00567     /* 1 */ {23,124},  // Metoda BMA
    00568     /* 2 */ {125,146},  // Metoda pro výpočet delta1
    00569     /* 3 */ {147,256},  // Metoda pro výpočet delta2
    00570   };
    00571
    00572   /** Názvy bloků zdrojového kódu BMA - blok s deklaracemi */
    00573   public static final int BLOK_DEKLARACE = 0;
    00574   /** Názvy bloků zdrojového kódu BMA - blok s algoritmem hledání řetězce */
    00575   public static final int BLOK_BMA = 1;
    00576   /** Názvy bloků zdrojového kódu BMA - blok s výpočtem tabulky delta1 */
    00577   public static final int BLOK_DELTA1 = 2;
    00578   /** Názvy bloků zdrojového kódu BMA - blok s výpočtem tabulky delta2 */
    00579   public static final int BLOK_DELTA2 = 3;
    00580
    00581   /**
    00582    * Konstanta pro reprezentaci řádku mimo algoritmus (pro zvýrazňování)
    00583    */
    00584   public static final int ZADNY_RADEK = 900;
    00585
    00586   /**
    00587    * Řetězec pro záhlaví sloupce pro jiné znaky v tabulce delta1
    00588    */
    00589   public static final String JINE_ZNAKY = "jiné znaky";
    00590
    00591   /**
    00592    * Konstruktor třídy (třída obsahuje pouze konstanty, konstruktor je tedy
    00593    * prázdný)
    00594    */
    00595   public Konstanty() {
    00596   }
    00597
    00598 }  // public class Konstanty
    00599
    00600 /*** Konec souboru Konstanty.java ***/