3 #ifndef REVE_RenderElement_H
4 #define REVE_RenderElement_H
18 friend class RGTopFrame;
20 RenderElement(const RenderElement&); // Not implemented
21 RenderElement& operator=(const RenderElement&); // Not implemented
28 TGListTreeItem* fItem;
30 ListTreeInfo() : fTree(0), fItem(0) {}
31 ListTreeInfo(TGListTree* lt, TGListTreeItem* lti) : fTree(lt), fItem(lti) {}
32 ListTreeInfo(const ListTreeInfo& l) : fTree(l.fTree), fItem(l.fItem) {}
33 virtual ~ListTreeInfo() {}
35 ListTreeInfo& operator=(const ListTreeInfo& l)
36 { fTree = l.fTree; fItem = l.fItem; return *this; }
38 bool operator==(const ListTreeInfo& x) const
39 { return fTree == x.fTree && fItem == x.fItem; }
40 bool operator<(const ListTreeInfo& x) const
41 { return fTree == x.fTree ? fItem < x.fItem : fTree < x.fTree; }
43 ClassDef(ListTreeInfo, 0);
45 typedef std::set<ListTreeInfo> sLTI_t;
46 typedef std::set<ListTreeInfo>::iterator sLTI_i;
48 typedef std::list<RenderElement*> List_t;
49 typedef std::list<RenderElement*>::iterator List_i;
55 Color_t* fMainColorPtr;
60 Bool_t fDestroyOnZeroRefCnt;
65 RenderElement(Color_t& main_color);
66 virtual ~RenderElement();
68 virtual void AddParent(RenderElement* re);
69 virtual void RemoveParent(RenderElement* re);
71 List_i BeginParents() { return fParents.begin(); }
72 List_i EndParents() { return fParents.end(); }
73 Int_t GetNParents() const { return fParents.size(); }
76 Bool_t GetDestroyOnZeroRefCnt() const { return fDestroyOnZeroRefCnt; }
77 void SetDestroyOnZeroRefCnt(Bool_t d) { fDestroyOnZeroRefCnt = d; }
79 Bool_t GetDenyDestroy() const { return fDenyDestroy; }
80 void SetDenyDestroy(Bool_t d) { fDenyDestroy = d; }
82 virtual TObject* GetObject(Reve::Exc_t eh="RenderElement::GetObject ");
85 TRef& GetSource() { return fSource; }
86 TObject* GetSourceObject() const { return fSource.GetObject(); }
87 void SetSourceObject(TObject* o) { fSource.SetObject(o); }
89 void DumpSourceObject(); // *MENU*
90 void InspectSourceObject(); // *MENU*
93 virtual TGListTreeItem* AddIntoListTree(TGListTree* ltree,
94 TGListTreeItem* parent_lti);
95 virtual TGListTreeItem* AddIntoListTree(TGListTree* ltree,
96 RenderElement* parent);
97 virtual Bool_t RemoveFromListTree(TGListTree* ltree);
98 virtual Bool_t RemoveFromListTree(TGListTree* ltree,
99 TGListTreeItem* parent_lti);
101 virtual sLTI_i FindItem(TGListTree* ltree);
102 virtual sLTI_i FindItem(TGListTree* ltree,
103 TGListTreeItem* parent_lti);
104 virtual TGListTreeItem* FindListTreeItem(TGListTree* ltree);
105 virtual TGListTreeItem* FindListTreeItem(TGListTree* ltree,
106 TGListTreeItem* parent_lti);
108 virtual void UpdateItems();
110 void SpawnEditor(); // *MENU*
111 virtual void ExportToCINT(Text_t* var_name); // *MENU*
113 virtual void Destroy(); // *MENU*
115 virtual Bool_t CanEditRnrElement() { return kTRUE; }
116 virtual Bool_t GetRnrElement() const { return fRnrElement; }
117 virtual void SetRnrElement(Bool_t rnr);
119 virtual Bool_t CanEditMainColor() { return kFALSE; }
120 Color_t* GetMainColorPtr() { return fMainColorPtr; }
121 void SetMainColorPtr(Color_t* color) { fMainColorPtr = color; }
123 virtual Color_t GetMainColor() const { return fMainColorPtr ? *fMainColorPtr : 0; }
124 virtual void SetMainColor(Color_t color);
125 void SetMainColor(Pixel_t pixel);
127 ClassDef(RenderElement, 1);
128 }; // endclass RenderElement
130 /**************************************************************************/
132 class RenderElementObjPtr : public RenderElement,
135 RenderElementObjPtr(const RenderElementObjPtr&); // Not implemented
136 RenderElementObjPtr& operator=(const RenderElementObjPtr&); // Not implemented
143 RenderElementObjPtr(TObject* obj, Bool_t own=kTRUE);
144 RenderElementObjPtr(TObject* obj, Color_t& mainColor, Bool_t own=kTRUE);
145 virtual ~RenderElementObjPtr();
147 virtual TObject* GetObject(Exc_t eh="RenderElementObjPtr::GetObject ");
148 virtual void ExportToCINT(Text_t* var_name);
150 Bool_t GetOwnObject() const { return fOwnObject; }
151 void SetOwnObject(Bool_t o) { fOwnObject = o; }
153 ClassDef(RenderElementObjPtr, 1);
154 }; // endclass RenderElementObjPtr
156 /**************************************************************************/
158 class RenderElementListBase : public RenderElement
163 void PaintElements(Option_t* option="");
166 RenderElementListBase() : RenderElement(), fChildren() {}
167 RenderElementListBase(Color_t& col) : RenderElement(col), fChildren() {}
168 virtual ~RenderElementListBase();
170 virtual void AddElement(RenderElement* el);
171 virtual void RemoveElement(RenderElement* el);
172 virtual void RemoveElementLocal(RenderElement* el);
173 virtual void RemoveElements();
175 virtual void DestroyElements();
177 List_i BeginChildren() { return fChildren.begin(); }
178 List_i EndChildren() { return fChildren.end(); }
179 Int_t GetNChildren() const { return fChildren.size(); }
181 virtual Int_t ExpandIntoListTree(TGListTree* ltree, TGListTreeItem* parent);
182 virtual Int_t DestroyListSubTree(TGListTree* ltree, TGListTreeItem* parent);
184 void EnableListElements(); // *MENU*
185 void DisableListElements(); // *MENU*
187 virtual void SetMainColor(Color_t color);
188 virtual void SetMainColor(Pixel_t pixel);
190 ClassDef(RenderElementListBase, 1);
193 /**************************************************************************/
195 class RenderElementList : public RenderElementListBase,
203 RenderElementList(const Text_t* n="RenderElementList", const Text_t* t="",
204 Bool_t doColor=kFALSE);
205 virtual ~RenderElementList() {}
207 virtual Bool_t CanEditMainColor() { return fDoColor; }
209 virtual void Paint(Option_t* option = "") { PaintElements(option); }
211 ClassDef(RenderElementList, 1);