ROOT logo
#include <stdexcept>
#include <iostream>

#include "TAttMarker.h"
#include "TVirtualX.h"
#include "TPad.h"

#include "TGLPadPainter.h"
#include "TGLIncludes.h"
#include "TGLUtil.h"
#include "TError.h"

//______________________________________________________________________________
   //"Delegating" part of TGLPadPainter. Line/fill/etc. attributes can be
   //set inside TPad, but not only there: 
   //many of them are set by base sub-objects of 2d primitives
   //(2d primitives usually inherit TAttLine or TAttFill etc.).  And these sub-objects
   //call gVirtualX->SetLineWidth ... etc. So, if I save some attributes in my painter,
   //it will be mess - at any moment I do not know, where to take line attribute - from
   //gVirtualX or from my own member. So! All attributed, _ALL_ go to/from gVirtualX.

ClassImp(TGLPadPainter)

//______________________________________________________________________________
TGLPadPainter::TGLPadPainter()
                  : fIsHollowArea(kFALSE),
                    fLocked(kTRUE)
{
}


//______________________________________________________________________________
Color_t TGLPadPainter::GetLineColor() const
{
   //Delegate to gVirtualX.
   return gVirtualX->GetLineColor();
}

//______________________________________________________________________________
Style_t TGLPadPainter::GetLineStyle() const
{
   //Delegate to gVirtualX.
   return gVirtualX->GetLineStyle();
}

//______________________________________________________________________________
Width_t TGLPadPainter::GetLineWidth() const
{
   //Delegate to gVirtualX.
   return gVirtualX->GetLineWidth();
}

//______________________________________________________________________________
void TGLPadPainter::SetLineColor(Color_t lcolor)
{
   //Delegate to gVirtualX.
   gVirtualX->SetLineColor(lcolor);
}

//______________________________________________________________________________
void TGLPadPainter::SetLineStyle(Style_t lstyle)
{
   //Delegate to gVirtualX.
   gVirtualX->SetLineStyle(lstyle);
}

//______________________________________________________________________________
void TGLPadPainter::SetLineWidth(Width_t lwidth)
{
   //Delegate to gVirtualX.
   gVirtualX->SetLineWidth(lwidth);
}

//______________________________________________________________________________
Color_t TGLPadPainter::GetFillColor() const
{
   //Delegate to gVirtualX.
   return gVirtualX->GetFillColor();
}

//______________________________________________________________________________
Style_t TGLPadPainter::GetFillStyle() const
{
   //Delegate to gVirtualX.
   return gVirtualX->GetFillStyle();
}

//______________________________________________________________________________
Bool_t TGLPadPainter::IsTransparent() const
{
   //Delegate to gVirtualX.
   //IsTransparent is implemented as inline function in TAttFill.
   return gVirtualX->IsTransparent();
}

//______________________________________________________________________________
void TGLPadPainter::SetFillColor(Color_t fcolor)
{
   //Delegate to gVirtualX.
   gVirtualX->SetFillColor(fcolor);
}

//______________________________________________________________________________
void TGLPadPainter::SetFillStyle(Style_t fstyle)
{
   //Delegate to gVirtualX.
   gVirtualX->SetFillStyle(fstyle);
}

//______________________________________________________________________________
void TGLPadPainter::SetOpacity(Int_t percent)
{
   //Delegate to gVirtualX.
   gVirtualX->SetOpacity(percent);
}

//______________________________________________________________________________
Short_t TGLPadPainter::GetTextAlign() const
{
   //Delegate to gVirtualX.
   return gVirtualX->GetTextAlign();
}

//______________________________________________________________________________
Float_t TGLPadPainter::GetTextAngle() const
{
   //Delegate to gVirtualX.
   return gVirtualX->GetTextAngle();
}

//______________________________________________________________________________
Color_t TGLPadPainter::GetTextColor() const
{
   //Delegate to gVirtualX.
   return gVirtualX->GetTextColor();
}

//______________________________________________________________________________
Font_t TGLPadPainter::GetTextFont() const
{
   //Delegate to gVirtualX.
   return gVirtualX->GetTextFont();
}

//______________________________________________________________________________
Float_t TGLPadPainter::GetTextSize() const
{
   //Delegate to gVirtualX.
   return gVirtualX->GetTextSize();
}

//______________________________________________________________________________
Float_t TGLPadPainter::GetTextMagnitude() const
{
   //Delegate to gVirtualX.
   return gVirtualX->GetTextMagnitude();
}

//______________________________________________________________________________
void TGLPadPainter::SetTextAlign(Short_t align)
{
   //Delegate to gVirtualX.
   gVirtualX->SetTextAlign(align);
}

//______________________________________________________________________________
void TGLPadPainter::SetTextAngle(Float_t tangle)
{
   //Delegate to gVirtualX.
   gVirtualX->SetTextAngle(tangle);
}

//______________________________________________________________________________
void TGLPadPainter::SetTextColor(Color_t tcolor)
{
   //Delegate to gVirtualX.
   gVirtualX->SetTextColor(tcolor);
}

//______________________________________________________________________________
void TGLPadPainter::SetTextFont(Font_t tfont)
{
   //Delegate to gVirtualX.
   gVirtualX->SetTextFont(tfont);
}

//______________________________________________________________________________
void TGLPadPainter::SetTextSize(Float_t tsize)
{
   //Delegate to gVirtualX.
   gVirtualX->SetTextSize(tsize);
}

//______________________________________________________________________________
void TGLPadPainter::SetTextSizePixels(Int_t npixels)
{
   //Delegate to gVirtualX.
   gVirtualX->SetTextSizePixels(npixels);
}

/*
"Pixmap" part of TGLPadPainter.
*/

//______________________________________________________________________________
Int_t TGLPadPainter::CreateDrawable(UInt_t/*w*/, UInt_t/*h*/)
{
   //Not required at the moment.
   return 0;
}

//______________________________________________________________________________
void TGLPadPainter::ClearDrawable()
{
   //Not required at the moment.
}

//______________________________________________________________________________
void TGLPadPainter::CopyDrawable(Int_t /*id*/, Int_t /*px*/, Int_t /*py*/)
{
   //Not required at the moment.
}

//______________________________________________________________________________
void TGLPadPainter::DestroyDrawable()
{
   //Not required at the moment.
}

//______________________________________________________________________________
void TGLPadPainter::SelectDrawable(Int_t /*device*/)
{
   //For gVirtualX this means select pixmap (or window)
   //and all subsequent drawings will go into
   //this pixmap. For OpenGL this means the change of
   //coordinate system and viewport.
   if (fLocked)
      return;

   if (TPad *pad = dynamic_cast<TPad *>(gPad)) {
      Int_t px = 0, py = 0;
      
      pad->XYtoAbsPixel(pad->GetX1(), pad->GetY1(), px, py);
      
      py = gPad->GetWh() - py;
      //
      glViewport(px, py, GLsizei(gPad->GetWw() * pad->GetAbsWNDC()), GLsizei(gPad->GetWh() * pad->GetAbsHNDC()));
      
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      glOrtho(pad->GetX1(), pad->GetX2(), pad->GetY1(), pad->GetY2(), -10., 10.);
      
      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
      glTranslated(0., 0., -1.);
   } else {
      Error("TGLPadPainter::SelectDrawable", "function was called not from TPad or TCanvas code\n");
      throw std::runtime_error("");
   }
}

//______________________________________________________________________________
void TGLPadPainter::InitPainter()
{
   //Init gl-pad painter:
   //1. 2D painter does not use depth test, should not modify 
   //   depth-buffer content (except initial cleanup).
   //2. Disable cull face.
   //3. Disable lighting.
   //4. Set viewport (to the whole canvas area).
   //5. Set camera.
   //6. Unlock painter.
   glDisable(GL_DEPTH_TEST);
   glDisable(GL_CULL_FACE);
   glDisable(GL_LIGHTING);
   
   //Clear the buffer
   glViewport(0, 0, GLsizei(gPad->GetWw()), GLsizei(gPad->GetWh()));
   
   glDepthMask(GL_TRUE);
   glClearColor(1.,1.,1.,1.);
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glDepthMask(GL_FALSE);
   
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   
   glOrtho(gPad->GetX1(), gPad->GetX2(), gPad->GetY1(), gPad->GetY2(), -10., 10.);

   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   glTranslated(0., 0., -1.);
   
   fLocked = kFALSE;
}

//______________________________________________________________________________
void TGLPadPainter::InvalidateCS()
{
   //When TPad::Range for gPad is called, projection
   //must be changed in OpenGL.
   if (fLocked)
      return;

   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   
   glOrtho(gPad->GetX1(), gPad->GetX2(), gPad->GetY1(), gPad->GetY2(), -10., 10.);
   
   glMatrixMode(GL_MODELVIEW);
}

//______________________________________________________________________________
void TGLPadPainter::LockPainter()
{
   //Locked state of painter means, that
   //GL context can be invalid, so no GL calls
   //can be executed.
   if (fLocked)
      return;
      
   glFinish();
   fLocked = kTRUE;
}

/*
2D primitives.
*/

const Double_t lineWidthTS = 3.;

//______________________________________________________________________________
void TGLPadPainter::DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
{
   //Draw line segment.
   if (fLocked) {
      //GL pad painter can be called in non-standard situation:
      //not from TPad::Paint, but
      //from TView3D::ExecuteRotateView. This means in fact,
      //that TView3D wants to draw itself in a XOR mode, via
      //gVirtualX.
      if (gVirtualX->GetDrawMode() == TVirtualX::kInvert) {
         gVirtualX->DrawLine(gPad->XtoAbsPixel(x1), gPad->YtoAbsPixel(y1), 
                             gPad->XtoAbsPixel(x2), gPad->YtoAbsPixel(y2));
      }

      return;
   }

   const Rgl::Pad::LineAttribSet lineAttribs(kTRUE, gVirtualX->GetLineStyle(), fLimits.GetMaxLineWidth(), kTRUE);

   glBegin(GL_LINES);
   glVertex2d(x1, y1);
   glVertex2d(x2, y2);
   glEnd();
   
   if (gVirtualX->GetLineWidth() > lineWidthTS) {
      Double_t pointSize = gVirtualX->GetLineWidth();
      if (pointSize > fLimits.GetMaxPointSize())
         pointSize = fLimits.GetMaxPointSize();
      glPointSize((GLfloat)pointSize);
      const TGLEnableGuard pointSmooth(GL_POINT_SMOOTH);
      glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
      glBegin(GL_POINTS);

      glVertex2d(x1, y1);
      glVertex2d(x2, y2);

      glEnd(); 
      glPointSize(1.f);
   }

}

//______________________________________________________________________________
void TGLPadPainter::DrawLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)
{
   //Draw line segment in NDC coordinates.
   if (fLocked)
      return;
      
   const Rgl::Pad::LineAttribSet lineAttribs(kTRUE, gVirtualX->GetLineStyle(), fLimits.GetMaxLineWidth(), kTRUE);
   const Double_t xRange = gPad->GetX2() - gPad->GetX1();
   const Double_t yRange = gPad->GetY2() - gPad->GetY1();

   glBegin(GL_LINES);
   glVertex2d(gPad->GetX1() + u1 * xRange, gPad->GetY1() + v1 * yRange);
   glVertex2d(gPad->GetX1() + u2 * xRange, gPad->GetY1() + v2 * yRange);
   glEnd();   
}

//______________________________________________________________________________
void TGLPadPainter::DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, EBoxMode mode)
{
   //Draw filled or hollow box.
   if (fLocked)
      return;

   if (mode == kHollow) {
      const Rgl::Pad::LineAttribSet lineAttribs(kTRUE, 0, fLimits.GetMaxLineWidth(), kTRUE);
      //
      glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
      glRectd(x1, y1, x2, y2);
      glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
      glLineWidth(1.f);
   } else {
      const Rgl::Pad::FillAttribSet fillAttribs(fSSet, kFALSE);//Set filling parameters.
      glRectd(x1, y1, x2, y2);
   }
}

//______________________________________________________________________________
void TGLPadPainter::DrawFillArea(Int_t n, const Double_t *x, const Double_t *y)
{
   //Draw tesselated polygon (probably, outline only).
   if (fLocked)
      return;

   if (!gVirtualX->GetFillStyle()) {
      fIsHollowArea = kTRUE;
      return DrawPolyLine(n, x, y);
   }

   fVs.resize(n * 3);
   
   for (Int_t i = 0; i < n; ++i) {
      fVs[i * 3]     = x[i];
      fVs[i * 3 + 1] = y[i];
      fVs[i * 3 + 2] = 0.;
   }

   const Rgl::Pad::FillAttribSet fillAttribs(fSSet, kFALSE);

   GLUtesselator *t = (GLUtesselator *)fTess.GetTess();
   gluBeginPolygon(t);
   gluNextContour(t, (GLenum)GLU_UNKNOWN);

   for (Int_t i = 0; i < n; ++i)
      gluTessVertex(t, &fVs[i * 3], &fVs[i * 3]);

      
   gluEndPolygon(t);
}

//______________________________________________________________________________
void TGLPadPainter::DrawFillArea(Int_t n, const Float_t *x, const Float_t *y)
{
   //Draw tesselated polygon (never called, probably, since TPad::PaintFillArea for floats
   //is deprecated).
   if (fLocked)
      return;

   if (!gVirtualX->GetFillStyle()) {
      fIsHollowArea = kTRUE;
      return DrawPolyLine(n, x, y);
   }

   fVs.resize(n * 3);
   
   for (Int_t i = 0; i < n; ++i) {
      fVs[i * 3]     = x[i];
      fVs[i * 3 + 1] = y[i];
   }

   const Rgl::Pad::FillAttribSet fillAttribs(fSSet, kFALSE);

   GLUtesselator *t = (GLUtesselator *)fTess.GetTess();
   gluBeginPolygon(t);
   gluNextContour(t, (GLenum)GLU_UNKNOWN);

   for (Int_t i = 0; i < n; ++i)
      gluTessVertex(t, &fVs[i * 3], &fVs[i * 3]);

      
   gluEndPolygon(t);
}

//______________________________________________________________________________
void TGLPadPainter::DrawPolyLine(Int_t n, const Double_t *x, const Double_t *y)
{
   //Draw poly-line in user coordinates.
   if (fLocked)
      return;

   const Rgl::Pad::LineAttribSet lineAttribs(kTRUE, gVirtualX->GetLineStyle(), fLimits.GetMaxLineWidth(), kTRUE);

   glBegin(GL_LINE_STRIP);

   for (Int_t i = 0; i < n; ++i)
      glVertex2d(x[i], y[i]);

   if (fIsHollowArea) {
      glVertex2d(x[0], y[0]);
      fIsHollowArea = kFALSE;
   }
   glEnd();
   
   if (gVirtualX->GetLineWidth() > lineWidthTS) {
      Double_t pointSize = gVirtualX->GetLineWidth();
      if (pointSize > fLimits.GetMaxPointSize())
         pointSize = fLimits.GetMaxPointSize();
      glPointSize((GLfloat)pointSize);
      const TGLEnableGuard pointSmooth(GL_POINT_SMOOTH);
      glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
      glBegin(GL_POINTS);

      for (Int_t i = 0; i < n; ++i)
         glVertex2d(x[i], y[i]);

      glEnd(); 
      glPointSize(1.f);
   }
}

//______________________________________________________________________________
void TGLPadPainter::DrawPolyLine(Int_t n, const Float_t *x, const Float_t *y)
{
   //Never called?
   if (fLocked)
      return;   
   
   const Rgl::Pad::LineAttribSet lineAttribs(kTRUE, gVirtualX->GetLineStyle(), fLimits.GetMaxLineWidth(), kTRUE);

   glBegin(GL_LINE_STRIP);

   for (Int_t i = 0; i < n; ++i)
      glVertex2f(x[i], y[i]);

   if (fIsHollowArea) {
      glVertex2f(x[0], y[0]);
      fIsHollowArea = kFALSE;
   }
      
   glEnd();
}

//______________________________________________________________________________
void TGLPadPainter::DrawPolyLineNDC(Int_t n, const Double_t *u, const Double_t *v)
{
   //Poly line in NDC.
   if (fLocked)
      return;

   const Rgl::Pad::LineAttribSet lineAttribs(kTRUE, gVirtualX->GetLineStyle(), fLimits.GetMaxLineWidth(), kTRUE);
   const Double_t xRange = gPad->GetX2() - gPad->GetX1();
   const Double_t yRange = gPad->GetY2() - gPad->GetY1();
   const Double_t x1 = gPad->GetX1(), y1 = gPad->GetY1();
   
   glBegin(GL_LINE_STRIP);

   for (Int_t i = 0; i < n; ++i)
      glVertex2d(x1 + u[i] * xRange, y1 + v[i] * yRange);

   glEnd();
}

namespace {

//Aux. function.
template<class ValueType>
void ConvertMarkerPoints(Int_t n, const ValueType *x, const ValueType *y, std::vector<TPoint> & dst);

}

//______________________________________________________________________________
void TGLPadPainter::DrawPolyMarker(Int_t n, const Double_t *x, const Double_t *y)
{
   //Poly-marker.
   if (fLocked)
      return;

   ConvertMarkerPoints(n, x, y, fPoly);
   DrawPolyMarker();
}

//______________________________________________________________________________
void TGLPadPainter::DrawPolyMarker(Int_t n, const Float_t *x, const Float_t *y)
{
   //Poly-marker.
   if (fLocked)
      return;

   ConvertMarkerPoints(n, x, y, fPoly);
   DrawPolyMarker();
}

//______________________________________________________________________________
void TGLPadPainter::DrawPolyMarker()
{
   //Poly-marker.
   if (fLocked)
      return;

   SaveProjectionMatrix();
   glLoadIdentity();
   //
   glOrtho(0, gPad->GetAbsWNDC() * gPad->GetWw(), 0, gPad->GetAbsHNDC() * gPad->GetWh(), -10., 10.);
   //
   glMatrixMode(GL_MODELVIEW);
   //
   Float_t rgba[3] = {};
   Rgl::Pad::ExtractRGB(gVirtualX->GetMarkerColor(), rgba);
   glColor3fv(rgba);
   
   const TPoint *xy = &fPoly[0];
   const Style_t markerStyle = gVirtualX->GetMarkerStyle();
   const UInt_t n = UInt_t(fPoly.size());
   switch (markerStyle) {
   case kDot:
      fMarker.DrawDot(n, xy);
      break;
   case kPlus:
      fMarker.DrawPlus(n, xy);
      break;
   case kStar:
      fMarker.DrawStar(n, xy);
      break;
   case kCircle:
   case kOpenCircle:
      fMarker.DrawCircle(n, xy);
      break;
   case kMultiply:
      fMarker.DrawX(n, xy);
      break;
   case kFullDotSmall://"Full dot small"
      fMarker.DrawFullDotSmall(n, xy);
      break;
   case kFullDotMedium:
      fMarker.DrawFullDotMedium(n, xy);
      break;
   case kFullDotLarge:
   case kFullCircle:
      fMarker.DrawFullDotLarge(n, xy);
      break;
   case kFullSquare:
      fMarker.DrawFullSquare(n, xy);
      break;
   case kFullTriangleUp:
      fMarker.DrawFullTrianlgeUp(n, xy);
      break;
   case kFullTriangleDown:
      fMarker.DrawFullTrianlgeDown(n, xy);
      break;
   case kOpenSquare:
      glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
      fMarker.DrawFullSquare(n, xy);
      glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
      break;
   case kOpenTriangleUp:
      glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
      fMarker.DrawFullTrianlgeUp(n, xy);
      glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
      break;
   case kOpenDiamond:
      fMarker.DrawDiamond(n, xy);
      break;
   case kOpenCross:
      fMarker.DrawCross(n, xy);
      break;
   case kFullStar:
      fMarker.DrawFullStar(n, xy);
      break;
   case kOpenStar:
      fMarker.DrawOpenStar(n, xy);
   }
   
   RestoreProjectionMatrix();
   glMatrixMode(GL_MODELVIEW);
}

//______________________________________________________________________________
void TGLPadPainter::DrawText(Double_t x, Double_t y, const char *text, ETextMode /*mode*/)
{
   //Draw text. This operation is especially
   //dangerous if in locked state - 
   //ftgl will assert on zero texture size
   //(which is result of bad GL context).
   if (fLocked)
      return;

   SaveProjectionMatrix();
   glLoadIdentity();
   //
   glOrtho(0, gPad->GetAbsWNDC() * gPad->GetWw(), 0, gPad->GetAbsHNDC() * gPad->GetWh(), -10., 10.);
   //
   glMatrixMode(GL_MODELVIEW);

   Float_t rgba[3] = {};
   Rgl::Pad::ExtractRGB(gVirtualX->GetTextColor(), rgba);
   glColor3fv(rgba);

   fFM.RegisterFont(Int_t(gVirtualX->GetTextSize()) - 1, 
                    TGLFontManager::GetFontNameFromId(gVirtualX->GetTextFont()),
                    TGLFont::kTexture, fF);
   fF.PreRender();

   const UInt_t padH = UInt_t(gPad->GetAbsHNDC() * gPad->GetWh());
   fF.Render(text, gPad->XtoPixel(x), padH - gPad->YtoPixel(y), GetTextAngle(), GetTextMagnitude());

   fF.PostRender();
   RestoreProjectionMatrix();
   glMatrixMode(GL_MODELVIEW);
}

//______________________________________________________________________________
void TGLPadPainter::DrawTextNDC(Double_t u, Double_t v, const char *text, ETextMode mode)
{
   //Draw text in NDC. This operation is especially
   //dangerous if in locked state - 
   //ftgl will assert on zero texture size
   //(which is result of bad GL context).
   if (fLocked)
      return;

   const Double_t xRange = gPad->GetX2() - gPad->GetX1();
   const Double_t yRange = gPad->GetY2() - gPad->GetY1();
   DrawText(gPad->GetX1() + u * xRange, gPad->GetY1() + v * yRange, text, mode);
}

//______________________________________________________________________________
void TGLPadPainter::SaveProjectionMatrix()const
{
   //Save the projection matrix.
   //Attention! GL_PROJECTION will become the current matrix
   //after this call!
   glMatrixMode(GL_PROJECTION);
   glPushMatrix();
}

//______________________________________________________________________________
void TGLPadPainter::RestoreProjectionMatrix()const
{
   //Restore the projection matrix.
   //Attention! GL_PROJECTION will become the current matrix
   //after this call!
   glMatrixMode(GL_PROJECTION);
   glPopMatrix();
}
   
//______________________________________________________________________________
void TGLPadPainter::SaveModelviewMatrix()const
{
   //Save the modelview matrix.
   //Attention! GL_MODELVIEW will become the current matrix
   //after this call!
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
}

//______________________________________________________________________________
void TGLPadPainter::RestoreModelviewMatrix()const
{
   //Restore the modelview matrix.
   //Attention! GL_MODELVIEW will become the current matrix
   //after this call!
   glMatrixMode(GL_MODELVIEW);
   glPopMatrix();
}

//______________________________________________________________________________
void TGLPadPainter::SaveViewport()
{
   //Extract and save the current viewport.
   glGetIntegerv(GL_VIEWPORT, fVp);
}

//______________________________________________________________________________
void TGLPadPainter::RestoreViewport()
{
   //Restore the saved viewport.
   glViewport(fVp[0], fVp[1], fVp[2], fVp[3]);
}

//Aux. functions.
namespace {

template<class ValueType>
void ConvertMarkerPoints(Int_t n, const ValueType *x, const ValueType *y, std::vector<TPoint> & dst)
{
   const UInt_t padH = UInt_t(gPad->GetAbsHNDC() * gPad->GetWh());
   
   dst.resize(n);
   for (Int_t i = 0; i < n; ++i) {
      dst[i].fX = gPad->XtoPixel(x[i]);
      dst[i].fY = padH - gPad->YtoPixel(y[i]);
   }   
}

}
 TGLPadPainter.cxx:1
 TGLPadPainter.cxx:2
 TGLPadPainter.cxx:3
 TGLPadPainter.cxx:4
 TGLPadPainter.cxx:5
 TGLPadPainter.cxx:6
 TGLPadPainter.cxx:7
 TGLPadPainter.cxx:8
 TGLPadPainter.cxx:9
 TGLPadPainter.cxx:10
 TGLPadPainter.cxx:11
 TGLPadPainter.cxx:12
 TGLPadPainter.cxx:13
 TGLPadPainter.cxx:14
 TGLPadPainter.cxx:15
 TGLPadPainter.cxx:16
 TGLPadPainter.cxx:17
 TGLPadPainter.cxx:18
 TGLPadPainter.cxx:19
 TGLPadPainter.cxx:20
 TGLPadPainter.cxx:21
 TGLPadPainter.cxx:22
 TGLPadPainter.cxx:23
 TGLPadPainter.cxx:24
 TGLPadPainter.cxx:25
 TGLPadPainter.cxx:26
 TGLPadPainter.cxx:27
 TGLPadPainter.cxx:28
 TGLPadPainter.cxx:29
 TGLPadPainter.cxx:30
 TGLPadPainter.cxx:31
 TGLPadPainter.cxx:32
 TGLPadPainter.cxx:33
 TGLPadPainter.cxx:34
 TGLPadPainter.cxx:35
 TGLPadPainter.cxx:36
 TGLPadPainter.cxx:37
 TGLPadPainter.cxx:38
 TGLPadPainter.cxx:39
 TGLPadPainter.cxx:40
 TGLPadPainter.cxx:41
 TGLPadPainter.cxx:42
 TGLPadPainter.cxx:43
 TGLPadPainter.cxx:44
 TGLPadPainter.cxx:45
 TGLPadPainter.cxx:46
 TGLPadPainter.cxx:47
 TGLPadPainter.cxx:48
 TGLPadPainter.cxx:49
 TGLPadPainter.cxx:50
 TGLPadPainter.cxx:51
 TGLPadPainter.cxx:52
 TGLPadPainter.cxx:53
 TGLPadPainter.cxx:54
 TGLPadPainter.cxx:55
 TGLPadPainter.cxx:56
 TGLPadPainter.cxx:57
 TGLPadPainter.cxx:58
 TGLPadPainter.cxx:59
 TGLPadPainter.cxx:60
 TGLPadPainter.cxx:61
 TGLPadPainter.cxx:62
 TGLPadPainter.cxx:63
 TGLPadPainter.cxx:64
 TGLPadPainter.cxx:65
 TGLPadPainter.cxx:66
 TGLPadPainter.cxx:67
 TGLPadPainter.cxx:68
 TGLPadPainter.cxx:69
 TGLPadPainter.cxx:70
 TGLPadPainter.cxx:71
 TGLPadPainter.cxx:72
 TGLPadPainter.cxx:73
 TGLPadPainter.cxx:74
 TGLPadPainter.cxx:75
 TGLPadPainter.cxx:76
 TGLPadPainter.cxx:77
 TGLPadPainter.cxx:78
 TGLPadPainter.cxx:79
 TGLPadPainter.cxx:80
 TGLPadPainter.cxx:81
 TGLPadPainter.cxx:82
 TGLPadPainter.cxx:83
 TGLPadPainter.cxx:84
 TGLPadPainter.cxx:85
 TGLPadPainter.cxx:86
 TGLPadPainter.cxx:87
 TGLPadPainter.cxx:88
 TGLPadPainter.cxx:89
 TGLPadPainter.cxx:90
 TGLPadPainter.cxx:91
 TGLPadPainter.cxx:92
 TGLPadPainter.cxx:93
 TGLPadPainter.cxx:94
 TGLPadPainter.cxx:95
 TGLPadPainter.cxx:96
 TGLPadPainter.cxx:97
 TGLPadPainter.cxx:98
 TGLPadPainter.cxx:99
 TGLPadPainter.cxx:100
 TGLPadPainter.cxx:101
 TGLPadPainter.cxx:102
 TGLPadPainter.cxx:103
 TGLPadPainter.cxx:104
 TGLPadPainter.cxx:105
 TGLPadPainter.cxx:106
 TGLPadPainter.cxx:107
 TGLPadPainter.cxx:108
 TGLPadPainter.cxx:109
 TGLPadPainter.cxx:110
 TGLPadPainter.cxx:111
 TGLPadPainter.cxx:112
 TGLPadPainter.cxx:113
 TGLPadPainter.cxx:114
 TGLPadPainter.cxx:115
 TGLPadPainter.cxx:116
 TGLPadPainter.cxx:117
 TGLPadPainter.cxx:118
 TGLPadPainter.cxx:119
 TGLPadPainter.cxx:120
 TGLPadPainter.cxx:121
 TGLPadPainter.cxx:122
 TGLPadPainter.cxx:123
 TGLPadPainter.cxx:124
 TGLPadPainter.cxx:125
 TGLPadPainter.cxx:126
 TGLPadPainter.cxx:127
 TGLPadPainter.cxx:128
 TGLPadPainter.cxx:129
 TGLPadPainter.cxx:130
 TGLPadPainter.cxx:131
 TGLPadPainter.cxx:132
 TGLPadPainter.cxx:133
 TGLPadPainter.cxx:134
 TGLPadPainter.cxx:135
 TGLPadPainter.cxx:136
 TGLPadPainter.cxx:137
 TGLPadPainter.cxx:138
 TGLPadPainter.cxx:139
 TGLPadPainter.cxx:140
 TGLPadPainter.cxx:141
 TGLPadPainter.cxx:142
 TGLPadPainter.cxx:143
 TGLPadPainter.cxx:144
 TGLPadPainter.cxx:145
 TGLPadPainter.cxx:146
 TGLPadPainter.cxx:147
 TGLPadPainter.cxx:148
 TGLPadPainter.cxx:149
 TGLPadPainter.cxx:150
 TGLPadPainter.cxx:151
 TGLPadPainter.cxx:152
 TGLPadPainter.cxx:153
 TGLPadPainter.cxx:154
 TGLPadPainter.cxx:155
 TGLPadPainter.cxx:156
 TGLPadPainter.cxx:157
 TGLPadPainter.cxx:158
 TGLPadPainter.cxx:159
 TGLPadPainter.cxx:160
 TGLPadPainter.cxx:161
 TGLPadPainter.cxx:162
 TGLPadPainter.cxx:163
 TGLPadPainter.cxx:164
 TGLPadPainter.cxx:165
 TGLPadPainter.cxx:166
 TGLPadPainter.cxx:167
 TGLPadPainter.cxx:168
 TGLPadPainter.cxx:169
 TGLPadPainter.cxx:170
 TGLPadPainter.cxx:171
 TGLPadPainter.cxx:172
 TGLPadPainter.cxx:173
 TGLPadPainter.cxx:174
 TGLPadPainter.cxx:175
 TGLPadPainter.cxx:176
 TGLPadPainter.cxx:177
 TGLPadPainter.cxx:178
 TGLPadPainter.cxx:179
 TGLPadPainter.cxx:180
 TGLPadPainter.cxx:181
 TGLPadPainter.cxx:182
 TGLPadPainter.cxx:183
 TGLPadPainter.cxx:184
 TGLPadPainter.cxx:185
 TGLPadPainter.cxx:186
 TGLPadPainter.cxx:187
 TGLPadPainter.cxx:188
 TGLPadPainter.cxx:189
 TGLPadPainter.cxx:190
 TGLPadPainter.cxx:191
 TGLPadPainter.cxx:192
 TGLPadPainter.cxx:193
 TGLPadPainter.cxx:194
 TGLPadPainter.cxx:195
 TGLPadPainter.cxx:196
 TGLPadPainter.cxx:197
 TGLPadPainter.cxx:198
 TGLPadPainter.cxx:199
 TGLPadPainter.cxx:200
 TGLPadPainter.cxx:201
 TGLPadPainter.cxx:202
 TGLPadPainter.cxx:203
 TGLPadPainter.cxx:204
 TGLPadPainter.cxx:205
 TGLPadPainter.cxx:206
 TGLPadPainter.cxx:207
 TGLPadPainter.cxx:208
 TGLPadPainter.cxx:209
 TGLPadPainter.cxx:210
 TGLPadPainter.cxx:211
 TGLPadPainter.cxx:212
 TGLPadPainter.cxx:213
 TGLPadPainter.cxx:214
 TGLPadPainter.cxx:215
 TGLPadPainter.cxx:216
 TGLPadPainter.cxx:217
 TGLPadPainter.cxx:218
 TGLPadPainter.cxx:219
 TGLPadPainter.cxx:220
 TGLPadPainter.cxx:221
 TGLPadPainter.cxx:222
 TGLPadPainter.cxx:223
 TGLPadPainter.cxx:224
 TGLPadPainter.cxx:225
 TGLPadPainter.cxx:226
 TGLPadPainter.cxx:227
 TGLPadPainter.cxx:228
 TGLPadPainter.cxx:229
 TGLPadPainter.cxx:230
 TGLPadPainter.cxx:231
 TGLPadPainter.cxx:232
 TGLPadPainter.cxx:233
 TGLPadPainter.cxx:234
 TGLPadPainter.cxx:235
 TGLPadPainter.cxx:236
 TGLPadPainter.cxx:237
 TGLPadPainter.cxx:238
 TGLPadPainter.cxx:239
 TGLPadPainter.cxx:240
 TGLPadPainter.cxx:241
 TGLPadPainter.cxx:242
 TGLPadPainter.cxx:243
 TGLPadPainter.cxx:244
 TGLPadPainter.cxx:245
 TGLPadPainter.cxx:246
 TGLPadPainter.cxx:247
 TGLPadPainter.cxx:248
 TGLPadPainter.cxx:249
 TGLPadPainter.cxx:250
 TGLPadPainter.cxx:251
 TGLPadPainter.cxx:252
 TGLPadPainter.cxx:253
 TGLPadPainter.cxx:254
 TGLPadPainter.cxx:255
 TGLPadPainter.cxx:256
 TGLPadPainter.cxx:257
 TGLPadPainter.cxx:258
 TGLPadPainter.cxx:259
 TGLPadPainter.cxx:260
 TGLPadPainter.cxx:261
 TGLPadPainter.cxx:262
 TGLPadPainter.cxx:263
 TGLPadPainter.cxx:264
 TGLPadPainter.cxx:265
 TGLPadPainter.cxx:266
 TGLPadPainter.cxx:267
 TGLPadPainter.cxx:268
 TGLPadPainter.cxx:269
 TGLPadPainter.cxx:270
 TGLPadPainter.cxx:271
 TGLPadPainter.cxx:272
 TGLPadPainter.cxx:273
 TGLPadPainter.cxx:274
 TGLPadPainter.cxx:275
 TGLPadPainter.cxx:276
 TGLPadPainter.cxx:277
 TGLPadPainter.cxx:278
 TGLPadPainter.cxx:279
 TGLPadPainter.cxx:280
 TGLPadPainter.cxx:281
 TGLPadPainter.cxx:282
 TGLPadPainter.cxx:283
 TGLPadPainter.cxx:284
 TGLPadPainter.cxx:285
 TGLPadPainter.cxx:286
 TGLPadPainter.cxx:287
 TGLPadPainter.cxx:288
 TGLPadPainter.cxx:289
 TGLPadPainter.cxx:290
 TGLPadPainter.cxx:291
 TGLPadPainter.cxx:292
 TGLPadPainter.cxx:293
 TGLPadPainter.cxx:294
 TGLPadPainter.cxx:295
 TGLPadPainter.cxx:296
 TGLPadPainter.cxx:297
 TGLPadPainter.cxx:298
 TGLPadPainter.cxx:299
 TGLPadPainter.cxx:300
 TGLPadPainter.cxx:301
 TGLPadPainter.cxx:302
 TGLPadPainter.cxx:303
 TGLPadPainter.cxx:304
 TGLPadPainter.cxx:305
 TGLPadPainter.cxx:306
 TGLPadPainter.cxx:307
 TGLPadPainter.cxx:308
 TGLPadPainter.cxx:309
 TGLPadPainter.cxx:310
 TGLPadPainter.cxx:311
 TGLPadPainter.cxx:312
 TGLPadPainter.cxx:313
 TGLPadPainter.cxx:314
 TGLPadPainter.cxx:315
 TGLPadPainter.cxx:316
 TGLPadPainter.cxx:317
 TGLPadPainter.cxx:318
 TGLPadPainter.cxx:319
 TGLPadPainter.cxx:320
 TGLPadPainter.cxx:321
 TGLPadPainter.cxx:322
 TGLPadPainter.cxx:323
 TGLPadPainter.cxx:324
 TGLPadPainter.cxx:325
 TGLPadPainter.cxx:326
 TGLPadPainter.cxx:327
 TGLPadPainter.cxx:328
 TGLPadPainter.cxx:329
 TGLPadPainter.cxx:330
 TGLPadPainter.cxx:331
 TGLPadPainter.cxx:332
 TGLPadPainter.cxx:333
 TGLPadPainter.cxx:334
 TGLPadPainter.cxx:335
 TGLPadPainter.cxx:336
 TGLPadPainter.cxx:337
 TGLPadPainter.cxx:338
 TGLPadPainter.cxx:339
 TGLPadPainter.cxx:340
 TGLPadPainter.cxx:341
 TGLPadPainter.cxx:342
 TGLPadPainter.cxx:343
 TGLPadPainter.cxx:344
 TGLPadPainter.cxx:345
 TGLPadPainter.cxx:346
 TGLPadPainter.cxx:347
 TGLPadPainter.cxx:348
 TGLPadPainter.cxx:349
 TGLPadPainter.cxx:350
 TGLPadPainter.cxx:351
 TGLPadPainter.cxx:352
 TGLPadPainter.cxx:353
 TGLPadPainter.cxx:354
 TGLPadPainter.cxx:355
 TGLPadPainter.cxx:356
 TGLPadPainter.cxx:357
 TGLPadPainter.cxx:358
 TGLPadPainter.cxx:359
 TGLPadPainter.cxx:360
 TGLPadPainter.cxx:361
 TGLPadPainter.cxx:362
 TGLPadPainter.cxx:363
 TGLPadPainter.cxx:364
 TGLPadPainter.cxx:365
 TGLPadPainter.cxx:366
 TGLPadPainter.cxx:367
 TGLPadPainter.cxx:368
 TGLPadPainter.cxx:369
 TGLPadPainter.cxx:370
 TGLPadPainter.cxx:371
 TGLPadPainter.cxx:372
 TGLPadPainter.cxx:373
 TGLPadPainter.cxx:374
 TGLPadPainter.cxx:375
 TGLPadPainter.cxx:376
 TGLPadPainter.cxx:377
 TGLPadPainter.cxx:378
 TGLPadPainter.cxx:379
 TGLPadPainter.cxx:380
 TGLPadPainter.cxx:381
 TGLPadPainter.cxx:382
 TGLPadPainter.cxx:383
 TGLPadPainter.cxx:384
 TGLPadPainter.cxx:385
 TGLPadPainter.cxx:386
 TGLPadPainter.cxx:387
 TGLPadPainter.cxx:388
 TGLPadPainter.cxx:389
 TGLPadPainter.cxx:390
 TGLPadPainter.cxx:391
 TGLPadPainter.cxx:392
 TGLPadPainter.cxx:393
 TGLPadPainter.cxx:394
 TGLPadPainter.cxx:395
 TGLPadPainter.cxx:396
 TGLPadPainter.cxx:397
 TGLPadPainter.cxx:398
 TGLPadPainter.cxx:399
 TGLPadPainter.cxx:400
 TGLPadPainter.cxx:401
 TGLPadPainter.cxx:402
 TGLPadPainter.cxx:403
 TGLPadPainter.cxx:404
 TGLPadPainter.cxx:405
 TGLPadPainter.cxx:406
 TGLPadPainter.cxx:407
 TGLPadPainter.cxx:408
 TGLPadPainter.cxx:409
 TGLPadPainter.cxx:410
 TGLPadPainter.cxx:411
 TGLPadPainter.cxx:412
 TGLPadPainter.cxx:413
 TGLPadPainter.cxx:414
 TGLPadPainter.cxx:415
 TGLPadPainter.cxx:416
 TGLPadPainter.cxx:417
 TGLPadPainter.cxx:418
 TGLPadPainter.cxx:419
 TGLPadPainter.cxx:420
 TGLPadPainter.cxx:421
 TGLPadPainter.cxx:422
 TGLPadPainter.cxx:423
 TGLPadPainter.cxx:424
 TGLPadPainter.cxx:425
 TGLPadPainter.cxx:426
 TGLPadPainter.cxx:427
 TGLPadPainter.cxx:428
 TGLPadPainter.cxx:429
 TGLPadPainter.cxx:430
 TGLPadPainter.cxx:431
 TGLPadPainter.cxx:432
 TGLPadPainter.cxx:433
 TGLPadPainter.cxx:434
 TGLPadPainter.cxx:435
 TGLPadPainter.cxx:436
 TGLPadPainter.cxx:437
 TGLPadPainter.cxx:438
 TGLPadPainter.cxx:439
 TGLPadPainter.cxx:440
 TGLPadPainter.cxx:441
 TGLPadPainter.cxx:442
 TGLPadPainter.cxx:443
 TGLPadPainter.cxx:444
 TGLPadPainter.cxx:445
 TGLPadPainter.cxx:446
 TGLPadPainter.cxx:447
 TGLPadPainter.cxx:448
 TGLPadPainter.cxx:449
 TGLPadPainter.cxx:450
 TGLPadPainter.cxx:451
 TGLPadPainter.cxx:452
 TGLPadPainter.cxx:453
 TGLPadPainter.cxx:454
 TGLPadPainter.cxx:455
 TGLPadPainter.cxx:456
 TGLPadPainter.cxx:457
 TGLPadPainter.cxx:458
 TGLPadPainter.cxx:459
 TGLPadPainter.cxx:460
 TGLPadPainter.cxx:461
 TGLPadPainter.cxx:462
 TGLPadPainter.cxx:463
 TGLPadPainter.cxx:464
 TGLPadPainter.cxx:465
 TGLPadPainter.cxx:466
 TGLPadPainter.cxx:467
 TGLPadPainter.cxx:468
 TGLPadPainter.cxx:469
 TGLPadPainter.cxx:470
 TGLPadPainter.cxx:471
 TGLPadPainter.cxx:472
 TGLPadPainter.cxx:473
 TGLPadPainter.cxx:474
 TGLPadPainter.cxx:475
 TGLPadPainter.cxx:476
 TGLPadPainter.cxx:477
 TGLPadPainter.cxx:478
 TGLPadPainter.cxx:479
 TGLPadPainter.cxx:480
 TGLPadPainter.cxx:481
 TGLPadPainter.cxx:482
 TGLPadPainter.cxx:483
 TGLPadPainter.cxx:484
 TGLPadPainter.cxx:485
 TGLPadPainter.cxx:486
 TGLPadPainter.cxx:487
 TGLPadPainter.cxx:488
 TGLPadPainter.cxx:489
 TGLPadPainter.cxx:490
 TGLPadPainter.cxx:491
 TGLPadPainter.cxx:492
 TGLPadPainter.cxx:493
 TGLPadPainter.cxx:494
 TGLPadPainter.cxx:495
 TGLPadPainter.cxx:496
 TGLPadPainter.cxx:497
 TGLPadPainter.cxx:498
 TGLPadPainter.cxx:499
 TGLPadPainter.cxx:500
 TGLPadPainter.cxx:501
 TGLPadPainter.cxx:502
 TGLPadPainter.cxx:503
 TGLPadPainter.cxx:504
 TGLPadPainter.cxx:505
 TGLPadPainter.cxx:506
 TGLPadPainter.cxx:507
 TGLPadPainter.cxx:508
 TGLPadPainter.cxx:509
 TGLPadPainter.cxx:510
 TGLPadPainter.cxx:511
 TGLPadPainter.cxx:512
 TGLPadPainter.cxx:513
 TGLPadPainter.cxx:514
 TGLPadPainter.cxx:515
 TGLPadPainter.cxx:516
 TGLPadPainter.cxx:517
 TGLPadPainter.cxx:518
 TGLPadPainter.cxx:519
 TGLPadPainter.cxx:520
 TGLPadPainter.cxx:521
 TGLPadPainter.cxx:522
 TGLPadPainter.cxx:523
 TGLPadPainter.cxx:524
 TGLPadPainter.cxx:525
 TGLPadPainter.cxx:526
 TGLPadPainter.cxx:527
 TGLPadPainter.cxx:528
 TGLPadPainter.cxx:529
 TGLPadPainter.cxx:530
 TGLPadPainter.cxx:531
 TGLPadPainter.cxx:532
 TGLPadPainter.cxx:533
 TGLPadPainter.cxx:534
 TGLPadPainter.cxx:535
 TGLPadPainter.cxx:536
 TGLPadPainter.cxx:537
 TGLPadPainter.cxx:538
 TGLPadPainter.cxx:539
 TGLPadPainter.cxx:540
 TGLPadPainter.cxx:541
 TGLPadPainter.cxx:542
 TGLPadPainter.cxx:543
 TGLPadPainter.cxx:544
 TGLPadPainter.cxx:545
 TGLPadPainter.cxx:546
 TGLPadPainter.cxx:547
 TGLPadPainter.cxx:548
 TGLPadPainter.cxx:549
 TGLPadPainter.cxx:550
 TGLPadPainter.cxx:551
 TGLPadPainter.cxx:552
 TGLPadPainter.cxx:553
 TGLPadPainter.cxx:554
 TGLPadPainter.cxx:555
 TGLPadPainter.cxx:556
 TGLPadPainter.cxx:557
 TGLPadPainter.cxx:558
 TGLPadPainter.cxx:559
 TGLPadPainter.cxx:560
 TGLPadPainter.cxx:561
 TGLPadPainter.cxx:562
 TGLPadPainter.cxx:563
 TGLPadPainter.cxx:564
 TGLPadPainter.cxx:565
 TGLPadPainter.cxx:566
 TGLPadPainter.cxx:567
 TGLPadPainter.cxx:568
 TGLPadPainter.cxx:569
 TGLPadPainter.cxx:570
 TGLPadPainter.cxx:571
 TGLPadPainter.cxx:572
 TGLPadPainter.cxx:573
 TGLPadPainter.cxx:574
 TGLPadPainter.cxx:575
 TGLPadPainter.cxx:576
 TGLPadPainter.cxx:577
 TGLPadPainter.cxx:578
 TGLPadPainter.cxx:579
 TGLPadPainter.cxx:580
 TGLPadPainter.cxx:581
 TGLPadPainter.cxx:582
 TGLPadPainter.cxx:583
 TGLPadPainter.cxx:584
 TGLPadPainter.cxx:585
 TGLPadPainter.cxx:586
 TGLPadPainter.cxx:587
 TGLPadPainter.cxx:588
 TGLPadPainter.cxx:589
 TGLPadPainter.cxx:590
 TGLPadPainter.cxx:591
 TGLPadPainter.cxx:592
 TGLPadPainter.cxx:593
 TGLPadPainter.cxx:594
 TGLPadPainter.cxx:595
 TGLPadPainter.cxx:596
 TGLPadPainter.cxx:597
 TGLPadPainter.cxx:598
 TGLPadPainter.cxx:599
 TGLPadPainter.cxx:600
 TGLPadPainter.cxx:601
 TGLPadPainter.cxx:602
 TGLPadPainter.cxx:603
 TGLPadPainter.cxx:604
 TGLPadPainter.cxx:605
 TGLPadPainter.cxx:606
 TGLPadPainter.cxx:607
 TGLPadPainter.cxx:608
 TGLPadPainter.cxx:609
 TGLPadPainter.cxx:610
 TGLPadPainter.cxx:611
 TGLPadPainter.cxx:612
 TGLPadPainter.cxx:613
 TGLPadPainter.cxx:614
 TGLPadPainter.cxx:615
 TGLPadPainter.cxx:616
 TGLPadPainter.cxx:617
 TGLPadPainter.cxx:618
 TGLPadPainter.cxx:619
 TGLPadPainter.cxx:620
 TGLPadPainter.cxx:621
 TGLPadPainter.cxx:622
 TGLPadPainter.cxx:623
 TGLPadPainter.cxx:624
 TGLPadPainter.cxx:625
 TGLPadPainter.cxx:626
 TGLPadPainter.cxx:627
 TGLPadPainter.cxx:628
 TGLPadPainter.cxx:629
 TGLPadPainter.cxx:630
 TGLPadPainter.cxx:631
 TGLPadPainter.cxx:632
 TGLPadPainter.cxx:633
 TGLPadPainter.cxx:634
 TGLPadPainter.cxx:635
 TGLPadPainter.cxx:636
 TGLPadPainter.cxx:637
 TGLPadPainter.cxx:638
 TGLPadPainter.cxx:639
 TGLPadPainter.cxx:640
 TGLPadPainter.cxx:641
 TGLPadPainter.cxx:642
 TGLPadPainter.cxx:643
 TGLPadPainter.cxx:644
 TGLPadPainter.cxx:645
 TGLPadPainter.cxx:646
 TGLPadPainter.cxx:647
 TGLPadPainter.cxx:648
 TGLPadPainter.cxx:649
 TGLPadPainter.cxx:650
 TGLPadPainter.cxx:651
 TGLPadPainter.cxx:652
 TGLPadPainter.cxx:653
 TGLPadPainter.cxx:654
 TGLPadPainter.cxx:655
 TGLPadPainter.cxx:656
 TGLPadPainter.cxx:657
 TGLPadPainter.cxx:658
 TGLPadPainter.cxx:659
 TGLPadPainter.cxx:660
 TGLPadPainter.cxx:661
 TGLPadPainter.cxx:662
 TGLPadPainter.cxx:663
 TGLPadPainter.cxx:664
 TGLPadPainter.cxx:665
 TGLPadPainter.cxx:666
 TGLPadPainter.cxx:667
 TGLPadPainter.cxx:668
 TGLPadPainter.cxx:669
 TGLPadPainter.cxx:670
 TGLPadPainter.cxx:671
 TGLPadPainter.cxx:672
 TGLPadPainter.cxx:673
 TGLPadPainter.cxx:674
 TGLPadPainter.cxx:675
 TGLPadPainter.cxx:676
 TGLPadPainter.cxx:677
 TGLPadPainter.cxx:678
 TGLPadPainter.cxx:679
 TGLPadPainter.cxx:680
 TGLPadPainter.cxx:681
 TGLPadPainter.cxx:682
 TGLPadPainter.cxx:683
 TGLPadPainter.cxx:684
 TGLPadPainter.cxx:685
 TGLPadPainter.cxx:686
 TGLPadPainter.cxx:687
 TGLPadPainter.cxx:688
 TGLPadPainter.cxx:689
 TGLPadPainter.cxx:690
 TGLPadPainter.cxx:691
 TGLPadPainter.cxx:692
 TGLPadPainter.cxx:693
 TGLPadPainter.cxx:694
 TGLPadPainter.cxx:695
 TGLPadPainter.cxx:696
 TGLPadPainter.cxx:697
 TGLPadPainter.cxx:698
 TGLPadPainter.cxx:699
 TGLPadPainter.cxx:700
 TGLPadPainter.cxx:701
 TGLPadPainter.cxx:702
 TGLPadPainter.cxx:703
 TGLPadPainter.cxx:704
 TGLPadPainter.cxx:705
 TGLPadPainter.cxx:706
 TGLPadPainter.cxx:707
 TGLPadPainter.cxx:708
 TGLPadPainter.cxx:709
 TGLPadPainter.cxx:710
 TGLPadPainter.cxx:711
 TGLPadPainter.cxx:712
 TGLPadPainter.cxx:713
 TGLPadPainter.cxx:714
 TGLPadPainter.cxx:715
 TGLPadPainter.cxx:716
 TGLPadPainter.cxx:717
 TGLPadPainter.cxx:718
 TGLPadPainter.cxx:719
 TGLPadPainter.cxx:720
 TGLPadPainter.cxx:721
 TGLPadPainter.cxx:722
 TGLPadPainter.cxx:723
 TGLPadPainter.cxx:724
 TGLPadPainter.cxx:725
 TGLPadPainter.cxx:726
 TGLPadPainter.cxx:727
 TGLPadPainter.cxx:728
 TGLPadPainter.cxx:729
 TGLPadPainter.cxx:730
 TGLPadPainter.cxx:731
 TGLPadPainter.cxx:732
 TGLPadPainter.cxx:733
 TGLPadPainter.cxx:734
 TGLPadPainter.cxx:735
 TGLPadPainter.cxx:736
 TGLPadPainter.cxx:737
 TGLPadPainter.cxx:738
 TGLPadPainter.cxx:739
 TGLPadPainter.cxx:740
 TGLPadPainter.cxx:741
 TGLPadPainter.cxx:742
 TGLPadPainter.cxx:743
 TGLPadPainter.cxx:744
 TGLPadPainter.cxx:745
 TGLPadPainter.cxx:746
 TGLPadPainter.cxx:747
 TGLPadPainter.cxx:748
 TGLPadPainter.cxx:749
 TGLPadPainter.cxx:750
 TGLPadPainter.cxx:751
 TGLPadPainter.cxx:752
 TGLPadPainter.cxx:753
 TGLPadPainter.cxx:754
 TGLPadPainter.cxx:755
 TGLPadPainter.cxx:756
 TGLPadPainter.cxx:757
 TGLPadPainter.cxx:758
 TGLPadPainter.cxx:759
 TGLPadPainter.cxx:760
 TGLPadPainter.cxx:761
 TGLPadPainter.cxx:762
 TGLPadPainter.cxx:763
 TGLPadPainter.cxx:764
 TGLPadPainter.cxx:765
 TGLPadPainter.cxx:766
 TGLPadPainter.cxx:767
 TGLPadPainter.cxx:768
 TGLPadPainter.cxx:769
 TGLPadPainter.cxx:770
 TGLPadPainter.cxx:771
 TGLPadPainter.cxx:772
 TGLPadPainter.cxx:773
 TGLPadPainter.cxx:774
 TGLPadPainter.cxx:775
 TGLPadPainter.cxx:776
 TGLPadPainter.cxx:777
 TGLPadPainter.cxx:778
 TGLPadPainter.cxx:779
 TGLPadPainter.cxx:780
 TGLPadPainter.cxx:781
 TGLPadPainter.cxx:782
 TGLPadPainter.cxx:783
 TGLPadPainter.cxx:784
 TGLPadPainter.cxx:785
 TGLPadPainter.cxx:786
 TGLPadPainter.cxx:787
 TGLPadPainter.cxx:788
 TGLPadPainter.cxx:789