51 if (!obj)
return "tobject";
54 if (strncmp(clname,
"TH3", 3) == 0)
return "th3";
55 if (strncmp(clname,
"TH2", 3) == 0)
return "th2";
56 if ((strncmp(clname,
"TH1", 3) == 0) || obj->
InheritsFrom(
"TH1"))
return "th1";
57 if (strncmp(clname,
"TGraph", 6) == 0)
return "tgraph";
58 if (strcmp(clname,
"TLine") == 0)
return "tline";
59 if (strcmp(clname,
"TBox") == 0)
return "tbox";
78 fObj = std::shared_ptr<TObject>(obj);
167 fObj = std::shared_ptr<TObject>(obj);
202 auto arr = std::make_unique<TObjArray>();
203 arr->SetOwner(
kTRUE);
205 auto cols =
gROOT->GetListOfColors();
206 for (
int n = 0;
n <= cols->GetLast(); ++
n) {
207 auto col =
dynamic_cast<TColor *
>(cols->At(
n));
216 return std::make_unique<TStyle>(*
gStyle);
220 auto arr = std::make_unique<TObjArray>();
221 arr->SetOwner(
kTRUE);
224 for (
int n = 0;
n < palette.GetSize(); ++
n) {
225 auto col =
gROOT->GetColor(palette[
n]);
245 auto ExtractColor = [&item, cl, obj](
const char *class_name,
const char *class_member) {
249 if (offset <= 0)
return;
252 if (*icol < 10)
return;
258 ExtractColor(
"TAttLine",
"fLineColor");
259 ExtractColor(
"TAttFill",
"fFillColor");
260 ExtractColor(
"TAttMarker",
"fMarkerColor");
261 ExtractColor(
"TAttText",
"fTextColor");
262 ExtractColor(
"TAttPad",
"fFrameFillColor");
263 ExtractColor(
"TAttPad",
"fFrameLineColor");
264 ExtractColor(
"TAttAxis",
"fAxisColor");
265 ExtractColor(
"TAttAxis",
"fLabelColor");
266 ExtractColor(
"TAttAxis",
"fTitleColor");
289 auto item = std::make_unique<TObjectDisplayItem>(*
this,
fKind, obj);
294 if (strcmp(obj->ClassName(),
"THStack") == 0) {
302 TIter iter(*(
TList **) (((
char *) obj + off2)));
304 while ((hist = iter()) !=
nullptr)
315 return std::make_unique<TObjectDisplayItem>(
fKind, specials.release());
342 obj = (
TObject *) ((
char *) obj + offset);
359 std::string sub,
ex = exec;
360 if (
ex.compare(0, 6,
"xaxis#") == 0) {
362 ex.insert(0,
"GetXaxis()->");
363 }
else if (
ex.compare(0, 6,
"yaxis#") == 0) {
365 ex.insert(0,
"GetYaxis()->");
366 }
else if (
ex.compare(0, 6,
"zaxis#") == 0) {
368 ex.insert(0,
"GetZaxis()->");
371 std::stringstream cmd;
372 cmd <<
"((" << obj->ClassName() <<
" *) " << std::hex << std::showbase << (size_t)obj <<
")->" <<
ex <<
";";
373 std::cout <<
"TObjectDrawable::Execute Obj " << obj->GetName() <<
" Cmd " << cmd.str() << std::endl;
374 gROOT->ProcessLine(cmd.str().c_str());
long Longptr_t
Integer large enough to hold a pointer (platform-dependent).
short Color_t
Color number (short).
void SetAlphaFloat(float alpha)
Set alpha as float value from range 0..1.
std::string AsSVG() const
Returns color value as it will be used in SVG drawing It either include hex format #66FF66 or just pl...
Version_t GetLastVersion() const
RDrawable(const RDrawable &)=delete
Version_t GetVersion() const
void SetCssType(const char *csstype)
RAttrValue< std::string > options
! object draw options
void Reset()
Reset object.
@ kColors
list of ROOT colors
@ kPalette
list of colors from palette
@ kStyle
instance of TStyle object
TObjectDrawable()
Default constructor.
static void ExtractObjectColors(std::unique_ptr< TObjectDisplayItem > &item, const TObject *obj)
Check if object has specified color value and store it in display item Ensure that color matches on c...
static void CheckOwnership(TObject *obj)
Checks object ownership - used for TH1 directory handling and TF1 globals lists.
Internal::RIOShared< TObject > fObj
The object to be painted, owned by the drawable.
std::unique_ptr< TObject > CreateSpecials(int kind)
Create instance of requested special object.
void PopulateMenu(RMenuItems &) final
fill context menu items for the ROOT class
static std::string GetColorCode(TColor *col)
Convert TColor to RGB string for using with SVG.
void Execute(const std::string &) final
Execute object method.
std::unique_ptr< RDisplayItem > Display(const RDisplayContext &) override
Create display item which will be delivered to the client.
const TObject * Get()
Return assigned object.
static const char * DetectCssType(const TObject *obj)
Provide css type.
const TObject * fExtObj
! external object, managed outside of the drawable, not persistent
void Set(TObject *obj, bool isowner=false)
Set object.
~TObjectDrawable() override
Destructor.
TClass instances represent classes, structs and namespaces in the ROOT type system.
TClass * GetBaseClass(const char *classname)
Return pointer to the base class "classname".
Longptr_t GetDataMemberOffset(const char *membername) const
return offset for member name.
Bool_t InheritsFrom(const char *cl) const override
Return kTRUE if this class inherits from a class with name "classname".
TClass * IsA() const override
static const TArrayI & GetPalette()
Method or function calling interface.
void Execute(const char *, const char *, int *=nullptr) override
Execute method on this object with the given parameter string, e.g.
Collectable string class.
Mother of all ROOT objects.
@ kNotDeleted
object has not been deleted
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual TClass * IsA() const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Namespace for ROOT features in testing.