コード例 #1
0
ファイル: joystick.cpp プロジェクト: dino0815/jstest-gtk
void
Joystick::load(const XMLReader& root_reader)
{
  std::string cfg_name;
  if (root_reader.read("name", cfg_name) && name == cfg_name)
    {
      // Read calibration data
      if (XMLReader reader = root_reader.get_section("calibration"))
        {
          std::vector<CalibrationData> calibration_data;
          const std::vector<XMLReader>& sections = reader.get_sections();
          for(std::vector<XMLReader>::const_iterator i = sections.begin(); i != sections.end(); ++i)
            {
              CalibrationData data;

              //i->read("axis", );
              //i->read("precision", );
              i->read("invert",     data.invert);
              i->read("center-min", data.center_min);
              i->read("center-max", data.center_max);
              i->read("range-min",  data.range_min);
              i->read("range-max",  data.range_max);

              calibration_data.push_back(data);
            }

          set_calibration(calibration_data);
        }

      { // Read axis mapping
        const std::vector<std::string>& cfg_axis_map = root_reader.get_string_list("axis-map");
        std::vector<int> mapping;
        
        for(std::vector<std::string>::const_iterator i = cfg_axis_map.begin(); i != cfg_axis_map.end(); ++i)
          {
            int type = 0;
            int code = 0;
            str2event(*i, type, code);
            mapping.push_back(code);
          }

        set_axis_mapping(mapping);
      }

      { // Read button mapping
        const std::vector<std::string>& cfg_button_map = root_reader.get_string_list("button-map");
        std::vector<int> mapping;
        
        for(std::vector<std::string>::const_iterator i = cfg_button_map.begin(); i != cfg_button_map.end(); ++i)
          {
            int type = 0;
            int code = 0;
            str2event(*i, type, code);
            mapping.push_back(code);
          }

        set_button_mapping(mapping);
      }
    }
}