10 void table(Float_t x1, Float_t x2, Float_t yrange, TText *t, 
const char **symbol, Bool_t octal);
 
   14    const char *symbol1[] =
 
   15       {
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K",
"L",
"M",
"N",
 
   16        "O",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z",
 
   17        "0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
 
   18        ".",
",",
"+",
"-",
"*",
"/",
"=",
"(",
")",
"{",
"}",
"END"};
 
   20    const char *symbol2[] =
 
   21       {
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
 
   22        "o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
 
   23        ":",
";",
"@",
"\\",
"_",
"|",
"%",
 
   24        "@'",
"<",
">",
"[",
"]",
"\42",
"@\43",
"@\136",
 
   25        "@\77",
"@\41",
"@&",
"$",
"@\176",
" ",
"END"};
 
   27    const char *symbol3[] =
 
   28       {
"\241",
"\242",
"\243",
"\244",
"\245",
"\246",
"\247",
"\250",
 
   29        "\251",
"\252",
"\253",
"\254",
"\255",
"\256",
"\257",
"\260",
 
   30        "\261",
"\262",
"\263",
"\264",
"\265",
"\266",
"\267",
"\270",
 
   31        "\271",
"\272",
"\273",
"\274",
"\275",
"\276",
"\277",
"\300",
 
   32        "\301",
"\302",
"\303",
"\304",
"\305",
"\306",
"\307",
"\310",
 
   33        "\311",
"\312",
"\313",
"\314",
"\315",
"\316",
"\317",
"END"};
 
   35    const char *symbol4[] =
 
   36       {
"\321",
"\322",
"\323",
"\324",
"\325",
"\326",
"\327",
"\330",
 
   37        "\331",
"\332",
"\333",
"\334",
"\335",
"\336",
"\337",
"\340",
 
   38        "\341",
"\342",
"\343",
"\344",
"\345",
"\346",
"\347",
"\340",
 
   39        "\351",
"\352",
"\353",
"\354",
"\355",
"\356",
"\357",
"\360",
 
   40        "\361",
"\362",
"\363",
"\364",
"\365",
"\366",
"\367",
"\370",
 
   41        "\371",
"\372",
"\373",
"\374",
"\375",
"\376",
"\377",
"END"};
 
   43    const char *symbol5[] =
 
   44       {
"\177",
"\200",
"\201",
"\202",
"\203",
"\204",
"\205",
"\206",
 
   45        "\207",
"\210",
"\211",
"\212",
"\213",
"\214",
"\215",
"\216",
 
   46        "\217",
"\220",
"\221",
"\222",
"\223",
"\224",
"\225",
"\226",
 
   47        "\227",
"\230",
"\231",
"\232",
"\233",
"\234",
"\235",
"\236",
 
   53    Int_t h = w*yrange/xrange;
 
   55    TCanvas *c1 = 
new TCanvas(
"c1",
"c1",200,10,w,h);
 
   56    c1->Range(0,0,xrange,yrange);
 
   58    TText *t = 
new TText(0,0,
"a");
 
   63    table(0.5,0.5*xrange-0.5,yrange,t,symbol1,0);
 
   64    table(0.5*xrange+0.5,xrange-0.5,yrange,t,symbol2,0);
 
   65    TText *tlabel = 
new TText(0,0,
"a");
 
   66    tlabel->SetTextFont(72);
 
   67    tlabel->SetTextSize(0.018);
 
   68    tlabel->SetTextAlign(22);
 
   69    tlabel->DrawText(0.5*xrange,1.3,
 
   70       "Input characters are standard keyboard characters");
 
   73    c1->Print(
"pstable1.ps");
 
   75    TCanvas *c2 = 
new TCanvas(
"c2",
"c2",220,20,w,h);
 
   76    c2->Range(0,0,xrange,yrange);
 
   78    table(0.5,0.5*xrange-0.5,yrange,t,symbol3,1);
 
   79    table(0.5*xrange+0.5,xrange-0.5,yrange,t,symbol4,1);
 
   80    tlabel->DrawText(0.5*xrange,1.3,
 
   81       "Input characters using backslash and octal numbers");
 
   84    c2->Print(
"pstable2.ps");
 
   86    TCanvas *c3 = 
new TCanvas(
"c3",
"c3",240,20,w,h);
 
   87    c3->Range(0,0,xrange,yrange);
 
   89    table(0.5,0.5*xrange-0.5,yrange,t,symbol5,1);
 
   90    tlabel->DrawText(0.5*xrange,1.3,
 
   91       "Input characters using backslash and octal numbers");
 
   94    c3->Print(
"pstable3.ps");
 
   96 void table(Float_t x1, Float_t x2, Float_t yrange, TText *t,
 
   97    const char **symbol, Bool_t octal)
 
  101    for (i=0;i<1000;i++) {
 
  102       if (!strcmp(symbol[i],
"END")) 
break;
 
  106    Float_t y2  = yrange - 0.5;
 
  107    Float_t dx  = (x2-x1)/5;
 
  108    Float_t dy  = (y2 - 1 -y1)/(n+1);
 
  109    Float_t y   = y2 - 1 - 0.7*dy;
 
  110    Float_t xc0 = x1  + 0.5*dx;
 
  111    Float_t xc1 = xc0 + dx;
 
  112    Float_t xc2 = xc1 + dx;
 
  113    Float_t xc3 = xc2 + dx;
 
  114    Float_t xc4 = xc3 + dx;
 
  115    TLine *line = 
new TLine();
 
  116    line->DrawLine(x1,y1,x1,y2);
 
  117    line->DrawLine(x1,y1,x2,y1);
 
  118    line->DrawLine(x1,y2,x2,y2);
 
  119    line->DrawLine(x2,y1,x2,y2);
 
  120    line->DrawLine(x1,y2-1,x2,y2-1);
 
  121    line->DrawLine(x1+  dx,y1,x1+  dx,y2);
 
  122    line->DrawLine(x1+2*dx,y1,x1+2*dx,y2);
 
  123    line->DrawLine(x1+3*dx,y1,x1+3*dx,y2);
 
  124    line->DrawLine(x1+4*dx,y1,x1+4*dx,y2);
 
  125    TText *tit = 
new TText(0,0,
"a");
 
  126    tit->SetTextSize(0.015);
 
  127    tit->SetTextFont(72);
 
  128    tit->SetTextAlign(22);
 
  129    tit->DrawText(xc0,y2-0.6,
"Input");
 
  130    tit->DrawText(xc1,y2-0.6,
"Roman");
 
  131    tit->DrawText(xc2,y2-0.6,
"Greek");
 
  132    tit->DrawText(xc3,y2-0.6,
"Special");
 
  133    tit->DrawText(xc4,y2-0.6,
"Zapf");
 
  137          unsigned char value = *symbol[i];
 
  138          sprintf(text,
"@\\ %3o",value);
 
  140          strcpy(text,symbol[i]);
 
  142       t->DrawText(xc0,y,text);
 
  143       sprintf(text,
"%s",symbol[i]);
 
  144       t->DrawText(xc1,y,text);
 
  145       sprintf(text,
"`%s",symbol[i]);
 
  146       t->DrawText(xc2,y,text);
 
  147       sprintf(text,
"'%s",symbol[i]);
 
  148       t->DrawText(xc3,y,text);
 
  149       sprintf(text,
"~%s",symbol[i]);
 
  150       t->DrawText(xc4,y,text);