gdcmPrivateTag.h
Go to the documentation of this file.
/*=========================================================================
Program: GDCM (Grassroots DICOM). A DICOM library
Copyright (c) 2006-2011 Mathieu Malaterre
All rights reserved.
See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
#ifndef GDCMPRIVATETAG_H
#define GDCMPRIVATETAG_H
#include "gdcmTag.h"
#include "gdcmVR.h"
#include "gdcmDataElement.h"
#include <iostream>
#include <iomanip>
#include <string>
#include <algorithm>
#include <string.h> // strlen
#include <ctype.h> // tolower
namespace gdcm_ns
{
// TODO: We could save some space since we only store 8bits for element
class GDCM_EXPORT PrivateTag : public Tag
{
friend std::ostream& operator<<(std::ostream &_os, const PrivateTag &_val);
public:
PrivateTag(uint16_t group = 0, uint16_t element = 0, const char *owner = ""):Tag(group,element),Owner(owner ? LOComp::Trim(owner) : "") {
// truncate the high bits
SetElement( (uint8_t)element );
}
PrivateTag( Tag const & t, const char *owner = ""):Tag(t),Owner(owner ? LOComp::Trim(owner) : "") {
// truncate the high bits
SetElement( (uint8_t)t.GetElement());
}
const char *GetOwner() const { return Owner.c_str(); }
void SetOwner(const char *owner) { if(owner) Owner = LOComp::Trim(owner); }
PrivateTag &operator=(const PrivateTag &_val)
{
SetElementTag( _val.GetElementTag() );
Owner = _val.Owner;
return *this;
}
bool operator==(const Tag &_val) const
{
return GetElementTag() == _val.GetElementTag();
}
bool operator==(const PrivateTag &_val) const
{
return GetElementTag() == _val.GetElementTag() && Owner == _val.Owner;
}
bool operator!=(const Tag &_val) const
{
return GetElementTag() != _val.GetElementTag();
}
bool operator!=(const PrivateTag &_val) const
{
return GetElementTag() != _val.GetElementTag() || Owner != _val.Owner;
}
bool operator<(const PrivateTag &_val) const;
bool ReadFromCommaSeparatedString(const char *str);
DataElement GetAsDataElement() const;
private:
// SIEMENS MED, GEMS_PETD_01 ...
std::string Owner;
};
inline std::ostream& operator<<(std::ostream &os, const PrivateTag &val)
{
//assert( !val.Owner.empty() );
os.setf( std::ios::right );
os << std::hex << '(' << std::setw( 4 ) << std::setfill( '0' )
<< val[0] << ',' << std::setw( 2 ) << std::setfill( '0' )
<< val[1] << ',';
os << val.Owner;
os << ')' << std::setfill( ' ' ) << std::dec;
return os;
}
} // end namespace gdcm_ns
#endif //GDCMPRIVATETAG_H
gdcm::DataElement
Class to represent a Data Element either Implicit or Explicit.
Definition gdcmDataElement.h:59
gdcm::PrivateTag::PrivateTag
PrivateTag(Tag const &t, const char *owner="")
Definition gdcmPrivateTag.h:46
gdcm::PrivateTag::operator=
PrivateTag & operator=(const PrivateTag &_val)
Definition gdcmPrivateTag.h:54
gdcm::PrivateTag::SetOwner
void SetOwner(const char *owner)
Definition gdcmPrivateTag.h:52
gdcm::PrivateTag::operator==
bool operator==(const PrivateTag &_val) const
Definition gdcmPrivateTag.h:65
gdcm::PrivateTag::operator<<
friend std::ostream & operator<<(std::ostream &_os, const PrivateTag &_val)
Definition gdcmPrivateTag.h:91
gdcm::PrivateTag::operator==
bool operator==(const Tag &_val) const
Definition gdcmPrivateTag.h:61
gdcm::PrivateTag::GetOwner
const char * GetOwner() const
Definition gdcmPrivateTag.h:51
gdcm::PrivateTag::operator!=
bool operator!=(const PrivateTag &_val) const
Definition gdcmPrivateTag.h:73
gdcm::PrivateTag::GetAsDataElement
DataElement GetAsDataElement() const
gdcm::PrivateTag::operator!=
bool operator!=(const Tag &_val) const
Definition gdcmPrivateTag.h:69
gdcm::PrivateTag::ReadFromCommaSeparatedString
bool ReadFromCommaSeparatedString(const char *str)
gdcm::PrivateTag::PrivateTag
PrivateTag(uint16_t group=0, uint16_t element=0, const char *owner="")
Definition gdcmPrivateTag.h:42
gdcm::PrivateTag::operator<
bool operator<(const PrivateTag &_val) const
gdcm::String<'\\', 64 >::Trim
std::string Trim() const
Definition gdcmString.h:96
gdcm::Tag::SetElement
void SetElement(uint16_t element)
Sets the 'Element number' of the given Tag.
Definition gdcmTag.h:61
gdcm::Tag::SetElementTag
void SetElementTag(uint16_t group, uint16_t element)
Sets the 'Group number' & 'Element number' of the given Tag.
Definition gdcmTag.h:63
gdcm::Tag::Tag
Tag(uint16_t group, uint16_t element)
Constructor with 2*uint16_t.
Definition gdcmTag.h:42
gdcm::Tag::GetElement
uint16_t GetElement() const
Returns the 'Element number' of the given Tag.
Definition gdcmTag.h:57
gdcm::Tag::GetElementTag
uint32_t GetElementTag() const
Returns the full tag value of the given Tag.
Definition gdcmTag.h:68
gdcmDataElement.h
gdcmTag.h
gdcmVR.h
GDCM_EXPORT
#define GDCM_EXPORT
Definition gdcmWin32.h:34
gdcm::LOComp
String<'\\', 64 > LOComp
Definition gdcmVR.h:267