//'copied' from OpenIGTLinkRTSource::updateSonixStatus() ProbeDefinitionPtr IGTLinkConversion::decode(IGTLinkUSStatusMessage::Pointer probeMessage, igtl::ImageMessage::Pointer imageMessage, ProbeDefinitionPtr base) { ProbeDefinitionPtr retval; if (base) retval = base; else retval = ProbeDefinitionPtr(new ProbeDefinition()); if (probeMessage) { // Update the parts of the probe data that is read from the probe message. retval->setType(ProbeDefinition::TYPE(probeMessage->GetProbeType())); retval->setSector( probeMessage->GetDepthStart(), probeMessage->GetDepthEnd(), probeMessage->GetWidth(), 0); retval->setOrigin_p(Vector3D(probeMessage->GetOrigin())); retval->setUid(probeMessage->GetDeviceName()); } if (imageMessage) { // Update the parts of the probe data that must be read from the image. // Retrive the image data float spacing[3]; // spacing (mm/pixel) int size[3]; // image dimension imageMessage->GetDimensions(size); imageMessage->GetSpacing(spacing); retval->setSpacing(Vector3D(spacing[0], spacing[1], spacing[2])); retval->setSize(QSize(size[0], size[1])); retval->setClipRect_p(DoubleBoundingBox3D(0, retval->getSize().width(), 0, retval->getSize().height(), 0, 0)); } return retval; // return this->decode(retval); }