//************************************ // 函数名称: AddAt // 返回类型: bool // 参数信息: CControlUI * pControl // 参数信息: int iIndex 该参数仅针对当前节点下的兄弟索引,并非列表视图索引 // 函数说明: //************************************ bool CTreeNodeUI::AddAt( CControlUI* pControl, int iIndex ) { if(NULL == static_cast<CTreeNodeUI*>(pControl->GetInterface(_T("TreeNode")))) return false; CTreeNodeUI* pIndexNode = static_cast<CTreeNodeUI*>(mTreeNodes.GetAt(iIndex)); if(!pIndexNode){ if(!mTreeNodes.Add(pControl)) return false; } else if(pIndexNode && !mTreeNodes.InsertAt(iIndex,pControl)) return false; if(!pIndexNode && pTreeView && pTreeView->GetItemAt(GetTreeIndex()+1)) pIndexNode = static_cast<CTreeNodeUI*>(pTreeView->GetItemAt(GetTreeIndex()+1)->GetInterface(_T("TreeNode"))); pControl = CalLocation((CTreeNodeUI*)pControl); if(pTreeView && pIndexNode) return pTreeView->AddAt((CTreeNodeUI*)pControl,pIndexNode); else return pTreeView->Add((CTreeNodeUI*)pControl); return true; }
void OnlineGUI::TreeDraw(vector <TString> command) { // Called by DoDraw(), this will plot a Tree Variable TString var = command[0]; // Combine the cuts (definecuts and specific cuts) TCut cut = ""; TString tempCut; if(command.size()>1) { tempCut = command[1]; vector <TString> cutIdents = fConfig->GetCutIdent(); for(UInt_t i=0; i<cutIdents.size(); i++) { if(tempCut.Contains(cutIdents[i])) { TString cut_found = (TString)fConfig->GetDefinedCut(cutIdents[i]); tempCut.ReplaceAll(cutIdents[i],cut_found); } } cut = (TCut)tempCut; } // Determine which Tree the variable comes from, then draw it. UInt_t iTree; if(command[4].IsNull()) { iTree = GetTreeIndex(var); } else { iTree = GetTreeIndexFromName(command[4]); } TString drawopt = command[2]; Int_t errcode=0; if(drawopt.IsNull() && var.Contains(":")) drawopt = "box"; if(drawopt=="scat") drawopt = ""; if (iTree <= fRootTree.size() ) { errcode = fRootTree[iTree]->Draw(var,cut,drawopt, 1000000000,fTreeEntries[iTree]); TObject *hobj = (TObject*)gROOT->FindObject("htemp"); if(errcode==-1) { BadDraw(var+" not found"); } else if (errcode!=0) { if(!command[3].IsNull()) { TH1* thathist = (TH1*)hobj; thathist->SetTitle(command[3]); } } else { BadDraw("Empty Histogram"); } } else { BadDraw(var+" not found"); if (fConfig->IsMonitor()){ // Maybe we missed it... look again. I dont like the code // below... maybe I can come up with something better GetFileObjects(); GetRootTree(); GetTreeVars(); } } }
//************************************ // 函数名称: GetNodeIndex // 返回类型: int // 函数说明: 取得相对于兄弟节点的当前索引 //************************************ int CTreeNodeUI::GetNodeIndex() { if(!GetParentNode() && !pTreeView) return -1; if(!GetParentNode() && pTreeView) return GetTreeIndex(); return GetParentNode()->GetTreeNodes().Find(this); }
void opzMiniIdMgr::DeleteId(ID id) { ID index = GetTreeIndex(id); if(index == 0u) return; // assert(_binTree[id] > 0u && L"아직 할당되지 않은 ID를 삭제하려고 했습니다."); if(_binTree[id] <= 0u) return; while(index > 0u) { --_binTree[index]; index /= 2u; } }
//************************************ // 函数名称: AddChildNode // 返回类型: bool // 参数信息: CTreeNodeUI * _pTreeNodeUI // 函数说明: //************************************ bool CTreeNodeUI::AddChildNode( CTreeNodeUI* _pTreeNodeUI ) { if (!_pTreeNodeUI) return false; if (_tcsicmp(_pTreeNodeUI->GetClass(), _T("TreeNodeUI")) != 0) return false; _pTreeNodeUI = CalLocation(_pTreeNodeUI); bool nRet = true; if(pTreeView){ CTreeNodeUI* pNode = static_cast<CTreeNodeUI*>(mTreeNodes.GetAt(mTreeNodes.GetSize()-1)); if(!pNode || !pNode->GetLastNode()) nRet = pTreeView->AddAt(_pTreeNodeUI,GetTreeIndex()+1) >= 0; else nRet = pTreeView->AddAt(_pTreeNodeUI,pNode->GetLastNode()->GetTreeIndex()+1) >= 0; } if(nRet) mTreeNodes.Add(_pTreeNodeUI); return nRet; }
void opzMiniIdMgr::SetId(ID id) { while(Pow2(_level - 1) < id) { //level이 충분하지 못하다. DoubleGrow(); } ID index = GetTreeIndex(id); if(index == 0u) return; if(_binTree[index] >= 1u) { // assert(L"이미 할당 된 ID를 또 Set했습니다."); return; } else { while(index > 0u) { ++_binTree[index]; index /= 2u; } } }