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:
|