]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/Reve/RenderElement.h
Fix effc++ warnings.
[u/mrichter/AliRoot.git] / EVE / Reve / RenderElement.h
1 // $Header$
2
3 #ifndef REVE_RenderElement_H
4 #define REVE_RenderElement_H
5
6 #include <Reve/Reve.h>
7
8 #include <TNamed.h>
9 #include <TRef.h>
10
11 #include <Gtypes.h>
12 #include <GuiTypes.h>
13
14 #include <list>
15 #include <set>
16
17 class TGListTree;
18 class TGListTreeItem;
19
20 namespace Reve {
21
22 class RenderElement
23 {
24   friend class RGTopFrame;
25
26   RenderElement(const RenderElement&);            // Not implemented
27   RenderElement& operator=(const RenderElement&); // Not implemented
28
29 public:
30   class ListTreeInfo
31   {
32   public:
33     TGListTree*     fTree;
34     TGListTreeItem* fItem;
35
36     ListTreeInfo() : fTree(0), fItem(0) {}
37     ListTreeInfo(TGListTree* lt, TGListTreeItem* lti) : fTree(lt), fItem(lti) {}
38     ListTreeInfo(const ListTreeInfo& l) : fTree(l.fTree), fItem(l.fItem) {}
39     virtual ~ListTreeInfo() {}
40
41     ListTreeInfo& operator=(const ListTreeInfo& l)
42     { fTree = l.fTree; fItem = l.fItem; return *this; }
43
44     bool operator==(const ListTreeInfo& x) const
45     { return fTree == x.fTree && fItem == x.fItem; }
46     bool operator<(const ListTreeInfo& x) const
47     { return fTree == x.fTree ? fItem < x.fItem : fTree < x.fTree; }
48
49     ClassDef(ListTreeInfo, 0);
50   };
51   typedef std::set<ListTreeInfo>               sLTI_t;
52   typedef std::set<ListTreeInfo>::iterator     sLTI_i;
53
54   typedef std::list<RenderElement*>            lpRE_t;
55   typedef std::list<RenderElement*>::iterator  lpRE_i;
56
57 protected:
58   // TRef     fSource;
59
60   Bool_t   fRnrElement;
61   Color_t* fMainColorPtr;
62
63   sLTI_t fItems;
64   lpRE_t fParents;
65
66   Bool_t fDestroyOnZeroRefCnt;
67   Bool_t fDenyDestroy;
68
69 public:
70   RenderElement();
71   RenderElement(Color_t& main_color);
72   virtual ~RenderElement();
73
74   virtual void AddParent(RenderElement* re);
75   virtual void RemoveParent(RenderElement* re);
76
77   Bool_t GetDestroyOnZeroRefCnt() const   { return fDestroyOnZeroRefCnt; }
78   void   SetDestroyOnZeroRefCnt(Bool_t d) { fDestroyOnZeroRefCnt = d; }
79
80   Bool_t GetDenyDestroy() const   { return fDenyDestroy; }
81   void   SetDenyDestroy(Bool_t d) { fDenyDestroy = d; }
82
83   virtual TObject* GetObject(Reve::Exc_t eh="RenderElement::GetObject ");
84
85   /*
86     TRef&    GetSource() { return fSource; }
87     TObject* GetSourceObject() const { return fSource.GetObject(); }
88     void SetSourceObject(TObject* o) { fSource.SetObject(o); }
89
90     void DumpSourceObject();    // *MENU*
91     void InspectSourceObject(); // *MENU*
92   */
93
94   virtual TGListTreeItem* AddIntoListTree(TGListTree* ltree,
95                                           TGListTreeItem* parent_lti);
96   virtual TGListTreeItem* AddIntoListTree(TGListTree* ltree,
97                                           RenderElement* parent);
98   virtual Bool_t          RemoveFromListTree(TGListTree* ltree);
99   virtual Bool_t          RemoveFromListTree(TGListTree* ltree,
100                                              TGListTreeItem* parent_lti);
101
102   virtual sLTI_i          FindItem(TGListTree* ltree);
103   virtual sLTI_i          FindItem(TGListTree* ltree,
104                                    TGListTreeItem* parent_lti);
105   virtual TGListTreeItem* FindListTreeItem(TGListTree* ltree);
106   virtual TGListTreeItem* FindListTreeItem(TGListTree* ltree,
107                                            TGListTreeItem* parent_lti);
108
109   virtual void UpdateItems();
110
111   void SpawnEditor();                  // *MENU*
112   void ExportToCINT(Text_t* var_name); // *MENU*
113
114   virtual void Destroy();              // *MENU*
115
116   virtual Bool_t CanEditRnrElement()   { return kTRUE; }
117   virtual Bool_t GetRnrElement() const { return fRnrElement; }
118   virtual void   SetRnrElement(Bool_t rnr);
119
120   virtual Bool_t CanEditMainColor()        { return kFALSE; }
121   Color_t* GetMainColorPtr()               { return fMainColorPtr; }
122   void     SetMainColorPtr(Color_t* color) { fMainColorPtr = color; }
123
124   virtual Color_t GetMainColor() const { return fMainColorPtr ? *fMainColorPtr : 0; }
125   virtual void    SetMainColor(Color_t color);
126           void    SetMainColor(Pixel_t pixel);
127
128   ClassDef(RenderElement, 1);
129 }; // endclass RenderElement
130
131 /**************************************************************************/
132
133 class RenderElementObjPtr : public RenderElement,
134                             public TObject
135 {
136   RenderElementObjPtr(const RenderElementObjPtr&);            // Not implemented
137   RenderElementObjPtr& operator=(const RenderElementObjPtr&); // Not implemented
138
139 protected:
140   TObject* fObject;
141   Bool_t   fOwnObject;
142
143 public:
144   RenderElementObjPtr(TObject* obj, Bool_t own=kTRUE);
145   RenderElementObjPtr(TObject* obj, Color_t& mainColor, Bool_t own=kTRUE);
146   virtual ~RenderElementObjPtr();
147
148   virtual TObject* GetObject(Exc_t eh="RenderElementObjPtr::GetObject ");
149
150   Bool_t GetOwnObject() const   { return fOwnObject; }
151   void   SetOwnObject(Bool_t o) { fOwnObject = o; }
152
153   ClassDef(RenderElementObjPtr, 1);
154 }; // endclass RenderElementObjPtr
155
156 /**************************************************************************/
157
158 class RenderElementListBase : public RenderElement
159 {
160 protected:
161   lpRE_t fChildren;
162
163   void PaintElements(Option_t* option="");
164
165 public:
166   RenderElementListBase() : RenderElement(), fChildren() {}
167   RenderElementListBase(Color_t& col) : RenderElement(col), fChildren() {}
168   virtual ~RenderElementListBase();
169
170   virtual void AddElement(RenderElement* el);
171   virtual void RemoveElement(RenderElement* el);
172   virtual void RemoveElementLocal(RenderElement* el);
173   virtual void RemoveElements();
174
175   virtual void DestroyElements();
176
177   virtual Int_t ExpandIntoListTree(TGListTree* ltree, TGListTreeItem* parent);
178   virtual Int_t DestroyListSubTree(TGListTree* ltree, TGListTreeItem* parent);
179
180   void EnableListElements();   // *MENU*
181   void DisableListElements();  // *MENU*
182
183   virtual void SetMainColor(Color_t color);
184   virtual void SetMainColor(Pixel_t pixel);
185
186   ClassDef(RenderElementListBase, 1);
187 };
188
189 /**************************************************************************/
190
191 class RenderElementList : public RenderElementListBase,
192                           public TNamed
193 {
194 protected:
195   Color_t   fColor;
196   Bool_t    fDoColor;
197
198 public:
199   RenderElementList(const Text_t* n="RenderElementList", const Text_t* t="",
200                     Bool_t doColor=kFALSE);
201   virtual ~RenderElementList() {}
202
203   virtual Bool_t CanEditMainColor()  { return fDoColor; }
204
205   virtual void Paint(Option_t* option = "") { PaintElements(option); }
206
207   ClassDef(RenderElementList, 1);
208 };
209
210 }
211
212 #endif