Program: gdcm
Module: $RCSfile: gdcmDocument.cxx,v $
Language: C++
- Date: $Date: 2005/01/18 15:52:22 $
- Version: $Revision: 1.196 $
+ Date: $Date: 2005/01/18 16:23:52 $
+ Version: $Revision: 1.197 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
// we switch lineNumber and columnNumber
//
std::string RecCode;
- RecCode = GetEntry(0x0008, 0x0010); // recognition code
+ RecCode = GetEntry(0x0008, 0x0010); // recognition code (RET)
if (RecCode == "ACRNEMA_LIBIDO_1.1" ||
RecCode == "CANRME_AILIBOD1_1." ) // for brain-damaged softwares
// with "little-endian strings"
if( TagHT.empty() )
{
- gdcmVerboseMacro( "No tags in internal hash table.");
+ gdcmVerboseMacro( "No tag in internal hash table.");
return false;
}
* when it exists. Create it with the given value when unexistant.
* A copy of the binArea is made to be kept in the Document.
* @param binArea (binary) value to be set
- * @param Group Group number of the Entry
- * @param Elem Element number of the Entry
+ * @param group Group number of the Entry
+ * @param elem Element number of the Entry
* @param vr V(alue) R(epresentation) of the Entry -if private Entry-
* \return pointer to the modified/created Header Entry (NULL when creation
* failed).
* @param content new value (string) to substitute with
* @param entry Entry to be modified
*/
-bool Document::SetEntry(std::string const &content,ValEntry *entry)
+bool Document::SetEntry(std::string const &content, ValEntry *entry)
{
if(entry)
{
uint8_t *a = new uint8_t[l];
if( !a )
{
- gdcmVerboseMacro( "Cannot allocate a");
+ gdcmVerboseMacro( "Cannot allocate BinEntry content");
return;
}
{
if ( newBinEntry )
{
- if ( ! Global::GetVR()->IsVROfBinaryRepresentable(vr) )
+ if ( Filetype == ExplicitVR && ! Global::GetVR()->IsVROfBinaryRepresentable(vr) )
{
////// Neither ValEntry NOR BinEntry: should mean UNKOWN VR
gdcmVerboseMacro( std::hex << newDocEntry->GetGroup()
//////////////////// BinEntry or UNKOWN VR:
// When "this" is a Document the Key is simply of the
// form ( group, elem )...
- if (/*Document *dummy =*/ dynamic_cast< Document* > ( set ) )
+ if ( dynamic_cast< Document* > ( set ) )
{
- //(void)dummy;
newBinEntry->SetKey( newBinEntry->GetKey() );
}
// but when "this" is a SQItem, we are inserting this new
/////////////////////// ValEntry
// When "set" is a Document, then we are at the top of the
// hierarchy and the Key is simply of the form ( group, elem )...
- if (/*Document *dummy =*/ dynamic_cast< Document* > ( set ) )
+ if ( dynamic_cast< Document* > ( set ) )
{
- //(void)dummy;
newValEntry->SetKey( newValEntry->GetKey() );
}
// ...but when "set" is a SQItem, we are inserting this new
// on Data elements "Implicit and Explicit VR Data Elements shall
// not coexist in a Data Set and Data Sets nested within it".]
// Length is on 4 bytes.
+
+ // Well ... group 0002 is always coded in 'Explicit VR Litle Endian'
+ // even if Transfer Syntax is 'Implicit VR ...'
FixDocEntryFoundLength( entry, ReadInt32() );
return;
}
}
-
-
/**
* \brief Change the Byte Swap code.
*/
*/
void Document::SetMaxSizePrintEntry(long newSize)
{
- //DOH !! This is exactly SetMaxSizeLoadEntry FIXME FIXME
if ( newSize < 0 )
{
return;
/**
* \brief Accesses the info from 0002,0010 : Transfer Syntax and TS
- * else 1.
* @return The full Transfer Syntax Name (as opposed to Transfer Syntax UID)
*/
std::string Document::GetTransferSyntaxName()
return;
}
+ // Group 0002 is always 'Explicit ...' enven when Transfer Syntax says 'Implicit ..."
+
+ if ( Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ImplicitVRLittleEndian )
+ {
+ Filetype = ImplicitVR;
+ }
+
// FIXME Strangely, this works with
//'Implicit VR Transfer Syntax (GE Private)
if ( Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ExplicitVRBigEndian )
<< GetTransferSyntaxName() << "]" );
SwitchByteSwapCode();
group = SwapShort(group);
- elem = SwapShort(elem);
+ elem = SwapShort(elem);
}
}
}
Program: gdcm
Module: $RCSfile: gdcmDocument.h,v $
Language: C++
- Date: $Date: 2005/01/18 08:01:41 $
- Version: $Revision: 1.89 $
+ Date: $Date: 2005/01/18 16:23:52 $
+ Version: $Revision: 1.90 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
/// will have a SwapCode= 4321 (the order is wrong; int32 an int16 must be
/// swapped)
/// note : values 2143, 4321, 3412 remain for the ACR-NEMA time, and
- /// the well knowed 'Bad Big Endian' and 'Bad Little Endian' codes
+ /// the well known 'Bad Big Endian' and 'Bad Little Endian' codes
int SwapCode;
///\brief whether we already parsed group 0002
/// \brief Elements whose value is longer than MAX_SIZE_PRINT_ELEMENT_VALUE
/// are NOT printed.
- /// \todo Currently not used since collides with #define in
- /// class DocEntry . See also
- /// method ref Document::SetMaxSizePrintEntry()
static const unsigned int MAX_SIZE_PRINT_ELEMENT_VALUE;
/// Store the RLE frames info obtained during parsing of pixels.
Program: gdcm
Module: $RCSfile: gdcmHeader.cxx,v $
Language: C++
- Date: $Date: 2005/01/17 11:13:21 $
- Version: $Revision: 1.233 $
+ Date: $Date: 2005/01/18 16:23:52 $
+ Version: $Revision: 1.234 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
}
// sometimes Image Location value doesn't follow
- // the supposed processor endianity.
+ // the supposed processor endianness.
// see gdcmData/cr172241.dcm
if ( GrPixel == 0xe07f )
{
else
{
/// \todo throw error return value ???
- /// specified <> unknow in our database
+ /// specified <> unknown in our database
return Unknow;
}
}
if ( bitsAlloc == GDCM_UNFOUND )
{
gdcmVerboseMacro( "Missing Bits Allocated (0028,0100)");
- bitsAlloc = "16";
+ bitsAlloc = "16"; // default and arbitrary value, not to polute the output
}
if ( bitsAlloc == "64" )
if (sign == GDCM_UNFOUND )
{
gdcmVerboseMacro( "Missing Pixel Representation (0028,0103)");
- bitsAlloc = "0";
+ sign = "U"; // default and arbitrary value, not to polute the output
}
else if ( sign == "0" )
{