// @(#)root/eve:$Id$
// Author: Matevz Tadel, Jochen Thaeder 2009

/*************************************************************************
 * Copyright (C) 1995-2007, 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_TEveJetConeGL
#define ROOT_TEveJetConeGL

#include "TGLObject.h"
#include "TEveVector.h"

class TGLViewer;
class TGLScene;

class TEveJetCone;
class TEveJetConeProjected;

//------------------------------------------------------------------------------
// TEveJetCone
//------------------------------------------------------------------------------

class TEveJetConeGL : public TGLObject
{
private:
   TEveJetConeGL(const TEveJetConeGL&);            // Not implemented
   TEveJetConeGL& operator=(const TEveJetConeGL&); // Not implemented

protected:
   TEveJetCone                     *fC;  // Model object.
   mutable std::vector<TEveVector>  fP;

   virtual void CalculatePoints() const;

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

   virtual Bool_t SetModel(TObject* obj, const Option_t* opt=0);
   virtual void   SetBBox();

   virtual void   DLCacheClear();
   virtual void   Draw(TGLRnrCtx& rnrCtx) const;
   virtual void   DirectDraw(TGLRnrCtx & rnrCtx) const;

   ClassDef(TEveJetConeGL, 0); // GL renderer class for TEveJetCone.
};


//------------------------------------------------------------------------------
// TEveJetConeProjectedGL
//------------------------------------------------------------------------------

class TEveJetConeProjectedGL : public TEveJetConeGL
{
private:
   TEveJetConeProjectedGL(const TEveJetConeProjectedGL&);            // Not implemented
   TEveJetConeProjectedGL& operator=(const TEveJetConeProjectedGL&); // Not implemented

protected:
   TEveJetConeProjected  *fM;  // Model object.

   virtual void CalculatePoints() const;

   void RenderOutline() const;
   void RenderPolygon() const;

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

   virtual Bool_t SetModel(TObject* obj, const Option_t* opt=0);
   virtual void   SetBBox();

   virtual void   Draw(TGLRnrCtx& rnrCtx) const;
   virtual void   DirectDraw(TGLRnrCtx & rnrCtx) const;

   ClassDef(TEveJetConeProjectedGL, 0); // GL renderer class for TEveJetCone.
};

#endif
 TEveJetConeGL.h:1
 TEveJetConeGL.h:2
 TEveJetConeGL.h:3
 TEveJetConeGL.h:4
 TEveJetConeGL.h:5
 TEveJetConeGL.h:6
 TEveJetConeGL.h:7
 TEveJetConeGL.h:8
 TEveJetConeGL.h:9
 TEveJetConeGL.h:10
 TEveJetConeGL.h:11
 TEveJetConeGL.h:12
 TEveJetConeGL.h:13
 TEveJetConeGL.h:14
 TEveJetConeGL.h:15
 TEveJetConeGL.h:16
 TEveJetConeGL.h:17
 TEveJetConeGL.h:18
 TEveJetConeGL.h:19
 TEveJetConeGL.h:20
 TEveJetConeGL.h:21
 TEveJetConeGL.h:22
 TEveJetConeGL.h:23
 TEveJetConeGL.h:24
 TEveJetConeGL.h:25
 TEveJetConeGL.h:26
 TEveJetConeGL.h:27
 TEveJetConeGL.h:28
 TEveJetConeGL.h:29
 TEveJetConeGL.h:30
 TEveJetConeGL.h:31
 TEveJetConeGL.h:32
 TEveJetConeGL.h:33
 TEveJetConeGL.h:34
 TEveJetConeGL.h:35
 TEveJetConeGL.h:36
 TEveJetConeGL.h:37
 TEveJetConeGL.h:38
 TEveJetConeGL.h:39
 TEveJetConeGL.h:40
 TEveJetConeGL.h:41
 TEveJetConeGL.h:42
 TEveJetConeGL.h:43
 TEveJetConeGL.h:44
 TEveJetConeGL.h:45
 TEveJetConeGL.h:46
 TEveJetConeGL.h:47
 TEveJetConeGL.h:48
 TEveJetConeGL.h:49
 TEveJetConeGL.h:50
 TEveJetConeGL.h:51
 TEveJetConeGL.h:52
 TEveJetConeGL.h:53
 TEveJetConeGL.h:54
 TEveJetConeGL.h:55
 TEveJetConeGL.h:56
 TEveJetConeGL.h:57
 TEveJetConeGL.h:58
 TEveJetConeGL.h:59
 TEveJetConeGL.h:60
 TEveJetConeGL.h:61
 TEveJetConeGL.h:62
 TEveJetConeGL.h:63
 TEveJetConeGL.h:64
 TEveJetConeGL.h:65
 TEveJetConeGL.h:66
 TEveJetConeGL.h:67
 TEveJetConeGL.h:68
 TEveJetConeGL.h:69
 TEveJetConeGL.h:70
 TEveJetConeGL.h:71
 TEveJetConeGL.h:72
 TEveJetConeGL.h:73
 TEveJetConeGL.h:74
 TEveJetConeGL.h:75
 TEveJetConeGL.h:76
 TEveJetConeGL.h:77
 TEveJetConeGL.h:78
 TEveJetConeGL.h:79
 TEveJetConeGL.h:80
 TEveJetConeGL.h:81
 TEveJetConeGL.h:82
 TEveJetConeGL.h:83
 TEveJetConeGL.h:84
 TEveJetConeGL.h:85
 TEveJetConeGL.h:86