ROOT logo
// $Id: ZGlProgram.h 2226 2009-07-19 17:52:01Z matevz $

// Copyright (C) 1999-2008, Matevz Tadel. All rights reserved.
// This file is part of GLED, released under GNU General Public License version 2.
// For the licensing terms see $GLEDSYS/LICENSE or http://www.gnu.org/.

#ifndef Geom1_ZGlProgram_H
#define Geom1_ZGlProgram_H

#include <Glasses/ZList.h>

#include <Eye/Ray.h>

class SGlUniform;

class ZGlProgram : public ZList
{
  // 7777 RnrCtrl(RnrBits(0,4,0,0, 0,0,0,0))
  MAC_RNR_FRIENDS(ZGlProgram);

public:
  enum PrivRayQN_e 
  {
    PRQN_offset = RayNS::RQN_user_0,
    PRQN_relink,
    PRQN_rebuild
  };

  typedef map<TString, SGlUniform*>        mName2pUniform_t;
  typedef mName2pUniform_t::iterator       mName2pUniform_i;
  typedef mName2pUniform_t::const_iterator mName2pUniform_ci;

private:
  void _init();

protected:
  Bool_t            bSetUniDefaults;  //  X{GS} 7 Bool()

  Bool_t            bLinked;          //! X{GS} 7 BoolOut();
  TString           mLog;             //! X{S}

  GMutex            mUniMutex;        //! X{R}
  mName2pUniform_t  mUniMap;          //! X{R}

  void swap_unimap(mName2pUniform_t& umap);

public:
  ZGlProgram(const Text_t* n="ZGlProgram", const Text_t* t=0);
  virtual ~ZGlProgram();

  void EmitRelinkRay();    // X{E}  7 MButt()
  void EmitRebuildRay();   // X{E}  7 MButt()
  void ReloadAndRebuild(); // X{ED} 7 MButt()

  void PrintLog(); //! X{E} 7 MButt()

  void PrintUniforms(); //! X{E} 7 MButt()

#include "ZGlProgram.h7"
  ClassDef(ZGlProgram, 1);
}; // endclass ZGlProgram

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