// @(#)root/eve:$Id: TEveCompound.h 24004 2008-05-24 20:08:56Z matevz $
// Author: Matevz Tadel 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.             *
 *************************************************************************/

#ifndef ROOT_TEveCompound
#define ROOT_TEveCompound

#include "TEveElement.h"
#include "TEveProjectionBases.h"


//==============================================================================
// TEveCompound
//==============================================================================

class TEveCompound : public TEveElementList,
                     public TEveProjectable
{
private:
   TEveCompound(const TEveCompound&);            // Not implemented
   TEveCompound& operator=(const TEveCompound&); // Not implemented

protected:
   Short_t  fCompoundOpen; // If more than zero, tag new children as compound members.

public:
   TEveCompound(const Text_t* n="TEveCompound", const Text_t* t="",
                Bool_t doColor=kTRUE);
   virtual ~TEveCompound() {}

   void   OpenCompound()         { ++fCompoundOpen;  }
   void   CloseCompound()        { --fCompoundOpen; }
   Bool_t IsCompoundOpen() const { return fCompoundOpen > 0; }

   virtual void SetMainColor(Color_t color);

   virtual void AddElement(TEveElement* el);
   virtual void RemoveElementLocal(TEveElement* el);
   virtual void RemoveElementsLocal();

   virtual void FillImpliedSelectedSet(Set_t& impSelSet);

   virtual TClass* ProjectedClass() const;

   ClassDef(TEveCompound, 0); // Container for managing compounds of TEveElements.
};


//==============================================================================
// TEveCompoundProjected
//==============================================================================

class TEveCompoundProjected : public TEveCompound,
                              public TEveProjected
{
private:
   TEveCompoundProjected(const TEveCompoundProjected&);            // Not implemented
   TEveCompoundProjected& operator=(const TEveCompoundProjected&); // Not implemented

protected:

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

   virtual void SetMainColor(Color_t color);

   // Abstract from TEveProjected, we seem not to care.
   virtual void SetDepth(Float_t /*d*/) {}
   virtual void UpdateProjection()      {}

   ClassDef(TEveCompoundProjected, 0); // Projected TEveCompund container.
};

#endif

Last change: Wed Jun 25 08:36:43 2008
Last generated: 2008-06-25 08:36

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.