files.
#include "GeoNode.h"
#include <Reve/ReveManager.h>
-#include <Reve/NLTBases.h>
+#include <Reve/NLTPolygonSet.h>
#include "TGeoShapeExtract.h"
#include <TVirtualGeoPainter.h>
using namespace Reve;
+//______________________________________________________________________
+// GeoNodeRnrEl
+//
+
+ClassImp(GeoRnrEl)
+
+TClass* GeoRnrEl::ProjectedClass() const
+{
+ return NLTPolygonSet::Class();
+}
//______________________________________________________________________
// GeoNodeRnrEl
ClassImp(GeoNodeRnrEl)
GeoNodeRnrEl::GeoNodeRnrEl(TGeoNode* node) :
- RenderElement(),
+ GeoRnrEl(),
TObject(),
fNode(node)
{
fNode->GetVolume()->Draw(opt);
}
+/**************************************************************************/
+
+TBuffer3D* GeoNodeRnrEl::MakeBuffer3D()
+{
+ TGeoShape* shape = fNode->GetVolume()->GetShape();
+ if(shape == 0) return 0;
+
+ if(dynamic_cast<TGeoShapeAssembly*>(shape)){
+ // !!!! TGeoShapeAssembly makes a bad TBuffer3D
+ return 0;
+ }
+
+ printf("eoNodeRnrEl::MakeBuffer3D() \n");
+ TBuffer3D* buff = shape->MakeBuffer3D();
+ TGeoMatrix* mx = fNode->GetMatrix();
+ Int_t N = buff->NbPnts();
+ Double_t* pnts = buff->fPnts;
+ Double_t master[4];
+ for(Int_t i = 0; i<N; i++)
+ {
+ mx->LocalToMaster(&pnts[3*i], master);
+ pnts[3*i] = master[0];
+ pnts[3*i+1] = master[1];
+ pnts[3*i+2] = master[2];
+ }
+ return buff;
+}
/**************************************************************************/
//______________________________________________________________________
// GeoTopNodeRnrEl
void GeoTopNodeRnrEl::SetVisLevel(Int_t vislvl)
{
fVisLevel = vislvl;
- gReve->Redraw3D();
+ gReve->Redraw3D();
}
/**************************************************************************/
ClassImp(GeoShapeRnrEl)
GeoShapeRnrEl::GeoShapeRnrEl(const Text_t* name, const Text_t* title) :
- RenderElement (fColor),
+ GeoRnrEl(),
TNamed (name, title),
fHMTrans (),
fColor (0),
fTransparency (0),
fShape (0)
-{}
+{
+ fMainColorPtr = &fColor;
+}
GeoShapeRnrEl::~GeoShapeRnrEl()
{
{
Reve::ZTrans& mx = RefHMTrans();
Int_t N = buff->NbPnts();
- Double_t* pnts = buff->fPnts;
- for(Int_t k=0; k<N; k++)
+ Double_t* pnts = buff->fPnts;
+ for(Int_t k=0; k<N; k++)
{
mx.MultiplyIP(&pnts[3*k]);
}
namespace Reve {
-class GeoNodeRnrEl : public RenderElement,
+class GeoRnrEl : public RenderElement,
+ public NLTProjectable
+{
+ private:
+ GeoRnrEl(const GeoRnrEl&); // Not implemented
+ GeoRnrEl& operator=(const GeoRnrEl&); // Not implemented
+
+ public:
+ GeoRnrEl(){};
+ virtual ~GeoRnrEl() {};
+
+ virtual TBuffer3D* MakeBuffer3D() = 0;
+ virtual TClass* ProjectedClass() const;
+
+ ClassDef(GeoRnrEl, 1);
+};
+
+/**************************************************************************/
+/**************************************************************************/
+class GeoNodeRnrEl : public GeoRnrEl,
public TObject
{
friend class GeoNodeRnrElEditor;
void UpdateNode(TGeoNode* node);
void UpdateVolume(TGeoVolume* volume);
+ // NLTGeoProjectable
+ virtual TBuffer3D* MakeBuffer3D();
+
virtual void Draw(Option_t* option="");
ClassDef(GeoNodeRnrEl, 1);
TGeoManager* fManager;
ZTrans fGlobalTrans;
Int_t fVisOption;
- Int_t fVisLevel;
+ Int_t fVisLevel;
public:
GeoTopNodeRnrEl(TGeoManager* manager, TGeoNode* node, Int_t visopt=1, Int_t vislvl=3);
//----------------------------------------------------------------
//----------------------------------------------------------------
-class GeoShapeRnrEl : public RenderElement,
- public TNamed,
- public NLTGeoProjectable
+class GeoShapeRnrEl : public GeoRnrEl,
+ public TNamed
{
GeoShapeRnrEl(const GeoShapeRnrEl&); // Not implemented
GeoShapeRnrEl& operator=(const GeoShapeRnrEl&); // Not implemented
virtual Bool_t CanEditMainTransparency() { return kTRUE; }
virtual UChar_t GetMainTransparency() const { return fTransparency; }
- virtual void SetMainTransparency(UChar_t t) { fTransparency = t; }
+ virtual void SetMainTransparency(UChar_t t) { fTransparency = t; }
virtual Bool_t CanEditMainHMTrans() { return kTRUE; }
virtual ZTrans* PtrMainHMTrans() { return &fHMTrans; }
virtual void Paint(Option_t* option="");
static GeoShapeRnrEl* ImportShapeExtract(TGeoShapeExtract* gse, RenderElement* parent);
-
+
// NLTGeoProjectable
virtual TBuffer3D* MakeBuffer3D();
// Non-linear transformations
#pragma link C++ class Reve::NLTProjectable+;
-#pragma link C++ class Reve::NLTGeoProjectable+;
#pragma link C++ class Reve::NLTProjected+;
#pragma link C++ class Reve::NLTProjection+;
-//#pragma link C++ class Reve::PhiZ+;
#pragma link C++ class Reve::RhoZ+;
#pragma link C++ class Reve::CircularFishEye+;
#pragma link C++ class Reve::BoxSetGL+;
// GeoNode
+#pragma link C++ class Reve::GeoRnrEl+;
#pragma link C++ class Reve::GeoNodeRnrEl+;
#pragma link C++ class Reve::GeoTopNodeRnrEl+;
#pragma link C++ class Reve::GeoNodeRnrElEditor+;
}
}
-//______________________________________________________________________
-// NLTGeoProjectable
-//
-
-ClassImp(NLTGeoProjectable)
-
-NLTGeoProjectable::NLTGeoProjectable()
-{}
-
-TClass* NLTGeoProjectable::ProjectedClass() const
-{
- return NLTPolygonSet::Class();
-}
-
//______________________________________________________________________
// NLTProjected
//
if (fProjectable) {
fProjectable->RemoveProjected(this);
fProjectable = 0;
- }
+ }
}
ClassDef(NLTProjectable, 0);
}; // endclass NLTProjectable
-
-class NLTGeoProjectable : public NLTProjectable
-{
-private:
- NLTGeoProjectable(const NLTGeoProjectable&); // Not implemented
- NLTGeoProjectable& operator=(const NLTGeoProjectable&); // Not implemented
-
-public:
- NLTGeoProjectable();
- virtual ~NLTGeoProjectable() {}
-
- virtual TBuffer3D* MakeBuffer3D() = 0;
- virtual TClass* ProjectedClass() const;
-
- ClassDef(NLTGeoProjectable, 0);
-};
-
/**************************************************************************/
class NLTProjected