ROOT logo
// $Id: TSPupilInfo.h 2341 2010-01-24 01:28:32Z 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 Var1_TSPupilInfo_H
#define Var1_TSPupilInfo_H

#include <Glasses/PupilInfo.h>
#include <Stones/TimeMakerClient.h>
#include <Stones/SGridStepper.h>

class ZDeque;
class ZHashList;
class ZVector;
class Scene;
class WGlWidget;

class TimeMaker;

class AlSource;

class Extendio;
class Spiritio;
class TringuRep;

class TSPupilInfo : public PupilInfo,
		    public TimeMakerClient
{
  MAC_RNR_FRIENDS(TSPupilInfo);

private:
  void _init();

protected:
  ZLink<TimeMaker>  mTimeMaker;       // X{GS} L{}

  ZLink<ZHashList>  mSelection;       // X{GS} L{}
  ZColor            mSelectionColor;  // X{GSPT} 7 ColorButt()

  ZLink<Spiritio>   mDefaultSpiritio; // X{GS} L{}
  ZLink<Spiritio>   mCurrentSpiritio; // X{GE} L{}
  Float_t           mZFovPreSpiritio; //

  // Menus / overlays.
  ZLink<Scene>      mMenuScene;       // X{GS} L{}
  ZLink<Scene>      mSpiritioScene;   // X{GS} L{}
  ZLink<WGlWidget>  mLastMenu;        // X{GS} L{}

  ZLink<TringuRep>  mTringuRep;       // X{GS} L{}

  SGridStepper      mGridStepper;     // X{r}

  // Collection of AlSources to be used by the renderers.
  // These variables are entirely managed by the renderers and are not
  // locked as rendering is done from a single thread.
  //
  // This should all go into a AlSourcePool glass in Audio1.
  // Static should be a parameter.
  static Int_t      sNMaxAlSources;
  Int_t             mNAlSources;      //!	
  ZLink<ZVector>    mAlSources;       //! X{GS} L{}
  ZLink<ZDeque>     mAlSourcesFree;   //!
  ZLink<ZHashList>  mAlSourcesUsed;   //!
  GMutex            mAlSourceMutex;   //!

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

  virtual void AdEnlightenment();

  // TimeMakerClient
  virtual void TimeTick(Double_t t, Double_t dt);

  // Selection
  void SelectExtendio(Extendio* ext, Bool_t multiple); // X{E} C{1}

  // Overlay
  void AddOverlayElement(ZGlass* l);
  void RemoveOverlayElement(ZGlass* l);

  // Event handlers
  void AddEventHandler(ZGlass* l);
  void RemoveEventHandler(ZGlass* l);

  // Spiritios
  void SetCurrentSpiritio(Spiritio* s);
  void EnactExtendioSpiritio(Extendio* ext); // X{ED} C{1}

  // Menu handling.
  WGlWidget* FindMenuEntry(const TString& name);

  void SelectTopMenu(WGlWidget* weed);           // X{E} C{1} 7 MCWButt()
  void SelectTopMenuByName(const TString& name); // X{E}      7 MCWButt()
  void SelectTopMenuForLens(ZGlass* lens);       // X{E} C{1} 7 MCWButt()

  // Local AlSource management
  AlSource* AcquireAlSource();
  void      RelinquishAlSource(AlSource* src);

#include "TSPupilInfo.h7"
  ClassDef(TSPupilInfo, 1); // TringuSol PupilInfo.
}; // endclass TSPupilInfo

#endif
 TSPupilInfo.h:1
 TSPupilInfo.h:2
 TSPupilInfo.h:3
 TSPupilInfo.h:4
 TSPupilInfo.h:5
 TSPupilInfo.h:6
 TSPupilInfo.h:7
 TSPupilInfo.h:8
 TSPupilInfo.h:9
 TSPupilInfo.h:10
 TSPupilInfo.h:11
 TSPupilInfo.h:12
 TSPupilInfo.h:13
 TSPupilInfo.h:14
 TSPupilInfo.h:15
 TSPupilInfo.h:16
 TSPupilInfo.h:17
 TSPupilInfo.h:18
 TSPupilInfo.h:19
 TSPupilInfo.h:20
 TSPupilInfo.h:21
 TSPupilInfo.h:22
 TSPupilInfo.h:23
 TSPupilInfo.h:24
 TSPupilInfo.h:25
 TSPupilInfo.h:26
 TSPupilInfo.h:27
 TSPupilInfo.h:28
 TSPupilInfo.h:29
 TSPupilInfo.h:30
 TSPupilInfo.h:31
 TSPupilInfo.h:32
 TSPupilInfo.h:33
 TSPupilInfo.h:34
 TSPupilInfo.h:35
 TSPupilInfo.h:36
 TSPupilInfo.h:37
 TSPupilInfo.h:38
 TSPupilInfo.h:39
 TSPupilInfo.h:40
 TSPupilInfo.h:41
 TSPupilInfo.h:42
 TSPupilInfo.h:43
 TSPupilInfo.h:44
 TSPupilInfo.h:45
 TSPupilInfo.h:46
 TSPupilInfo.h:47
 TSPupilInfo.h:48
 TSPupilInfo.h:49
 TSPupilInfo.h:50
 TSPupilInfo.h:51
 TSPupilInfo.h:52
 TSPupilInfo.h:53
 TSPupilInfo.h:54
 TSPupilInfo.h:55
 TSPupilInfo.h:56
 TSPupilInfo.h:57
 TSPupilInfo.h:58
 TSPupilInfo.h:59
 TSPupilInfo.h:60
 TSPupilInfo.h:61
 TSPupilInfo.h:62
 TSPupilInfo.h:63
 TSPupilInfo.h:64
 TSPupilInfo.h:65
 TSPupilInfo.h:66
 TSPupilInfo.h:67
 TSPupilInfo.h:68
 TSPupilInfo.h:69
 TSPupilInfo.h:70
 TSPupilInfo.h:71
 TSPupilInfo.h:72
 TSPupilInfo.h:73
 TSPupilInfo.h:74
 TSPupilInfo.h:75
 TSPupilInfo.h:76
 TSPupilInfo.h:77
 TSPupilInfo.h:78
 TSPupilInfo.h:79
 TSPupilInfo.h:80
 TSPupilInfo.h:81
 TSPupilInfo.h:82
 TSPupilInfo.h:83
 TSPupilInfo.h:84
 TSPupilInfo.h:85
 TSPupilInfo.h:86
 TSPupilInfo.h:87
 TSPupilInfo.h:88
 TSPupilInfo.h:89
 TSPupilInfo.h:90
 TSPupilInfo.h:91
 TSPupilInfo.h:92
 TSPupilInfo.h:93
 TSPupilInfo.h:94
 TSPupilInfo.h:95
 TSPupilInfo.h:96
 TSPupilInfo.h:97
 TSPupilInfo.h:98
 TSPupilInfo.h:99
 TSPupilInfo.h:100
 TSPupilInfo.h:101
 TSPupilInfo.h:102
 TSPupilInfo.h:103
 TSPupilInfo.h:104
 TSPupilInfo.h:105
 TSPupilInfo.h:106
 TSPupilInfo.h:107