27using namespace std::string_literals;
36 std::multimap<TVirtualPad *, std::unique_ptr<Browsable::RHolder>>
fObjects;
54 auto l1 =
gROOT->GetListOfCleanups();
58 else if (!l1->FindObject(
fCanvas))
61 auto l2 =
gROOT->GetListOfCanvases();
65 else if (!l2->FindObject(
fCanvas))
136 fCanvas->SetCanvasImp(
nullptr);
144 std::string
GetKind()
const override {
return "tcanvas"s; }
161 bool DrawElement(std::shared_ptr<Browsable::RElement> &elem,
const std::string &opt =
"")
override
166 std::unique_ptr<Browsable::RHolder> obj = elem->GetObject();
175 std::string drawopt = opt;
178 bool find_removed_pad;
180 find_removed_pad =
false;
182 if ((entry.first !=
fCanvas) && !
fCanvas->FindObject(entry.first)) {
184 find_removed_pad =
true;
187 }
while (find_removed_pad);
193 if (drawopt.compare(0,8,
"<append>") == 0) {
204 if (drawopt ==
"<dflt>")
208 fObjects.emplace(pad, std::move(obj));
234 std::shared_ptr<RBrowserWidget>
Create(
const std::string &
name)
final
236 return std::make_shared<RBrowserTCanvasWidget>(
name);
239 std::shared_ptr<RBrowserWidget>
CreateFor(
const std::string &
name, std::shared_ptr<Browsable::RElement> &elem)
final
241 auto holder = elem->GetObject();
242 if (!holder)
return nullptr;
244 auto canv = holder->get_unique<
TCanvas>();
245 if (!canv)
return nullptr;
247 return std::make_shared<RBrowserTCanvasWidget>(
name, canv);
254 while (
auto canv =
static_cast<TCanvas *
>(iter())) {
255 auto web_canv =
dynamic_cast<TWebCanvas *
>(canv->GetCanvasImp());
256 if (web_canv->GetWebWindow().get() == &win)
257 return std::make_shared<RBrowserTCanvasWidget>(canv->GetName(), canv, web_canv);
externTVirtualMutex * gROOTMutex
#define R__LOCKGUARD(mutex)
std::shared_ptr< RBrowserWidget > Create(const std::string &name) final
RBrowserTCanvasProvider()
std::shared_ptr< RBrowserWidget > CreateFor(const std::string &name, std::shared_ptr< Browsable::RElement > &elem) final
std::shared_ptr< RBrowserWidget > DetectWindow(RWebWindow &win) final
~RBrowserTCanvasProvider() override=default
@ kActDraw6
can be drawn inside ROOT6 canvas
static bool Draw6(TVirtualPad *subpad, std::unique_ptr< RHolder > &obj, const std::string &opt="")
Invoke drawing of object on TCanvas sub-pad All existing providers are checked, first checked are cla...
static std::string GetClassDrawOption(const ClassArg &)
Return configured draw option for the class.
static void ExtendProgressHandle(void *handle, void *handle2)
Extend progress handle - to be able react on sub item.
Represents web window, which can be shown in web browser or any other supported environment.
void Clear(Option_t *option="") override
Remove all objects from the list.
TVirtualPad is an abstract base class for the Pad and Canvas classes.
virtual void Modified(Bool_t flag=1)=0
virtual TList * GetListOfPrimitives() const =0
virtual void Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2)=0
Basic TCanvasImp ABI implementation for Web-based Graphics Provides painting of main ROOT classes in ...
static TCanvas * CreateWebCanvas(const char *name, const char *title, UInt_t width=1200, UInt_t height=800)
Create TCanvas and assign TWebCanvas implementation to it Canvas is not displayed automatically,...
static TCanvasImp * NewCanvas(TCanvas *c, const char *name, Int_t x, Int_t y, UInt_t width, UInt_t height)
Static method to create TWebCanvas instance Used by plugin manager.