16 #include "TObjArray.h" 18 #include "TDirectory.h" 20 #include "TPaveText.h" 21 #include "TObjString.h" 42 fIter = pad->GetListOfPrimitives()->MakeIterator();
43 fStacks.SetOwner(kTRUE);
60 TFrame* fr =
dynamic_cast<TFrame*
>(
fCurrent);
61 if (fr) { skip =
true;
continue; }
63 TPaveText* ptxt =
dynamic_cast<TPaveText*
> (
fCurrent);
64 if (ptxt && (strcmp(ptxt->GetName(),
"title") == 0)) { skip =
true;
continue; }
66 if (dynamic_cast<TPave*>(
fCurrent)) { skip =
true;
continue; }
68 if (!
fCurrent->GetName()) { skip =
true;
continue; }
70 if (strlen(
fCurrent->GetName()) == 0) { skip =
true;
continue; }
72 if (strcmp(
fCurrent->GetName(),
fCurrent->ClassName()) == 0) { skip =
true;
continue; }
75 if (fStacks.FindObject(
fCurrent->GetName()) &&
fCurrent->InheritsFrom(TH1F::Class())) { skip =
true;
continue; }
80 fStacks.Add(
new TObjString(
fCurrent->GetName()));
87 return dynamic_cast<TPad *
>(
fCurrent) ||
93 TPad *subpad =
dynamic_cast<TPad *
>(
fCurrent);
95 THStack *hs =
dynamic_cast<THStack *
>(
fCurrent);
152 auto om = slot->
GetOM();
158 auto om = slot->
GetOM();
173 const char *objname =
nullptr;
178 slot->
SetPar(
"CanvasProxy::CanvasName", objname);
189 const char *objname = slot->
GetPar(
"CanvasProxy::CanvasName");
190 if (!objname || !dir)
return;
199 return cl && cl->InheritsFrom(TCanvas::Class());
207 fCanvas =
dynamic_cast<TCanvas *
>(obj);
210 if (!fCanvas && obj && owner)
delete obj;
226 if (!canv)
return nullptr;
228 return std::make_unique<TGo4ObjectAccess>(canv);
231 const char *curname = name;
234 const char *slash = strchr(curname,
'/');
235 UInt_t len = slash ? slash - curname : strlen(curname);
236 TIter iter(curpad->GetListOfPrimitives());
237 TObject *obj =
nullptr;
238 while ((obj = iter()) !=
nullptr)
239 if ((strlen(obj->GetName()) == len) &&
240 (strncmp(obj->GetName(), curname, len) == 0))
break;
241 if (!obj)
return nullptr;
244 return std::make_unique<TGo4ObjectAccess>(obj);
248 curpad =
dynamic_cast<TPad *
>(obj);
251 THStack *hs =
dynamic_cast<THStack*
> (obj);
void UnregisterObject(TObject *obj, TGo4Slot *slot)
Bool_t IsAcceptObject(TClass *cl) const override
static TGo4LevelIter * ProduceIter(THStack *hs)
void WriteData(TGo4Slot *slot, TDirectory *dir, Bool_t onlyobjs) override
const char * info() override
virtual ~TGo4CanvasLevelIter()
void Initialize(TGo4Slot *slot) override
Bool_t AssignObject(TGo4Slot *slot, TObject *obj, Bool_t owner) override
void RegisterObjectWith(TObject *obj, TGo4Slot *slot)
static TGo4LevelIter * ProduceIter(TCanvas *canv)
const char * name() override
const char * GetContainedClassName() const override
virtual ~TGo4CanvasProxy()
void Finalize(TGo4Slot *slot) override
TGo4LevelIter * subiterator() override
Bool_t isfolder() override
Int_t GetObjectKind() const override
Bool_t RemoveRegisteredObject(TObject *obj) override
static std::unique_ptr< TGo4Access > CreateAccess(TCanvas *canv, const char *name)
const char * GetClassName() override
void ReadData(TGo4Slot *slot, TDirectory *dir) override
const char * GetPar(const char *name) const
TObject * GetAssignedObject() override
void ForwardEvent(TGo4Slot *source, Int_t id, void *param=nullptr)
virtual TGo4ObjectManager * GetOM() const
void SetPar(const char *name, const char *value)
static std::unique_ptr< TGo4Access > CreateAccess(THStack *hs, const char *name)
TGo4CanvasLevelIter(TPad *pad)