@@ -28,15 +28,17 @@ namespace vis
2828 , curr_gl_tex_structured_volume(nullptr )
2929 , curr_gl_tex_structured_gradient(nullptr )
3030 {
31+ m_path_to_data = " " ;
32+ #ifdef USE_DATA_PROVIDER
33+ m_data_provider = std::make_unique<DataProvider>();
34+ #else
3135 // structured, unstructured and transfer function list...
3236 stored_structured_datasets.clear ();
3337 stored_transfer_functions.clear ();
34-
35- m_path_to_data = " " ;
36-
3738
3839 ui_dataset_names.clear ();
3940 ui_transferf_names.clear ();
41+ #endif
4042 }
4143
4244 DataManager::~DataManager ()
@@ -66,6 +68,16 @@ namespace vis
6668
6769 void DataManager::ReadData ()
6870 {
71+ #ifdef USE_DATA_PROVIDER
72+ m_data_provider->ClearStructuredGridFileList ();
73+ m_data_provider->ClearTransferFunctionFileList ();
74+
75+ if (curr_vol_data_type == vis::GRID_VOLUME_DATA_TYPE::STRUCTURED) {
76+ // m_data_provider->SetStructuredGridFileList(m_path_to_data, "#list_structured_datasets");
77+ m_data_provider->SetStructuredGridFileList (m_path_to_data, " volume_list.csv" );
78+ curr_volume_index = 0 ;
79+ }
80+ #else
6981 stored_structured_datasets.clear ();
7082 stored_transfer_functions.clear ();
7183
@@ -74,22 +86,27 @@ namespace vis
7486
7587 if (curr_vol_data_type == vis::GRID_VOLUME_DATA_TYPE::STRUCTURED)
7688 ReadStructuredDatasetsFromRes ();
89+ #endif
7790
7891 ReadTransferFunctionsFromRes ();
7992
8093 if (curr_vol_data_type == vis::GRID_VOLUME_DATA_TYPE::STRUCTURED)
8194 {
8295 GenerateStructuredVolumeTexture ();
8396 }
84-
97+
8598 vis::TransferFunctionReader tfr;
8699 curr_vr_transferfunction = tfr.ReadTransferFunction (stored_transfer_functions[GetCurrentTransferFunctionIndex ()].path );
87100 curr_vr_transferfunction->SetName (stored_transfer_functions[GetCurrentTransferFunctionIndex ()].name );
88101 }
89102
90103 int DataManager::GetNumberOfStructuredDatasets ()
91104 {
105+ #ifdef USE_DATA_PROVIDER
106+ return m_data_provider->GetNumberOfStructuredGrids ();
107+ #else
92108 return stored_structured_datasets.size ();
109+ #endif
93110 }
94111
95112 int DataManager::GetCurrentVolumeIndex ()
@@ -99,9 +116,13 @@ namespace vis
99116
100117 std::string DataManager::GetCurrentVolumeName ()
101118 {
102- if (GetInputVolumeDataType () == vis::GRID_VOLUME_DATA_TYPE::STRUCTURED)
119+ if (GetInputVolumeDataType () == vis::GRID_VOLUME_DATA_TYPE::STRUCTURED)
103120 {
121+ #ifdef USE_DATA_PROVIDER
122+ return m_data_provider->GetStructuredGridNameList ()[GetCurrentVolumeIndex ()];
123+ #else
104124 return stored_structured_datasets[GetCurrentVolumeIndex ()].name ;
125+ #endif
105126 }
106127 return " " ;
107128 }
@@ -171,15 +192,14 @@ namespace vis
171192 {
172193 return curr_gl_tex_structured_gradient;
173194 }
174-
175- std::vector<std::string>* DataManager::GetUINameDatasetListPtr ()
176- {
177- return &ui_dataset_names;
178- }
179195
180- std::vector<std::string>* DataManager::GetUINameTransferFunctionListPtr ()
196+ std::vector<std::string>& DataManager::GetUINameTransferFunctionList ()
181197 {
182- return &ui_transferf_names;
198+ #ifdef USE_DATA_PROVIDER
199+ return m_data_provider->GetTransferFunctionNameList ();
200+ #else
201+ return ui_transferf_names;
202+ #endif
183203 }
184204
185205 // //////////////////////////////////////////////////////////////////////
@@ -208,45 +228,46 @@ namespace vis
208228 curr_vr_transferfunction = nullptr ;
209229 }
210230
231+ #ifndef USE_DATA_PROVIDER
211232 void DataManager::ReadStructuredDatasetsFromRes ()
212233 {
213234 std::string line;
214235 std::string model_read_filename = m_path_to_data;
215236 model_read_filename.append (" /#list_structured_datasets" );
216237 std::ifstream f_openmodels (model_read_filename);
217-
238+
218239 if (!f_openmodels.is_open ())
219240 {
220241 std::cout << " Error: Unable to read vol rendering datasets." << std::endl;
221242 exit (EXIT_FAILURE);
222243 }
223-
244+
224245 std::cout << " Reading structured datasets..." << std::endl;
225246 while (!f_openmodels.eof ())
226247 {
227248 line.clear ();
228249 std::getline (f_openmodels, line);
229-
250+
230251 int start_path = line.find_first_of (" <" ) + 1 ;
231252 int end_path = line.find_first_of (" >" );
232-
253+
233254 int start_name = line.find_last_of (" <" ) + 1 ;
234255 int end_name = line.find_last_of (" >" );
235-
256+
236257 stored_structured_datasets.push_back (DataReference (
237258 line.substr (start_path, end_path - start_path),
238259 line.substr (start_name, end_name - start_name),
239260 m_path_to_data
240261 ));
241262 }
242263 f_openmodels.close ();
243-
264+
244265 for (int i = 0 ; i < stored_structured_datasets.size (); i++)
245266 {
246267 std::cout << i << " : " << stored_structured_datasets[i].name << std::endl;
247268 ui_dataset_names.push_back (stored_structured_datasets[i].name );
248269 }
249-
270+
250271 curr_volume_index = 0 ;
251272 }
252273
@@ -256,43 +277,48 @@ namespace vis
256277 std::string tfunc_read_filename = m_path_to_data;
257278 tfunc_read_filename.append (" /#list_transfer_functions" );
258279 std::ifstream f_opentransferfunctions (tfunc_read_filename);
259-
280+
260281 if (!f_opentransferfunctions.is_open ())
261282 {
262283 std::cout << " Error: Unable to read vol rendering transfer functions." << std::endl;
263284 exit (EXIT_FAILURE);
264285 }
265-
286+
266287 std::cout << " Reading Transfer Functions..." ;
267288 while (!f_opentransferfunctions.eof ())
268289 {
269290 line.clear ();
270291 std::getline (f_opentransferfunctions, line);
271-
292+
272293 int start_path = line.find_first_of (" <" ) + 1 ;
273294 int end_path = line.find_first_of (" >" );
274-
295+
275296 int start_name = line.find_last_of (" <" ) + 1 ;
276297 int end_name = line.find_last_of (" >" );
277-
298+
278299 stored_transfer_functions.push_back (DataReference (
279300 line.substr (start_path, end_path - start_path),
280301 line.substr (start_name, end_name - start_name),
281302 m_path_to_data
282303 ));
283304 }
284305 f_opentransferfunctions.close ();
285-
306+
286307 for (int i = 0 ; i < stored_transfer_functions.size (); i++)
287308 ui_transferf_names.push_back (stored_transfer_functions[i].name );
288309 }
310+ #endif
289311
290312 bool DataManager::GenerateStructuredVolumeTexture ()
291313 {
292314 // Read Volume
315+ #ifdef USE_DATA_PROVIDER
316+ curr_vr_volume = m_data_provider->LoadStructuredGrid (GetCurrentVolumeIndex ());
317+ #else
293318 vis::VolumeReader vr;
294319 curr_vr_volume = vr.ReadStructuredVolume (stored_structured_datasets[GetCurrentVolumeIndex ()].path );
295- curr_vr_volume->SetName (stored_structured_datasets[GetCurrentVolumeIndex ()].name );
320+ curr_vr_volume->SetName (stored_structured_datasets[GetCurrentVolumeIndex ()].name );
321+ #endif
296322
297323 // Generate Volume Texture
298324 curr_gl_tex_structured_volume = vis::GenerateRTexture (curr_vr_volume, 0 , 0 , 0 , curr_vr_volume->GetWidth (),
@@ -347,7 +373,7 @@ namespace vis
347373 {
348374 if (curr_vol_data_type == vis::GRID_VOLUME_DATA_TYPE::STRUCTURED)
349375 {
350- if (curr_volume_index + 1 < stored_structured_datasets. size ())
376+ if (curr_volume_index + 1 < GetNumberOfStructuredDatasets ())
351377 {
352378 curr_volume_index += 1 ;
353379 DeleteVolumeData ();
@@ -364,18 +390,27 @@ namespace vis
364390 {
365391 if (curr_vol_data_type == vis::GRID_VOLUME_DATA_TYPE::STRUCTURED)
366392 {
367- for (int i = 0 ; i < stored_structured_datasets.size (); i++)
393+ #ifdef USE_DATA_PROVIDER
394+ int new_volume_id = m_data_provider->FindStructuredGridName (name);
395+ if (new_volume_id != -1 ) {
396+ curr_volume_index = new_volume_id;
397+ DeleteVolumeData ();
398+ GenerateStructuredVolumeTexture ();
399+ return true ;
400+ }
401+ #else
402+ for (int i = 0 ; i < stored_structured_datasets.size (); i++)
368403 {
369404 if (stored_structured_datasets[i].name .compare (name) == 0 )
370405 {
371406 curr_volume_index = i;
372407 DeleteVolumeData ();
373408
374409 GenerateStructuredVolumeTexture ();
375-
376410 return true ;
377411 }
378412 }
413+ #endif
379414 }
380415 return false ;
381416 }
@@ -384,7 +419,7 @@ namespace vis
384419 {
385420 if (curr_vol_data_type == vis::GRID_VOLUME_DATA_TYPE::STRUCTURED)
386421 {
387- if (id < stored_structured_datasets. size ())
422+ if (id < GetNumberOfStructuredDatasets ())
388423 {
389424 curr_volume_index = id;
390425 DeleteVolumeData ();
@@ -577,6 +612,15 @@ namespace vis
577612 return vlist;
578613 }
579614
615+ std::vector<std::string>& DataManager::GetUINameDatasetList ()
616+ {
617+ #ifdef USE_DATA_PROVIDER
618+ return m_data_provider->GetStructuredGridNameList ();
619+ #else
620+ return ui_dataset_names;
621+ #endif
622+ }
623+
580624 gl::Texture3D* DataManager::GenerateGradientWithComputeShader ()
581625 {
582626 // Get Current Volume
0 commit comments