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