/usr/include/root/TEveProjectionBases.h is in libroot-graf3d-eve-dev 5.34.19+dfsg-1.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | // @(#)root/eve:$Id$
// Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
/*************************************************************************
* Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
#ifndef ROOT_TEveProjectionBases
#define ROOT_TEveProjectionBases
#include "Rtypes.h"
#include <list>
#include <set>
class TEveElement;
class TEveProjection;
class TEveProjected;
class TEveProjectionManager;
class TClass;
////////////////////////////////////////////////////////////////
// //
// TEveProjectable //
// //
// Abstract base class for non-linear projectable objects. //
// //
////////////////////////////////////////////////////////////////
class TEveProjectable
{
private:
TEveProjectable(const TEveProjectable&); // Not implemented
TEveProjectable& operator=(const TEveProjectable&); // Not implemented
public:
typedef std::list<TEveProjected*> ProjList_t;
typedef std::list<TEveProjected*>::iterator ProjList_i;
protected:
ProjList_t fProjectedList; // references to projected instances.
public:
TEveProjectable();
virtual ~TEveProjectable();
virtual TClass* ProjectedClass(const TEveProjection* p) const = 0;
virtual Bool_t HasProjecteds() const { return ! fProjectedList.empty(); }
ProjList_i BeginProjecteds() { return fProjectedList.begin(); }
ProjList_i EndProjecteds() { return fProjectedList.end(); }
virtual void AddProjected(TEveProjected* p) { fProjectedList.push_back(p); }
virtual void RemoveProjected(TEveProjected* p) { fProjectedList.remove(p); }
virtual void AnnihilateProjecteds();
virtual void ClearProjectedList();
virtual void AddProjectedsToSet(std::set<TEveElement*>& set);
virtual void PropagateVizParams(TEveElement* el=0);
virtual void PropagateRenderState(Bool_t rnr_self, Bool_t rnr_children);
virtual void PropagateMainColor(Color_t color, Color_t old_color);
virtual void PropagateMainTransparency(Char_t t, Char_t old_t);
ClassDef(TEveProjectable, 0); // Abstract base class for classes that can be transformed with non-linear projections.
};
////////////////////////////////////////////////////////////////
// //
// TEveProjected //
// //
// Abstract base class for non-linear projected objects. //
// //
////////////////////////////////////////////////////////////////
class TEveProjected
{
private:
TEveProjected(const TEveProjected&); // Not implemented
TEveProjected& operator=(const TEveProjected&); // Not implemented
protected:
TEveProjectionManager *fManager; // manager
TEveProjectable *fProjectable; // link to original object
Float_t fDepth; // z coordinate
void SetDepthCommon(Float_t d, TEveElement* el, Float_t* bbox);
virtual void SetDepthLocal(Float_t d);
public:
TEveProjected();
virtual ~TEveProjected();
TEveProjectionManager* GetManager() const { return fManager; }
TEveProjectable* GetProjectable() const { return fProjectable; }
Float_t GetDepth() const { return fDepth; }
virtual void SetProjection(TEveProjectionManager* mng, TEveProjectable* model);
virtual void UnRefProjectable(TEveProjectable* assumed_parent, bool notifyParent = true);
virtual void UpdateProjection() = 0;
virtual TEveElement* GetProjectedAsElement();
virtual void SetDepth(Float_t d);
ClassDef(TEveProjected, 0); // Abstract base class for classes that hold results of a non-linear projection transformation.
};
#endif
|