Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches

Detailed Description

This example display only texts in web browser.

#include "TRandom.h"
namespace REX = ROOT::Experimental;
using namespace ROOT::Experimental;
// 1. Basic fonts
// Text bluprs to choose from:
const char *blurbs[] = {"Love", "Peace", "ROOT", "Code", "Courage", "Quiche"};
const int n_blurbs = sizeof(blurbs) / sizeof(char *);
// Some ROOT fonts are supper old and will error out (arial, times, cour).
const char *fonts[] = {"comic", "comicbd", "verdana", "BlackChancery", "georgia", "georgiai"};
const int n_fonts = sizeof(fonts) / sizeof(char *);
// 2. Fonts with diacritcis and most greek letter available through unicode.
// Not all fonts have them -- most that ship with ROOT don't.
const char *blurbs2[] = {"Čüšék! Šèžëçàgïlá", "Αβρασαξ", "πφηθωμβτ"};
const int n_blurbs2 = sizeof(blurbs2) / sizeof(char *);
const char *fonts2[] = {"LiberationMono-Regular", "LiberationSerif-Regular"};
const int n_fonts2 = sizeof(fonts2) / sizeof(char *);
{
const double pi = TMath::Pi();
const double lim = 300;
for (int i = 0; i < N_Texts; i++) {
std::string word, font;
if (r.Integer(2)) {
word = blurbs[r.Integer(n_blurbs)];
font = fonts[r.Integer(n_fonts)];
} else {
word = blurbs2[r.Integer(n_blurbs2)];
font = fonts2[r.Integer(n_fonts2)];
}
auto name_text = Form("%s_%d", word.data(), i);
text->SetText(name_text);
text->SetFont(font); // Set by name of file in $ROOTSYS/ui5/eve7/fonts/
int mode = r.Integer(2);
text->SetMode(mode);
if (mode == 0) { // world
auto &t = text->RefMainTrans();
t.SetRotByAngles(r.Uniform(-pi, pi), r.Uniform(-pi, pi), r.Uniform(-pi, pi));
t.SetPos(r.Uniform(-lim, lim), r.Uniform(-lim, lim), r.Uniform(-lim, lim));
text->SetFontSize(r.Uniform(0.01 * lim, 0.2 * lim));
} else { // screen [0, 0] bottom left, [1, 1] top-right corner, font-size in y-units, x scaled with the window
// aspect ratio.
text->SetPosition(REX::REveVector(r.Uniform(-0.1, 0.9), r.Uniform(0.1, 1.1), r.Uniform(0.0, 1.0)));
text->SetFontSize(r.Uniform(0.001, 0.05));
}
text->SetTextColor(
TColor::GetColor((float)r.Uniform(0, 0.5), (float)r.Uniform(0, 0.5), (float)r.Uniform(0, 0.5)));
// text->SetMainTransparency();
// text->SetLineColor(text->GetTextColor());
text->SetLineColor(
TColor::GetColor((float)r.Uniform(0, 0.2), (float)r.Uniform(0, 0.2), (float)r.Uniform(0, 0.2)));
text->SetLineAlpha(192);
text->SetFillColor(
TColor::GetColor((float)r.Uniform(0.7, 1.0), (float)r.Uniform(0.7, 1.0), (float)r.Uniform(0.7, 1.0)));
text->SetFillAlpha(128);
text->SetDrawFrame(true);
textHolder->AddElement(text);
}
}
{
const Double_t kR_min = 240;
const Double_t kR_max = 250;
const Double_t kZ_d = 300;
for (int i = 0; i < N_Jets; i++) {
auto jet = new REveJetCone(Form("Jet_%d", i));
jet->SetCylinder(2 * kR_max, 2 * kZ_d);
jet->AddEllipticCone(r.Uniform(-0.5, 0.5), r.Uniform(0, TMath::TwoPi()), 0.1, 0.2);
jet->SetFillColor(kRed);
jet->SetLineColor(kRed);
jetHolder->AddElement(jet);
}
}
void texts()
{
auto eveMng = REX::REveManager::Create();
// Initialize SDF fonts.
// REveManager needs to be already created as location redirect needs to be set up.
// a) When REveText::AssertSdfFont() is called one of the two default locations
// will be chosen, if it is writable by the current user:
// - $ROOTSYS/ui5/eve7/sdf-fonts/
// - sdf-fonts/ in the current working directory.
// If neither location is writable, an error will be issued.
// b) Alternatively, REveText::SetSdfFontDir(std::string_view dir, bool require_write_access)
// can be called to set this directory manually. If the directory is already pre-populated
// with fonts one can set the `require_write_access` argument to false to avoid the
// requirement of having write access to that directory.
std::string rf_dir = gSystem->ExpandPathName("${ROOTSYS}/fonts/");
for (int i = 0; i < n_fonts; ++i) {
REX::REveText::AssertSdfFont(fonts[i], rf_dir + fonts[i] + ".ttf");
}
for (int i = 0; i < n_fonts2; ++i) {
REX::REveText::AssertSdfFont(fonts2[i], rf_dir + fonts2[i] + ".ttf");
}
// add box to overlay
REX::REveScene *os = eveMng->SpawnNewScene("OverlyScene", "OverlayTitle");
((REveViewer *)(eveMng->GetViewers()->FirstChild()))->AddScene(os);
os->SetIsOverlay(true);
// os->AddElement(textHolder);
auto jetHolder = new REveElement("jets");
}
double Double_t
Definition RtypesCore.h:59
@ kRed
Definition Rtypes.h:66
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
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
Option_t Option_t TPoint TPoint const char mode
Option_t Option_t TPoint TPoint const char text
R__EXTERN TRandom * gRandom
Definition TRandom.h:62
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
Definition TString.cxx:2489
R__EXTERN TSystem * gSystem
Definition TSystem.h:572
Base class for REveUtil visualization elements, providing hierarchy management, rendering control and...
Draws a jet cone with leading particle is specified in (eta,phi) and cone radius is given.
Eve representation of a GL view.
virtual void AddElement(REveElement *el)
Add el to the list of children.
REveElement * FirstChild() const
Returns the first child element or 0 if the list is empty.
REveScene * GetEventScene() const
void AllowMultipleRemoteConnections(bool loopBack=true, bool useAuthKey=true)
Utility function to allow remote RWebWindow connections.
REveScene * SpawnNewScene(const char *name, const char *title="")
Create a new scene.
REveViewerList * GetViewers() const
void Show(const RWebDisplayArgs &args="")
Show eve manager in specified browser.
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
Definition TColor.cxx:1927
This is the base class for the ROOT Random number generators.
Definition TRandom.h:27
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
Definition TSystem.cxx:1286
ROOT::Experimental::REveManager * eveMng
const Double_t kR_max
const Double_t kZ_d
const Double_t kR_min
TCanvas * fonts()
Definition fonts.C:10
void makeJets(int N_Jets, REX::REveElement *jetHolder)
Definition jets.C:20
constexpr Double_t Pi()
Definition TMath.h:37
constexpr Double_t TwoPi()
Definition TMath.h:44
Author
Waad Fahad

Definition in file texts.C.