// @(#)root/gl:$Id$
// Author:  Matevz Tadel, Jun 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 "TGLParametricEquationGL.h"

#include "TGLParametric.h"
#include "TVirtualPad.h"

#include "TGLSurfacePainter.h"
#include "TGLTF3Painter.h"

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

//______________________________________________________________________
//
// GL-renderer wrapper for TGLParametricEquation.
// This allows rendering of parametric-equations in standard GL viewer.

ClassImp(TGLParametricEquationGL);

//______________________________________________________________________________
TGLParametricEquationGL::TGLParametricEquationGL() : TGLPlot3D(), fM(0)
{
   // Constructor.
}

//______________________________________________________________________________
TGLParametricEquationGL::~TGLParametricEquationGL()
{
   // Destructor.
}

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

   fM = SetModelDynCast<TGLParametricEquation>(obj);

   SetPainter( new TGLParametricPlot(fM, 0) );
   TString option(opt);
   fPlotPainter->AddOption(option);
   fPlotPainter->InitGeometry();

   return kTRUE;
}

//______________________________________________________________________________
void TGLParametricEquationGL::SetBBox()
{
   // Setup bounding-box.

   fBoundingBox.Set(fPlotPainter->RefBackBox().Get3DBox());
}

//______________________________________________________________________________
void TGLParametricEquationGL::DirectDraw(TGLRnrCtx& /*rnrCtx*/) const
{
   // Render the object.

   fPlotPainter->RefBackBox().FindFrontPoint();
   glPushAttrib(GL_ENABLE_BIT | GL_LIGHTING_BIT);
   glEnable(GL_NORMALIZE);
   fPlotPainter->InitGL();
   fPlotPainter->DrawPlot();
   glPopAttrib();
}
 TGLParametricEquationGL.cxx:1
 TGLParametricEquationGL.cxx:2
 TGLParametricEquationGL.cxx:3
 TGLParametricEquationGL.cxx:4
 TGLParametricEquationGL.cxx:5
 TGLParametricEquationGL.cxx:6
 TGLParametricEquationGL.cxx:7
 TGLParametricEquationGL.cxx:8
 TGLParametricEquationGL.cxx:9
 TGLParametricEquationGL.cxx:10
 TGLParametricEquationGL.cxx:11
 TGLParametricEquationGL.cxx:12
 TGLParametricEquationGL.cxx:13
 TGLParametricEquationGL.cxx:14
 TGLParametricEquationGL.cxx:15
 TGLParametricEquationGL.cxx:16
 TGLParametricEquationGL.cxx:17
 TGLParametricEquationGL.cxx:18
 TGLParametricEquationGL.cxx:19
 TGLParametricEquationGL.cxx:20
 TGLParametricEquationGL.cxx:21
 TGLParametricEquationGL.cxx:22
 TGLParametricEquationGL.cxx:23
 TGLParametricEquationGL.cxx:24
 TGLParametricEquationGL.cxx:25
 TGLParametricEquationGL.cxx:26
 TGLParametricEquationGL.cxx:27
 TGLParametricEquationGL.cxx:28
 TGLParametricEquationGL.cxx:29
 TGLParametricEquationGL.cxx:30
 TGLParametricEquationGL.cxx:31
 TGLParametricEquationGL.cxx:32
 TGLParametricEquationGL.cxx:33
 TGLParametricEquationGL.cxx:34
 TGLParametricEquationGL.cxx:35
 TGLParametricEquationGL.cxx:36
 TGLParametricEquationGL.cxx:37
 TGLParametricEquationGL.cxx:38
 TGLParametricEquationGL.cxx:39
 TGLParametricEquationGL.cxx:40
 TGLParametricEquationGL.cxx:41
 TGLParametricEquationGL.cxx:42
 TGLParametricEquationGL.cxx:43
 TGLParametricEquationGL.cxx:44
 TGLParametricEquationGL.cxx:45
 TGLParametricEquationGL.cxx:46
 TGLParametricEquationGL.cxx:47
 TGLParametricEquationGL.cxx:48
 TGLParametricEquationGL.cxx:49
 TGLParametricEquationGL.cxx:50
 TGLParametricEquationGL.cxx:51
 TGLParametricEquationGL.cxx:52
 TGLParametricEquationGL.cxx:53
 TGLParametricEquationGL.cxx:54
 TGLParametricEquationGL.cxx:55
 TGLParametricEquationGL.cxx:56
 TGLParametricEquationGL.cxx:57
 TGLParametricEquationGL.cxx:58
 TGLParametricEquationGL.cxx:59
 TGLParametricEquationGL.cxx:60
 TGLParametricEquationGL.cxx:61
 TGLParametricEquationGL.cxx:62
 TGLParametricEquationGL.cxx:63
 TGLParametricEquationGL.cxx:64
 TGLParametricEquationGL.cxx:65
 TGLParametricEquationGL.cxx:66
 TGLParametricEquationGL.cxx:67
 TGLParametricEquationGL.cxx:68
 TGLParametricEquationGL.cxx:69
 TGLParametricEquationGL.cxx:70
 TGLParametricEquationGL.cxx:71
 TGLParametricEquationGL.cxx:72
 TGLParametricEquationGL.cxx:73
 TGLParametricEquationGL.cxx:74
 TGLParametricEquationGL.cxx:75
 TGLParametricEquationGL.cxx:76