Program: gdcm
Module: $RCSfile: gdcmFile.cxx,v $
Language: C++
- Date: $Date: 2005/05/29 21:56:36 $
- Version: $Revision: 1.239 $
+ Date: $Date: 2005/06/10 14:05:37 $
+ Version: $Revision: 1.242 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
{
RLEInfo = new RLEFramesInfo;
JPEGInfo = new JPEGFragmentsInfo;
- GrPixel = 0x7fe0;
+ GrPixel = 0x7fe0; // to avoid further troubles
NumPixel = 0x0010;
}
RLEInfo = new RLEFramesInfo;
JPEGInfo = new JPEGFragmentsInfo;
+ Load( filename );
+}
+
+/**
+ * \brief Canonical destructor.
+ */
+File::~File ()
+{
+ if( RLEInfo )
+ delete RLEInfo;
+ if( JPEGInfo )
+ delete JPEGInfo;
+}
+
+//-----------------------------------------------------------------------------
+// Public
+
+/**
+ * \brief Loader
+ * @param fileName file to be open for parsing
+ * @return false if file cannot be open or no swap info was found,
+ * or no tag was found.
+ */
+bool File::Load( std::string const &fileName )
+{
+ this->Document::Load( fileName );
+
// for some ACR-NEMA images GrPixel, NumPixel is *not* 7fe0,0010
// We may encounter the 'RETired' (0x0028, 0x0200) tag
// (Image Location") . This entry contains the number of
ComputeJPEGFragmentInfo();
CloseFile();
- // Create a new BinEntry to change the the DictEntry
+ // Create a new BinEntry to change the DictEntry
// The changed DictEntry will have
// - a correct PixelVR OB or OW)
// - the name to "Pixel Data"
}
}
}
+ return true;
}
-
-
-/**
- * \brief Canonical destructor.
- */
-File::~File ()
-{
- if( RLEInfo )
- delete RLEInfo;
- if( JPEGInfo )
- delete JPEGInfo;
-}
-
-//-----------------------------------------------------------------------------
-// Public
-
-
/**
* \brief This predicate, based on hopefully reasonable heuristics,
* decides whether or not the current File was properly parsed
const std::string &res = GetEntryValue(0x0028, 0x0005);
if ( res != GDCM_UNFOUND && atoi(res.c_str()) > 4 )
{
+ gdcmWarningMacro("Wrong Image Dimensions" << res);
return false; // Image Dimensions
}
if ( !GetDocEntry(0x0028, 0x0100) )
{
+ gdcmWarningMacro("Bits Allocated (0028|0100) not found");
return false; // "Bits Allocated"
}
if ( !GetDocEntry(0x0028, 0x0101) )
{
+ gdcmWarningMacro("Bits Stored (0028|0101) not found");
return false; // "Bits Stored"
}
if ( !GetDocEntry(0x0028, 0x0102) )
{
+ gdcmWarningMacro("Hight Bit (0028|0102) not found");
return false; // "High Bit"
}
if ( !GetDocEntry(0x0028, 0x0103) )
{
+ gdcmWarningMacro("Pixel Representation (0028|0103) not found");
return false; // "Pixel Representation" i.e. 'Sign'
}
-
+ if ( !GetDocEntry(GrPixel, NumPixel) )
+ {
+ gdcmWarningMacro("Pixel Dicom Element " << std::hex <<
+ GrPixel << "|" << NumPixel << "not found");
+ return false; // Pixel Dicom Element not found :-(
+ }
return true;
}