Home || Visual Search || Applications || Architecture || Important Messages || OGL || Src

void Impala::Application::SDash::IdentificationPane::AddPositive ( OGLVIEW *  oglView  )  [inline, private]

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:


Generated on Thu Jan 13 09:16:05 2011 for ImpalaSrc by  doxygen 1.5.1