Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
REveCompound.hxx
Go to the documentation of this file.
1 // @(#)root/eve7:$Id$
2 // Author: Matevz Tadel 2007
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT7_REveCompound
13 #define ROOT7_REveCompound
14 
15 #include <ROOT/REveElement.hxx>
17 
18 namespace ROOT {
19 namespace Experimental {
20 
21 //==============================================================================
22 // REveCompound
23 // Container for managing compounds of EveElements.
24 //==============================================================================
25 
26 class REveCompound : public REveElement,
27  public REveProjectable
28 {
29 private:
30  REveCompound(const REveCompound &); // Not implemented
31  REveCompound &operator=(const REveCompound &); // Not implemented
32 
33 protected:
34  Short_t fCompoundOpen{0}; // If more than zero, tag new children as compound members.
35  Bool_t fDoColor{kFALSE};
36  Bool_t fDoTransparency{kFALSE};
37 
38 public:
39  REveCompound(const std::string& n = "REveCompound", const std::string& t = "",
40  Bool_t doColor = kTRUE, Bool_t doTransparency = kFALSE);
41  virtual ~REveCompound() {}
42 
43  void OpenCompound() { ++fCompoundOpen; }
44  void CloseCompound() { --fCompoundOpen; }
45  Bool_t IsCompoundOpen() const { return fCompoundOpen > 0; }
46 
47  void SetMainColor(Color_t color) override;
48  void SetMainTransparency(Char_t t) override;
49 
50  void AddElement(REveElement *el) override;
51  void RemoveElementLocal(REveElement *el) override;
52  void RemoveElementsLocal() override;
53 
54  void FillImpliedSelectedSet(Set_t &impSelSet) override;
55 
56  TClass *ProjectedClass(const REveProjection *p) const override;
57 };
58 
59 //==============================================================================
60 // REveCompoundProjected
61 // Projected EveCompund container.
62 //==============================================================================
63 
64 class REveCompoundProjected : public REveCompound,
65  public REveProjected
66 {
67 private:
68  REveCompoundProjected(const REveCompoundProjected &); // Not implemented
69  REveCompoundProjected &operator=(const REveCompoundProjected &); // Not implemented
70 
71 public:
72  REveCompoundProjected();
73  virtual ~REveCompoundProjected() {}
74 
75  virtual void SetMainColor(Color_t color);
76 
77  virtual void UpdateProjection() {}
78  virtual REveElement *GetProjectedAsElement() { return this; }
79 };
80 
81 } // namespace Experimental
82 } // namespace ROOT
83 
84 #endif