// @(#)root/table:$Id$
// Author: Valeri Fine 1999

/*************************************************************************
 * 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.             *
 *************************************************************************/

#include "TPolyLineShape.h"

#include "TPoints3D.h"
#include "TVolume.h"
#include "TVolumePosition.h"
#include "TTUBE.h"
#include "TBRIK.h"
#include "TSPHE.h"
#include "TView.h"
#include "TVirtualPad.h"
#include "TTablePadView3D.h"
#include "TPoint.h"
#include "TVirtualPS.h"
#include "TMath.h"

//////////////////////////////////////////////////////////////////////////////////////
//                                                                                  //
//                           STAR 3D geometry Object Model                          //
//                           =============================                          //
//                                                                                  //
//                           TDataSet            Legend:                            //
//                              |                  "classA"                         //
//                              |                     |     "classB" is derived from//
//                              v                     v       the "classA"          //
//                           TVolume               "classB"                         //
//                              ^                                                   //
//                              |                  "classQ"                         //
//                              |                      ^     "classQ" has a pointer //
//                            TShape                   |       to "classT"          //
//                              |                   "classT"                        //
//                              v                                                   //
//           -----------------------------------------------------                  //
//           |               |      |                     |      |                  //
//           |               |      |     .    .    .     |      |                  //
//           |               |      |                     |      |                  //
//           V               v      v                     v      v                  //
//      TPolyLineShape     TBRIK  TTUBE                 TPCON  TTRD1                //
//       |        ^                                                                 //
//       |        |       begin_html <a href="http://root.cern.ch/root/html/TShape.html#TShape:description">R  O  O  T        S  H  A  P  E  S</a>end_html                          //
//       V        |       (see begin_html <a href="http://wwwinfo.cern.ch/asdoc/geant_html3/node109.html#SECTION041000000000000000000000">GEANT 3.21 shapes</a>end_html as well)                           //
// St_PolyLine3D  |                                                                 //
//                |                                                                 //
//           TPoints3DABC                                                           //
//                |                                                                 //
//                |                                                                 //
//                v                                                                 //
//      --------------------------------------------------------                    //
//      |                 |                 |                  |                    //
//      |                 |                 |                  |                    //
//      |                 |                 |                  |                    //
//      V                 v                 v                  v                    //
//StHits3DPoints   StHelix3DPoints   TTable3Points          TPoints3D               //
//      ^                 ^                 ^                  ^                    //
//      |                 |                 |                  |                    //
//      |                 |                 |                  |                    //
//  StObjArray    StTrack / StHelixD  TTableSorter       flat floating              //
//                                          ^              point array              //
//                                          |        (see St_PolyLine3D as well)    //
//                                          |                                       //
//                                        TTable                                    //
//                                                                                  //
//                                                                                  //
//                     S  T  A  R    S  H  A  P  E  S                               //
//                     -------------------------------                              //
//                                                                                  //
//////////////////////////////////////////////////////////////////////////////////////

ClassImp(TPolyLineShape)

//______________________________________________________________________________
TPolyLineShape::TPolyLineShape()
{
   //to be documented
   fShape = 0;
   fSmooth = kFALSE;
   fConnection= 0;
   fPoints=0;
   SetWidthFactor();
   fHasDrawn = kFALSE;
   fShapeType = kNULL;
   fSizeX3D   = 0;
   fPointFlag = kFALSE;
   fLineFlag  = kFALSE;
}

//______________________________________________________________________________
TPolyLineShape::TPolyLineShape(TPoints3DABC  *points,Option_t* option)
{
  //  fShape       = new TTUBE("tube","tube","void",0.5,0.5);
   fShape      = 0;
   fShapeType   = kNULL;
   fSmooth      = kFALSE;
   fConnection  = 0;
   fPoints      = points;
   fHasDrawn    = kFALSE;
   fSizeX3D     = 0;
   // Take in account the current node if any
   if (!fPoints) {
      Error("TPolyLineShape","No polyline is defined");
      return;
   }
   fPointFlag = strchr(option,'P')?kTRUE:kFALSE;
   fLineFlag  = strchr(option,'L')?kTRUE:kFALSE;

   SetWidthFactor();
   Create();
}

//______________________________________________________________________________
TPolyLineShape::~TPolyLineShape()
{
   //to be documented
   SafeDelete(fShape);
   SafeDelete(fSizeX3D);
}

//______________________________________________________________________________
void TPolyLineShape::Create()
{
   //to be documented
   if (!fConnection) SetConnection(kBrik);
}

//______________________________________________________________________________
Size3D *TPolyLineShape::CreateX3DSize(Bool_t marker)
{
   //to be documented
   if (!fSizeX3D) fSizeX3D = new Size3D;
   fSizeX3D->numPoints = 0;
   fSizeX3D->numSegs   = 0;
   fSizeX3D->numPolys  = 0;         //NOTE: Because of different structure, our
   if (fPoints) {
      Int_t size = fPoints->Size();
      if (marker) {
         Int_t mode;
         if (size > 10000) mode = 1;         // One line marker    '-'
         else if (size > 3000) mode = 2;     // Two lines marker   '+'
         else mode = 3;                      // Three lines marker '*'

         fSizeX3D->numSegs   = size*mode;
         fSizeX3D->numPoints = size*mode*2;
         fSizeX3D->numPolys  = 0;
      } else {
         fSizeX3D->numSegs   = size-1;
         fSizeX3D->numPoints = size;
      }
      fSizeX3D->numPolys  = 0;         //NOTE: Because of different structure, our
   }
   return fSizeX3D;
}

//______________________________________________________________________________
Int_t TPolyLineShape::SetConnection(EShapeTypes connection)
{
   //to be documented
   Float_t size = 0.5*GetWidthFactor()*GetLineWidth();

   if (fShapeType != connection) {
      SafeDelete(fConnection);
      fShapeType = connection;
      switch (fShapeType) {
         case  kSphere:
            SetConnection(new TSPHE("connection","sphere","void",0,size,0,90,0,360));
            break;
         default:
            SetConnection(new TBRIK("connection","brik","void",size,size,size));
            break;
      };
   }
   return 0;
}

//______________________________________________________________________________
Int_t TPolyLineShape::DistancetoPrimitive(Int_t px, Int_t py)
{
//*-*-*-*-*-*-*-*Compute distance from point px,py to a 3-D polyline*-*-*-*-*-*-*
//*-*            ===================================================
//*-*
//*-*  Compute the closest distance of approach from point px,py to each segment
//*-*  of the polyline.
//*-*  Returns when the distance found is below DistanceMaximum.
//*-*  The distance is computed in pixels units.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   if (fPoints) {
      Int_t ret = fPoints->DistancetoPrimitive( px, py);
      if (ret == -1) ret = PointDistancetoPrimitive(px, py);
      return ret;
   }
   return 999999;
}

//______________________________________________________________________________
Int_t TPolyLineShape::PointDistancetoPrimitive(Int_t px, Int_t py)
{
//*-*-*-*-*-*-*Compute distance from point px,py to a 3-D points *-*-*-*-*-*-*
//*-*          =====================================================
//*-*
//*-*  Compute the closest distance of approach from point px,py to each segment
//*-*  of the polyline.
//*-*  Returns when the distance found is below DistanceMaximum.
//*-*  The distance is computed in pixels units.
//*-*
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   const Int_t inaxis = 7;
   Float_t dist = 999999;

   Int_t puxmin = gPad->XtoAbsPixel(gPad->GetUxmin());
   Int_t puymin = gPad->YtoAbsPixel(gPad->GetUymin());
   Int_t puxmax = gPad->XtoAbsPixel(gPad->GetUxmax());
   Int_t puymax = gPad->YtoAbsPixel(gPad->GetUymax());

   TView *view = 0;
//*-*- return if point is not in the user area
   if (px < puxmin - inaxis) goto END;
   if (py > puymin + inaxis) goto END;
   if (px > puxmax + inaxis) goto END;
   if (py < puymax - inaxis) goto END;

   view = gPad->GetView();
   if (view) {
      Int_t i;
      Float_t dpoint;
      Float_t xndc[3];
      Int_t x1,y1;
      Int_t pointSize = fPoints->Size();
      for (i=0;i<pointSize;i++) {
         Float_t thisPoints[3];
         view->WCtoNDC(fPoints->GetXYZ(thisPoints,i), xndc);
         x1     = gPad->XtoAbsPixel(xndc[0]);
         y1     = gPad->YtoAbsPixel(xndc[1]);
         dpoint = (px-x1)*(px-x1) + (py-y1)*(py-y1);
         if (dpoint < dist) dist = dpoint;
      }
      dist = (TMath::Sqrt(dist));
   }
END:
   return Int_t(dist);
}

//______________________________________________________________________________
void TPolyLineShape::Draw(Option_t *)
{
   //to be documented
   Create();
   AppendPad();
}

//______________________________________________________________________________
void TPolyLineShape::ExecuteEvent(Int_t event, Int_t px, Int_t py)
{
   // forward the ExecuteEvent call to the decorated object
   if (fPoints) fPoints->ExecuteEvent(event,px, py);
}

//______________________________________________________________________________
Color_t TPolyLineShape::GetColorAttribute() const
{
   //to be documented
   return ((TPolyLineShape *)this)->GetLineColor();
}
//______________________________________________________________________________
const char  *TPolyLineShape::GetName()  const
{
   // forward the GetName call to the decorated object
   return fPoints ? fPoints->GetName() : TShape::GetName();
}
//______________________________________________________________________________
char  *TPolyLineShape::GetObjectInfo(Int_t px, Int_t py) const
{
   // forward the GetObjectInfo call to the decorated object
   return fPoints ? fPoints->GetObjectInfo(px, py) : TShape::GetObjectInfo(px,py);
}

//______________________________________________________________________________
Size_t TPolyLineShape::GetSizeAttribute() const
{
   //to be documented
   return ((TPolyLineShape *)this)->GetMarkerSize();
}

//______________________________________________________________________________
Style_t TPolyLineShape::GetStyleAttribute() const
{
   //to be documented
   return ((TPolyLineShape *)this)->GetLineStyle();
}

//______________________________________________________________________________
const char  *TPolyLineShape::GetTitle() const
{
   // forward the GetObjectInfo call to the decorated object
   return fPoints ? fPoints->GetTitle() : TShape::GetTitle();
}
//______________________________________________________________________________
void TPolyLineShape::PaintNode(Float_t *start,Float_t *end,Option_t *option)
{
  // Double_t *start - coordinate of the start point of the current segment
  // Double_t *end   - coordinate of the end   point of the current segment

  // Calculate the vector
   const Int_t kDimension = 3;
   Double_t vector[kDimension];
   Double_t nodeposition[kDimension];
   Int_t i=0;
   for (i=0;i<kDimension;i++) {
      vector[i]=end[i]-start[i];
      nodeposition[i]=0.5*(start[i]+end[i]);
   }
   Double_t length = TMath::Normalize(vector);

  // Calculate the rotation axis for Axis Oz

   Double_t oz[3]={0,0,1};
   Double_t rotate[3];

   Double_t sina = TMath::Normalize(TMath::Cross(vector,oz,rotate));
   Double_t cosa = Product(vector,oz);
   Double_t mrot[3][3];

   TShape *shape = fShape;
   if (!shape) shape = fConnection;

   Gyrot(rotate,cosa,sina,mrot);

   Float_t width = GetWidthFactor()*GetLineWidth();

   mrot[0][0] *= width;
   mrot[0][1] *= width;
   mrot[0][2] *= width;

   mrot[1][0] *= width;
   mrot[1][1] *= width;
   mrot[1][2] *= width;

   mrot[2][0] *= length;
   mrot[2][1] *= length;
   mrot[2][2] *= length;

   Color_t color = GetLineColor();

   TVolume node("SegmentNode","SegmentNode", shape);
   node.SetLineColor(color);
   if (!fShape) node.SetVisibility();
   node.SetLineColor(color);

   TRotMatrix matrix ("rotate","rotate",&mrot[0][0]);
   TVolumePosition position(&node,nodeposition[0],nodeposition[1]
                                 ,nodeposition[2],&matrix);

   if (!(fSmooth || fConnection))  {
      node.PaintNodePosition(option, &position);
      return;
   }

   // Add the connection

   memset(mrot,0,9*sizeof(Double_t));

   length = width/length;
   mrot[2][2] = length;
   mrot[0][0] = 1;
   mrot[1][1] = 1;

   TRotMatrix kneeMatrix("knee","knee",&mrot[0][0]);
   TVolume knee("ConnectionNode","ConnectionNode", fConnection);
   TVolumePosition kneePosition(&knee, 0, 0, 0.5, &kneeMatrix);
   knee.SetLineColor(color);
   node.Add(&knee,&kneePosition);

   node.PaintNodePosition(option, &position);
}

//______________________________________________________________________________
void TPolyLineShape::Paint(Option_t *opt)
{
   //to be documented
   if (!GetPoints()) return;

   Bool_t rangeView = opt && opt[0] && strcmp(opt,"range")==0 ? kTRUE : kFALSE;
   TTablePadView3D *view3D = 0;
   if (!rangeView  && (view3D = (TTablePadView3D*)gPad->GetView3D()) ) {
      TString mode;

      mode="";
      if (fLineFlag)  mode  = "L";
      if (fPointFlag) mode += "P";

      view3D->SetLineAttr(GetColorAttribute(), (Int_t)GetSizeAttribute());
      view3D->PaintPoints3D(GetPoints(), mode.Data());
   }
   if (opt && !strstr(opt, "x3d")) {
      if (fPointFlag) {
         SetMarkerColor(GetColorAttribute());
         SetMarkerSize(GetSizeAttribute());
         PaintPolyMarker(fPoints->Size());
      }
      if (fLineFlag) {
         SetLineColor(GetColorAttribute());
         SetLineWidth((Width_t)GetSizeAttribute());
         PaintPoints(fPoints->Size());
      }

   } else {
      if (fLineFlag) {
         CreateX3DSize(kFALSE); PaintX3DLine(opt);
      } else {
         CreateX3DSize(kTRUE);  PaintX3DMarker(opt);
      }
//     Paint3d(opt);
   }
}

//______________________________________________________________________________
void  TPolyLineShape::PaintPoints(Int_t n, Float_t *, Option_t *)
{
//*-*-*-*-*-*-*-*-*Draw this 3-D polyline with new coordinates*-*-*-*-*-*-*-*-*-*
//*-*              ===========================================
   if (n < 2) return;

   TAttLine::Modify();  //Change line attributes only if necessary

//*-*- Loop on each individual line
   for (Int_t i=1;i<n;i++) {
      Float_t xyz[6];
      fPoints->GetXYZ(&xyz[0],i-1,2);
      gPad->PaintLine3D(xyz, &xyz[3]);
   }
}

//______________________________________________________________________________
void TPolyLineShape::PaintPolyMarker(Int_t n, Float_t *, Marker_t, Option_t *)
{
//*-*-*-*-*-*-*-*-*Paint polymarker in CurrentPad World coordinates*-*-*-*-*-*-*-*
//*-*              ================================================

   if (n <= 0) return;

   TView *view = gPad->GetView();      //Get current 3-D view
   if(!view) return;                   //Check if `view` is valid

   //Create temorary storage
   TPoint *pxy = new TPoint[n];
   Float_t *x  = new Float_t[n];
   Float_t *y  = new Float_t[n];
   Float_t xndc[3], ptr[3];

//*-*- convert points from world to pixel coordinates
   Int_t nin = 0;
   for (Int_t i = 0; i < n; i++) {
      fPoints->GetXYZ(ptr,i);
      view->WCtoNDC(ptr, xndc);
      if (xndc[0] < gPad->GetX1() || xndc[0] > gPad->GetX2()) continue;
      if (xndc[1] < gPad->GetY1() || xndc[1] > gPad->GetY2()) continue;
      x[nin] = xndc[0];
      y[nin] = xndc[1];
      pxy[nin].fX = gPad->XtoPixel(x[nin]);
      pxy[nin].fY = gPad->YtoPixel(y[nin]);
      nin++;
   }

   TAttMarker::Modify();  //Change marker attributes only if necessary

//*-*- invoke the graphics subsystem
   if (!gPad->IsBatch()) gVirtualX->DrawPolyMarker(nin, pxy);


   if (gVirtualPS) {
      gVirtualPS->DrawPolyMarker(nin, x, y);
   }
   delete [] x;
   delete [] y;

   delete [] pxy;
}

//______________________________________________________________________________
void TPolyLineShape::Paint3d(Option_t *opt)
{
   //to be documented
   if (!fPoints) return;

   Create();

   struct XYZ { Float_t fValues[3]; } *points;
   points  = (XYZ *)(fPoints->GetP());
   Int_t size      = fPoints->GetN()-1;

   for (Int_t i=0;i<size;i++)
      PaintNode((Float_t *)(points+i+1),(Float_t *)(points+i),opt);
   fHasDrawn = kTRUE;
}

//______________________________________________________________________________
void TPolyLineShape::PaintX3DLine(Option_t *)
{
   //to be documented
#ifndef WIN32
   Int_t size = 0;
   if (fPoints) size = fPoints->Size();
   if (!size) return;

   X3DBuffer *buff = new X3DBuffer;
   if (!buff) return;

   fSizeX3D->numPoints = buff->numPoints = size;
   fSizeX3D->numSegs   = buff->numSegs   = size-1;
   fSizeX3D->numPolys  = buff->numPolys  = 0;        //NOTE: Because of different structure, our

   buff->polys     = 0;     //      TPolyLine3D can't use polygons
   TPoints3D x3dPoints(size);
   buff->points    = fPoints->GetXYZ(x3dPoints.GetP(),0,size);

//        Int_t c = (((fAttributes?fAttributes->GetColorAttribute():0) % 8) - 1) * 4;     // Basic colors: 0, 1, ... 8
   Int_t c = ((GetColorAttribute() % 8) - 1) * 4;     // Basic colors: 0, 1, ... 8
   if (c < 0) c = 0;

   //*-* Allocate memory for segments *-*
   buff->segs = new Int_t[buff->numSegs*3];
   if (buff->segs) {
      for (Int_t i = 0; i < buff->numSegs; i++) {
         buff->segs[3*i  ] = c;
         buff->segs[3*i+1] = i;
         buff->segs[3*i+2] = i+1;
      }
   }


   if (buff && buff->points && buff->segs) //If everything seems to be OK ...
      FillX3DBuffer(buff);
   else {                            // ... something very bad was happened
      gSize3D.numPoints -= buff->numPoints;
      gSize3D.numSegs   -= buff->numSegs;
      gSize3D.numPolys  -= buff->numPolys;
   }

   if (buff->segs)     delete [] buff->segs;
   if (buff->polys)    delete [] buff->polys;
   if (buff)           delete    buff;
#endif
}

//______________________________________________________________________________
void TPolyLineShape::PaintX3DMarker(Option_t *)
{
   //to be documented
#ifndef WIN32
   Int_t size = 0;
   if (fPoints) size = fPoints->Size();
   if (!size) return;
   Int_t mode;
   Int_t i, j, k, n;

   X3DBuffer *buff = new X3DBuffer;
   if(!buff) return;

   if (size > 10000) mode = 1;         // One line marker    '-'
   else if (size > 3000) mode = 2;     // Two lines marker   '+'
   else mode = 3;                      // Three lines marker '*'

   fSizeX3D->numSegs   = buff->numSegs   = size*mode;
   fSizeX3D->numPoints = buff->numPoints = buff->numSegs*2;
   fSizeX3D->numPolys  = buff->numPolys  = 0;         //NOTE: Because of different structure, our

   buff->polys     = 0;      //      TPolyMarker3D can't use polygons


    //*-* Allocate memory for points *-*
   Float_t delta = 0.002;

   buff->points = new Float_t[buff->numPoints*3];
   if (buff->points) {
      for (i = 0; i < size; i++) {
         for (j = 0; j < mode; j++) {
            for (k = 0; k < 2; k++) {
               delta *= -1;
               for (n = 0; n < 3; n++) {
                  Float_t xyz[3];
                  fPoints->GetXYZ(xyz,i);
                  buff->points[mode*6*i+6*j+3*k+n] =
                  xyz[n] * (1 + (j == n ? delta : 0));
               }
            }
         }
      }
   }

   Int_t c = ((GetColorAttribute() % 8) - 1) * 4;     // Basic colors: 0, 1, ... 8
   if (c < 0) c = 0;

    //*-* Allocate memory for segments *-*
   buff->segs = new Int_t[buff->numSegs*3];
   if (buff->segs) {
      for (i = 0; i < buff->numSegs; i++) {
         buff->segs[3*i  ] = c;
         buff->segs[3*i+1] = 2*i;
         buff->segs[3*i+2] = 2*i+1;
      }
   }

   if (buff->points && buff->segs)    //If everything seems to be OK ...
      FillX3DBuffer(buff);
   else {                            // ... something very bad was happened
      gSize3D.numPoints -= buff->numPoints;
      gSize3D.numSegs   -= buff->numSegs;
      gSize3D.numPolys  -= buff->numPolys;
   }

   if (buff->points)   delete [] buff->points;
   if (buff->segs)     delete [] buff->segs;
   if (buff->polys)    delete [] buff->polys;
   if (buff)           delete    buff;
#endif
}

//______________________________________________________________________________
Float_t TPolyLineShape::Product(Float_t *v1, Float_t *v2,Int_t ndim)
{
   //to be documented
   Float_t p = 0;
   if (v1 && v2 && ndim > 0)
      for (Int_t i=0; i<ndim; i++) p+= v1[i]*v2[i];
   return p;
}

//______________________________________________________________________________
Double_t TPolyLineShape::Product(Double_t *v1, Double_t *v2,Int_t ndim)
{
   //to be documented
   Double_t p = 0;
   if (v1 && v2 && ndim > 0)
      for (Int_t i=0;i<ndim;i++) p+= v1[i]*v2[i];
   return p;
}

//______________________________________________________________________________
Double_t *TPolyLineShape::Gyrot(Double_t *dirc, Double_t cosang, Double_t sinang, Double_t trans[3][3])
{
//************************************************************************
//*                                                                      *
//*   call gyrot(dirc,angp,trans,ntrans)                       vp 880722 *
//*                                       revised              vp 921009 *
//*                                       revised (f->c++)     vf 981006 *
//*       routine for filling rotation transformation matrix             *
//*       from axis and rotation angle around                            *
//*                                                                      *
//*   arguments:                                                         *
//*       dirc    direct cosinuses (may be not normalised)               *
//*       cosang, sinang - cos and sin of the rotation angle             *
//*       tranz   rotation & shift matrix 3*3  (input/output)            *
//*    ---------------------------------------------------------------   *
//*  This code is provided by Victor Perevoztchikov                      *
//************************************************************************

   Double_t ax[3];

   memcpy(ax,dirc,3*sizeof(Double_t));
   TMath::Normalize(ax);

   Double_t ca  = cosang;
   Double_t sa  = sinang;
   Double_t ca1;

   if (ca < 0.5)
      ca1 = 1. - ca ;
   else
      ca1 = (sa*sa)/(1.+ca) ;

   Int_t j1 = 0;
   Int_t j2 = 0;
   for(j1 = 0; j1 < 3; j1++) {
      for(j2 = 0; j2 < 3; j2++)
         trans[j1][j2] = ca1*ax[j1]*ax[j2];
      trans[j1][j1]   += ca;
   }

   trans[0][1] = trans[0][1] - sa*ax[2];
   trans[1][0] = trans[1][0] + sa*ax[2];
   trans[0][2] = trans[0][2] + sa*ax[1];
   trans[2][0] = trans[2][0] - sa*ax[1];
   trans[1][2] = trans[1][2] - sa*ax[0];
   trans[2][1] = trans[2][1] + sa*ax[0];

   return (Double_t *)trans;

}

//______________________________________________________________________________
Color_t TPolyLineShape::SetColorAttribute(Color_t color)
{
   //to be documented
   Color_t currentColor = GetColorAttribute();
   if (color != currentColor) {
      SetLineColor(color);
      SetMarkerColor(color);
   }
   return currentColor;
}

//______________________________________________________________________________
Size_t TPolyLineShape::SetSizeAttribute(Size_t size)
{
   //to be documented
   Size_t currentSize = GetSizeAttribute();
   if (size != currentSize) {
      SetLineWidth(Width_t(size));
      SetMarkerSize(size);
   }
   return currentSize;
}

//______________________________________________________________________________
Style_t TPolyLineShape::SetStyleAttribute(Style_t style)
{
  // SetStyleAttribute(Style_t style) - set new style for this line
  // Returns:
  //          previous value of the line style
  //
   Style_t s = 0;
   s = GetStyleAttribute();
   SetLineStyle(style);
   SetMarkerStyle(style);
   return s;
}

//______________________________________________________________________________
void TPolyLineShape::SetShape(TShape *shape)
{
   //to be documented
   SafeDelete(fShape)
   fShape = shape;
}

//_______________________________________________________________________
Int_t TPolyLineShape::Size() const
{
   //to be documented
   return fPoints ? fPoints->Size():0;
}

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