Esempio n. 1
0
 /* static */ bool Parser::parse_eye( Eye & eye, boost::property_tree::ptree const & object )
 {
     parse_point2d( eye.raw, object.get_child( "raw" ) );
     parse_point2d( eye.avg, object.get_child( "avg" ) );
     eye.psize = object.get<float>( "psize" );
     parse_point2d( eye.pcenter, object.get_child( "pcenter" ) );
     return true;
 }
    /* static */ bool Parser::parse_server_state(ServerState & server_state, GazeData & gaze_data, CalibResult & calib_result, Screen & screen, boost::property_tree::ptree const & root, bool& has_gaze_data, bool& has_calib_result)
    {
        OptionalPTree values = root.get_child_optional("values");

        if (!values)
        {
            return false;
        }

        Parser::parse_calib_result(calib_result, root, has_calib_result);

        OptionalPTree frame = values->get_child_optional("frame");
        has_gaze_data = static_cast<bool>(frame);

        if (has_gaze_data)
        {
            gaze_data.time = frame->get<int>("time");
            gaze_data.fix = frame->get<bool>("fix");
            gaze_data.state  = frame->get<int>("state");
            parse_point2d(gaze_data.raw, frame->get_child("raw"));
            parse_point2d(gaze_data.raw, frame->get_child("avg"));
            parse_eye(gaze_data.lefteye, frame->get_child("lefteye"));
            parse_eye(gaze_data.righteye, frame->get_child("righteye"));
        }

        server_state.push               = values->get<bool>("push", server_state.push);
        server_state.heartbeatinterval  = values->get<int>("heartbeatinterval", server_state.heartbeatinterval);
        server_state.version            = values->get<int>("version", server_state.version);
        server_state.trackerstate       = values->get<int>("trackerstate", server_state.trackerstate);
        server_state.framerate          = values->get<int>("framerate", server_state.framerate);
        server_state.iscalibrated       = values->get<bool>("iscalibrated", server_state.iscalibrated);
        server_state.iscalibrating      = values->get<bool>("iscalibrating", server_state.iscalibrating);

        screen.screenindex = values->get<int>("screenindex", screen.screenindex);
        screen.screenresw  = values->get<int>("screenresw", screen.screenresw);
        screen.screenresh  = values->get<int>("screenresh", screen.screenresh);
        screen.screenpsyw  = values->get<float>("screenpsyw", screen.screenpsyw);
        screen.screenpsyh  = values->get<float>("screenpsyh", screen.screenpsyh);
        return true;
    }
Esempio n. 3
0
    /* static */ bool Parser::parse_calib_result( CalibResult & calib_result, boost::property_tree::ptree const & root, bool & has_calib_result )
    {
        OptionalPTree values = root.get_child_optional( "values" );
        has_calib_result = false;

        if( !values )
        {
            return true;
        }

        OptionalPTree calibresult = values->get_child_optional( "calibresult" );

        if( !calibresult )
        {
            return false;
        }

        calib_result.result = calibresult->get<bool>( "result" );
        calib_result.deg = calibresult->get<float>( "deg" );
        calib_result.degl = calibresult->get<float>( "degl" );
        calib_result.degr = calibresult->get<float>( "degr" );

        OptionalPTree calibpoints = calibresult->get_child_optional( "calibpoints" );

        if( !calibpoints )
        {
            return false;
        }

        std::vector<CalibPoint> & calibpoints_vector = calib_result.calibpoints;
        calibpoints_vector.reserve( calibpoints->size() );
        boost::property_tree::ptree::const_iterator it = calibpoints->begin();
        boost::property_tree::ptree::const_iterator end = calibpoints->end();

        for( ; it != end; ++it )
        {
            CalibPoint calib_point;

            calib_point.state = it->second.get<int>( "state" );
            parse_point2d( calib_point.cp, it->second.get_child( "cp" ) );
            parse_point2d( calib_point.mecp, it->second.get_child( "mecp" ) );

            PTree const & acd = it->second.get_child( "acd" );
            calib_point.acd.ad = acd.get<float>( "ad" );
            calib_point.acd.adl = acd.get<float>( "adl" );
            calib_point.acd.adr = acd.get<float>( "adr" );

            PTree const & mepix = it->second.get_child( "mepix" );
            calib_point.mepix.mep = mepix.get<float>( "mep" );
            calib_point.mepix.mepl = mepix.get<float>( "mepl" );
            calib_point.mepix.mepr = mepix.get<float>( "mepr" );

            PTree const & asdp = it->second.get_child( "asdp" );
            calib_point.asdp.asd = asdp.get<float>( "asd" );
            calib_point.asdp.asdl = asdp.get<float>( "asdl" );
            calib_point.asdp.asdr = asdp.get<float>( "asdr" );

            calibpoints_vector.push_back( calib_point );
        }

        has_calib_result = true;
        return true;
    }