ROOT logo
// @(#)root/postscript:$Id$
// Author: Olivier Couet

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifdef WIN32
#pragma optimize("",off)
#endif

#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#include "Riostream.h"
#include "TROOT.h"
#include "TColor.h"
#include "TVirtualPad.h"
#include "TPoints.h"
#include "TTeXDump.h"
#include "TStyle.h"
#include "TMath.h"
#include "TObjString.h"
#include "TObjArray.h"
#include "TClass.h"

ClassImp(TTeXDump)


//______________________________________________________________________________
/*Begin_Html
<center><h2>TTeXDump: Graphics interface to TeX</h2></center>
This class allow to generate <b>PGF/TikZ</b> vector graphics output
which can be included in TeX and LaTeX documents.
<p>
PGF is a TeX macro package for generating graphics. It is platform
and format-independent and works together with the most important TeX
backend drivers, including pdftex and dvips. It comes with a
user-friendly syntax layer called TikZ.
<p>
To generate a such file it is enough to do:
<pre>
   gStyle->SetPaperSize(10.,10.);
   hpx->Draw();
   gPad->Print("hpx.tex");
</pre>

<p>Then, the generated file (<tt>hpx.tex</tt>) can be included in a
LaTeX document (<tt>simple.tex</tt>) in the following way:
<pre>
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{patterns}
\usetikzlibrary{plotmarks}
\title{A simple LaTeX example}
\date{July 2013}
\begin{document}
\maketitle
The following image as been generated using the TTeXDump class:
\par
\input{hpx.tex}
\end{document}
</pre>

Note the three directives needed at the top of the LaTeX file:
<pre>
\usepackage{tikz}
\usetikzlibrary{patterns}
\usetikzlibrary{plotmarks}
</pre>

Then including the picture in the document is done with the
<tt>\input<\tt> directive.

<p> The command <tt>pdflatex simple.tex</tt> will generate the
corresponding pdf file <tt>simple.pdf</tt>.

End_Html */


//______________________________________________________________________________
TTeXDump::TTeXDump() : TVirtualPS()
{
   // Default TeX constructor

   fStream       = 0;
   fType         = 0;
   gVirtualPS    = this;
   fBoundingBox  = kFALSE;
   fRange        = kFALSE;
   fXsize        = 0.;
   fYsize        = 0.;
   fCurrentRed   = -1.;
   fCurrentGreen = -1.;
   fCurrentBlue  = -1.;
   fCurrentAlpha = 1.;
   fLineScale    = 0.;
}


//______________________________________________________________________________
TTeXDump::TTeXDump(const char *fname, Int_t wtype) : TVirtualPS(fname, wtype)
{
   // Initialize the TeX interface
   //
   //  fname : TeX file name
   //  wtype : TeX workstation type. Not used in the TeX driver. But as TTeXDump
   //          inherits from TVirtualPS it should be kept. Anyway it is not
   //          necessary to specify this parameter at creation time because it
   //          has a default value (which is ignore in the TeX case).

   fStream       = 0;
   fType         = 0;
   gVirtualPS    = this;
   fBoundingBox  = kFALSE;
   fRange        = kFALSE;
   fXsize        = 0.;
   fYsize        = 0.;
   fCurrentRed   = -1.;
   fCurrentGreen = -1.;
   fCurrentBlue  = -1.;
   fCurrentAlpha = 1.;
   fLineScale    = 0.;

   Open(fname, wtype);
}


//______________________________________________________________________________
void TTeXDump::Open(const char *fname, Int_t wtype)
{
   // Open a TeX file

   if (fStream) {
      Warning("Open", "TeX file already open");
      return;
   }

   SetLineScale(gStyle->GetLineScalePS());
   fLenBuffer = 0;
   fType      = abs(wtype);

   gStyle->GetPaperSize(fXsize, fYsize);

   Float_t xrange, yrange;
   if (gPad) {
      Double_t ww = gPad->GetWw();
      Double_t wh = gPad->GetWh();
      ww *= gPad->GetWNDC();
      wh *= gPad->GetHNDC();
      Double_t ratio = wh/ww;
      xrange = fXsize;
      yrange = fXsize*ratio;
      if (yrange > fYsize) { yrange = fYsize; xrange = yrange/ratio;}
      fXsize = xrange; fYsize = yrange;
   }

   // Open OS file
   fStream   = new std::ofstream(fname,std::ios::out);
   if (fStream == 0 || !fStream->good()) {
      printf("ERROR in TTeXDump::Open: Cannot open file:%s\n",fname);
      if (fStream == 0) return;
   }

   gVirtualPS = this;

   for (Int_t i=0;i<fSizBuffer;i++) fBuffer[i] = ' ';

   fBoundingBox = kFALSE;
   fRange       = kFALSE;

   // Set a default range
   Range(fXsize, fYsize);

   NewPage();
}


//______________________________________________________________________________
TTeXDump::~TTeXDump()
{
   // Default TeX destructor

   Close();
}


//______________________________________________________________________________
void TTeXDump::Close(Option_t *)
{
   // Close a TeX file

   if (!gVirtualPS) return;
   if (!fStream) return;
   if (gPad) gPad->Update();
   PrintStr("@");
   PrintStr("\\end{tikzpicture}@");

   // Close file stream
   if (fStream) { fStream->close(); delete fStream; fStream = 0;}

   gVirtualPS = 0;
}


//______________________________________________________________________________
void TTeXDump::On()
{
   // Activate an already open TeX file

   // fType is used to know if the TeX file is open. Unlike TPostScript, TTeXDump
   // has no "workstation type". In fact there is only one TeX type.

   if (!fType) {
      Error("On", "no TeX file open");
      Off();
      return;
   }
   gVirtualPS = this;
}


//______________________________________________________________________________
void TTeXDump::Off()
{
   // Deactivate an already open TeX file

   gVirtualPS = 0;
}


//______________________________________________________________________________
void TTeXDump::DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
{
   // Draw a Box

   Float_t x1c = XtoTeX(x1);
   Float_t y1c = YtoTeX(y1);
   Float_t x2c = XtoTeX(x2);
   Float_t y2c = YtoTeX(y2);

   Int_t fillis = fFillStyle/1000;
   Int_t fillsi = fFillStyle%1000;

   if (fillis==1) {
      SetColor(fFillColor);
      PrintStr("@");
      PrintStr("\\draw [color=c, fill=c");
      if (fCurrentAlpha != 1.) {
         PrintStr(", fill opacity=");
         WriteReal(fCurrentAlpha, kFALSE);
      }
      PrintStr("] (");
      WriteReal(x1c, kFALSE);
      PrintFast(1,",");
      WriteReal(y1c, kFALSE);
      PrintStr(") rectangle (");
      WriteReal(x2c, kFALSE);
      PrintFast(1,",");
      WriteReal(y2c, kFALSE);
      PrintStr(");");
   }
   if (fillis>1 && fillis<4) {
      SetColor(fFillColor);
      PrintStr("@");
      PrintStr("\\draw [pattern=");
      if (fillsi==1)  PrintStr("crosshatch dots");
      if (fillsi==2)  PrintStr("dots");
      if (fillsi==4)  PrintStr("north east lines");
      if (fillsi==5)  PrintStr("north west lines");
      if (fillsi==6)  PrintStr("vertical lines");
      if (fillsi==7)  PrintStr("horizontal lines");
      if (fillsi==10) PrintStr("bricks");
      if (fillsi==13) PrintStr("crosshatch");
      PrintStr(", pattern color=c");
      if (fCurrentAlpha != 1.) {
         PrintStr(", fill opacity=");
         WriteReal(fCurrentAlpha, kFALSE);
      }
      PrintStr("] (");
      WriteReal(x1c, kFALSE);
      PrintFast(1,",");
      WriteReal(y1c, kFALSE);
      PrintStr(") rectangle (");
      WriteReal(x2c, kFALSE);
      PrintFast(1,",");
      WriteReal(y2c, kFALSE);
      PrintStr(");");
   }
   if (fillis == 0) {
      SetColor(fLineColor);
      PrintStr("@");
      PrintStr("\\draw [c");
      PrintStr(",line width=");
      WriteReal(0.3*fLineScale*fLineWidth, kFALSE);
      if (fCurrentAlpha != 1.) {
         PrintStr(", opacity=");
         WriteReal(fCurrentAlpha, kFALSE);
      }
      PrintStr("] (");
      WriteReal(x1c, kFALSE);
      PrintFast(1,",");
      WriteReal(y1c, kFALSE);
      PrintStr(") -- (");
      WriteReal(x1c, kFALSE);
      PrintFast(1,",");
      WriteReal(y2c, kFALSE);
      PrintStr(") -- (");
      WriteReal(x2c, kFALSE);
      PrintFast(1,",");
      WriteReal(y2c, kFALSE);
      PrintStr(") -- (");
      WriteReal(x2c, kFALSE);
      PrintFast(1,",");
      WriteReal(y1c, kFALSE);
      PrintStr(") -- (");
      WriteReal(x1c, kFALSE);
      PrintFast(1,",");
      WriteReal(y1c, kFALSE);
      PrintStr(");");
   }
}


//______________________________________________________________________________
void TTeXDump::DrawFrame(Double_t, Double_t, Double_t, Double_t,
                         Int_t, Int_t, Int_t, Int_t)
{
   // Draw a Frame around a box
   //
   // mode = -1  the box looks as it is behind the screen
   // mode =  1  the box looks as it is in front of the screen
   // border is the border size in already pre-computed TeX units dark is the
   // color for the dark part of the frame light is the color for the light
   // part of the frame

   Warning("DrawFrame", "not yet implemented");
}


//______________________________________________________________________________
void TTeXDump::DrawPolyLine(Int_t, TPoints *)
{
   // Draw a PolyLine
   //
   //  Draw a polyline through  the points  xy.
   //  If NN=1 moves only to point x,y.
   //  If NN=0 the x,y are  written in the TeX file
   //     according to the current transformation.
   //  If NN>0 the line is clipped as a line.
   //  If NN<0 the line is clipped as a fill area.

   Warning("DrawPolyLine", "not yet implemented");
}


//______________________________________________________________________________
void TTeXDump::DrawPolyLineNDC(Int_t, TPoints *)
{
   // Draw a PolyLine in NDC space
   //
   //  Draw a polyline through  the points  xy.
   //  If NN=1 moves only to point x,y.
   //  If NN=0 the x,y are  written in the TeX file
   //     according to the current transformation.
   //  If NN>0 the line is clipped as a line.
   //  If NN<0 the line is clipped as a fill area.

   Warning("DrawPolyLineNDC", "not yet implemented");
}


//______________________________________________________________________________
void TTeXDump::DrawPolyMarker(Int_t, Float_t *, Float_t *)
{
   // Paint PolyMarker

   Warning("DrawPolyMarker", "not yet implemented");
}


//______________________________________________________________________________
void TTeXDump::DrawPolyMarker(Int_t n, Double_t *xw, Double_t *yw)
{
   // Paint PolyMarker

   Float_t x, y;

   SetColor(fMarkerColor);

   PrintStr("@");
   PrintStr("\\foreach \\P in {");

   x = XtoTeX(xw[0]);
   y = YtoTeX(yw[0]);

   PrintStr("(");
   WriteReal(x, kFALSE);
   PrintFast(1,",");
   WriteReal(y, kFALSE);
   PrintStr(")");

   for (Int_t i=1;i<n;i++) {
      x = XtoTeX(xw[i]);
      y = YtoTeX(yw[i]);
      PrintFast(2,",(");
      WriteReal(x, kFALSE);
      PrintFast(1,",");
      WriteReal(y, kFALSE);
      PrintFast(1,")");
   }

   if (fMarkerStyle == 23 || fMarkerStyle == 32) {
      PrintStr("}{\\draw[mark options={color=c,fill=c,rotate=180},mark size=");
   } else {
      PrintStr("}{\\draw[mark options={color=c,fill=c},mark size=");
   }
   PrintStr(Form("%fpt,mark=",8./3.33*fMarkerSize));
   switch (fMarkerStyle) {
   case 1 :
      PrintStr("*");
      PrintStr(",mark size=1pt");
      break;
   case 2 :
      PrintStr("+");
      break;
   case 3 :
      PrintStr("asterisk");
      break;
   case 4 :
      PrintStr("o");
      break;
   case 5 :
      PrintStr("x");
      break;
   case 20 :
      PrintStr("*");
      break;
   case 21 :
      PrintStr("square*");
      break;
   case 22 :
      PrintStr("triangle*");
      break;
   case 23 :
      PrintStr("triangle*");
      break;
   case 24 :
      PrintStr("o");
      break;
   case 25 :
      PrintStr("square");
      break;
   case 26 :
      PrintStr("triangle");
      break;
   case 27 :
      PrintStr("diamond");
      break;
   case 28 :
      PrintStr("cross");
      break;
   case 29 :
      PrintStr("newstar*");
      break;
   case 30 :
      PrintStr("newstar");
      break;
   case 31 :
      PrintStr("10-pointed star");
      break;
   case 32 :
      PrintStr("triangle");
      break;
   case 33 :
      PrintStr("diamond*");
      break;
   case 34 :
      PrintStr("cross*");
      break;
   }
   PrintStr("] plot coordinates {\\P};}");
}


//______________________________________________________________________________
void TTeXDump::DrawPS(Int_t nn, Double_t *xw, Double_t *yw)
{
   // This function defines a path with xw and yw and draw it according the
   // value of nn:
   //
   //  If nn>0 a line is drawn.
   //  If nn<0 a closed polygon is drawn.

   Int_t  n = TMath::Abs(nn);;
   Float_t x, y;

   if( n <= 1) {
      Error("DrawPS", "Two points are needed");
      return;
   }

   x = XtoTeX(xw[0]);
   y = YtoTeX(yw[0]);

   Int_t fillis = fFillStyle/1000;
   Int_t fillsi = fFillStyle%1000;

   if (nn>0) {
      SetColor(fLineColor);
      PrintStr("@");
      PrintStr("\\draw [c");
      switch(fLineStyle) {
      case 1:
         break;
      case 2:
         PrintStr(",dashed");
         break;
      case 3:
         PrintStr(",dotted");
         break;
      case 4:
         PrintStr(",dash pattern=on 2.4pt off 3.2pt on 0.8pt off 3.2pt");
         break;
      case 5:
         PrintStr(",dash pattern=on 4pt off 2.4pt on 0.8pt off 2.4pt");
         break;
      case 6:
         PrintStr(",dash pattern=on 4pt off 2.4pt on 0.8pt off 2.4pt on 0.8pt off 2.4pt on 0.8pt off 2.4pt");
         break;
      case 7:
         PrintStr(",dash pattern=on 4pt off 4pt");
         break;
      case 8:
         PrintStr(",dash pattern=on 4pt off 2.4pt on 0.8pt off 2.4pt on 0.8pt off 2.4pt");
         break;
      case 9:
         PrintStr(",dash pattern=on 16pt off 4pt");
         break;
      case 10:
         PrintStr(",dash pattern=on 16pt off 8pt on 0.8pt off 8pt");
         break;
      }
      PrintStr(",line width=");
      WriteReal(0.3*fLineScale*fLineWidth, kFALSE);
   } else {
      SetColor(fFillColor);
      if (fillis==1) {
         PrintStr("@");
         PrintStr("\\draw [c, fill=c");
      } else if (fillis==0) {
         PrintStr("@");
         PrintStr("\\draw [c");
      } else {
         PrintStr("\\draw [pattern=");
         if (fillsi==1)  PrintStr("crosshatch dots");
         if (fillsi==2)  PrintStr("dots");
         if (fillsi==4)  PrintStr("north east lines");
         if (fillsi==5)  PrintStr("north west lines");
         if (fillsi==6)  PrintStr("vertical lines");
         if (fillsi==7)  PrintStr("horizontal lines");
         if (fillsi==10) PrintStr("bricks");
         if (fillsi==13) PrintStr("crosshatch");
         PrintStr(", pattern color=c");
      }
      if (fCurrentAlpha != 1.) {
         PrintStr(", fill opacity=");
         WriteReal(fCurrentAlpha, kFALSE);
      }
   }
   PrintStr("] (");
   WriteReal(x, kFALSE);
   PrintFast(1,",");
   WriteReal(y, kFALSE);
   PrintStr(") -- ");

   for (Int_t i=1;i<n;i++) {
      x = XtoTeX(xw[i]);
      y = YtoTeX(yw[i]);
      PrintFast(1,"(");
      WriteReal(x, kFALSE);
      PrintFast(1,",");
      WriteReal(y, kFALSE);
      PrintFast(1,")");
      if (i<n-1) PrintStr(" -- ");
      else PrintStr(";@");
   }
}


//______________________________________________________________________________
void TTeXDump::NewPage()
{
   // Start the TeX page. This function starts the tikzpicture environment

   // Compute pad conversion coefficients
   if (gPad) {
      Double_t ww   = gPad->GetWw();
      Double_t wh   = gPad->GetWh();
      fYsize        = fXsize*wh/ww;
   } else {
      fYsize = 27;
   }

   if(!fBoundingBox) {
      PrintStr("\\begin{tikzpicture}@");
      DefineMarkers();
      fBoundingBox = kTRUE;
   }
}


//______________________________________________________________________________
void TTeXDump::Range(Float_t xsize, Float_t ysize)
{
   // Set the range for the paper in centimetres

   fXsize = xsize;
   fYsize = ysize;

   fRange = kTRUE;
}


//______________________________________________________________________________
void TTeXDump::SetFillColor( Color_t cindex )
{
   // Set color index for fill areas

   fFillColor = cindex;
   if (gStyle->GetFillColor() <= 0) cindex = 0;
}


//______________________________________________________________________________
void TTeXDump::SetLineColor( Color_t cindex )
{
   // Set color index for lines

   fLineColor = cindex;
}


//______________________________________________________________________________
void TTeXDump::SetLineStyle(Style_t linestyle)
{
   // Change the line style
   //
   // linestyle = 2 dashed
   //           = 3 dotted
   //           = 4 dash-dotted
   //           = else solid (1 in is used most of the time)

   fLineStyle = linestyle;
}


//______________________________________________________________________________
void TTeXDump::SetLineWidth(Width_t linewidth)
{
   // Set the lines width.

   fLineWidth = linewidth;
}

//______________________________________________________________________________
void TTeXDump::SetMarkerSize( Size_t msize)
{
   // Set size for markers.

   fMarkerSize = msize;
}


//______________________________________________________________________________
void TTeXDump::SetMarkerColor( Color_t cindex)
{
   // Set color index for markers.

   fMarkerColor = cindex;
}


//______________________________________________________________________________
void TTeXDump::SetColor(Int_t color)
{
   // Set color with its color index

   if (color < 0) color = 0;

   TColor *col = gROOT->GetColor(color);
   if (col) SetColor(col->GetRed(), col->GetGreen(), col->GetBlue());
   else     SetColor(1., 1., 1.);
   fCurrentAlpha = col->GetAlpha();
}


//______________________________________________________________________________
void TTeXDump::SetColor(Float_t r, Float_t g, Float_t b)
{
   // Set color with its R G B components
   //
   //  r: % of red in [0,1]
   //  g: % of green in [0,1]
   //  b: % of blue in [0,1]

   if (fCurrentRed == r && fCurrentGreen == g && fCurrentBlue == b) return;

   fCurrentRed   = r;
   fCurrentGreen = g;
   fCurrentBlue  = b;
   PrintStr("@");
   PrintStr("\\definecolor{c}{rgb}{");
   WriteReal(r, kFALSE);
   PrintFast(1,",");
   WriteReal(g, kFALSE);
   PrintFast(1,",");
   WriteReal(b, kFALSE);
   PrintFast(2,"};");
}


//______________________________________________________________________________
void TTeXDump::SetTextColor( Color_t cindex )
{
   // Set color index for text

   fTextColor = cindex;
}


//______________________________________________________________________________
void TTeXDump::Text(Double_t x, Double_t y, const char *chars)
{
   // Draw text
   //
   // xx: x position of the text
   // yy: y position of the text
   // chars: text to be drawn

   Double_t wh = (Double_t)gPad->XtoPixel(gPad->GetX2());
   Double_t hh = (Double_t)gPad->YtoPixel(gPad->GetY1());
   Float_t tsize, ftsize;
   if (wh < hh) {
      tsize = fTextSize*wh;
      Int_t sizeTTF = (Int_t)(tsize+0.5);
      ftsize = (sizeTTF*fXsize*gPad->GetAbsWNDC())/wh;
   } else {
      tsize = fTextSize*hh;
      Int_t sizeTTF = (Int_t)(tsize+0.5);
      ftsize = (sizeTTF*fYsize*gPad->GetAbsHNDC())/hh;
   }
   ftsize *= 2.22097;
   if (ftsize <= 0) return;

   TString t(chars);
   if (t.Index("\\")>=0 || t.Index("^{")>=0 || t.Index("_{")>=0) {
      t.Prepend("$");
      t.Append("$");
   } else {
      t.ReplaceAll("<","$<$");
      t.ReplaceAll(">","$>$");
      t.ReplaceAll("_","\\_");
   }
   t.ReplaceAll("&","\\&");
   t.ReplaceAll("#","\\#");
   t.ReplaceAll("%","\\%");

   Int_t txalh = fTextAlign/10;
   if (txalh <1) txalh = 1; if (txalh > 3) txalh = 3;
   Int_t txalv = fTextAlign%10;
   if (txalv <1) txalv = 1; if (txalv > 3) txalv = 3;
   SetColor(fTextColor);
   PrintStr("@");
   PrintStr("\\draw");
   if (txalh!=2 || txalv!=2) {
      PrintStr(" [anchor=");
      if (txalv==1) PrintStr("base");
      if (txalv==3) PrintStr("north");
      if (txalh==1) PrintStr(" west");
      if (txalh==3) PrintStr(" east");
      PrintFast(1,"]");
   }
   PrintFast(2," (");
   WriteReal(XtoTeX(x), kFALSE);
   PrintFast(1,",");
   WriteReal(YtoTeX(y), kFALSE);
   PrintStr(") node[scale=");
   WriteReal(ftsize, kFALSE);
   PrintStr(", color=c, rotate=");
   WriteReal(fTextAngle, kFALSE);
   PrintFast(2,"]{");
   PrintStr(t.Data());
   PrintFast(2,"};");
}


//______________________________________________________________________________
void TTeXDump::TextNDC(Double_t u, Double_t v, const char *chars)
{
   // Write a string of characters in NDC

   Double_t x = gPad->GetX1() + u*(gPad->GetX2() - gPad->GetX1());
   Double_t y = gPad->GetY1() + v*(gPad->GetY2() - gPad->GetY1());
   Text(x, y, chars);
}


//______________________________________________________________________________
Float_t TTeXDump::UtoTeX(Double_t u)
{
   // Convert U from NDC coordinate to TeX

   Double_t cm = fXsize*(gPad->GetAbsXlowNDC() + u*gPad->GetAbsWNDC());
   return cm;
}


//______________________________________________________________________________
Float_t TTeXDump::VtoTeX(Double_t v)
{
   // Convert V from NDC coordinate to TeX

   Double_t cm = fYsize*(gPad->GetAbsYlowNDC() + v*gPad->GetAbsHNDC());
   return cm;
}


//______________________________________________________________________________
Float_t TTeXDump::XtoTeX(Double_t x)
{
   // Convert X from world coordinate to TeX

   Double_t u = (x - gPad->GetX1())/(gPad->GetX2() - gPad->GetX1());
   return  UtoTeX(u);
}


//______________________________________________________________________________
Float_t TTeXDump::YtoTeX(Double_t y)
{
   // Convert Y from world coordinate to TeX

   Double_t v = (y - gPad->GetY1())/(gPad->GetY2() - gPad->GetY1());
   return  VtoTeX(v);
}


//______________________________________________________________________________
void TTeXDump::CellArrayBegin(Int_t, Int_t, Double_t, Double_t, Double_t,
                          Double_t)
{
   // Begin the Cell Array painting

   Warning("CellArrayBegin", "not yet implemented");
}


//______________________________________________________________________________
void TTeXDump::CellArrayFill(Int_t, Int_t, Int_t)
{
   // Paint the Cell Array

   Warning("CellArrayFill", "not yet implemented");
}


//______________________________________________________________________________
void TTeXDump::CellArrayEnd()
{
   // End the Cell Array painting

   Warning("CellArrayEnd", "not yet implemented");
}


//______________________________________________________________________________
void TTeXDump::DrawPS(Int_t, Float_t *, Float_t *)
{
   // Not needed in TeX case

   Warning("DrawPS", "not yet implemented");
}

//______________________________________________________________________________
void TTeXDump::DefineMarkers()
{
   // add additional pgfplotmarks

  // open cross
  PrintStr("\\pgfdeclareplotmark{cross} {@");
  PrintStr("\\pgfpathmoveto{\\pgfpoint{-0.3\\pgfplotmarksize}{\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{+0.3\\pgfplotmarksize}{\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{+0.3\\pgfplotmarksize}{0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{+1\\pgfplotmarksize}{0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{+1\\pgfplotmarksize}{-0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{+0.3\\pgfplotmarksize}{-0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{+0.3\\pgfplotmarksize}{-1.\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{-0.3\\pgfplotmarksize}{-1.\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{-0.3\\pgfplotmarksize}{-0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{-1.\\pgfplotmarksize}{-0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{-1.\\pgfplotmarksize}{0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{-0.3\\pgfplotmarksize}{0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathclose@");
  PrintStr("\\pgfusepathqstroke@");
  PrintStr("}@");

  // filled cross
  PrintStr("\\pgfdeclareplotmark{cross*} {@");
  PrintStr("\\pgfpathmoveto{\\pgfpoint{-0.3\\pgfplotmarksize}{\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{+0.3\\pgfplotmarksize}{\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{+0.3\\pgfplotmarksize}{0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{+1\\pgfplotmarksize}{0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{+1\\pgfplotmarksize}{-0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{+0.3\\pgfplotmarksize}{-0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{+0.3\\pgfplotmarksize}{-1.\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{-0.3\\pgfplotmarksize}{-1.\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{-0.3\\pgfplotmarksize}{-0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{-1.\\pgfplotmarksize}{-0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{-1.\\pgfplotmarksize}{0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfpoint{-0.3\\pgfplotmarksize}{0.3\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathclose@");
  PrintStr("\\pgfusepathqfillstroke@");
  PrintStr("}@");

  // open star
  PrintStr("\\pgfdeclareplotmark{newstar} {@");
  PrintStr("\\pgfpathmoveto{\\pgfqpoint{0pt}{\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{44}{0.5\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{18}{\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{-20}{0.5\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{-54}{\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{-90}{0.5\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{234}{\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{198}{0.5\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{162}{\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{134}{0.5\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathclose@");
  PrintStr("\\pgfusepathqstroke@");
  PrintStr("}@");

  // filled star
  PrintStr("\\pgfdeclareplotmark{newstar*} {@");
  PrintStr("\\pgfpathmoveto{\\pgfqpoint{0pt}{\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{44}{0.5\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{18}{\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{-20}{0.5\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{-54}{\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{-90}{0.5\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{234}{\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{198}{0.5\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{162}{\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathlineto{\\pgfqpointpolar{134}{0.5\\pgfplotmarksize}}@");
  PrintStr("\\pgfpathclose@");
  PrintStr("\\pgfusepathqfillstroke@");
  PrintStr("}@");
}
 TTeXDump.cxx:1
 TTeXDump.cxx:2
 TTeXDump.cxx:3
 TTeXDump.cxx:4
 TTeXDump.cxx:5
 TTeXDump.cxx:6
 TTeXDump.cxx:7
 TTeXDump.cxx:8
 TTeXDump.cxx:9
 TTeXDump.cxx:10
 TTeXDump.cxx:11
 TTeXDump.cxx:12
 TTeXDump.cxx:13
 TTeXDump.cxx:14
 TTeXDump.cxx:15
 TTeXDump.cxx:16
 TTeXDump.cxx:17
 TTeXDump.cxx:18
 TTeXDump.cxx:19
 TTeXDump.cxx:20
 TTeXDump.cxx:21
 TTeXDump.cxx:22
 TTeXDump.cxx:23
 TTeXDump.cxx:24
 TTeXDump.cxx:25
 TTeXDump.cxx:26
 TTeXDump.cxx:27
 TTeXDump.cxx:28
 TTeXDump.cxx:29
 TTeXDump.cxx:30
 TTeXDump.cxx:31
 TTeXDump.cxx:32
 TTeXDump.cxx:33
 TTeXDump.cxx:34
 TTeXDump.cxx:35
 TTeXDump.cxx:36
 TTeXDump.cxx:37
 TTeXDump.cxx:38
 TTeXDump.cxx:39
 TTeXDump.cxx:40
 TTeXDump.cxx:41
 TTeXDump.cxx:42
 TTeXDump.cxx:43
 TTeXDump.cxx:44
 TTeXDump.cxx:45
 TTeXDump.cxx:46
 TTeXDump.cxx:47
 TTeXDump.cxx:48
 TTeXDump.cxx:49
 TTeXDump.cxx:50
 TTeXDump.cxx:51
 TTeXDump.cxx:52
 TTeXDump.cxx:53
 TTeXDump.cxx:54
 TTeXDump.cxx:55
 TTeXDump.cxx:56
 TTeXDump.cxx:57
 TTeXDump.cxx:58
 TTeXDump.cxx:59
 TTeXDump.cxx:60
 TTeXDump.cxx:61
 TTeXDump.cxx:62
 TTeXDump.cxx:63
 TTeXDump.cxx:64
 TTeXDump.cxx:65
 TTeXDump.cxx:66
 TTeXDump.cxx:67
 TTeXDump.cxx:68
 TTeXDump.cxx:69
 TTeXDump.cxx:70
 TTeXDump.cxx:71
 TTeXDump.cxx:72
 TTeXDump.cxx:73
 TTeXDump.cxx:74
 TTeXDump.cxx:75
 TTeXDump.cxx:76
 TTeXDump.cxx:77
 TTeXDump.cxx:78
 TTeXDump.cxx:79
 TTeXDump.cxx:80
 TTeXDump.cxx:81
 TTeXDump.cxx:82
 TTeXDump.cxx:83
 TTeXDump.cxx:84
 TTeXDump.cxx:85
 TTeXDump.cxx:86
 TTeXDump.cxx:87
 TTeXDump.cxx:88
 TTeXDump.cxx:89
 TTeXDump.cxx:90
 TTeXDump.cxx:91
 TTeXDump.cxx:92
 TTeXDump.cxx:93
 TTeXDump.cxx:94
 TTeXDump.cxx:95
 TTeXDump.cxx:96
 TTeXDump.cxx:97
 TTeXDump.cxx:98
 TTeXDump.cxx:99
 TTeXDump.cxx:100
 TTeXDump.cxx:101
 TTeXDump.cxx:102
 TTeXDump.cxx:103
 TTeXDump.cxx:104
 TTeXDump.cxx:105
 TTeXDump.cxx:106
 TTeXDump.cxx:107
 TTeXDump.cxx:108
 TTeXDump.cxx:109
 TTeXDump.cxx:110
 TTeXDump.cxx:111
 TTeXDump.cxx:112
 TTeXDump.cxx:113
 TTeXDump.cxx:114
 TTeXDump.cxx:115
 TTeXDump.cxx:116
 TTeXDump.cxx:117
 TTeXDump.cxx:118
 TTeXDump.cxx:119
 TTeXDump.cxx:120
 TTeXDump.cxx:121
 TTeXDump.cxx:122
 TTeXDump.cxx:123
 TTeXDump.cxx:124
 TTeXDump.cxx:125
 TTeXDump.cxx:126
 TTeXDump.cxx:127
 TTeXDump.cxx:128
 TTeXDump.cxx:129
 TTeXDump.cxx:130
 TTeXDump.cxx:131
 TTeXDump.cxx:132
 TTeXDump.cxx:133
 TTeXDump.cxx:134
 TTeXDump.cxx:135
 TTeXDump.cxx:136
 TTeXDump.cxx:137
 TTeXDump.cxx:138
 TTeXDump.cxx:139
 TTeXDump.cxx:140
 TTeXDump.cxx:141
 TTeXDump.cxx:142
 TTeXDump.cxx:143
 TTeXDump.cxx:144
 TTeXDump.cxx:145
 TTeXDump.cxx:146
 TTeXDump.cxx:147
 TTeXDump.cxx:148
 TTeXDump.cxx:149
 TTeXDump.cxx:150
 TTeXDump.cxx:151
 TTeXDump.cxx:152
 TTeXDump.cxx:153
 TTeXDump.cxx:154
 TTeXDump.cxx:155
 TTeXDump.cxx:156
 TTeXDump.cxx:157
 TTeXDump.cxx:158
 TTeXDump.cxx:159
 TTeXDump.cxx:160
 TTeXDump.cxx:161
 TTeXDump.cxx:162
 TTeXDump.cxx:163
 TTeXDump.cxx:164
 TTeXDump.cxx:165
 TTeXDump.cxx:166
 TTeXDump.cxx:167
 TTeXDump.cxx:168
 TTeXDump.cxx:169
 TTeXDump.cxx:170
 TTeXDump.cxx:171
 TTeXDump.cxx:172
 TTeXDump.cxx:173
 TTeXDump.cxx:174
 TTeXDump.cxx:175
 TTeXDump.cxx:176
 TTeXDump.cxx:177
 TTeXDump.cxx:178
 TTeXDump.cxx:179
 TTeXDump.cxx:180
 TTeXDump.cxx:181
 TTeXDump.cxx:182
 TTeXDump.cxx:183
 TTeXDump.cxx:184
 TTeXDump.cxx:185
 TTeXDump.cxx:186
 TTeXDump.cxx:187
 TTeXDump.cxx:188
 TTeXDump.cxx:189
 TTeXDump.cxx:190
 TTeXDump.cxx:191
 TTeXDump.cxx:192
 TTeXDump.cxx:193
 TTeXDump.cxx:194
 TTeXDump.cxx:195
 TTeXDump.cxx:196
 TTeXDump.cxx:197
 TTeXDump.cxx:198
 TTeXDump.cxx:199
 TTeXDump.cxx:200
 TTeXDump.cxx:201
 TTeXDump.cxx:202
 TTeXDump.cxx:203
 TTeXDump.cxx:204
 TTeXDump.cxx:205
 TTeXDump.cxx:206
 TTeXDump.cxx:207
 TTeXDump.cxx:208
 TTeXDump.cxx:209
 TTeXDump.cxx:210
 TTeXDump.cxx:211
 TTeXDump.cxx:212
 TTeXDump.cxx:213
 TTeXDump.cxx:214
 TTeXDump.cxx:215
 TTeXDump.cxx:216
 TTeXDump.cxx:217
 TTeXDump.cxx:218
 TTeXDump.cxx:219
 TTeXDump.cxx:220
 TTeXDump.cxx:221
 TTeXDump.cxx:222
 TTeXDump.cxx:223
 TTeXDump.cxx:224
 TTeXDump.cxx:225
 TTeXDump.cxx:226
 TTeXDump.cxx:227
 TTeXDump.cxx:228
 TTeXDump.cxx:229
 TTeXDump.cxx:230
 TTeXDump.cxx:231
 TTeXDump.cxx:232
 TTeXDump.cxx:233
 TTeXDump.cxx:234
 TTeXDump.cxx:235
 TTeXDump.cxx:236
 TTeXDump.cxx:237
 TTeXDump.cxx:238
 TTeXDump.cxx:239
 TTeXDump.cxx:240
 TTeXDump.cxx:241
 TTeXDump.cxx:242
 TTeXDump.cxx:243
 TTeXDump.cxx:244
 TTeXDump.cxx:245
 TTeXDump.cxx:246
 TTeXDump.cxx:247
 TTeXDump.cxx:248
 TTeXDump.cxx:249
 TTeXDump.cxx:250
 TTeXDump.cxx:251
 TTeXDump.cxx:252
 TTeXDump.cxx:253
 TTeXDump.cxx:254
 TTeXDump.cxx:255
 TTeXDump.cxx:256
 TTeXDump.cxx:257
 TTeXDump.cxx:258
 TTeXDump.cxx:259
 TTeXDump.cxx:260
 TTeXDump.cxx:261
 TTeXDump.cxx:262
 TTeXDump.cxx:263
 TTeXDump.cxx:264
 TTeXDump.cxx:265
 TTeXDump.cxx:266
 TTeXDump.cxx:267
 TTeXDump.cxx:268
 TTeXDump.cxx:269
 TTeXDump.cxx:270
 TTeXDump.cxx:271
 TTeXDump.cxx:272
 TTeXDump.cxx:273
 TTeXDump.cxx:274
 TTeXDump.cxx:275
 TTeXDump.cxx:276
 TTeXDump.cxx:277
 TTeXDump.cxx:278
 TTeXDump.cxx:279
 TTeXDump.cxx:280
 TTeXDump.cxx:281
 TTeXDump.cxx:282
 TTeXDump.cxx:283
 TTeXDump.cxx:284
 TTeXDump.cxx:285
 TTeXDump.cxx:286
 TTeXDump.cxx:287
 TTeXDump.cxx:288
 TTeXDump.cxx:289
 TTeXDump.cxx:290
 TTeXDump.cxx:291
 TTeXDump.cxx:292
 TTeXDump.cxx:293
 TTeXDump.cxx:294
 TTeXDump.cxx:295
 TTeXDump.cxx:296
 TTeXDump.cxx:297
 TTeXDump.cxx:298
 TTeXDump.cxx:299
 TTeXDump.cxx:300
 TTeXDump.cxx:301
 TTeXDump.cxx:302
 TTeXDump.cxx:303
 TTeXDump.cxx:304
 TTeXDump.cxx:305
 TTeXDump.cxx:306
 TTeXDump.cxx:307
 TTeXDump.cxx:308
 TTeXDump.cxx:309
 TTeXDump.cxx:310
 TTeXDump.cxx:311
 TTeXDump.cxx:312
 TTeXDump.cxx:313
 TTeXDump.cxx:314
 TTeXDump.cxx:315
 TTeXDump.cxx:316
 TTeXDump.cxx:317
 TTeXDump.cxx:318
 TTeXDump.cxx:319
 TTeXDump.cxx:320
 TTeXDump.cxx:321
 TTeXDump.cxx:322
 TTeXDump.cxx:323
 TTeXDump.cxx:324
 TTeXDump.cxx:325
 TTeXDump.cxx:326
 TTeXDump.cxx:327
 TTeXDump.cxx:328
 TTeXDump.cxx:329
 TTeXDump.cxx:330
 TTeXDump.cxx:331
 TTeXDump.cxx:332
 TTeXDump.cxx:333
 TTeXDump.cxx:334
 TTeXDump.cxx:335
 TTeXDump.cxx:336
 TTeXDump.cxx:337
 TTeXDump.cxx:338
 TTeXDump.cxx:339
 TTeXDump.cxx:340
 TTeXDump.cxx:341
 TTeXDump.cxx:342
 TTeXDump.cxx:343
 TTeXDump.cxx:344
 TTeXDump.cxx:345
 TTeXDump.cxx:346
 TTeXDump.cxx:347
 TTeXDump.cxx:348
 TTeXDump.cxx:349
 TTeXDump.cxx:350
 TTeXDump.cxx:351
 TTeXDump.cxx:352
 TTeXDump.cxx:353
 TTeXDump.cxx:354
 TTeXDump.cxx:355
 TTeXDump.cxx:356
 TTeXDump.cxx:357
 TTeXDump.cxx:358
 TTeXDump.cxx:359
 TTeXDump.cxx:360
 TTeXDump.cxx:361
 TTeXDump.cxx:362
 TTeXDump.cxx:363
 TTeXDump.cxx:364
 TTeXDump.cxx:365
 TTeXDump.cxx:366
 TTeXDump.cxx:367
 TTeXDump.cxx:368
 TTeXDump.cxx:369
 TTeXDump.cxx:370
 TTeXDump.cxx:371
 TTeXDump.cxx:372
 TTeXDump.cxx:373
 TTeXDump.cxx:374
 TTeXDump.cxx:375
 TTeXDump.cxx:376
 TTeXDump.cxx:377
 TTeXDump.cxx:378
 TTeXDump.cxx:379
 TTeXDump.cxx:380
 TTeXDump.cxx:381
 TTeXDump.cxx:382
 TTeXDump.cxx:383
 TTeXDump.cxx:384
 TTeXDump.cxx:385
 TTeXDump.cxx:386
 TTeXDump.cxx:387
 TTeXDump.cxx:388
 TTeXDump.cxx:389
 TTeXDump.cxx:390
 TTeXDump.cxx:391
 TTeXDump.cxx:392
 TTeXDump.cxx:393
 TTeXDump.cxx:394
 TTeXDump.cxx:395
 TTeXDump.cxx:396
 TTeXDump.cxx:397
 TTeXDump.cxx:398
 TTeXDump.cxx:399
 TTeXDump.cxx:400
 TTeXDump.cxx:401
 TTeXDump.cxx:402
 TTeXDump.cxx:403
 TTeXDump.cxx:404
 TTeXDump.cxx:405
 TTeXDump.cxx:406
 TTeXDump.cxx:407
 TTeXDump.cxx:408
 TTeXDump.cxx:409
 TTeXDump.cxx:410
 TTeXDump.cxx:411
 TTeXDump.cxx:412
 TTeXDump.cxx:413
 TTeXDump.cxx:414
 TTeXDump.cxx:415
 TTeXDump.cxx:416
 TTeXDump.cxx:417
 TTeXDump.cxx:418
 TTeXDump.cxx:419
 TTeXDump.cxx:420
 TTeXDump.cxx:421
 TTeXDump.cxx:422
 TTeXDump.cxx:423
 TTeXDump.cxx:424
 TTeXDump.cxx:425
 TTeXDump.cxx:426
 TTeXDump.cxx:427
 TTeXDump.cxx:428
 TTeXDump.cxx:429
 TTeXDump.cxx:430
 TTeXDump.cxx:431
 TTeXDump.cxx:432
 TTeXDump.cxx:433
 TTeXDump.cxx:434
 TTeXDump.cxx:435
 TTeXDump.cxx:436
 TTeXDump.cxx:437
 TTeXDump.cxx:438
 TTeXDump.cxx:439
 TTeXDump.cxx:440
 TTeXDump.cxx:441
 TTeXDump.cxx:442
 TTeXDump.cxx:443
 TTeXDump.cxx:444
 TTeXDump.cxx:445
 TTeXDump.cxx:446
 TTeXDump.cxx:447
 TTeXDump.cxx:448
 TTeXDump.cxx:449
 TTeXDump.cxx:450
 TTeXDump.cxx:451
 TTeXDump.cxx:452
 TTeXDump.cxx:453
 TTeXDump.cxx:454
 TTeXDump.cxx:455
 TTeXDump.cxx:456
 TTeXDump.cxx:457
 TTeXDump.cxx:458
 TTeXDump.cxx:459
 TTeXDump.cxx:460
 TTeXDump.cxx:461
 TTeXDump.cxx:462
 TTeXDump.cxx:463
 TTeXDump.cxx:464
 TTeXDump.cxx:465
 TTeXDump.cxx:466
 TTeXDump.cxx:467
 TTeXDump.cxx:468
 TTeXDump.cxx:469
 TTeXDump.cxx:470
 TTeXDump.cxx:471
 TTeXDump.cxx:472
 TTeXDump.cxx:473
 TTeXDump.cxx:474
 TTeXDump.cxx:475
 TTeXDump.cxx:476
 TTeXDump.cxx:477
 TTeXDump.cxx:478
 TTeXDump.cxx:479
 TTeXDump.cxx:480
 TTeXDump.cxx:481
 TTeXDump.cxx:482
 TTeXDump.cxx:483
 TTeXDump.cxx:484
 TTeXDump.cxx:485
 TTeXDump.cxx:486
 TTeXDump.cxx:487
 TTeXDump.cxx:488
 TTeXDump.cxx:489
 TTeXDump.cxx:490
 TTeXDump.cxx:491
 TTeXDump.cxx:492
 TTeXDump.cxx:493
 TTeXDump.cxx:494
 TTeXDump.cxx:495
 TTeXDump.cxx:496
 TTeXDump.cxx:497
 TTeXDump.cxx:498
 TTeXDump.cxx:499
 TTeXDump.cxx:500
 TTeXDump.cxx:501
 TTeXDump.cxx:502
 TTeXDump.cxx:503
 TTeXDump.cxx:504
 TTeXDump.cxx:505
 TTeXDump.cxx:506
 TTeXDump.cxx:507
 TTeXDump.cxx:508
 TTeXDump.cxx:509
 TTeXDump.cxx:510
 TTeXDump.cxx:511
 TTeXDump.cxx:512
 TTeXDump.cxx:513
 TTeXDump.cxx:514
 TTeXDump.cxx:515
 TTeXDump.cxx:516
 TTeXDump.cxx:517
 TTeXDump.cxx:518
 TTeXDump.cxx:519
 TTeXDump.cxx:520
 TTeXDump.cxx:521
 TTeXDump.cxx:522
 TTeXDump.cxx:523
 TTeXDump.cxx:524
 TTeXDump.cxx:525
 TTeXDump.cxx:526
 TTeXDump.cxx:527
 TTeXDump.cxx:528
 TTeXDump.cxx:529
 TTeXDump.cxx:530
 TTeXDump.cxx:531
 TTeXDump.cxx:532
 TTeXDump.cxx:533
 TTeXDump.cxx:534
 TTeXDump.cxx:535
 TTeXDump.cxx:536
 TTeXDump.cxx:537
 TTeXDump.cxx:538
 TTeXDump.cxx:539
 TTeXDump.cxx:540
 TTeXDump.cxx:541
 TTeXDump.cxx:542
 TTeXDump.cxx:543
 TTeXDump.cxx:544
 TTeXDump.cxx:545
 TTeXDump.cxx:546
 TTeXDump.cxx:547
 TTeXDump.cxx:548
 TTeXDump.cxx:549
 TTeXDump.cxx:550
 TTeXDump.cxx:551
 TTeXDump.cxx:552
 TTeXDump.cxx:553
 TTeXDump.cxx:554
 TTeXDump.cxx:555
 TTeXDump.cxx:556
 TTeXDump.cxx:557
 TTeXDump.cxx:558
 TTeXDump.cxx:559
 TTeXDump.cxx:560
 TTeXDump.cxx:561
 TTeXDump.cxx:562
 TTeXDump.cxx:563
 TTeXDump.cxx:564
 TTeXDump.cxx:565
 TTeXDump.cxx:566
 TTeXDump.cxx:567
 TTeXDump.cxx:568
 TTeXDump.cxx:569
 TTeXDump.cxx:570
 TTeXDump.cxx:571
 TTeXDump.cxx:572
 TTeXDump.cxx:573
 TTeXDump.cxx:574
 TTeXDump.cxx:575
 TTeXDump.cxx:576
 TTeXDump.cxx:577
 TTeXDump.cxx:578
 TTeXDump.cxx:579
 TTeXDump.cxx:580
 TTeXDump.cxx:581
 TTeXDump.cxx:582
 TTeXDump.cxx:583
 TTeXDump.cxx:584
 TTeXDump.cxx:585
 TTeXDump.cxx:586
 TTeXDump.cxx:587
 TTeXDump.cxx:588
 TTeXDump.cxx:589
 TTeXDump.cxx:590
 TTeXDump.cxx:591
 TTeXDump.cxx:592
 TTeXDump.cxx:593
 TTeXDump.cxx:594
 TTeXDump.cxx:595
 TTeXDump.cxx:596
 TTeXDump.cxx:597
 TTeXDump.cxx:598
 TTeXDump.cxx:599
 TTeXDump.cxx:600
 TTeXDump.cxx:601
 TTeXDump.cxx:602
 TTeXDump.cxx:603
 TTeXDump.cxx:604
 TTeXDump.cxx:605
 TTeXDump.cxx:606
 TTeXDump.cxx:607
 TTeXDump.cxx:608
 TTeXDump.cxx:609
 TTeXDump.cxx:610
 TTeXDump.cxx:611
 TTeXDump.cxx:612
 TTeXDump.cxx:613
 TTeXDump.cxx:614
 TTeXDump.cxx:615
 TTeXDump.cxx:616
 TTeXDump.cxx:617
 TTeXDump.cxx:618
 TTeXDump.cxx:619
 TTeXDump.cxx:620
 TTeXDump.cxx:621
 TTeXDump.cxx:622
 TTeXDump.cxx:623
 TTeXDump.cxx:624
 TTeXDump.cxx:625
 TTeXDump.cxx:626
 TTeXDump.cxx:627
 TTeXDump.cxx:628
 TTeXDump.cxx:629
 TTeXDump.cxx:630
 TTeXDump.cxx:631
 TTeXDump.cxx:632
 TTeXDump.cxx:633
 TTeXDump.cxx:634
 TTeXDump.cxx:635
 TTeXDump.cxx:636
 TTeXDump.cxx:637
 TTeXDump.cxx:638
 TTeXDump.cxx:639
 TTeXDump.cxx:640
 TTeXDump.cxx:641
 TTeXDump.cxx:642
 TTeXDump.cxx:643
 TTeXDump.cxx:644
 TTeXDump.cxx:645
 TTeXDump.cxx:646
 TTeXDump.cxx:647
 TTeXDump.cxx:648
 TTeXDump.cxx:649
 TTeXDump.cxx:650
 TTeXDump.cxx:651
 TTeXDump.cxx:652
 TTeXDump.cxx:653
 TTeXDump.cxx:654
 TTeXDump.cxx:655
 TTeXDump.cxx:656
 TTeXDump.cxx:657
 TTeXDump.cxx:658
 TTeXDump.cxx:659
 TTeXDump.cxx:660
 TTeXDump.cxx:661
 TTeXDump.cxx:662
 TTeXDump.cxx:663
 TTeXDump.cxx:664
 TTeXDump.cxx:665
 TTeXDump.cxx:666
 TTeXDump.cxx:667
 TTeXDump.cxx:668
 TTeXDump.cxx:669
 TTeXDump.cxx:670
 TTeXDump.cxx:671
 TTeXDump.cxx:672
 TTeXDump.cxx:673
 TTeXDump.cxx:674
 TTeXDump.cxx:675
 TTeXDump.cxx:676
 TTeXDump.cxx:677
 TTeXDump.cxx:678
 TTeXDump.cxx:679
 TTeXDump.cxx:680
 TTeXDump.cxx:681
 TTeXDump.cxx:682
 TTeXDump.cxx:683
 TTeXDump.cxx:684
 TTeXDump.cxx:685
 TTeXDump.cxx:686
 TTeXDump.cxx:687
 TTeXDump.cxx:688
 TTeXDump.cxx:689
 TTeXDump.cxx:690
 TTeXDump.cxx:691
 TTeXDump.cxx:692
 TTeXDump.cxx:693
 TTeXDump.cxx:694
 TTeXDump.cxx:695
 TTeXDump.cxx:696
 TTeXDump.cxx:697
 TTeXDump.cxx:698
 TTeXDump.cxx:699
 TTeXDump.cxx:700
 TTeXDump.cxx:701
 TTeXDump.cxx:702
 TTeXDump.cxx:703
 TTeXDump.cxx:704
 TTeXDump.cxx:705
 TTeXDump.cxx:706
 TTeXDump.cxx:707
 TTeXDump.cxx:708
 TTeXDump.cxx:709
 TTeXDump.cxx:710
 TTeXDump.cxx:711
 TTeXDump.cxx:712
 TTeXDump.cxx:713
 TTeXDump.cxx:714
 TTeXDump.cxx:715
 TTeXDump.cxx:716
 TTeXDump.cxx:717
 TTeXDump.cxx:718
 TTeXDump.cxx:719
 TTeXDump.cxx:720
 TTeXDump.cxx:721
 TTeXDump.cxx:722
 TTeXDump.cxx:723
 TTeXDump.cxx:724
 TTeXDump.cxx:725
 TTeXDump.cxx:726
 TTeXDump.cxx:727
 TTeXDump.cxx:728
 TTeXDump.cxx:729
 TTeXDump.cxx:730
 TTeXDump.cxx:731
 TTeXDump.cxx:732
 TTeXDump.cxx:733
 TTeXDump.cxx:734
 TTeXDump.cxx:735
 TTeXDump.cxx:736
 TTeXDump.cxx:737
 TTeXDump.cxx:738
 TTeXDump.cxx:739
 TTeXDump.cxx:740
 TTeXDump.cxx:741
 TTeXDump.cxx:742
 TTeXDump.cxx:743
 TTeXDump.cxx:744
 TTeXDump.cxx:745
 TTeXDump.cxx:746
 TTeXDump.cxx:747
 TTeXDump.cxx:748
 TTeXDump.cxx:749
 TTeXDump.cxx:750
 TTeXDump.cxx:751
 TTeXDump.cxx:752
 TTeXDump.cxx:753
 TTeXDump.cxx:754
 TTeXDump.cxx:755
 TTeXDump.cxx:756
 TTeXDump.cxx:757
 TTeXDump.cxx:758
 TTeXDump.cxx:759
 TTeXDump.cxx:760
 TTeXDump.cxx:761
 TTeXDump.cxx:762
 TTeXDump.cxx:763
 TTeXDump.cxx:764
 TTeXDump.cxx:765
 TTeXDump.cxx:766
 TTeXDump.cxx:767
 TTeXDump.cxx:768
 TTeXDump.cxx:769
 TTeXDump.cxx:770
 TTeXDump.cxx:771
 TTeXDump.cxx:772
 TTeXDump.cxx:773
 TTeXDump.cxx:774
 TTeXDump.cxx:775
 TTeXDump.cxx:776
 TTeXDump.cxx:777
 TTeXDump.cxx:778
 TTeXDump.cxx:779
 TTeXDump.cxx:780
 TTeXDump.cxx:781
 TTeXDump.cxx:782
 TTeXDump.cxx:783
 TTeXDump.cxx:784
 TTeXDump.cxx:785
 TTeXDump.cxx:786
 TTeXDump.cxx:787
 TTeXDump.cxx:788
 TTeXDump.cxx:789
 TTeXDump.cxx:790
 TTeXDump.cxx:791
 TTeXDump.cxx:792
 TTeXDump.cxx:793
 TTeXDump.cxx:794
 TTeXDump.cxx:795
 TTeXDump.cxx:796
 TTeXDump.cxx:797
 TTeXDump.cxx:798
 TTeXDump.cxx:799
 TTeXDump.cxx:800
 TTeXDump.cxx:801
 TTeXDump.cxx:802
 TTeXDump.cxx:803
 TTeXDump.cxx:804
 TTeXDump.cxx:805
 TTeXDump.cxx:806
 TTeXDump.cxx:807
 TTeXDump.cxx:808
 TTeXDump.cxx:809
 TTeXDump.cxx:810
 TTeXDump.cxx:811
 TTeXDump.cxx:812
 TTeXDump.cxx:813
 TTeXDump.cxx:814
 TTeXDump.cxx:815
 TTeXDump.cxx:816
 TTeXDump.cxx:817
 TTeXDump.cxx:818
 TTeXDump.cxx:819
 TTeXDump.cxx:820
 TTeXDump.cxx:821
 TTeXDump.cxx:822
 TTeXDump.cxx:823
 TTeXDump.cxx:824
 TTeXDump.cxx:825
 TTeXDump.cxx:826
 TTeXDump.cxx:827
 TTeXDump.cxx:828
 TTeXDump.cxx:829
 TTeXDump.cxx:830
 TTeXDump.cxx:831
 TTeXDump.cxx:832
 TTeXDump.cxx:833
 TTeXDump.cxx:834
 TTeXDump.cxx:835
 TTeXDump.cxx:836
 TTeXDump.cxx:837
 TTeXDump.cxx:838
 TTeXDump.cxx:839
 TTeXDump.cxx:840
 TTeXDump.cxx:841
 TTeXDump.cxx:842
 TTeXDump.cxx:843
 TTeXDump.cxx:844
 TTeXDump.cxx:845
 TTeXDump.cxx:846
 TTeXDump.cxx:847
 TTeXDump.cxx:848
 TTeXDump.cxx:849
 TTeXDump.cxx:850
 TTeXDump.cxx:851
 TTeXDump.cxx:852
 TTeXDump.cxx:853
 TTeXDump.cxx:854
 TTeXDump.cxx:855
 TTeXDump.cxx:856
 TTeXDump.cxx:857
 TTeXDump.cxx:858
 TTeXDump.cxx:859
 TTeXDump.cxx:860
 TTeXDump.cxx:861
 TTeXDump.cxx:862
 TTeXDump.cxx:863
 TTeXDump.cxx:864
 TTeXDump.cxx:865
 TTeXDump.cxx:866
 TTeXDump.cxx:867
 TTeXDump.cxx:868
 TTeXDump.cxx:869
 TTeXDump.cxx:870
 TTeXDump.cxx:871
 TTeXDump.cxx:872
 TTeXDump.cxx:873
 TTeXDump.cxx:874
 TTeXDump.cxx:875
 TTeXDump.cxx:876
 TTeXDump.cxx:877
 TTeXDump.cxx:878
 TTeXDump.cxx:879
 TTeXDump.cxx:880
 TTeXDump.cxx:881
 TTeXDump.cxx:882
 TTeXDump.cxx:883
 TTeXDump.cxx:884
 TTeXDump.cxx:885
 TTeXDump.cxx:886
 TTeXDump.cxx:887
 TTeXDump.cxx:888
 TTeXDump.cxx:889
 TTeXDump.cxx:890
 TTeXDump.cxx:891
 TTeXDump.cxx:892
 TTeXDump.cxx:893
 TTeXDump.cxx:894
 TTeXDump.cxx:895
 TTeXDump.cxx:896
 TTeXDump.cxx:897
 TTeXDump.cxx:898
 TTeXDump.cxx:899
 TTeXDump.cxx:900
 TTeXDump.cxx:901
 TTeXDump.cxx:902
 TTeXDump.cxx:903
 TTeXDump.cxx:904
 TTeXDump.cxx:905
 TTeXDump.cxx:906
 TTeXDump.cxx:907
 TTeXDump.cxx:908
 TTeXDump.cxx:909
 TTeXDump.cxx:910
 TTeXDump.cxx:911
 TTeXDump.cxx:912
 TTeXDump.cxx:913
 TTeXDump.cxx:914
 TTeXDump.cxx:915
 TTeXDump.cxx:916
 TTeXDump.cxx:917
 TTeXDump.cxx:918
 TTeXDump.cxx:919
 TTeXDump.cxx:920
 TTeXDump.cxx:921
 TTeXDump.cxx:922
 TTeXDump.cxx:923
 TTeXDump.cxx:924
 TTeXDump.cxx:925
 TTeXDump.cxx:926
 TTeXDump.cxx:927
 TTeXDump.cxx:928
 TTeXDump.cxx:929
 TTeXDump.cxx:930
 TTeXDump.cxx:931
 TTeXDump.cxx:932
 TTeXDump.cxx:933
 TTeXDump.cxx:934
 TTeXDump.cxx:935
 TTeXDump.cxx:936
 TTeXDump.cxx:937
 TTeXDump.cxx:938
 TTeXDump.cxx:939
 TTeXDump.cxx:940
 TTeXDump.cxx:941
 TTeXDump.cxx:942
 TTeXDump.cxx:943
 TTeXDump.cxx:944
 TTeXDump.cxx:945
 TTeXDump.cxx:946
 TTeXDump.cxx:947
 TTeXDump.cxx:948
 TTeXDump.cxx:949
 TTeXDump.cxx:950
 TTeXDump.cxx:951
 TTeXDump.cxx:952
 TTeXDump.cxx:953
 TTeXDump.cxx:954
 TTeXDump.cxx:955
 TTeXDump.cxx:956
 TTeXDump.cxx:957
 TTeXDump.cxx:958
 TTeXDump.cxx:959
 TTeXDump.cxx:960
 TTeXDump.cxx:961
 TTeXDump.cxx:962