9 #ifndef ROOT7_RPadDisplayItem
10 #define ROOT7_RPadDisplayItem
18 namespace Experimental {
29 class RPadBaseDisplayItem :
public RDisplayItem {
32 using PadPrimitives_t = std::vector<std::unique_ptr<RDisplayItem>>;
35 const RFrame *fFrame{
nullptr};
36 const RAttrMap *fAttr{
nullptr};
37 PadPrimitives_t fPrimitives;
38 std::vector<std::shared_ptr<RStyle>> fStyles;
40 RPadBaseDisplayItem() =
default;
41 virtual ~RPadBaseDisplayItem() =
default;
42 void SetFrame(
const RFrame *f) { fFrame = f; }
43 void SetAttributes(
const RAttrMap *f) { fAttr = f; }
45 void Add(std::unique_ptr<RDisplayItem> &&item, std::shared_ptr<RStyle> &&style)
48 item->SetStyle(style.get());
49 fStyles.emplace_back(std::move(style));
51 fPrimitives.push_back(std::move(item));
54 void SetPadStyle(std::shared_ptr<RStyle> &&style)
57 SetStyle(style.get());
58 fStyles.emplace_back(std::move(style));
71 class RPadDisplayItem :
public RPadBaseDisplayItem {
74 const RPadPos *fPos{
nullptr};
75 const RPadExtent *fSize{
nullptr};
77 RPadDisplayItem() =
default;
78 virtual ~RPadDisplayItem() {}
79 void SetPadPosSize(
const RPadPos *pos,
const RPadExtent *size) { fPos = pos; fSize = size; }
81 void BuildFullId(
const std::string &prefix)
override
83 RDisplayItem::BuildFullId(prefix);
84 std::string subprefix = prefix + std::to_string(GetIndex()) +
"_";
85 for (
auto &item : fPrimitives)
86 item->BuildFullId(subprefix);
99 class RCanvasDisplayItem :
public RPadBaseDisplayItem {
103 std::array<int, 2> fWinSize;
105 RCanvasDisplayItem() =
default;
106 virtual ~RCanvasDisplayItem() =
default;
107 void SetTitle(
const std::string &title) { fTitle = title; }
108 void SetWindowSize(
const std::array<RPadLength::Pixel, 2> &win) { fWinSize[0] = (int) win[0].fVal; fWinSize[1] = (int) win[1].fVal; }
110 void BuildFullId(
const std::string &prefix)
override
112 for (
auto &item : fPrimitives)
113 item->BuildFullId(prefix);