]>
Commit | Line | Data |
---|---|---|
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 | ||
17 | class TGListTree; | |
18 | class TGListTreeItem; | |
19 | ||
20 | namespace Reve { | |
21 | ||
22 | class RenderElement | |
23 | { | |
24 | friend class RGTopFrame; | |
25 | ||
265ecb21 | 26 | RenderElement(const RenderElement&); // Not implemented |
27 | RenderElement& operator=(const RenderElement&); // Not implemented | |
28 | ||
dfb9c3e0 | 29 | public: |
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 | ||
57 | protected: | |
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 | |
69 | public: | |
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 | 133 | class RenderElementObjPtr : public RenderElement, |
134 | public TObject | |
092578a7 | 135 | { |
265ecb21 | 136 | RenderElementObjPtr(const RenderElementObjPtr&); // Not implemented |
137 | RenderElementObjPtr& operator=(const RenderElementObjPtr&); // Not implemented | |
138 | ||
092578a7 | 139 | protected: |
140 | TObject* fObject; | |
dfb9c3e0 | 141 | Bool_t fOwnObject; |
092578a7 | 142 | |
143 | public: | |
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 | ||
159 | class RenderElementListBase : public RenderElement | |
160 | { | |
161 | protected: | |
dfb9c3e0 | 162 | lpRE_t fChildren; |
5a5a1232 | 163 | |
164 | void PaintElements(Option_t* option=""); | |
165 | ||
166 | public: | |
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 | 192 | class RenderElementList : public RenderElementListBase, |
193 | public TNamed | |
5a5a1232 | 194 | { |
195 | protected: | |
196 | Color_t fColor; | |
dfb9c3e0 | 197 | Bool_t fDoColor; |
5a5a1232 | 198 | |
199 | public: | |
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 |