/// Delete event and reconnect surrounding events in queue void eventQueue::DeleteEvent(Event *ev) { #ifdef EQ_SANITIZE sanitize(); #endif Event *tmp; CmiAssert(ev != currentPtr); CmiAssert(ev->spawnedList == NULL); CmiAssert(ev != frontPtr); CmiAssert(ev != backPtr); // if ev is earliest straggler, see if there is another if (RBevent == ev) { RBevent = NULL; tmp = ev->next; while ((tmp != currentPtr) && (tmp != backPtr) && (tmp->done == 1)) tmp = tmp->next; if ((tmp != currentPtr) && (tmp != backPtr) && (tmp->done == 0)) RBevent = tmp; } // connect surrounding events ev->prev->next = ev->next; ev->next->prev = ev->prev; POSE_TimeType ts = ev->timestamp; if (!ev->done) eventCount--; else mem_usage--; delete ev; // then delete the event if (ts == largest) FindLargest(); #ifdef EQ_SANITIZE sanitize(); #endif }
// given a non-empty tree t, return the largest element in the tree int FindLargest(struct TreeNode *t) { if (t->right==0) { return t->d; } else { return FindLargest(t->right); } }
cv::Mat PathDetect::GetPath(const cv::Mat& input) const { cv::Mat watershedImage = WatershedImage(input); FindLargest(watershedImage); return watershedImage; }
bool GPanel::Pour(GRegion &r) { int Sx = CalcWidth(); GRect *Best = 0; if (Open()) { Best = FindLargest(r); } else { Best = FindSmallestFit(r, Sx, ClosedSize); if (!Best) { Best = FindLargest(r); } } if (Best) { GRect r = *Best; if (OpenSize > 0) { int Size = ((Open()) ? OpenSize : ClosedSize); int Limit = 30; if (TestFlag(Align, GV_EDGE_RIGHT) || TestFlag(Align, GV_EDGE_LEFT)) { Limit = min(Size, r.X()-1); } else /* if (TestFlag(Align, GV_EDGE_BOTTOM) || TextFlag(Align, GV_EDGE_TOP)) */ { Limit = min(Size, r.Y()-1); } if (Align & GV_EDGE_RIGHT) { r.x1 = r.x2 - Limit; } else if (Align & GV_EDGE_BOTTOM) { r.y1 = r.y2 - Limit; } else if (Align & GV_EDGE_LEFT) { r.x2 = r.x1 + Limit; } else // if (Align & GV_EDGE_TOP) { r.y2 = r.y1 + Limit; } if (!Open()) { r.x2 = r.x1 + Sx - 1; } } else { r.y2 = r.y1 - OpenSize; } SetPos(r, true); return true; } return false; }