]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/Reve/NLTBases.cxx
a2f318e6d786c4d00c4bc62719e7c24b57c18bcf
[u/mrichter/AliRoot.git] / EVE / Reve / NLTBases.cxx
1 // $Header$
2
3 #include "NLTBases.h"
4 #include "Reve/NLTPolygonSet.h"
5
6 using namespace Reve;
7
8 //______________________________________________________________________
9 // NLTProjectable
10 //
11
12 ClassImp(NLTProjectable)
13
14 NLTProjectable::NLTProjectable()
15 {}
16
17 NLTProjectable::~NLTProjectable()
18 {
19   while ( ! fProjectedList.empty())
20   {
21     fProjectedList.front()->UnRefProjectable(this);
22   }
23 }
24
25 //______________________________________________________________________
26 // NLTGeoProjectable
27 //
28
29 ClassImp(NLTGeoProjectable)
30
31 NLTGeoProjectable::NLTGeoProjectable()
32 {}
33
34 TClass* NLTGeoProjectable::ProjectedClass() const
35 {
36    return NLTPolygonSet::Class();
37
38
39 //______________________________________________________________________
40 // NLTProjected
41 //
42
43 ClassImp(NLTProjected)
44
45 NLTProjected::NLTProjected() :
46   fProjector   (0),
47   fProjectable (0),
48   fDepth       (0)
49 {}
50
51 NLTProjected::~NLTProjected()
52 {
53   if (fProjectable) fProjectable->RemoveProjected(this);
54 }
55
56 void NLTProjected::SetProjection(NLTProjector* proj, NLTProjectable* model)
57 {
58   fProjector   = proj;
59   if (fProjectable) fProjectable->RemoveProjected(this);
60   fProjectable = model;
61   fProjectable->AddProjected(this);
62 }
63
64 void NLTProjected::UnRefProjectable(NLTProjectable* assumed_parent)
65 {
66   static const Exc_t eH("NLTProjected::UnRefProjectable ");
67
68   if (fProjectable != assumed_parent) {
69     Warning(eH, "mismatch between assumed and real model. This is a bug.");
70     assumed_parent->RemoveProjected(this);
71     return;
72   }
73
74   if (fProjectable) {
75     fProjectable->RemoveProjected(this);
76     fProjectable = 0;
77   } 
78 }