37 fVisibleEdgeColor (col_visible),
38 fHiddenEdgeColor (col_hidden),
103 Set_t &imp_set = entry->second.f_implied;
105 entry->first->FillImpliedSelectedSet(imp_set);
107 auto i = imp_set.begin();
108 while (i != imp_set.end())
110 if ((*i)->GetElementId() == 0)
114 Info(
"REveSelection::DoElementSelect",
115 "Element '%s' [%s] with 0 id detected and removed.",
116 (*i)->GetCName(), (*i)->IsA()->GetName());
123 (*i)->IncImpliedSelected();
135 Set_t &imp_set = entry->second.f_implied;
137 for (
auto &imp_el: imp_set) imp_el->DecImpliedSelected();
155 return !
fMap.empty();
164 return el !=
this &&
fMap.find(el) ==
fMap.end() &&
186 auto i =
fMap.find(el);
200 Warning(
"REveSelection::RemoveNieceLocal",
"element not found in map.");
212 for (
auto i =
fMap.begin(); i !=
fMap.end(); ++i)
214 i->first->RemoveAunt(
this);
231 bool changed =
false;
235 auto j = i.second.f_implied.find(el);
236 if (j != i.second.f_implied.end())
238 i.second.f_implied.erase(j);
253 bool changed =
false;
255 smi->first->FillImpliedSelectedSet(set);
258 if (smi->second.f_implied.find(i) == smi->second.f_implied.end())
260 smi->second.f_implied.insert(i);
261 i->IncImpliedSelected();
277 auto i =
fMap.find(el);
286 for (
auto i =
fMap.begin(); i !=
fMap.end(); ++i)
288 if (i->second.f_implied.find(el) != i->second.f_implied.end())
338 for (
auto i =
fMap.begin(); i !=
fMap.end(); ++i) {
351 for (
auto i =
fMap.begin(); i !=
fMap.end(); ++i) {
370 switch (pick_to_select)
477 static const REveException eh(
"REveSelection::NewElementPicked ");
485 if ( ! pel)
throw eh +
"picked element id=" +
id +
" not found.";
491 std::string debug_secondary;
493 debug_secondary =
" {";
494 for (
auto si : secondary_idcs) {
495 debug_secondary.append(
" ");
496 debug_secondary.append(std::to_string(si));
498 debug_secondary.append(
" }");
500 ::Info(
"REveSelection::NewElementPicked",
"%p -> %p, multi: %d, secondary: %d %s", pel, el, multi, secondary, debug_secondary.c_str());
604 auto j = i.second.f_implied.find(el);
606 if (j != i.second.f_implied.end())
608 i.second.f_implied.erase(j);
631 nlohmann::json rec = {}, imp = nlohmann::json::array(), sec = nlohmann::json::array();
633 rec[
"primary"] = i.first->GetElementId();
636 for (
auto &imp_el : i.second.f_implied) imp.push_back(imp_el->GetElementId());
637 rec[
"implied"] = imp;
640 for (
auto &sec_id : i.second.f_sec_idcs) sec.push_back(sec_id);
641 rec[
"sec_idcs"] = sec;
643 sel_list.push_back(rec);
646 j[
"sel_list"] = sel_list;
648 j[
"UT_PostStream"] =
"UT_Selection_Refresh_State";
void Info(const char *location, const char *msgfmt,...)
void Warning(const char *location, const char *msgfmt,...)
R__EXTERN TEveManager * gEve
virtual void AddNiece(REveElement *el)
virtual void RemoveNiece(REveElement *el)
TClass * IsA() const
Return class for this element.
REveCompound * GetCompound()
REveElement * GetSelectionMaster()
Returns the master element - that is:
virtual Int_t WriteCoreJson(nlohmann::json &cj, Int_t rnr_offset)
Write core json.
void StampObjPropsPreChk()
void DecImpliedSelected()
std::set< REveElement * > Set_t
REveException Exception-type thrown by Eve classes.
REveProjectable * GetProjectable() const
void RemoveNieceInternal(REveElement *el) override
Virtual from REveAunt.
void NewElementPicked(ElementId_t id, bool multi, bool secondary, const std::set< int > &secondary_idcs={})
bool HasNiece(REveElement *el) const override
Check if elemenet el is selected (not implied selected).
bool AcceptNiece(REveElement *el) override
Pre-addition check.
void AddNieceInternal(REveElement *el) override
Add an element into selection, virtual from REveAunt.
REveElement * MapPickedToSelected(REveElement *el)
Given element el that was picked or clicked by the user, find the parent/ancestor element that should...
void RemoveImpliedSelected(REveElement *el)
Remove element from all implied-selected sets.
int RemoveImpliedSelectedReferencesTo(REveElement *el)
Remove pointers to el from implied selected sets.
void SelectionRemoved(REveElement *el)
Emit SelectionRemoved signal.
void SetHiddenEdgeColorRGB(UChar_t r, UChar_t g, UChar_t b)
Set hidden highlight color.
virtual ~REveSelection()
Destructor.
REveSelection(const REveSelection &)=delete
void SetVisibleEdgeColorRGB(UChar_t r, UChar_t g, UChar_t b)
Set visible highlight color.
Color_t fHiddenEdgeColor
!
std::vector< int > fPickToSelect
!
virtual void ActivateSelection()
Activate this selection.
bool HasNieces() const override
Check if any elements are selected.
void SetHighlightMode()
Set to 'highlight' mode.
void SelectionCleared()
Emit SelectionCleared signal.
virtual void DeactivateSelection()
Deactivate this selection.
void DoElementSelect(SelMap_i &entry)
Select element indicated by the entry and fill its implied-selected set.
Int_t WriteCoreJson(nlohmann::json &cj, Int_t rnr_offset) override
Write core json. If rnr_offset negative, render data will not be written.
Record * find_record(REveElement *el)
SelMap_t::iterator SelMap_i
virtual void UserRePickedElement(REveElement *el)
Called when element selection is repeated.
virtual void UserPickedElement(REveElement *el, Bool_t multi=kFALSE)
Called when user picks/clicks on an element.
void AddPickToSelect(int ps)
void RecheckImpliedSetForElement(REveElement *el)
If given element is selected or implied-selected within this selection then recheck implied-set for g...
void SelectionRepeated(REveElement *el)
Emit SelectionRepeated signal.
void RecheckImpliedSet(SelMap_i &entry)
Recalculate implied-selected state for given selection entry.
void SelectionAdded(REveElement *el)
Emit SelectionAdded signal.
void RemoveNieces() override
Add an element into selection, virtual from REveAunt.
Color_t fVisibleEdgeColor
!
void DoElementUnselect(SelMap_i &entry)
Deselect element indicated by the entry and clear its implied-selected set.
void ClearSelection()
Clear selection if not empty.
virtual void UserUnPickedElement(REveElement *el)
Called when an element is unselected.
Bool_t InheritsFrom(const char *cl) const
Return kTRUE if this class inherits from a class with name "classname".
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
basic_json<> json
default JSON class
bool is_secondary() const
std::set< int > f_sec_idcs
bool f_is_sec
! is secondary-selected – XXXX do i need it ????