Definition at line 423 of file IdentificationPane.h. References OglGui::ViewStrip::AddImage(), Impala::Application::SDash::RoiInfo::frameNr, OglGui::View::GetOGLVIEW2D(), OglGui::OglWindow::GetOGLWND(), GetPositives(), OglGui::ViewStrip::LayoutViews(), mPositivesViewStrip, mRoisOfPositives, mVideos, OglViewGetRoiInfo(), OglViewSetRoiInfo(), Impala::Application::SDash::RoiInfo::roiNr, and Impala::Application::SDash::RoiInfo::videoId. Referenced by ImageSelectionEvent(), and SelectedToPositives(). 00424 { 00425 // determine insert position and insert new roi 00426 //RoiInfo newRoi = *((RoiInfo*) oglView->UserData1); 00427 RoiInfo newRoi = OglViewGetRoiInfo(oglView); 00428 float frameTimeNewRoi = newRoi.frameNr * mVideos[newRoi.videoId].GetTimePerFrame(); 00429 std::vector<RoiInfo>::iterator iter = mRoisOfPositives.begin(); 00430 int insertAt = 0; 00431 while (iter != mRoisOfPositives.end()) 00432 { 00433 RoiInfo roi = *iter; 00434 float frameTimeRoi = roi.frameNr * mVideos[roi.videoId].GetTimePerFrame(); 00435 //if (roi.frameNr > newRoi.frameNr) // assumes time order by frame order 00436 if (frameTimeRoi > frameTimeNewRoi) 00437 break; 00438 else if (roi.frameNr == newRoi.frameNr) 00439 if (roi.videoId == newRoi.videoId && roi.roiNr == newRoi.roiNr) 00440 return; // don't add duplicates 00441 iter++; 00442 insertAt++; 00443 } 00444 mRoisOfPositives.insert(iter, newRoi); 00445 00446 // refill the strip and insert new image 00447 std::vector<OGLIMAGE*> currentPositives = GetPositives(); 00448 // RvB: Als GetPositives de refCount verhoogd heeft kan volgende line geen kwaad. 00449 viewSys.DeleteViews(mPositivesViewStrip->GetOGLWND()); 00450 mPositivesViewStrip->LayoutViews(); 00451 View* view; 00452 for (int i = 0; i <= currentPositives.size(); i++) 00453 { 00454 if (i < insertAt) 00455 view = mPositivesViewStrip->AddImage(currentPositives[i]); 00456 else if (i == insertAt) 00457 view = mPositivesViewStrip->AddImage(oglView->im); 00458 else 00459 view = mPositivesViewStrip->AddImage(currentPositives[i-1]); 00460 00461 // RvB: Geen texturing omdat ROIs niet deelbaar door 4 zijn. 00462 // het maken van textures kost ook tijd omdat dan de beelden 00463 // door CPU geschaald moeten worden naar een 2 macht. 00464 // view->GetOGLVIEW2D()->texturing = 1; 00465 RoiInfo roiInfo = mRoisOfPositives[i]; 00466 //view->GetOGLVIEW2D()->UserData1 = new RoiInfo(roiInfo); 00467 OglViewSetRoiInfo(view->GetOGLVIEW2D(), &roiInfo); 00468 } 00469 // RvB: Als GetPositives de refCount v/d OGLIMAGES netjes verhoogd heeft 00470 // moeten ze hier gereleased worden (de viewstrip heeft nu nl een hold op ze). 00471 for (int i=0; i<currentPositives.size(); i++) 00472 oglSys.ReleaseOglImage(currentPositives[i]); 00473 00474 }
Here is the call graph for this function:
|