/** extract information from the IGTLinkUSStatusMessage * and store locally. Also reset the old local info with * information from the probe in toolmanager. */ void VideoConnection::updateStatus(ProbeDefinitionPtr msg) { ToolPtr tool = mBackend->tracking()->getFirstProbe(); if (!tool || !tool->getProbe()) { //Don't throw away the ProbeDefinition. Save it until it can be used if (mUnusedProbeDefinitionVector.empty()) connect(mBackend->tracking().get(), &TrackingService::stateChanged, this, &VideoConnection::useUnusedProbeDefinitionSlot); mUnusedProbeDefinitionVector.push_back(msg); return; } ProbePtr probe = tool->getProbe(); // start with getting a valid data object from the probe, in order to keep // existing values (such as temporal calibration). // Note that the 'active' data is get while the 'uid' data is set. ProbeDefinition data = probe->getProbeDefinition(); data.setUid(msg->getUid()); data.setType(msg->getType()); data.setSector(msg->getDepthStart(), msg->getDepthEnd(), msg->getWidth()); data.setOrigin_p(msg->getOrigin_p()); data.setSize(msg->getSize()); data.setSpacing(msg->getSpacing()); data.setClipRect_p(msg->getClipRect_p()); data.setUseDigitalVideo(true); probe->setProbeDefinition(data); probe->setActiveStream(msg->getUid()); }
ProbeDefinition createProbeDefinitionFromConfiguration(ProbeXmlConfigParser::Configuration config) { if(config.isEmpty()) return ProbeDefinition(); ProbeDefinition probeDefinition; if (config.mWidthDeg > 0.1) // Sector probe { double depthStart = config.mOffset * config.mPixelHeight; double depthEnd = config.mDepth * config.mPixelHeight + depthStart; double width = config.mWidthDeg * M_PI / 180.0;//width in radians probeDefinition = ProbeDefinition(ProbeDefinition::tSECTOR); probeDefinition.setSector(depthStart, depthEnd, width); } else //Linear probe { int widtInPixels = config.mRightEdge - config.mLeftEdge; double width = config.mPixelWidth * double(widtInPixels); //width in mm // correct for top/bottom edges if applicable double depthStart = double(config.mTopEdge-config.mOriginRow) * config.mPixelHeight; double depthEnd = double(config.mBottomEdge-config.mOriginRow) * config.mPixelHeight; probeDefinition = ProbeDefinition(ProbeDefinition::tLINEAR); probeDefinition.setSector(depthStart, depthEnd, width); } probeDefinition.setSpacing(Vector3D(config.mPixelWidth, config.mPixelHeight, 1)); probeDefinition.setSize(QSize(config.mImageWidth, config.mImageHeight)); probeDefinition.setOrigin_p(Vector3D(config.mOriginCol, config.mOriginRow, 0)); probeDefinition.setClipRect_p(DoubleBoundingBox3D(config.mLeftEdge,config.mRightEdge,config.mTopEdge,config.mBottomEdge,0,0)); probeDefinition.setTemporalCalibration(config.mTemporalCalibration); return probeDefinition; }