1 // This is brl/bseg/bstm/pro/processes/bstm_scene_lvcs_process.cxx
2 //:
3 // \file
4 // \brief  A process for accessing scene LVCS
5 //
6 // \author Raphael Kargon
7 // \date July 11, 2017
8 
9 #include <bprb/bprb_func_process.h>
10 
11 #include <bstm/bstm_scene.h>
12 #include "vpgl/vpgl_lvcs_sptr.h"
13 
14 namespace bstm_scene_lvcs_process_globals
15 {
16   constexpr unsigned n_inputs_ = 1;
17   constexpr unsigned n_outputs_ = 1;
18 }
bstm_scene_lvcs_process_cons(bprb_func_process & pro)19 bool bstm_scene_lvcs_process_cons(bprb_func_process& pro)
20 {
21   using namespace bstm_scene_lvcs_process_globals;
22   //process takes 1 input, the scene
23   std::vector<std::string> input_types_(n_inputs_);
24   input_types_[0] = "bstm_scene_sptr";
25 
26   // process has 3 outputs:
27   std::vector<std::string>  output_types_(n_outputs_);
28   output_types_[0] = "vpgl_lvcs_sptr";
29   return pro.set_input_types(input_types_) && pro.set_output_types(output_types_);
30 }
31 
bstm_scene_lvcs_process(bprb_func_process & pro)32 bool bstm_scene_lvcs_process(bprb_func_process& pro)
33 {
34   using namespace bstm_scene_lvcs_process_globals;
35 
36   if ( pro.n_inputs() < n_inputs_ ){
37     std::cout << pro.name() << ": The input number should be " << n_inputs_<< std::endl;
38     return false;
39   }
40 
41   //get the inputs
42   bstm_scene_sptr   scene = pro.get_input<bstm_scene_sptr>(0);
43   vpgl_lvcs_sptr lvcs = new vpgl_lvcs(scene->lvcs());
44 
45   // store outputs
46   int i=0;
47   pro.set_output_val<vpgl_lvcs_sptr>(i++, lvcs);
48   return true;
49 }
50