+ XSize = file->GetXSize();
+ YSize = file->GetYSize();
+ ZSize = file->GetZSize();
+ SamplesPerPixel = file->GetSamplesPerPixel();
+ PixelSize = file->GetPixelSize();
+ PixelSign = file->IsSignedPixelData();
+ SwapCode = file->GetSwapCode();
+ std::string ts = file->GetTransferSyntax();
+ IsRaw =
+ ( ! file->IsDicomV3() )
+ || Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ImplicitVRLittleEndian
+ || Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ImplicitVRLittleEndianDLXGE
+ || Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ExplicitVRLittleEndian
+ || Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ExplicitVRBigEndian
+ || Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::DeflatedExplicitVRLittleEndian;
+
+ IsJPEG2000 = Global::GetTS()->IsJPEG2000(ts);
+ IsJPEGLS = Global::GetTS()->IsJPEGLS(ts);
+ IsJPEGLossy = Global::GetTS()->IsJPEGLossy(ts);
+ IsJPEGLossless = Global::GetTS()->IsJPEGLossless(ts);
+ IsRLELossless = Global::GetTS()->IsRLELossless(ts);
+
+ PixelOffset = file->GetPixelOffset();
+ PixelDataLength = file->GetPixelAreaLength();
+ RLEInfo = file->GetRLEInfo();
+ JPEGInfo = file->GetJPEGInfo();
+
+ PlanarConfiguration = file->GetPlanarConfiguration();
+ IsMonochrome = file->IsMonochrome();
+ IsPaletteColor = file->IsPaletteColor();
+ IsYBRFull = file->IsYBRFull();
+
+ /////////////////////////////////////////////////////////////////
+ // LUT section:
+ HasLUT = file->HasLUT();
+ if ( HasLUT )
+ {
+ // Just in case some access to a File element requires disk access.
+ LutRedDescriptor = file->GetEntryValue( 0x0028, 0x1101 );
+ LutGreenDescriptor = file->GetEntryValue( 0x0028, 0x1102 );
+ LutBlueDescriptor = file->GetEntryValue( 0x0028, 0x1103 );
+
+ // Depending on the value of Document::MAX_SIZE_LOAD_ELEMENT_VALUE
+ // [ refer to invocation of Document::SetMaxSizeLoadEntry() in
+ // Document::Document() ], the loading of the value (content) of a
+ // [Bin|Val]Entry occurence migth have been hindered (read simply NOT
+ // loaded). Hence, we first try to obtain the LUTs data from the file
+ // and when this fails we read the LUTs data directly from disk.
+ /// \TODO Reading a [Bin|Val]Entry directly from disk is a kludge.
+ /// We should NOT bypass the [Bin|Val]Entry class. Instead
+ /// an access to an UNLOADED content of a [Bin|Val]Entry occurence
+ /// (e.g. BinEntry::GetBinArea()) should force disk access from
+ /// within the [Bin|Val]Entry class itself. The only problem
+ /// is that the [Bin|Val]Entry is unaware of the FILE* is was
+ /// parsed from. Fix that. FIXME.
+
+ ////// Red round
+ file->LoadEntryBinArea(0x0028, 0x1201);
+ LutRedData = (uint8_t*)file->GetEntryBinArea( 0x0028, 0x1201 );
+ if ( ! LutRedData )