Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
annotation.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_eve
3 /// Demonstrates usage of TGLAnnotation class.
4 ///
5 /// \image html eve_annotation.png
6 /// \macro_code
7 ///
8 /// \author Alja Mrak-Tadel
9 
10 #include <TEveManager.h>
11 #include <TGLViewer.h>
12 #include <TGLAnnotation.h>
13 #include <TEveBox.h>
14 #include <TDatime.h>
15 #include <TTimer.h>
16 #include <TDatime.h>
17 
18 class MyTimer : public TTimer
19 {
20 private:
21  TGLAnnotation* m_label;
22 
23 public:
24  MyTimer(TGLAnnotation* x) : TTimer(1000), m_label(x)
25  {
26  }
27 
28  virtual Bool_t Notify()
29  {
30  // stop timer
31  TurnOff();
32 
33  // so some action here
34  TDatime d;
35  m_label->SetText(d.AsString());
36  gEve->GetDefaultGLViewer()->RequestDraw();
37 
38  // start timer
39  SetTime(1000);
40  Reset();
41  TurnOn();
42  return true;
43  }
44 };
45 
46 void annotation(Float_t a=10, Float_t d=5, Float_t x=0, Float_t y=0, Float_t z=0)
47 {
48  TEveManager::Create();
49 
50  // add a box in scene
51  auto b = new TEveBox("Box", "Test Title");
52  b->SetMainColor(kCyan);
53  b->SetMainTransparency(0);
54  b->SetVertex(0, x - a, y - a, z - a);
55  b->SetVertex(1, x - a, y + a, z - a);
56  b->SetVertex(2, x + a, y + a, z - a);
57  b->SetVertex(3, x + a, y - a, z - a);
58  b->SetVertex(4, x - a, y - a, z + a);
59  b->SetVertex(5, x - a, y + a, z + a);
60  b->SetVertex(6, x + a, y + a, z + a);
61  b->SetVertex(7, x + a, y - a, z + a);
62  gEve->AddElement(b);
63  gEve->Redraw3D(kTRUE);
64 
65  // add overlay text
66  auto v = gEve->GetDefaultGLViewer();
67  TDatime time;
68  auto ann = new TGLAnnotation(v, time.AsString(), 0.1, 0.9);
69  ann->SetTextSize(0.1);// % of window diagonal
70 
71  // set timer to update text every second
72  auto timer = new MyTimer(ann);
73  timer->SetTime(1000);
74  timer->Reset();
75  timer->TurnOn();
76 }