Program: gdcm
Module: $RCSfile: gdcmFile.cxx,v $
Language: C++
- Date: $Date: 2007/08/24 10:45:18 $
- Version: $Revision: 1.335 $
+ Date: $Date: 2008/01/07 17:16:06 $
+ Version: $Revision: 1.343 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
}
}
-
-
/**
* \brief gets the info from 0018,1164 : ImagerPixelSpacing
* then 0028,0030 : Pixel Spacing
{
return true;
}
+
+ // MONOCHROME + [Enhanced CT Image Storage] actually have Palettes
+ std::string sopClassUid = GetEntryString( 0x0008, 0x0016 );
+ if (Util::DicomStringEqual( sopClassUid, "1.2.840.10008.5.1.4.1.1.2.1"))
+ {
+ return true;
+ }
if ( PhotometricInterp == GDCM_UNFOUND )
{
gdcmDebugMacro( "Not found : Palette color (0028,0004)");
*/
bool File::IsYBRFull()
{
- std::string PhotometricInterp = GetEntryString( 0x0028, 0x0004 );
+ std::string PhotometricInterp = GetEntryString( 0x0028, 0x0004 );
if ( PhotometricInterp == "YBR_FULL" )
{
return true;
return false;
}
// Red Palette Color Lookup Table Data
- if ( !GetDocEntry(0x0028,0x1201) )
+ bool segmented;
+ segmented = GetDocEntry(0x0028,0x1221) &&
+ GetDocEntry(0x0028,0x1222) &&
+ GetDocEntry(0x0028,0x1223);
+ if( segmented ) return true;
+
+ if( !GetDocEntry(0x0028,0x1201) )
{
return false;
}
gdcmWarningMacro( "You cannot 'Anonymize' a SeqEntry ");
continue;
}
-
+/*
if ( dynamic_cast<DataEntry *>(d) )
{
gdcmWarningMacro( "To 'Anonymize' a DataEntry, better use AnonymizeNoLoad (FIXME) ");
continue;
}
+*/
else
SetEntryString ((*it).Value, (*it).Group, (*it).Elem);
}
}
/// \todo FIXME : Derma?.dcm does not have it...let's remove it ?!? JPRx
- if( writetype != JPEG )
+ if( writetype != JPEG && writetype != JPEG2000)
{
int i_lgPix = GetEntryLength(GrPixel, NumPixel);
- if (i_lgPix != -2)
+ if (i_lgPix != -2) /// \todo wtf "-2" ?!?
{
// no (GrPixel, NumPixel) element
std::string s_lgPix = Util::Format("%d", i_lgPix+12);
InsertEntryString(s_lgPix,GrPixel, 0x0000, "UL");
}
}
- Document::WriteContent(fp, writetype);
+ Document::WriteContent(fp, writetype,false,false);
fp->close();
delete fp;
// Private
/**
* \brief Parse pixel data from disk of [multi-]fragment RLE encoding.
- * Compute the RLE extra information and store it in \ref RLEInfo
+ * Compute the RLE extra information and store it in RLEInfo
* for later pixel retrieval usage.
*/
void File::ComputeRLEInfo()
/**
* \brief Parse pixel data from disk of [multi-]fragment Jpeg encoding.
* Compute the jpeg extra information (fragment[s] offset[s] and
- * length) and store it[them] in \ref JPEGInfo for later pixel
+ * length) and store it[them] in JPEGInfo for later pixel
* retrieval usage.
*/
void File::ComputeJPEGFragmentInfo()
}
/**
- * \brief Assuming the internal file pointer \ref Document::Fp
+ * \brief Assuming the internal file pointer Document::Fp
* is placed at the beginning of a tag, check whether this
* tag is (TestGroup, TestElem).
- * \warning On success the internal file pointer \ref Document::Fp
+ * \warning On success the internal file pointer Document::Fp
* is modified to point after the tag.
* On failure (i.e. when the tag wasn't the expected tag
* (TestGroup, TestElem) the internal file pointer
- * \ref Document::Fp is restored to its original position.
+ * Document::Fp is restored to its original position.
* @param testGroup The expected group of the tag.
* @param testElem The expected Element of the tag.
* @return True on success, false otherwise.
}
catch ( FormatError )
{
- gdcmErrorMacro( "Can not read tag for "
- << " We should have found tag ("
+ gdcmErrorMacro( "Can not read tag at 0x("
+ << std::hex << positionOnEntry
+ << "). We should have found tag ("
<< DictEntry::TranslateToKey(testGroup,testElem) << ")"
) ;
}
/**
- * \brief Assuming the internal file pointer \ref Document::Fp
+ * \brief Assuming the internal file pointer Document::Fp
* is placed at the beginning of a tag (TestGroup, TestElement),
* read the length associated to the Tag.
- * \warning On success the internal file pointer \ref Document::Fp
+ * \warning On success the internal file pointer Document::Fp
* is modified to point after the tag and its length.
* On failure (i.e. when the tag wasn't the expected tag
* (TestGroup, TestElement) the internal file pointer
- * \ref Document::Fp is restored to its original position.
+ * Document::Fp is restored to its original position.
* @param testGroup The expected Group of the tag.
* @param testElem The expected Element of the tag.
* @return On success returns the length associated to the tag. On failure