Logo ROOT   master
Reference Guide
TEveStraightLineSet.h
Go to the documentation of this file.
1 // @(#)root/eve:$Id$
2 // Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2007, 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 #ifndef ROOT_TEveStraightLineSet
13 #define ROOT_TEveStraightLineSet
14 
15 #include "TEveUtil.h"
16 
17 #include "TNamed.h"
18 #include "TQObject.h"
19 #include "TAtt3D.h"
20 #include "TAttMarker.h"
21 #include "TAttLine.h"
22 #include "TAttBBox.h"
23 
24 #include "TEveElement.h"
25 #include "TEveProjectionBases.h"
26 #include "TEveChunkManager.h"
27 #include "TEveTrans.h"
28 
29 class TRandom;
30 
32  public TEveProjectable,
33  public TNamed,
34  public TQObject,
35  public TAtt3D,
36  public TAttLine,
37  public TAttMarker,
38  public TAttBBox
39 {
40 private:
41  TEveStraightLineSet(const TEveStraightLineSet&); // Not implemented
42  TEveStraightLineSet& operator=(const TEveStraightLineSet&); // Not implemented
43 
44 public:
45  struct Line_t
46  {
51 
53  Float_t x2, Float_t y2, Float_t z2) : fId(-1), fRef()
54  {
55  fV1[0] = x1, fV1[1] = y1, fV1[2] = z1;
56  fV2[0] = x2, fV2[1] = y2, fV2[2] = z2;
57  }
58  };
59 
60  struct Marker_t
61  {
62  Float_t fV[3];
65 
66  Marker_t(Float_t x, Float_t y, Float_t z, Int_t line_id) : fLineId(line_id), fRef()
67  {
68  fV[0] = x, fV[1] = y, fV[2] = z;
69  }
70  };
71 
72 protected:
75 
76  Bool_t fOwnLinesIds; // Flag specifying if id-objects are owned by the line-set
77  Bool_t fOwnMarkersIds; // Flag specifying if id-objects are owned by the line-set
78 
81 
83 
85 
86 public:
87  TEveStraightLineSet(const char* n="StraightLineSet", const char* t="");
88  virtual ~TEveStraightLineSet() {}
89 
90  virtual void SetLineColor(Color_t col) { SetMainColor(col); }
91 
92  Line_t* AddLine(Float_t x1, Float_t y1, Float_t z1, Float_t x2, Float_t y2, Float_t z2);
93  Line_t* AddLine(const TEveVector& p1, const TEveVector& p2);
94  Marker_t* AddMarker(Float_t x, Float_t y, Float_t z, Int_t line_id=-1);
95  Marker_t* AddMarker(const TEveVector& p, Int_t line_id=-1);
96  Marker_t* AddMarker(Int_t line_id, Float_t pos);
97 
98  void SetLine(int idx, Float_t x1, Float_t y1, Float_t z1, Float_t x2, Float_t y2, Float_t z2);
99  void SetLine(int idx, const TEveVector& p1, const TEveVector& p2);
100 
103 
104  virtual Bool_t GetRnrMarkers() { return fRnrMarkers; }
105  virtual Bool_t GetRnrLines() { return fRnrLines; }
106  virtual Bool_t GetDepthTest() { return fDepthTest; }
107 
108  virtual void SetRnrMarkers(Bool_t x) { fRnrMarkers = x; }
109  virtual void SetRnrLines(Bool_t x) { fRnrLines = x; }
110  virtual void SetDepthTest(Bool_t x) { fDepthTest = x; }
111 
112  virtual void CopyVizParams(const TEveElement* el);
113  virtual void WriteVizParams(std::ostream& out, const TString& var);
114 
115  virtual TClass* ProjectedClass(const TEveProjection* p) const;
116 
117  virtual void ComputeBBox();
118  virtual void Paint(Option_t* option="");
119 
120  ClassDef(TEveStraightLineSet, 0); // Set of straight lines with optional markers along the lines.
121 };
122 
123 
124 /******************************************************************************/
125 
127  public TEveProjected
128 {
129 private:
132 
133 protected:
134  virtual void SetDepthLocal(Float_t d);
135 
136 public:
139 
140  virtual void SetProjection(TEveProjectionManager* mng, TEveProjectable* model);
141  virtual void UpdateProjection();
142  virtual TEveElement* GetProjectedAsElement() { return this; }
143 
144  ClassDef(TEveStraightLineSetProjected, 0); // Projected copy of a TEveStraightLineSet.
145 };
146 
147 #endif
Abstract base class for classes that hold results of a non-linear projection transformation.
virtual void SetProjection(TEveProjectionManager *mng, TEveProjectable *model)
Set projection manager and model object.
virtual Bool_t GetDepthTest()
virtual TClass * ProjectedClass(const TEveProjection *p) const
Return class of projected object.
virtual TEveElement * GetProjectedAsElement()
Returns this projected dynamic-casted to TEveElement.
virtual void SetDepthLocal(Float_t d)
Set depth (z-coordinate) of the projected points.
float Float_t
Definition: RtypesCore.h:55
virtual void UpdateProjection()
Callback that actually performs the projection.
const char Option_t
Definition: RtypesCore.h:64
Line_t(Float_t x1, Float_t y1, Float_t z1, Float_t x2, Float_t y2, Float_t z2)
TEveChunkManager fLinePlex
Use this attribute class when an object should have 3D capabilities.
Definition: TAtt3D.h:19
virtual void SetDepthTest(Bool_t x)
This is the ROOT implementation of the Qt object communication mechanism (see also http://www...
Definition: TQObject.h:48
virtual void Paint(Option_t *option="")
Paint the line-set.
Basic string class.
Definition: TString.h:131
virtual void SetRnrLines(Bool_t x)
int Int_t
Definition: RtypesCore.h:43
virtual void SetRnrMarkers(Bool_t x)
TEveChunkManager & GetLinePlex()
Marker Attributes class.
Definition: TAttMarker.h:19
Persistent Reference link to a TObject A TRef is a lightweight object pointing to any TObject...
Definition: TRef.h:32
static const double x2[5]
Double_t x[n]
Definition: legend1.C:17
#define ClassDef(name, id)
Definition: Rtypes.h:322
This is the base class for the ROOT Random number generators.
Definition: TRandom.h:27
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
virtual void SetLineColor(Color_t col)
Set the line color.
Base-class for non-linear projections.
short Marker_t
Definition: RtypesCore.h:79
Projected replica of a TEveStraightLineSet.
Manager class for steering of projections and managing projected objects.
short Color_t
Definition: RtypesCore.h:81
TEveChunkManager & GetMarkerPlex()
TEveStraightLineSet & operator=(const TEveStraightLineSet &)
Abstract base-class for non-linear projectable objects.
virtual void WriteVizParams(std::ostream &out, const TString &var)
Write visualization parameters.
TEveStraightLineSet(const TEveStraightLineSet &)
virtual void CopyVizParams(const TEveElement *el)
Copy visualization parameters from element el.
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:80
Vector-like container with chunked memory allocation.
virtual void SetMainColor(Color_t color)
Set main color of the element.
#define d(i)
Definition: RSha256.hxx:102
static const double x1[5]
TEveChunkManager fMarkerPlex
TEveStraightLineSetProjected & operator=(const TEveStraightLineSetProjected &)
Double_t y[n]
Definition: legend1.C:17
Marker_t * AddMarker(Float_t x, Float_t y, Float_t z, Int_t line_id=-1)
Add a marker with given position.
Line_t * AddLine(Float_t x1, Float_t y1, Float_t z1, Float_t x2, Float_t y2, Float_t z2)
Add a line.
you should not use this method at all Int_t Int_t z
Definition: TRolke.cxx:630
virtual Bool_t GetRnrLines()
Helper for management of bounding-box information.
Definition: TAttBBox.h:17
virtual Bool_t GetRnrMarkers()
Base class for TEveUtil visualization elements, providing hierarchy management, rendering control and...
Definition: TEveElement.h:33
const Int_t n
Definition: legend1.C:16
Line Attributes class.
Definition: TAttLine.h:18
void SetLine(int idx, Float_t x1, Float_t y1, Float_t z1, Float_t x2, Float_t y2, Float_t z2)
Set line vertices with given index.
Set of straight lines with optional markers along the lines.
Marker_t(Float_t x, Float_t y, Float_t z, Int_t line_id)
virtual void ComputeBBox()
Compute bounding-box.