// @(#)root/g3d:$Id$
// Author: Valery Fine(fine@mail.cern.ch)   24/04/99

/*************************************************************************
 * 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.             *
 *************************************************************************/
#ifndef ROOT_TPoints3DABC
#define ROOT_TPoints3DABC


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TPoints3DABC                                                         //
//                                                                      //
// Abstract class to define Arrays of 3D points                         //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TObject
#include "TObject.h"
#endif

class TPoints3DABC : public TObject {

public:
   TPoints3DABC(){;}
   virtual ~TPoints3DABC(){;}

   static  Int_t     DistancetoLine(Int_t px, Int_t py, Float_t x1, Float_t y1, Float_t x2, Float_t y2, Int_t lineWidth = 1 );

   virtual Int_t     Add(Float_t x, Float_t y, Float_t z);
   virtual Int_t     AddLast(Float_t x, Float_t y, Float_t z);
   virtual Int_t     DistancetoPrimitive(Int_t px, Int_t py)=0;
   virtual Int_t     GetLastPosition()const    =0;
   // GetN()  returns the number of allocated cells if any.
   //         GetN() > 0 shows how many cells
   //         can be available via GetP() method.
   //         GetN() == 0 then GetP() must return 0 as well
   virtual Int_t     GetN() const;
   virtual Float_t  *GetP() const;
   virtual Float_t   GetX(Int_t idx)  const    =0;
   virtual Float_t   GetY(Int_t idx)  const    =0;
   virtual Float_t   GetZ(Int_t idx)  const    =0;
   virtual Float_t  *GetXYZ(Float_t *xyz,Int_t idx,Int_t num=1)  const;
   virtual const Float_t  *GetXYZ(Int_t idx)   =0;
   virtual Option_t *GetOption()      const    =0;
   virtual void      PaintPoints(Int_t n, Float_t *p,Option_t *option="")  =0;
   virtual Int_t     SetLastPosition(Int_t idx)=0;
   virtual Int_t     SetNextPoint(Float_t x, Float_t y, Float_t z);
   virtual void      SetOption(Option_t *option="")=0;
   virtual Int_t     SetPoint(Int_t point, Float_t x, Float_t y, Float_t z)=0;
   virtual Int_t     SetPoints(Int_t n, Float_t *p=0, Option_t *option="") =0;
   virtual Int_t     Size() const              =0;

   ClassDef(TPoints3DABC,0)  //A 3-D Points
};

#endif
 TPoints3DABC.h:1
 TPoints3DABC.h:2
 TPoints3DABC.h:3
 TPoints3DABC.h:4
 TPoints3DABC.h:5
 TPoints3DABC.h:6
 TPoints3DABC.h:7
 TPoints3DABC.h:8
 TPoints3DABC.h:9
 TPoints3DABC.h:10
 TPoints3DABC.h:11
 TPoints3DABC.h:12
 TPoints3DABC.h:13
 TPoints3DABC.h:14
 TPoints3DABC.h:15
 TPoints3DABC.h:16
 TPoints3DABC.h:17
 TPoints3DABC.h:18
 TPoints3DABC.h:19
 TPoints3DABC.h:20
 TPoints3DABC.h:21
 TPoints3DABC.h:22
 TPoints3DABC.h:23
 TPoints3DABC.h:24
 TPoints3DABC.h:25
 TPoints3DABC.h:26
 TPoints3DABC.h:27
 TPoints3DABC.h:28
 TPoints3DABC.h:29
 TPoints3DABC.h:30
 TPoints3DABC.h:31
 TPoints3DABC.h:32
 TPoints3DABC.h:33
 TPoints3DABC.h:34
 TPoints3DABC.h:35
 TPoints3DABC.h:36
 TPoints3DABC.h:37
 TPoints3DABC.h:38
 TPoints3DABC.h:39
 TPoints3DABC.h:40
 TPoints3DABC.h:41
 TPoints3DABC.h:42
 TPoints3DABC.h:43
 TPoints3DABC.h:44
 TPoints3DABC.h:45
 TPoints3DABC.h:46
 TPoints3DABC.h:47
 TPoints3DABC.h:48
 TPoints3DABC.h:49
 TPoints3DABC.h:50
 TPoints3DABC.h:51
 TPoints3DABC.h:52
 TPoints3DABC.h:53
 TPoints3DABC.h:54
 TPoints3DABC.h:55
 TPoints3DABC.h:56
 TPoints3DABC.h:57
 TPoints3DABC.h:58
 TPoints3DABC.h:59
 TPoints3DABC.h:60
 TPoints3DABC.h:61
 TPoints3DABC.h:62