/**Create and return the structure that would have been read by UsReconstructFileReader, * if written from this object. * */ USReconstructInputData UsReconstructionFileMaker::getReconstructData(ImageDataContainerPtr imageData, std::vector<TimeInfo> imageTimestamps, TimedTransformMap trackerRecordedData, std::map<double, ToolPositionMetadata> trackerRecordedMetadata, std::map<double, ToolPositionMetadata> referenceRecordedMetadata, ToolPtr tool, QString streamUid, bool writeColor, Transform3D rMpr) { if(trackerRecordedData.empty()) reportWarning("No tracking data for writing to reconstruction file."); USReconstructInputData retval; retval.mFilename = mSessionDescription; // not saved yet - no filename retval.mUsRaw = USFrameData::create(mSessionDescription, imageData); retval.rMpr = rMpr; retval.mTrackerRecordedMetadata = trackerRecordedMetadata; retval.mReferenceRecordedMetadata = referenceRecordedMetadata; for (TimedTransformMap::iterator it = trackerRecordedData.begin(); it != trackerRecordedData.end(); ++it) { TimedPosition current; current.mTime = it->first; current.mTimeInfo.setAcquisitionTime(it->first); current.mPos = it->second; retval.mPositions.push_back(current); } std::vector<TimeInfo> fts = imageTimestamps; for (unsigned i=0; i<fts.size(); ++i) { TimedPosition current; current.mTimeInfo = fts[i]; current.mTime = current.mTimeInfo.getAcquisitionTime(); current.mPos = Transform3D::Identity(); // current.mPos = not written - will be found from track positions during reconstruction. retval.mFrames.push_back(current); } if (tool && tool->getProbe()) { retval.mProbeDefinition.setData(tool->getProbe()->getProbeDefinition(streamUid)); } if (tool) retval.mProbeUid = tool->getUid(); this->fillFramePositions(&retval); return retval; }