Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TStructNodeProperty.cxx
Go to the documentation of this file.
1 // @(#)root/gviz3d:$Id$
2 // Author: Tomasz Sosnicki 18/09/09
3 
4 /************************************************************************
5 * Copyright (C) 1995-2009, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11 
12 #include "TStructNodeProperty.h"
13 #include <TROOT.h>
14 #include <TClass.h>
15 
16 ClassImp(TStructNodeProperty);
17 
18 //________________________________________________________________________
19 //////////////////////////////////////////////////////////////////////////
20 //
21 // TStructNodeProperty class keeps a color for type
22 //
23 //
24 //
25 //
26 //
27 //////////////////////////////////////////////////////////////////////////
28 
29 ////////////////////////////////////////////////////////////////////////////////
30 /// Contructs a TStructNodeProperty with p as parent window for class "name" with color "color".
31 
32 TStructNodeProperty::TStructNodeProperty(const char * name, Int_t color)
33 {
34  SetName(name);
35  SetColor(color);
36 }
37 
38 ////////////////////////////////////////////////////////////////////////////////
39 /// Contructs a TStructNodeProperty with p as parent window for class "name" with color "pixel".
40 
41 TStructNodeProperty::TStructNodeProperty(const char * name, Pixel_t pixel)
42 {
43  SetName(name);
44  SetColor(pixel);
45 }
46 
47 ////////////////////////////////////////////////////////////////////////////////
48 /// Destructor
49 
50 TStructNodeProperty::~TStructNodeProperty()
51 {
52 }
53 
54 ////////////////////////////////////////////////////////////////////////////////
55 /// Overrided method. Compare two objects of TStructNodeProperty class
56 
57 Int_t TStructNodeProperty::Compare(const TObject* obj) const
58 {
59 
60  // Default color "+" should be at the end.
61  if (fName == "+") {
62  return 1;
63  }
64  TStructNodeProperty* prop = (TStructNodeProperty*)obj;
65  TString propName(prop->GetName());
66  if (propName == "+") {
67  return -1;
68  }
69 
70  TClass* cl1;
71  if (fName.EndsWith("+")) {
72  cl1 = TClass::GetClass(TString(fName.Data(), fName.Length()-1).Data());
73  } else {
74  cl1 = TClass::GetClass(fName.Data());
75  }
76 
77  TClass* cl2;
78 
79  if (propName.EndsWith("+")) {
80  cl2 = TClass::GetClass(TString(propName.Data(), propName.Length()-1).Data());
81  } else {
82  cl2 = TClass::GetClass(prop->GetName());
83  }
84 
85  if(!cl1) {
86  return -1;
87  }
88  if(!cl2) {
89  return -1;
90  }
91 
92  if(cl1->InheritsFrom(cl2)) {
93  return -1;
94  }
95  if(cl2->InheritsFrom(cl1)) {
96  return 1;
97  }
98 
99  if(this > prop) {
100  return 1;
101  }
102  if(this < prop) {
103  return -1;
104  }
105 
106  return 0;
107 }
108 
109 ////////////////////////////////////////////////////////////////////////////////
110 /// Returns color of class
111 
112 TColor TStructNodeProperty::GetColor() const
113 {
114  return fColor;
115 }
116 
117 ////////////////////////////////////////////////////////////////////////////////
118 /// Return color in Pixel_t format
119 
120 Pixel_t TStructNodeProperty::GetPixel() const
121 {
122  return fColor.GetPixel();
123 }
124 
125 ////////////////////////////////////////////////////////////////////////////////
126 /// Retruns true, because we have overrided method Compare
127 
128 Bool_t TStructNodeProperty::IsSortable() const
129 {
130  return true;
131 }
132 
133 ////////////////////////////////////////////////////////////////////////////////
134 /// Sets the color to "color"
135 
136 void TStructNodeProperty::SetColor(const TColor & color)
137 {
138  fColor = color;
139 }
140 
141 ////////////////////////////////////////////////////////////////////////////////
142 /// Sets the color to "color"
143 
144 void TStructNodeProperty::SetColor(Int_t color)
145 {
146  fColor = *(gROOT->GetColor(color));
147 }
148 
149 ////////////////////////////////////////////////////////////////////////////////
150 /// Sets the color to "pixel"
151 
152 void TStructNodeProperty::SetColor(Pixel_t pixel)
153 {
154  SetColor(TColor::GetColor(pixel));
155 }