13 #ifndef ROOT7_REveDataClasses
14 #define ROOT7_REveDataClasses
25 namespace Experimental {
31 class REveDataCollection :
public REveElement
34 typedef std::vector<int> Ids_t;
37 std::function<void (REveDataCollection*)> _handler_func;
38 std::function<void (REveDataCollection*, const Ids_t&)> _handler_func_ids;
41 static Color_t fgDefaultColor;
43 TClass *fItemClass{
nullptr};
47 void *fDataPtr{
nullptr};
48 REveDataItem *fItemPtr{
nullptr};
50 ItemInfo_t() =
default;
51 ItemInfo_t(
void *dp, REveDataItem *di) : fDataPtr(dp), fItemPtr(di) {}
54 std::vector<ItemInfo_t> fItems;
57 std::function<bool(void *)> fFilterFoo = [](
void *) {
return true; };
59 REveDataCollection(
const std::string& n =
"REveDataCollection",
const std::string& t =
"");
60 virtual ~REveDataCollection() {}
62 TClass *GetItemClass()
const {
return fItemClass; }
63 void SetItemClass(TClass *cls) { fItemClass = cls; }
65 void ReserveItems(Int_t items_size) { fItems.reserve(items_size); }
66 void AddItem(
void *data_ptr,
const std::string& n,
const std::string& t);
67 void ClearItems() { fItems.clear(); }
69 void SetFilterExpr(
const TString &filter);
72 Int_t GetNItems()
const {
return (Int_t)fItems.size(); }
73 void *GetDataPtr(Int_t i)
const {
return fItems[i].fDataPtr; }
74 REveDataItem *GetDataItem(Int_t i)
const {
return fItems[i].fItemPtr; }
76 Int_t WriteCoreJson(nlohmann::json &cj, Int_t rnr_offset)
override;
78 virtual void SetCollectionColorRGB(UChar_t r, UChar_t g, UChar_t b);
79 virtual void SetCollectionVisible(
bool);
80 virtual void ItemChanged(REveDataItem *item);
82 void SetHandlerFunc (std::function<
void (REveDataCollection*)> handler_func)
84 _handler_func = handler_func;
86 void SetHandlerFuncIds (std::function<
void (REveDataCollection*,
const Ids_t&)> handler_func)
88 _handler_func_ids= handler_func;
94 class REveDataItem :
public REveElement,
98 Bool_t fFiltered{
false};
101 REveDataItem(
const std::string& n =
"REveDataItem",
const std::string& t =
"");
102 virtual ~REveDataItem() {}
104 Bool_t GetFiltered()
const {
return fFiltered; }
105 void SetFiltered(Bool_t f);
107 virtual void SetItemColorRGB(UChar_t r, UChar_t g, UChar_t b);
108 virtual void SetItemRnrSelf(
bool);
110 virtual void FillImpliedSelectedSet(Set_t& impSelSet)
override;
112 Int_t WriteCoreJson(nlohmann::json &cj, Int_t rnr_offset)
override;
117 class REveDataTable :
public REveElement
120 const REveDataCollection *fCollection{
nullptr};
123 REveDataTable(
const std::string& n =
"REveDataTable",
const std::string& t =
"");
124 virtual ~REveDataTable() {}
126 void SetCollection(
const REveDataCollection *col) { fCollection = col; }
127 const REveDataCollection *GetCollection()
const {
return fCollection; }
130 virtual Int_t WriteCoreJson(nlohmann::json &cj, Int_t rnr_offset);
132 void AddNewColumn(
const std::string& expr,
const std::string& title,
int prec = 2);
137 class REveDataColumn :
public REveElement
140 enum FieldType_e { FT_Double = 0, FT_Bool, FT_String };
148 std::string fTrue{
"*"};
149 std::string fFalse{
" "};
151 std::function<double(void *)> fDoubleFoo;
152 std::function<bool(void *)> fBoolFoo;
153 std::function<std::string(void *)> fStringFoo;
156 REveDataColumn(
const std::string& n =
"REveDataColumn",
const std::string& t =
"");
157 virtual ~REveDataColumn() {}
159 void SetExpressionAndType(
const std::string &expr, FieldType_e type);
160 void SetPrecision(Int_t prec);
162 std::string EvalExpr(
void *iptr);