Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TEveArrowGL.cxx
Go to the documentation of this file.
1// @(#)root/eve:$Id$
2// Author: Matevz Tadel 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#include "TEveArrowGL.h"
13#include "TEveArrow.h"
14
15#include "TGLRnrCtx.h"
16#include "TGLIncludes.h"
17#include "TGLUtil.h"
18#include "TGLQuadric.h"
19
20/** \class TEveArrowGL
21\ingroup TEve
22OpenGL renderer class for TEveArrow.
23*/
24
26
27////////////////////////////////////////////////////////////////////////////////
28/// Constructor.
29
31 TGLObject(), fM(nullptr)
32{
33}
34
35/******************************************************************************/
36
37////////////////////////////////////////////////////////////////////////////////
38/// Set model object.
39
41{
42 fM = SetModelDynCast<TEveArrow>(obj);
43 return kTRUE;
44}
45
46////////////////////////////////////////////////////////////////////////////////
47/// Set bounding box.
48
50{
51 // !! This ok if master sub-classed from TAttBBox
52 SetAxisAlignedBBox(((TEveArrow*)fExternalObj)->AssertBBox());
53}
54
55/******************************************************************************/
56
57////////////////////////////////////////////////////////////////////////////////
58/// Render with OpenGL.
59
60void TEveArrowGL::DirectDraw(TGLRnrCtx& /*rnrCtx*/) const
61{
62 static TGLQuadric quad;
63
64 glPushMatrix();
65
68 TGLMatrix local(uo, uv);
69 glMultMatrixd(local.CArr());
71
72 // Line (tube) component
75 gluCylinder(quad.Get(), r, r, size - h, fM->fDrawQuality, 1);
76 gluQuadricOrientation(quad.Get(), (GLenum)GLU_INSIDE);
77 gluDisk(quad.Get(), 0.0, r, fM->fDrawQuality, 1);
78
79 // Arrow cone
80 r = size*fM->fConeR;
81 glTranslated(0.0, 0.0, size - h);
82 gluDisk(quad.Get(), 0.0, r, fM->fDrawQuality, 1);
83 gluQuadricOrientation(quad.Get(), (GLenum)GLU_OUTSIDE);
84 gluCylinder(quad.Get(), r, 0., h , fM->fDrawQuality, 1);
85
86 glPopMatrix();
87}
#define GLU_OUTSIDE
Definition GL_glu.h:203
#define GLU_INSIDE
Definition GL_glu.h:204
#define h(i)
Definition RSha256.hxx:106
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
float Float_t
Definition RtypesCore.h:57
constexpr Bool_t kTRUE
Definition RtypesCore.h:100
const char Option_t
Definition RtypesCore.h:66
#define ClassImp(name)
Definition Rtypes.h:377
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 r
OpenGL renderer class for TEveArrow.
Definition TEveArrowGL.h:22
void DirectDraw(TGLRnrCtx &rnrCtx) const override
Render with OpenGL.
Bool_t SetModel(TObject *obj, const Option_t *opt=nullptr) override
Set model object.
void SetBBox() override
Set bounding box.
TEveArrow * fM
Definition TEveArrowGL.h:28
TEveArrowGL()
Constructor.
Class used for display of a thick arrow.
Definition TEveArrow.h:25
Float_t fConeR
Definition TEveArrow.h:37
TEveVector fOrigin
Definition TEveArrow.h:40
Float_t fTubeR
Definition TEveArrow.h:36
TEveVector fVector
Definition TEveArrow.h:41
Float_t fConeL
Definition TEveArrow.h:38
Int_t fDrawQuality
Definition TEveArrow.h:43
TT Mag() const
Definition TEveVector.h:99
TObject * fExternalObj
first replica
16 component (4x4) transform matrix - column MAJOR as per GL.
Definition TGLUtil.h:598
const Double_t * CArr() const
Definition TGLUtil.h:664
Base-class for direct OpenGL renderers.
Definition TGLObject.h:22
void SetAxisAlignedBBox(Float_t xmin, Float_t xmax, Float_t ymin, Float_t ymax, Float_t zmin, Float_t zmax)
Set axis-aligned bounding-box.
Definition TGLObject.cxx:86
Wrapper class for GLU quadric shape drawing object.
Definition TGLQuadric.h:28
GLUquadric * Get()
Get the internal raw GLU quadric object. Created on first call.
The TGLRnrCtx class aggregates data for a given redering context as needed by various parts of the RO...
Definition TGLRnrCtx.h:41
3 component (x/y/z) vector class.
Definition TGLUtil.h:248
3 component (x/y/z) vertex class.
Definition TGLUtil.h:84
Mother of all ROOT objects.
Definition TObject.h:41