// @(#)root/eve:$Id$
// Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

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

#include "TEveLineGL.h"
#include "TEveLine.h"

#include "TGLRnrCtx.h"
#include "TGLIncludes.h"

//==============================================================================
//==============================================================================
// TEveLineGL
//==============================================================================

//______________________________________________________________________________
//
// GL-renderer for TEveLine class.

ClassImp(TEveLineGL);

//______________________________________________________________________________
TEveLineGL::TEveLineGL() : TPointSet3DGL(), fM(0)
{
   // Constructor.

   // fDLCache = false; // Disable display list.
   fMultiColor = kTRUE;
}

/******************************************************************************/

//______________________________________________________________________________
Bool_t TEveLineGL::SetModel(TObject* obj, const Option_t* /*opt*/)
{
   // Set model object.

   fM = SetModelDynCast<TEveLine>(obj);
   return kTRUE;
}

/******************************************************************************/

//______________________________________________________________________________
void TEveLineGL::DirectDraw(TGLRnrCtx & rnrCtx) const
{
   // Direct GL rendering for TEveLine.

   // printf("TEveLineGL::DirectDraw Style %d, LOD %d\n", rnrCtx.Style(), rnrCtx.LOD());

   TEveLine& q = *fM;
   if (q.Size() <= 0) return;

   TGLUtil::LockColor(); // Keep color from TGLPhysicalShape.
   if (q.fRnrLine) {
      TGLCapabilityEnabler sw_smooth(GL_LINE_SMOOTH, q.fSmooth);
      TGLCapabilityEnabler sw_blend(GL_BLEND, q.fSmooth);
      TGLUtil::RenderPolyLine(q, q.GetMainTransparency(), q.GetP(), q.Size());
   }
   TGLUtil::UnlockColor();
   if (q.fRnrPoints) {
      TGLUtil::RenderPolyMarkers(q, 0,q.GetP(), q.Size(),
                                 rnrCtx.GetPickRadius(),
                                 rnrCtx.Selection());
   }
}
 TEveLineGL.cxx:1
 TEveLineGL.cxx:2
 TEveLineGL.cxx:3
 TEveLineGL.cxx:4
 TEveLineGL.cxx:5
 TEveLineGL.cxx:6
 TEveLineGL.cxx:7
 TEveLineGL.cxx:8
 TEveLineGL.cxx:9
 TEveLineGL.cxx:10
 TEveLineGL.cxx:11
 TEveLineGL.cxx:12
 TEveLineGL.cxx:13
 TEveLineGL.cxx:14
 TEveLineGL.cxx:15
 TEveLineGL.cxx:16
 TEveLineGL.cxx:17
 TEveLineGL.cxx:18
 TEveLineGL.cxx:19
 TEveLineGL.cxx:20
 TEveLineGL.cxx:21
 TEveLineGL.cxx:22
 TEveLineGL.cxx:23
 TEveLineGL.cxx:24
 TEveLineGL.cxx:25
 TEveLineGL.cxx:26
 TEveLineGL.cxx:27
 TEveLineGL.cxx:28
 TEveLineGL.cxx:29
 TEveLineGL.cxx:30
 TEveLineGL.cxx:31
 TEveLineGL.cxx:32
 TEveLineGL.cxx:33
 TEveLineGL.cxx:34
 TEveLineGL.cxx:35
 TEveLineGL.cxx:36
 TEveLineGL.cxx:37
 TEveLineGL.cxx:38
 TEveLineGL.cxx:39
 TEveLineGL.cxx:40
 TEveLineGL.cxx:41
 TEveLineGL.cxx:42
 TEveLineGL.cxx:43
 TEveLineGL.cxx:44
 TEveLineGL.cxx:45
 TEveLineGL.cxx:46
 TEveLineGL.cxx:47
 TEveLineGL.cxx:48
 TEveLineGL.cxx:49
 TEveLineGL.cxx:50
 TEveLineGL.cxx:51
 TEveLineGL.cxx:52
 TEveLineGL.cxx:53
 TEveLineGL.cxx:54
 TEveLineGL.cxx:55
 TEveLineGL.cxx:56
 TEveLineGL.cxx:57
 TEveLineGL.cxx:58
 TEveLineGL.cxx:59
 TEveLineGL.cxx:60
 TEveLineGL.cxx:61
 TEveLineGL.cxx:62
 TEveLineGL.cxx:63
 TEveLineGL.cxx:64
 TEveLineGL.cxx:65
 TEveLineGL.cxx:66
 TEveLineGL.cxx:67
 TEveLineGL.cxx:68
 TEveLineGL.cxx:69
 TEveLineGL.cxx:70
 TEveLineGL.cxx:71
 TEveLineGL.cxx:72
 TEveLineGL.cxx:73