Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TBuffer3D.h
Go to the documentation of this file.
1// @(#)root/base:$Id: TBuffer3D.h,v 1.00
2// Author: Olivier Couet 05/05/04
3
4/*************************************************************************
5 * Copyright (C) 1995-2004, 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_TBuffer3D
13#define ROOT_TBuffer3D
14
15#include "TObject.h"
16
17class TBuffer3D : public TObject
18{
19private:
20 const Int_t fType; // Primitive type - predefined ones in TBuffer3DTypes.h
21
22 UInt_t fNbPnts; // Number of points describing the shape
23 UInt_t fNbSegs; // Number of segments describing the shape
24 UInt_t fNbPols; // Number of polygons describing the shape
25
26 UInt_t fPntsCapacity; // Current capacity of fPnts space
27 UInt_t fSegsCapacity; // Current capacity of fSegs space
28 UInt_t fPolsCapacity; // Current capacity of fSegs space
29
30 UInt_t fSections; // Section validity flags
31
32 void Init();
33
34 // Non-copyable class
35 TBuffer3D(const TBuffer3D &) = delete;
36 TBuffer3D & operator=(const TBuffer3D &) = delete;
37
38 //CS specific
40
41public:
42 //CS specific
44
45 static UInt_t GetCSLevel();
46 static void IncCSLevel();
47 static UInt_t DecCSLevel();
48
49 enum ESection { kNone = BIT(0),
50 kCore = BIT(1),
54 kRaw = BIT(5),
56 };
57
59 UInt_t reqPnts = 0, UInt_t reqPntsCapacity = 0,
60 UInt_t reqSegs = 0, UInt_t reqSegsCapacity = 0,
61 UInt_t reqPols = 0, UInt_t reqPolsCapacity = 0);
62 virtual ~TBuffer3D();
63
64 // Section validity flags
66 void ClearSectionsValid();
69
70 // Convenience functions
71 void SetLocalMasterIdentity(); // Set fLocalMaster in kCore to identity
72 void SetAABoundingBox(const Double_t origin[3], // Set fBBVertex in kBoundingBox to axis aligned BB
73 const Double_t halfLengths[3]);
74
75 // SECTION: kRawSize get/set
76 Bool_t SetRawSizes(UInt_t reqPnts, UInt_t reqPntsCapacity,
77 UInt_t reqSegs, UInt_t reqSegsCapacity,
78 UInt_t reqPols, UInt_t reqPolsCapacity);
79
80 UInt_t NbPnts() const { return fNbPnts; }
81 UInt_t NbSegs() const { return fNbSegs; }
82 UInt_t NbPols() const { return fNbPols; }
83
84 // SECTION: kCore
85 Int_t Type() const { return fType; }
86
87 TObject *fID; // ID/object generating buffer - see TVirtualViewer3D for setting
88 Int_t fColor; // Color index
89 Short_t fTransparency; // Percentage transparency [0,100]
90 Bool_t fLocalFrame; // True = Local, False = Master reference frame
91 Bool_t fReflection; // Matrix is reflection
92 Bool_t fScaled; // The shape is scaled
93 Double_t fLocalMaster[16]; // Local->Master Matrix - identity if master frame
94
95 // SECTION: kBoundingBox
96 //
97 // Local frame (fLocalFrame true) axis aligned
98 // Master frame (fLocalFrame false) oriented
99 // Could be more compact (2 and 3 vertices respectively) and rest
100 // calculated as needed - but not worth it
101 // 7-------6
102 // /| /|
103 // 3-------2 |
104 // | 4-----|-5
105 // |/ |/
106 // 0-------1
107 //
108 Double_t fBBVertex[8][3]; // 8 vertices defining bounding box.
109
110 // SECTION: kShapeSpecific - none for base class
111
112 // SECTION: kRaw
113 Double_t *fPnts; // x0, y0, z0, x1, y1, z1, ..... ..... ....
114 Int_t *fSegs; // c0, p0, q0, c1, p1, q1, ..... ..... ....
115 Int_t *fPols; // c0, n0, s0, s1, ... sn, c1, n1, s0, ... sn
116
117
118 // OUTPUT SECTION, filled by viewer as response
119 mutable UInt_t fPhysicalID; // Unique replica ID.
120
121
122 ClassDefOverride(TBuffer3D,0) // 3D primitives description
123};
124
125/** \class TBuffer3DSphere
126Sphere description class - see TBuffer3DTypes for producer classes
127Supports hollow and cut spheres.*/
128
130{
131private:
132 // Non-copyable class
135
136public:
137 TBuffer3DSphere(UInt_t reqPnts = 0, UInt_t reqPntsCapacity = 0,
138 UInt_t reqSegs = 0, UInt_t reqSegsCapacity = 0,
139 UInt_t reqPols = 0, UInt_t reqPolsCapacity = 0);
140
141 Bool_t IsSolidUncut() const;
142
143 // SECTION: kShapeSpecific
146 Double_t fThetaMin; // Lower theta limit (orientation?)
147 Double_t fThetaMax; // Higher theta limit (orientation?)
148 Double_t fPhiMin; // Lower phi limit (orientation?)
149 Double_t fPhiMax; // Higher phi limit (orientation?)
150};
151
152/** \class TBuffer3DTube
153Complete tube description class - see TBuffer3DTypes for producer classes
154*/
155
157{
158private:
159 // Non-copyable class
160 TBuffer3DTube(const TBuffer3DTube &) = delete;
162
163protected:
165 UInt_t reqPnts = 0, UInt_t reqPntsCapacity = 0,
166 UInt_t reqSegs = 0, UInt_t reqSegsCapacity = 0,
167 UInt_t reqPols = 0, UInt_t reqPolsCapacity = 0);
168
169public:
170 TBuffer3DTube(UInt_t reqPnts = 0, UInt_t reqPntsCapacity = 0,
171 UInt_t reqSegs = 0, UInt_t reqSegsCapacity = 0,
172 UInt_t reqPols = 0, UInt_t reqPolsCapacity = 0);
173
174 // SECTION: kShapeSpecific
175 Double_t fRadiusInner; // Inner radius
176 Double_t fRadiusOuter; // Outer radius
177 Double_t fHalfLength; // Half length (dz)
178};
179
180/** \class TBuffer3DTubeSeg
181Tube segment description class - see TBuffer3DTypes for producer classes
182*/
183
185{
186private:
187 // Non-copyable class
190
191protected:
193 UInt_t reqPnts = 0, UInt_t reqPntsCapacity = 0,
194 UInt_t reqSegs = 0, UInt_t reqSegsCapacity = 0,
195 UInt_t reqPols = 0, UInt_t reqPolsCapacity = 0);
196
197public:
198 TBuffer3DTubeSeg(UInt_t reqPnts = 0, UInt_t reqPntsCapacity = 0,
199 UInt_t reqSegs = 0, UInt_t reqSegsCapacity = 0,
200 UInt_t reqPols = 0, UInt_t reqPolsCapacity = 0);
201
202 // SECTION: kShapeSpecific
203 Double_t fPhiMin; // Lower phi limit
204 Double_t fPhiMax; // Higher phi limit
205};
206
207/** \class TBuffer3DCutTube
208Cut tube segment description class - see TBuffer3DTypes for producer classes
209*/
210
212{
213private:
214 // Non-copyable class
217
218public:
219 TBuffer3DCutTube(UInt_t reqPnts = 0, UInt_t reqPntsCapacity = 0,
220 UInt_t reqSegs = 0, UInt_t reqSegsCapacity = 0,
221 UInt_t reqPols = 0, UInt_t reqPolsCapacity = 0);
222
223 // SECTION: kShapeSpecific
224 Double_t fLowPlaneNorm[3]; // Normal to lower cut plane
225 Double_t fHighPlaneNorm[3]; // Normal to highest cut plane
226};
227
228#endif
bool Bool_t
Definition RtypesCore.h:63
int Int_t
Definition RtypesCore.h:45
unsigned int UInt_t
Definition RtypesCore.h:46
short Short_t
Definition RtypesCore.h:39
double Double_t
Definition RtypesCore.h:59
#define BIT(n)
Definition Rtypes.h:85
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t mask
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
Cut tube segment description class - see TBuffer3DTypes for producer classes.
Definition TBuffer3D.h:212
Double_t fLowPlaneNorm[3]
Definition TBuffer3D.h:224
Double_t fHighPlaneNorm[3]
Definition TBuffer3D.h:225
TBuffer3DCutTube & operator=(const TBuffer3DTubeSeg &)=delete
TBuffer3DCutTube(const TBuffer3DTubeSeg &)=delete
Sphere description class - see TBuffer3DTypes for producer classes Supports hollow and cut spheres.
Definition TBuffer3D.h:130
TBuffer3DSphere(const TBuffer3DSphere &)=delete
TBuffer3DSphere & operator=(const TBuffer3DSphere &)=delete
Double_t fRadiusInner
Definition TBuffer3D.h:144
Double_t fThetaMin
Definition TBuffer3D.h:146
Double_t fPhiMin
Definition TBuffer3D.h:148
Double_t fThetaMax
Definition TBuffer3D.h:147
Double_t fRadiusOuter
Definition TBuffer3D.h:145
Bool_t IsSolidUncut() const
Test if buffer represents a solid uncut sphere.
Double_t fPhiMax
Definition TBuffer3D.h:149
Tube segment description class - see TBuffer3DTypes for producer classes.
Definition TBuffer3D.h:185
TBuffer3DTubeSeg(const TBuffer3DTubeSeg &)
Double_t fPhiMax
Definition TBuffer3D.h:204
TBuffer3DTubeSeg & operator=(const TBuffer3DTubeSeg &)=delete
Double_t fPhiMin
Definition TBuffer3D.h:203
Complete tube description class - see TBuffer3DTypes for producer classes.
Definition TBuffer3D.h:157
TBuffer3DTube & operator=(const TBuffer3DTube &)=delete
Double_t fRadiusInner
Definition TBuffer3D.h:175
Double_t fRadiusOuter
Definition TBuffer3D.h:176
TBuffer3DTube(const TBuffer3DTube &)=delete
Double_t fHalfLength
Definition TBuffer3D.h:177
Generic 3D primitive description class.
Definition TBuffer3D.h:18
void SetLocalMasterIdentity()
Set kRaw tessellation section of buffer with supplied sizes.
Int_t Type() const
Definition TBuffer3D.h:85
Int_t * fPols
Definition TBuffer3D.h:115
UInt_t NbPols() const
Definition TBuffer3D.h:82
UInt_t fPntsCapacity
Definition TBuffer3D.h:26
UInt_t NbPnts() const
Definition TBuffer3D.h:80
UInt_t NbSegs() const
Definition TBuffer3D.h:81
UInt_t fNbPols
Definition TBuffer3D.h:24
UInt_t fNbPnts
Definition TBuffer3D.h:22
Bool_t SectionsValid(UInt_t mask) const
Definition TBuffer3D.h:67
@ kBoundingBox
Definition TBuffer3D.h:51
@ kShapeSpecific
Definition TBuffer3D.h:52
const Int_t fType
Definition TBuffer3D.h:20
@ kCSDifference
Definition TBuffer3D.h:43
@ kCSIntersection
Definition TBuffer3D.h:43
Double_t fLocalMaster[16]
Definition TBuffer3D.h:93
static UInt_t DecCSLevel()
Decrement CS level.
static UInt_t GetCSLevel()
Return CS level.
void ClearSectionsValid()
Clear any sections marked valid.
UInt_t fPolsCapacity
Definition TBuffer3D.h:28
void SetSectionsValid(UInt_t mask)
Definition TBuffer3D.h:65
Int_t * fSegs
Definition TBuffer3D.h:114
void Init()
Initialise buffer.
Bool_t fLocalFrame
Definition TBuffer3D.h:90
Bool_t fScaled
Definition TBuffer3D.h:92
Int_t fColor
Definition TBuffer3D.h:88
static UInt_t fgCSLevel
Definition TBuffer3D.h:39
UInt_t fPhysicalID
Definition TBuffer3D.h:119
static void IncCSLevel()
Increment CS level.
TBuffer3D & operator=(const TBuffer3D &)=delete
UInt_t fSections
Definition TBuffer3D.h:30
UInt_t fSegsCapacity
Definition TBuffer3D.h:27
Short_t fTransparency
Definition TBuffer3D.h:89
void SetAABoundingBox(const Double_t origin[3], const Double_t halfLengths[3])
Set fBBVertex in kBoundingBox section to a axis aligned (local) BB using supplied origin and box half...
Bool_t fReflection
Definition TBuffer3D.h:91
UInt_t GetSections(UInt_t mask) const
Definition TBuffer3D.h:68
TObject * fID
Definition TBuffer3D.h:87
TBuffer3D(const TBuffer3D &)=delete
UInt_t fNbSegs
Definition TBuffer3D.h:23
virtual ~TBuffer3D()
Destructor.
Bool_t SetRawSizes(UInt_t reqPnts, UInt_t reqPntsCapacity, UInt_t reqSegs, UInt_t reqSegsCapacity, UInt_t reqPols, UInt_t reqPolsCapacity)
Set kRaw tessellation section of buffer with supplied sizes.
Double_t * fPnts
Definition TBuffer3D.h:113
Double_t fBBVertex[8][3]
Definition TBuffer3D.h:108
Mother of all ROOT objects.
Definition TObject.h:41