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

void Impala::Application::MediaTable::TimeLineModule::NewWindow ( OglGui::Window window  )  [inline, virtual]

Reimplemented from Impala::Application::MediaTable::VisualizationModule.

Definition at line 74 of file TimeLineModule.h.

References OglGui::ScrollWnd::ContentHolder(), Impala::Application::MediaTable::TableDataView::GetColumn(), Impala::Application::MediaTable::TableDataView::GetFilteredRows(), Impala::Application::MediaTable::OglImageCacheStore::GetInstance(), Impala::Application::MediaTable::TableDataStore::GetInstance(), Impala::Application::MediaTable::TableDataView::GetMark(), Impala::Application::MediaTable::TableDataView::GetSortedDoubleData(), Impala::Application::MediaTable::TableDataView::GetSortedIntData(), Impala::Application::MediaTable::TableDataView::GetSortedQuid(), Impala::Application::MediaTable::TableDataView::GetSortedTextData(), Impala::Application::MediaTable::TableDataStore::GetTableDataView(), Impala::Application::MediaTable::TableColumn::GetType(), OglGui::OglWindow::H(), OglGui::ScrollWnd::HorizontalScrollBar(), ILOG_DEBUG, ILOG_INFO, LONG_MAX, OglGui::Window::MapKeysTo(), Impala::Application::MediaTable::TableDataViewController::MarkToColor(), max, min, Impala::Application::MediaTable::ConfigWindowModule::mStringValues, OglGui::Window::ScaleChildren(), OglGui::OglWindow::SetBackground(), OglGui::DocScroller::SetContentPane(), OglGui::DocScroller::SetDoc(), Impala::Application::MediaTable::TableDataSource::TYPE_DOUBLE, Impala::Application::MediaTable::TableDataSource::TYPE_INT, Impala::Application::MediaTable::TableDataSource::TYPE_TEXT, and OglGui::OglWindow::W().

00075     {
00076                 ILOG_DEBUG("Creating new TimeLineWindow.");
00077         TableDataView* mSource = TableDataStore::GetInstance()->GetTableDataView(mStringValues["View"]);
00078                 DocScroller*    docScroller = new DocScroller(window, window->W(), window->H(), 1);
00079         UnixTimeLine* wndTimeLine =
00080             new UnixTimeLine(docScroller->ContentHolder(),
00081                                0, 0, 1000, 300, 0, 3*3600*1000);
00082         wndTimeLine->MapKeysTo(docScroller->HorizontalScrollBar());
00083         docScroller->SetContentPane(wndTimeLine);
00084         docScroller->SetDoc(wndTimeLine);
00085 
00086         wndTimeLine->SetLineStipple((short) oglDot);
00087         wndTimeLine->SetViewLineStipple((short) oglDot);
00088                 
00089         long min = LONG_MAX;
00090                 long max = 0;
00091                 long ymax = 0;
00092         for (int i=0; i<mSource->GetFilteredRows(); i++)
00093                 {
00094                         double y;
00095                         if(mSource->GetColumn(mStringValues["Y"])->GetType() == TableDataSource::TYPE_INT)
00096                     y = mSource->GetSortedIntData(mStringValues["Y"], i);
00097                         else
00098                                 y = mSource->GetSortedDoubleData(mStringValues["Y"], i);
00099                         if(y > ymax) ymax = y;
00100                 }
00101                 double yfactor = (window->H()-64-25.0)/ymax;
00102                 ILOG_INFO("yfactor = " << yfactor);
00103         for (int i=0; i<mSource->GetFilteredRows(); i++)
00104         {
00105             OGLVIEW* view =
00106                 viewSys.View2D(wndTimeLine->GetOGLWND(), 0, 0, 30, 64, 64);
00107             viewSys.SetTags(view, FlexViewTags);
00108             viewSys.ClearTags(view, deletableTag|showBgTag);
00109             
00110                         int col = TableDataViewController::MarkToColor(mSource->GetMark(i));
00111                         viewSys.SetColor(view, OGL_BORDER, col);
00112             
00113                         double x = 0, y = 0;
00114                         
00115                         switch (mSource->GetColumn(mStringValues["Time"])->GetType()) {
00116                                 case TableDataSource::TYPE_INT:
00117                                         x = mSource->GetSortedIntData(mStringValues["Time"], i);
00118                                         break;
00119                                 case TableDataSource::TYPE_DOUBLE:
00120                                         x = mSource->GetSortedDoubleData(mStringValues["Time"], i);
00121                                         break;
00122 #ifdef USE_BOOST_THREADPOOL
00123                                 case TableDataSource::TYPE_TEXT:
00124                                         std::string txt = mSource->GetSortedTextData(mStringValues["Time"], i);
00125                                         try 
00126                                         {
00127                                                 boost::posix_time::ptime t(boost::posix_time::time_from_string(txt));
00128                                                 x = mktime(&boost::posix_time::to_tm( t ));
00129                                         }
00130                                         catch (boost::bad_lexical_cast) 
00131                                         {
00132                                                 x = 0;
00133                                         }
00134                                         // Only Unix: strptime(txt.c_str(), "%Y-%m-%d %T", &time);
00135                                         break;
00136 #endif
00137                         }
00138                         
00139                         if (x < min)
00140                                 min = x;
00141                         if (x > max)
00142                                 max = x;
00143 
00144                         if(mSource->GetColumn(mStringValues["Y"])->GetType() == TableDataSource::TYPE_INT)
00145                     y = mSource->GetSortedIntData(mStringValues["Y"], i);
00146                         else
00147                                 y = mSource->GetSortedDoubleData(mStringValues["Y"], i);
00148                         y *= yfactor;
00149                         
00150                         wndTimeLine->AddImIdOGLVIEW(view, x,
00151                         mSource->GetSortedQuid(mStringValues["Image"], i),
00152                         0, y);
00153             wndTimeLine->ShowViewAtTickSpanIdx(i, 600000);
00154             wndTimeLine->SetLineColor(view, col);
00155         }
00156                 if(max>min)
00157                 {
00158                         wndTimeLine->DocW(max-min);
00159                         wndTimeLine->SetRange(min, max-min);
00160                 }
00161                 wndTimeLine->ShowNeedle(false);
00162         wndTimeLine->SetGetOglImageByIdInterface(this);
00163         wndTimeLine->SetOglImageCache(OglImageCacheStore::GetInstance());
00164         wndTimeLine->MaxVisibleImages(250);
00165 
00166         docScroller->SetBackground(oglGUI_BG);
00167 
00168         window->ScaleChildren();
00169         window->SetBackground(oglGUI_BG);
00170         }

Here is the call graph for this function:


Generated on Fri Mar 19 10:44:16 2010 for ImpalaSrc by  doxygen 1.5.1