예제 #1
0
//'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);
}