This commit was generated by cvs2svn to compensate for changes in r13732,
[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 protected:
27   // TRef     fSource;
28
29   Bool_t   fRnrElement;
30   Color_t* fMainColorPtr;
31
32   struct ListTreeInfo {
33     TGListTree*     fTree;
34     TGListTreeItem* fItem;
35
36     ListTreeInfo() {}
37     ListTreeInfo(TGListTree* lt, TGListTreeItem* lti) : fTree(lt), fItem(lti) {}
38     
39     bool operator==(const ListTreeInfo& x) const
40     { return fTree == x.fTree && fItem == x.fItem; }
41     bool operator<(const ListTreeInfo& x) const
42     { return fTree == x.fTree ? fItem < x.fItem : fTree < x.fTree; }
43
44     ClassDef(ListTreeInfo, 0);
45   };
46   typedef std::set<ListTreeInfo>           sLTI_t;
47   typedef std::set<ListTreeInfo>::iterator sLTI_i;
48
49   sLTI_t fItems;
50
51 public:
52   RenderElement();
53   RenderElement(Color_t& main_color);
54   virtual ~RenderElement() {}
55
56   TObject* GetObject(Reve::Exc_t eh="RenderElement::GetObject ");
57
58   /*
59     TRef&    GetSource() { return fSource; }
60     TObject* GetSourceObject() const { return fSource.GetObject(); }
61     void SetSourceObject(TObject* o) { fSource.SetObject(o); }
62
63     void DumpSourceObject();    // *MENU*
64     void InspectSourceObject(); // *MENU*
65   */
66
67   virtual TGListTreeItem* AddIntoListTree(TGListTree* ltree,
68                                           TGListTreeItem* parent);
69
70   virtual void FullUpdate();
71
72   void SpawnEditor();                  // *MENU*
73   void ExportToCINT(Text_t* var_name); // *MENU*
74
75   virtual Bool_t CanEditRnrElement()   { return true; }
76   virtual Bool_t GetRnrElement() const { return fRnrElement; }
77   virtual void   SetRnrElement(Bool_t rnr);
78
79   virtual Bool_t CanEditMainColor()        { return false; }
80   Color_t* GetMainColorPtr()               { return fMainColorPtr; }
81   void     SetMainColorPtr(Color_t* color) { fMainColorPtr = color; }
82
83   virtual Color_t GetMainColor() const { return fMainColorPtr ? *fMainColorPtr : 0; }
84   virtual void    SetMainColor(Color_t color);
85           void    SetMainColorByPixel(Pixel_t pixel);
86
87   ClassDef(RenderElement, 1);
88 }; // endclass Reve
89
90 /**************************************************************************/
91
92 class RenderElementListBase : public RenderElement
93 {
94 protected:
95   typedef std::list<RenderElement*>            lpRE_t;
96   typedef std::list<RenderElement*>::iterator  lpRE_i;
97
98   lpRE_t fList;
99
100   void PaintElements(Option_t* option="");
101
102 public:
103   RenderElementListBase() {}
104   RenderElementListBase(Color_t& col) : RenderElement(col) {}
105
106   virtual void AddElement(RenderElement* el) { fList.push_back(el); }
107
108   virtual Int_t ExpandIntoListTree(TGListTree* ltree, TGListTreeItem* parent);
109
110   void EnableListElements();   // *MENU*
111   void DisableListElements();  // *MENU*
112
113   virtual void SetMainColor(Color_t color);
114   virtual void SetMainColor(Pixel_t pixel);
115
116   ClassDef(RenderElementListBase, 1);
117 };
118
119 /**************************************************************************/
120
121 class RenderElementList : public TNamed, public RenderElementListBase
122 {
123 protected:
124   Color_t   fColor;
125
126 public:
127   RenderElementList(const Text_t* n="RenderElementList", const Text_t* t="") :
128     TNamed(n, t), RenderElementListBase(fColor), fColor(0)
129   {}
130
131   virtual Bool_t CanEditMainColor()  { return true; }
132
133   virtual void Paint(Option_t* option = "") { PaintElements(option); }
134
135   ClassDef(RenderElementList, 1);
136 };
137
138 }
139
140 #endif