// @(#)root/gl:$Id$
// Author:  Matevz Tadel, Feb 2007

/*************************************************************************
 * Copyright (C) 1995-2004, 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_TGLLightSet_H
#define ROOT_TGLLightSet_H

#include <TObject.h>

class TGLBoundingBox;
class TGLCamera;


class TGLLightSet : public TObject
{
public:
   enum ELight { kLightFront    = 0x0001,
                 kLightTop      = 0x0002,
                 kLightBottom   = 0x0004,
                 kLightLeft     = 0x0008,
                 kLightRight    = 0x0010,
                 kLightMask     = 0x001f,
                 kLightSpecular = 0x0100 };
private:
   TGLLightSet(const TGLLightSet&);            // Not implemented
   TGLLightSet& operator=(const TGLLightSet&); // Not implemented

protected:
   UInt_t        fLightState;   //! light states (on/off) mask
   Bool_t        fUseSpecular;  //!

   Float_t       fFrontPower;    //! power of the front lamp
   Float_t       fSidePower;     //! power of the side lamps
   Float_t       fSpecularPower; //! power of specular lamp

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

   void    ToggleLight(ELight light);
   void    SetLight(ELight light, Bool_t on);
   UInt_t  GetLightState() { return fLightState; }

   Bool_t GetUseSpecular() const   { return fUseSpecular; }
   void   SetUseSpecular(Bool_t s) { fUseSpecular = s; }

   Float_t GetFrontPower()     const { return fFrontPower; }
   Float_t GetSidePower()      const { return fSidePower; }
   Float_t GetSpecularPower()  const { return fSpecularPower; }
   void SetFrontPower(Float_t  p)    { fFrontPower = p; }
   void SetSidePower(Float_t  p)     { fSidePower  = p; }
   void SetSpecularPower(Float_t  p) { fSpecularPower = p; }

   void StdSetupLights(const TGLBoundingBox& bbox, const TGLCamera& camera,
                       Bool_t debug=kFALSE);

   ClassDef(TGLLightSet, 0) // A set of OpenGL lights.
}; // endclass TGLLightSet


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