本文整理汇总了C++中DcmStack类的典型用法代码示例。如果您正苦于以下问题:C++ DcmStack类的具体用法?C++ DcmStack怎么用?C++ DcmStack使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了DcmStack类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: query_series_instances
/*
* query the number instances of a series
*/
int query_series_instances(const std::string& studyinstanceuid, const std::string& seriesinstanceuid, const std::string& server, const std::string& local_aet) {
DcmDataset query;
DcmElement* e = NULL;
e = newDicomElement(DCM_QueryRetrieveLevel);
e->putString("IMAGE");
query.insert(e);
e = newDicomElement(DCM_StudyInstanceUID);
e->putString(studyinstanceuid.c_str());
query.insert(e);
e = newDicomElement(DCM_SeriesInstanceUID);
e->putString(seriesinstanceuid.c_str());
query.insert(e);
e = newDicomElement(DCM_SOPInstanceUID);
query.insert(e);
e = newDicomElement(DCM_InstanceNumber);
query.insert(e);
std::cout << "NEW QUERY:" << std::endl;
query.print(COUT);
NetClient<FindAssociation> a;
a.QueryServer(&query, server, local_aet, UID_FINDStudyRootQueryRetrieveInformationModel);
DcmStack* result = a.GetResultStack();
std::cout << "query_series_instances = " << result->card() << std::endl;
return result->card();
}
示例2: DicomLibException
DcmElement* DcmtkHelper::searchElement(DcmObject* _object, unsigned int _group, unsigned int _element)
{
try
{
if (_object == NULL)
{
throw DicomLibException("No data!", __FILE__, __LINE__);
}
DcmTagKey searchKey;
searchKey.set(_group, _element);
DcmStack stack;
_object -> search(searchKey, stack, ESM_fromHere, OFTrue);
DcmElement* element = NULL;
element = reinterpret_cast<DcmElement*>(stack.elem(0));
return element;
}
catch (...)
{
throw;
}
}
示例3: Q_D
//------------------------------------------------------------------------------
void ctkDICOMDatabase::loadFileHeader (QString fileName)
{
Q_D(ctkDICOMDatabase);
DcmFileFormat fileFormat;
OFCondition status = fileFormat.loadFile(fileName.toLatin1().data());
if (status.good())
{
DcmDataset *dataset = fileFormat.getDataset();
DcmStack stack;
while (dataset->nextObject(stack, true) == EC_Normal)
{
DcmObject *dO = stack.top();
if (dO->isaString())
{
QString tag = QString("%1,%2").arg(
dO->getGTag(),4,16,QLatin1Char('0')).arg(
dO->getETag(),4,16,QLatin1Char('0'));
std::ostringstream s;
dO->print(s);
d->LoadedHeader[tag] = QString(s.str().c_str());
}
}
}
return;
}
示例4: cbDef
void cbDef(DcmStack& stk) {
DcmExec *exec = static_cast<DcmExec*>(safePeekMain(stk,
{DcmExec::typeVal()}));
stk.pop();
stk.push(new DcmPrimFun(new ExecCallback(exec)));
// We took it off the stack
del(exec);
}
示例5: CopyResultStack
DcmStack FindAssociation::CopyResultStack()
{
DcmStack copy;
for (unsigned int i = 0; i < result.card(); i++) {
DcmDataset* dset = new DcmDataset( *(static_cast<DcmDataset*>(result.elem(i))) );
copy.push(dset);
}
return copy;
}
示例6: cbPStk
void cbPStk(DcmStack& stk) {
stack<DcmType*> items;
while (!stk.empty()) {
items.push(stk.top());
stk.pop();
}
while (!items.empty()) {
dcmout << items.top()->repr() << ' ';
stk.push(items.top());
items.pop();
}
dcmout << endl;
}
示例7: query_series_from_net
void query_series_from_net(const std::string& studyinstanceuid, const std::string& server, const std::string& local_aet, const sigc::slot< void, const Glib::RefPtr< ImagePool::Series >& >& resultslot) {
DcmDataset query;
DcmElement* e = NULL;
e = newDicomElement(DCM_QueryRetrieveLevel);
e->putString("SERIES");
query.insert(e);
e = newDicomElement(DCM_SpecificCharacterSet);
query.insert(e);
e = newDicomElement(DCM_StudyInstanceUID);
e->putString(studyinstanceuid.c_str());
query.insert(e);
e = newDicomElement(DCM_SeriesInstanceUID);
query.insert(e);
e = newDicomElement(DCM_SeriesNumber);
query.insert(e);
e = newDicomElement(DCM_Modality);
query.insert(e);
e = newDicomElement(DCM_SeriesDescription);
query.insert(e);
e = newDicomElement(DCM_SeriesTime);
query.insert(e);
e = newDicomElement(DCM_StationName);
query.insert(e);
e = newDicomElement(DCM_NumberOfSeriesRelatedInstances);
query.insert(e);
std::cout << "NEW QUERY:" << std::endl;
query.print(COUT);
NetClient<FindAssociation> a;
a.QueryServer(&query, server, local_aet, UID_FINDStudyRootQueryRetrieveInformationModel);
DcmStack* result = a.GetResultStack();
for(unsigned int i=0; i<result->card(); i++) {
DcmDataset* dset = (DcmDataset*)result->elem(i);
dset->print(COUT);
resultslot(create_query_series(dset));
}
}
示例8: cbPutLine
void cbPutLine(DcmStack& stk) {
DcmString *dcmStr = static_cast<DcmString*>(
safePeekMain(stk, {DcmString::typeVal()}));
stk.pop();
dcmout << *dcmStr << endl;
del(dcmStr);
}
示例9:
const DcmElement * tissuestack::imaging::DicomFileWrapper::findDcmElement(
const DcmDataset * dataSet, const DcmTagKey & tagKey) const
{
DcmStack stack;
OFCondition status = const_cast<DcmDataset *>(dataSet)->nextObject(stack, OFTrue);
while (status.good())
{
const DcmObject * dobject = stack.top();
const DcmElement * delem = (DcmElement *) dobject;
if (delem->getTag().getXTag() == tagKey)
return delem;
status = const_cast<DcmDataset *>(dataSet)->nextObject(stack, OFTrue);
}
return nullptr;
}
示例10: query_study_series
/*
* query all seriesinstanceuid's and the number series of a study
*/
int query_study_series(const std::string& studyinstanceuid, const std::string& server, const std::string& local_aet, std::list<std::string>& seriesinstanceuids) {
DcmDataset query;
DcmElement* e = NULL;
e = newDicomElement(DCM_QueryRetrieveLevel);
e->putString("SERIES");
query.insert(e);
e = newDicomElement(DCM_StudyInstanceUID);
e->putString(studyinstanceuid.c_str());
query.insert(e);
e = newDicomElement(DCM_SeriesInstanceUID);
query.insert(e);
e = newDicomElement(DCM_SeriesNumber);
query.insert(e);
e = newDicomElement(DCM_Modality);
query.insert(e);
std::cout << "NEW QUERY:" << std::endl;
query.print(COUT);
NetClient<FindAssociation> a;
a.QueryServer(&query, server, local_aet, UID_FINDStudyRootQueryRetrieveInformationModel);
DcmStack* result = a.GetResultStack();
DcmDataset* dset;
OFString ofstr;
seriesinstanceuids.clear();
for(int i = 0; i < result->card(); i++) {
dset = (DcmDataset*)result->elem(i);
if(dset->findAndGetOFString(DCM_SeriesInstanceUID, ofstr).good()) {
seriesinstanceuids.push_back(ofstr.c_str());
}
}
std::cout << result->card() << " Responses" << std::endl;
int count = result->card();
return count;
}
示例11: cbDup
void cbDup(DcmStack& stk) {
stk.push(dup(safePeekMain(stk)));
}
示例12: cbCopy
void cbCopy(DcmStack& stk) {
DcmType *dcm = safePeekMain(stk);
stk.pop();
stk.push(dcm->copy());
del(dcm);
}
示例13: cbRev
// Eventually we'll want ExecStrCallback("$a $b @a @b");
void cbRev(DcmStack& stk) {
DcmType **dcms = popN(stk, 2);
stk.push(dcms[0]);
stk.push(dcms[1]);
delete[] dcms;
}
示例14: cbInput
void cbInput(DcmStack& stk) {
string str;
getline(dcmin, str);
stk.push(new DcmString(str));
}
示例15: cbRefs
void cbRefs(DcmStack& stk) {
DcmType *dcm = safePeekMain(stk);
stk.push(new DcmInt(dcm->refCount()));
}