35 #include <QStringList>
53 object->mSelf = retval;
54 retval->initProbeXmlConfigParser(xml);
55 retval->initConfigId();
67 for (std::map<QString, VideoSourcePtr>::iterator iter=mSource.begin(); iter!=mSource.end(); ++iter)
68 retval << iter->first;
78 if (mSource.count(uid))
79 return mSource.find(uid)->second;
80 return mSource.begin()->second;
89 if (mProbeData.count(uid))
90 retval = mProbeData.find(uid)->second;
91 else if (mProbeData.count(
"default"))
92 retval = mProbeData.find(
"default")->second;
94 retval = mProbeData.begin()->second;
110 QDomDocument doc = dataNode.ownerDocument();
111 dataNode.toElement().setAttribute(
"config", mConfigurationId);
116 if (dataNode.isNull())
118 QString cfg = dataNode.toElement().attribute(
"config");
126 if (!this->hasRtSource())
127 return QStringList();
128 QStringList configIdList = mXml->getConfigIdList(
129 this->getInstrumentScannerId(), this->getInstrumentId(), this->
getRtSourceName());
143 return mConfigurationId;
148 if (!this->hasRtSource())
152 return retval.join(
":");
157 this->setConfigId(uid);
162 void ProbeImpl::applyConfig()
164 this->updateProbeSector();
165 this->updateTemporalCalibration();
172 mOverrideTemporalCalibration =
true;
173 mTemporalCalibration = val;
174 for (std::map<QString, ProbeDefinition>::iterator iter=mProbeData.begin(); iter!=mProbeData.end(); ++iter)
175 iter->second.setTemporalCalibration(mTemporalCalibration);
180 if(
similar(mSoundSpeedCompensationFactor, factor))
182 mSoundSpeedCompensationFactor = factor;
183 for (std::map<QString, ProbeDefinition>::iterator iter=mProbeData.begin(); iter!=mProbeData.end(); ++iter)
184 iter->second.applySoundSpeedCompensationFactor(mSoundSpeedCompensationFactor);
190 if (probeSector.
getUid().isEmpty())
191 probeSector.
setUid(mActiveUid);
193 mProbeData[probeSector.
getUid()] = probeSector;
204 if (mSource.count(source->getUid()))
211 if (oldAdapter && (source==oldAdapter->getBaseSource()))
216 mSource[source->getUid()].reset(
new ProbeAdapterRTSource(source->getUid(), mSelf.lock(), source));
226 if (!mSource.count(source->getUid()))
229 mSource.erase(source->getUid());
230 mProbeData.erase(source->getUid());
270 mXml->saveCurrentConfig(config);
288 QStringList rtSourceList = mXml->getRtSourceList(this->getInstrumentScannerId(), this->getInstrumentId());
289 if (rtSourceList.empty())
291 QString rtSource = rtSourceList.at(0);
293 rtSource =
"Digital";
297 ProbeImpl::ProbeImpl(QString instrumentUid, QString scannerUid) :
298 mInstrumentUid(instrumentUid),
299 mScannerUid(scannerUid),
300 mSoundSpeedCompensationFactor(1.0),
301 mOverrideTemporalCalibration(false),
302 mTemporalCalibration(0.0)
305 mProbeData[probeData.
getUid()] = probeData;
306 mActiveUid = probeData.
getUid();
319 void ProbeImpl::initConfigId()
322 if (!configs.isEmpty())
327 "scanner=[%1] instrument=[%2].\n"
328 "Check that your %3 file contains entries\n"
329 "<USScanner> <Name>%1</Name> ... <USProbe> <Name>%2</Name>").arg(mScannerUid).arg(mInstrumentUid).arg(mXml->getFileName()));
335 if (mConfig.
mConfigId != this->getConfigId())
347 if(this->hasRtSource())
348 config = mXml->getConfiguration(mScannerUid, mInstrumentUid, this->
getRtSourceName(), uid);
354 QString ProbeImpl::getInstrumentId()
const
356 return mInstrumentUid;
359 QString ProbeImpl::getInstrumentScannerId()
const
364 bool ProbeImpl::hasRtSource()
const
369 void ProbeImpl::setConfigId(QString uid)
371 mConfigurationId = uid;
374 void ProbeImpl::updateProbeSector()
376 if(this->isValidConfigId() && !this->
getProbeData().getUseDigitalVideo())
378 ProbeDefinition probeSector = this->createProbeSector();
383 bool ProbeImpl::isValidConfigId()
389 ProbeDefinition ProbeImpl::createProbeSector()
393 probeSector.setUid(mActiveUid);
397 void ProbeImpl::updateTemporalCalibration()
399 if (mOverrideTemporalCalibration)
< a easy-to-work-with struct for a specific xml configuration
ProbeXmlConfigParser::Configuration getConfiguration()
virtual void saveCurrentConfig(QString uid, QString name)
save current config to disk under ids (uid,name).
ProbeXmlConfigParser::Configuration createConfigurationFromProbeData(ProbeXmlConfigParser::Configuration basis, ProbeDefinition data)
#define CX_ASSERT(statement)
virtual void removeCurrentConfig()
remove the current config from disk
virtual void setActiveStream(QString uid)
virtual VideoSourcePtr getRTSource(QString uid="active") const
Return a VideoSource for the given uid. Use 'active' to get the default stream.
QString getRtSourceName() const
QString mRtSource
realtime source
VideoSource that applies the parameters from a Probe to the VideoSource.
virtual QString getConfigName(QString uid)
virtual void setTemporalCalibration(double val)
virtual QString getActiveStream() const
virtual void parseXml(QDomNode &dataNode)
virtual QString getConfigurationPath() const
virtual ProbeSectorPtr getSector(QString uid="active")
virtual void removeRTSource(VideoSourcePtr source)
bool similar(const DoubleBoundingBox3D &a, const DoubleBoundingBox3D &b, double tol)
void videoSourceAdded(VideoSourcePtr source)
virtual void setProbeSector(ProbeDefinition probeSector)
virtual void applyNewConfigurationWithId(QString uid)
void reportWarning(QString msg)
QString mConfigId
config id
Implementation of abstract interface ProbeXmlConfigParser Interface to ProbeCalibConfigs.xml.
boost::shared_ptr< class VideoSource > VideoSourcePtr
boost::shared_ptr< ProbeXmlConfigParser > ProbeXmlConfigParserPtr
void sectorChanged()
< Return a ProbeSectorPtr for the given uid. Use 'active' to get the default.
virtual QString getConfigId() const
QString mUsScanner
scanner
boost::shared_ptr< class ProbeSector > ProbeSectorPtr
Definition of characteristics for an Ultrasound Probe Sector.
virtual ProbeDefinition getProbeData(QString uid="active") const
Return a ProbeData for the given uid. Use 'active' to get the default.
void activeConfigChanged()
static QString getRootConfigPath()
return path to root config folder. May be replaced with getExistingConfigPath()
virtual void setSoundSpeedCompensationFactor(double val)
virtual QStringList getAvailableVideoSources()
Return a list of all available video source. The default is one with uid=='active'.
static ProbeImplPtr New(QString instrumentUid, QString scannerUid, ProbeXmlConfigParserPtr xml=ProbeXmlConfigParserPtr())
QString mName
Name of config set.
virtual QStringList getConfigIdList() const
virtual bool isValid() const
virtual void addXml(QDomNode &dataNode)
Utility functions for drawing an US Probe sector.
boost::shared_ptr< class ProbeImpl > ProbeImplPtr
boost::shared_ptr< ProbeAdapterRTSource > ProbeAdapterRTSourcePtr
ProbeDefinition createProbeDataFromConfiguration(ProbeXmlConfigParser::Configuration config)
virtual void setRTSource(VideoSourcePtr source)