]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/Reve/RenderElement.h
Merge from EVE-dev to HEAD.
[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
11#include <Gtypes.h>
12#include <GuiTypes.h>
13
14#include <list>
15#include <set>
16
17class TGListTree;
18class TGListTreeItem;
19
20namespace Reve {
21
22class RenderElement
23{
24 friend class RGTopFrame;
25
265ecb21 26 RenderElement(const RenderElement&); // Not implemented
27 RenderElement& operator=(const RenderElement&); // Not implemented
28
dfb9c3e0 29public:
265ecb21 30 class ListTreeInfo
31 {
32 public:
5a5a1232 33 TGListTree* fTree;
34 TGListTreeItem* fItem;
35
265ecb21 36 ListTreeInfo() : fTree(0), fItem(0) {}
5a5a1232 37 ListTreeInfo(TGListTree* lt, TGListTreeItem* lti) : fTree(lt), fItem(lti) {}
265ecb21 38 ListTreeInfo(const ListTreeInfo& l) : fTree(l.fTree), fItem(l.fItem) {}
a8b53f69 39 virtual ~ListTreeInfo() {}
40
265ecb21 41 ListTreeInfo& operator=(const ListTreeInfo& l)
42 { fTree = l.fTree; fItem = l.fItem; return *this; }
43
5a5a1232 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 };
dfb9c3e0 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
57protected:
58 // TRef fSource;
59
60 Bool_t fRnrElement;
61 Color_t* fMainColorPtr;
5a5a1232 62
63 sLTI_t fItems;
dfb9c3e0 64 lpRE_t fParents;
65
66 Bool_t fDestroyOnZeroRefCnt;
67 Bool_t fDenyDestroy;
5a5a1232 68
69public:
70 RenderElement();
71 RenderElement(Color_t& main_color);
a87df773 72 virtual ~RenderElement();
5a5a1232 73
dfb9c3e0 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
092578a7 83 virtual TObject* GetObject(Reve::Exc_t eh="RenderElement::GetObject ");
5a5a1232 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,
dfb9c3e0 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);
5a5a1232 108
dfb9c3e0 109 virtual void UpdateItems();
5a5a1232 110
a8600b56 111 void SpawnEditor(); // *MENU*
112 virtual void ExportToCINT(Text_t* var_name); // *MENU*
5a5a1232 113
a8600b56 114 virtual void Destroy(); // *MENU*
dfb9c3e0 115
a87df773 116 virtual Bool_t CanEditRnrElement() { return kTRUE; }
5a5a1232 117 virtual Bool_t GetRnrElement() const { return fRnrElement; }
118 virtual void SetRnrElement(Bool_t rnr);
119
a87df773 120 virtual Bool_t CanEditMainColor() { return kFALSE; }
5a5a1232 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);
08a6202f 126 void SetMainColor(Pixel_t pixel);
5a5a1232 127
128 ClassDef(RenderElement, 1);
092578a7 129}; // endclass RenderElement
130
131/**************************************************************************/
132
dfb9c3e0 133class RenderElementObjPtr : public RenderElement,
134 public TObject
092578a7 135{
265ecb21 136 RenderElementObjPtr(const RenderElementObjPtr&); // Not implemented
137 RenderElementObjPtr& operator=(const RenderElementObjPtr&); // Not implemented
138
092578a7 139protected:
140 TObject* fObject;
dfb9c3e0 141 Bool_t fOwnObject;
092578a7 142
143public:
dfb9c3e0 144 RenderElementObjPtr(TObject* obj, Bool_t own=kTRUE);
145 RenderElementObjPtr(TObject* obj, Color_t& mainColor, Bool_t own=kTRUE);
092578a7 146 virtual ~RenderElementObjPtr();
147
dfb9c3e0 148 virtual TObject* GetObject(Exc_t eh="RenderElementObjPtr::GetObject ");
a8600b56 149 virtual void ExportToCINT(Text_t* var_name);
092578a7 150
dfb9c3e0 151 Bool_t GetOwnObject() const { return fOwnObject; }
152 void SetOwnObject(Bool_t o) { fOwnObject = o; }
092578a7 153
154 ClassDef(RenderElementObjPtr, 1);
155}; // endclass RenderElementObjPtr
5a5a1232 156
157/**************************************************************************/
158
159class RenderElementListBase : public RenderElement
160{
161protected:
dfb9c3e0 162 lpRE_t fChildren;
5a5a1232 163
164 void PaintElements(Option_t* option="");
165
166public:
265ecb21 167 RenderElementListBase() : RenderElement(), fChildren() {}
168 RenderElementListBase(Color_t& col) : RenderElement(col), fChildren() {}
dfb9c3e0 169 virtual ~RenderElementListBase();
5a5a1232 170
dfb9c3e0 171 virtual void AddElement(RenderElement* el);
172 virtual void RemoveElement(RenderElement* el);
173 virtual void RemoveElementLocal(RenderElement* el);
174 virtual void RemoveElements();
5a5a1232 175
a11f38da 176 virtual void DestroyElements();
177
5a5a1232 178 virtual Int_t ExpandIntoListTree(TGListTree* ltree, TGListTreeItem* parent);
dfb9c3e0 179 virtual Int_t DestroyListSubTree(TGListTree* ltree, TGListTreeItem* parent);
5a5a1232 180
181 void EnableListElements(); // *MENU*
182 void DisableListElements(); // *MENU*
183
184 virtual void SetMainColor(Color_t color);
185 virtual void SetMainColor(Pixel_t pixel);
186
187 ClassDef(RenderElementListBase, 1);
188};
189
190/**************************************************************************/
191
dfb9c3e0 192class RenderElementList : public RenderElementListBase,
193 public TNamed
5a5a1232 194{
195protected:
196 Color_t fColor;
dfb9c3e0 197 Bool_t fDoColor;
5a5a1232 198
199public:
dfb9c3e0 200 RenderElementList(const Text_t* n="RenderElementList", const Text_t* t="",
201 Bool_t doColor=kFALSE);
a8b53f69 202 virtual ~RenderElementList() {}
5a5a1232 203
dfb9c3e0 204 virtual Bool_t CanEditMainColor() { return fDoColor; }
5a5a1232 205
206 virtual void Paint(Option_t* option = "") { PaintElements(option); }
207
208 ClassDef(RenderElementList, 1);
209};
210
211}
212
213#endif