// $Header$
-#include "NLTBases.h"
-#include "Reve/NLTPolygonSet.h"
+#include <Reve/NLTPolygonSet.h>
+#include <Reve/NLTBases.h>
using namespace Reve;
//______________________________________________________________________________
// NLTProjectable
//
+// Abstract base-class for non-linear projectable objects. Creates TClass instance
+// for the projected class and keeps references to the projected objects.
+//
+// See also NLTProjector::ImportElements().
ClassImp(NLTProjectable)
//______________________________________________________________________________
NLTProjectable::NLTProjectable()
{
- // Default constructor.
+ // Comstructor.
}
//______________________________________________________________________________
//______________________________________________________________________________
// NLTProjected
//
+//
ClassImp(NLTProjected)
fProjectable (0),
fDepth (0)
{
- // Default constructor.
+ // Constructor.
}
//______________________________________________________________________________
class NLTProjected;
class NLTProjector;
+////////////////////////////////////////////////////////////////
+// //
+// NLTProjectable //
+// //
+// Abstract base class for non-linear projectable objects. //
+// //
+////////////////////////////////////////////////////////////////
+
class NLTProjectable
{
private:
NLTProjectable& operator=(const NLTProjectable&); // Not implemented
protected:
- // Eventually, references to all projected instances.
- std::list<NLTProjected*> fProjectedList;
+ std::list<NLTProjected*> fProjectedList; // references to projected instances.
public:
NLTProjectable();
virtual void AddProjected(NLTProjected* p) { fProjectedList.push_back(p); }
virtual void RemoveProjected(NLTProjected* p) { fProjectedList.remove(p); }
- ClassDef(NLTProjectable, 0);
+ ClassDef(NLTProjectable, 0); // Abstract base class for non-linear projectable objects.
}; // endclass NLTProjectable
-/**************************************************************************/
+////////////////////////////////////////////////////////////////
+// //
+// NLTProjected //
+// //
+// Abstract base class for non-linear projected objects. //
+// //
+////////////////////////////////////////////////////////////////
class NLTProjected
{
NLTProjected& operator=(const NLTProjected&); // Not implemented
protected:
- NLTProjector *fProjector;
- NLTProjectable *fProjectable;
-
- Float_t fDepth;
+ NLTProjector *fProjector; // manager
+ NLTProjectable *fProjectable; // link to original object
+ Float_t fDepth; // z coordinate
public:
NLTProjected();
virtual void UpdateProjection() = 0;
- ClassDef(NLTProjected, 0);
+ ClassDef(NLTProjected, 0); // Abstract base class for non-linear projected object.
}; // endclass NLTProjected
}
//______________________________________________________________________
// NLTProjectorEditor
//
+// GUI editor for class NLTProjector.
+//
ClassImp(NLTProjectorEditor)
- NLTProjectorEditor::NLTProjectorEditor(const TGWindow *p,
+NLTProjectorEditor::NLTProjectorEditor(const TGWindow *p,
Int_t width, Int_t height,
UInt_t options, Pixel_t back) :
TGedFrame(p, width, height, options | kVerticalFrame, back),
fSIMode(0),
fSILevel(0)
{
+ // Constructor.
+
MakeTitle("NLTProjection");
{
TGHorizontalFrame* f = new TGHorizontalFrame(this);
fCenterFrame->AddFrame(fCenterZ, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
}
-NLTProjectorEditor::~NLTProjectorEditor()
-{}
-
-/**************************************************************************/
-
+//______________________________________________________________________________
void NLTProjectorEditor::SetModel(TObject* obj)
{
+ // Set model object.
+
fM = dynamic_cast<NLTProjector*>(obj);
fAxisColor->SetColor(TColor::Number2Pixel(fM->GetAxisColor()), kFALSE);
fCenterZ->SetValue(fM->GetCenter().z);
}
-/**************************************************************************/
-
+//______________________________________________________________________________
void NLTProjectorEditor::DoType(Int_t type)
{
+ // Slot for setting of projection type.
+
fM->SetProjection((NLTProjection::PType_e)type, 0.001f * fDistortion->GetValue());
fM->ProjectChildren();
Update();
}
+//______________________________________________________________________________
void NLTProjectorEditor::DoDistortion()
{
+ // Slot for setting distortion.
+
fM->GetProjection()->SetDistortion(0.001f * fDistortion->GetValue());
fM->UpdateName();
fM->ProjectChildren();
Update();
}
-void NLTProjectorEditor::DoFixedRadius()
+//______________________________________________________________________________
+ void NLTProjectorEditor::DoFixedRadius()
{
+ // Slot for setting fixed radius.
+
fM->GetProjection()->SetFixedRadius(fFixedRadius->GetValue());
fM->ProjectChildren();
Update();
}
+//______________________________________________________________________________
void NLTProjectorEditor::DoCurrentDepth()
{
+ // Slot for setting current depth.
+
fM->SetCurrentDepth(fCurrentDepth->GetValue());
fM->ProjectChildren();
Update();
}
+//______________________________________________________________________________
void NLTProjectorEditor::DoCenter()
{
+ // Slot for setting center of distortion.
+
fM->SetCenter(fCenterX->GetValue(), fCenterY->GetValue(), fCenterZ->GetValue());
-
Update();
}
+//______________________________________________________________________________
void NLTProjectorEditor::DoDrawOrigin()
{
+ // Slot for setting draw of origin.
+
fM->SetDrawOrigin(fDrawOrigin->IsOn());
Update();
}
+//______________________________________________________________________________
void NLTProjectorEditor::DoDrawCenter()
{
+ // Slot for setting draw of center.
+
fM->SetDrawCenter(fDrawCenter->IsOn());
Update();
}
-/**************************************************************************/
+//______________________________________________________________________________
void NLTProjectorEditor::DoSplitInfoMode(Int_t type)
{
+ // Slot for setting split info mode.
+
fM->SetSplitInfoMode(type);
Update();
}
+//______________________________________________________________________________
void NLTProjectorEditor::DoSplitInfoLevel()
{
+ // Slot for setting tick-mark density.
+
fM->SetSplitInfoLevel((Int_t)fSILevel->GetNumber());
Update();
}
+//______________________________________________________________________________
void NLTProjectorEditor::DoAxisColor(Pixel_t pixel)
{
+ // Slot for setting axis color.
+
fM->SetAxisColor(Color_t(TColor::GetColor(pixel)));
Update();
}
NLTProjectorEditor& operator=(const NLTProjectorEditor&); // Not implemented
protected:
- NLTProjector *fM; // fModel dynamic-casted to NLTProjectorEditor
+ NLTProjector *fM; // fModel dynamic-casted to NLTProjectorEditor
- TGComboBox *fType;
- RGValuator *fDistortion;
- RGValuator *fFixedRadius;
- RGValuator *fCurrentDepth;
+ // projection
+ TGComboBox *fType;
+ RGValuator *fDistortion;
+ RGValuator *fFixedRadius;
+ RGValuator *fCurrentDepth;
- TGVerticalFrame *fCenterFrame;
+ // center
+ TGVerticalFrame *fCenterFrame; // Parent frame for projection center interface.
TGCheckButton *fDrawCenter;
TGCheckButton *fDrawOrigin;
RGValuator *fCenterX;
RGValuator *fCenterZ;
// axis
- TGColorSelect *fAxisColor;
- TGComboBox *fSIMode;
- TGNumberEntry *fSILevel;
+ TGColorSelect *fAxisColor;
+ TGComboBox *fSIMode;
+ TGNumberEntry *fSILevel;
public:
NLTProjectorEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30, UInt_t options = kChildFrame, Pixel_t back=GetDefaultFrameBackground());
- virtual ~NLTProjectorEditor();
+ virtual ~NLTProjectorEditor(){}
virtual void SetModel(TObject* obj);
+ // Declare callback/slot methods
+
void DoSplitInfoMode(Int_t type);
void DoSplitInfoLevel();
void DoAxisColor(Pixel_t pixel);
void DoDrawOrigin();
void DoCenter();
- ClassDef(NLTProjectorEditor, 0); // Editor for NLTProjector
+ ClassDef(NLTProjectorEditor, 0); // Editor for NLTProjector.
}; // endclass NLTProjectorEditor
}