+/**
+ * \brief Sets some initial values for the Constructor
+ * \warning not end user intended
+ */
+void File::SaveInitialValues()
+{
+
+ PixelRead = -1; // no ImageData read yet.
+ LastAllocatedPixelDataLength = 0;
+ Pixel_Data = 0;
+
+ InitialSpp = "";
+ InitialPhotInt = "";
+ InitialPlanConfig = "";
+ InitialBitsAllocated = "";
+ InitialHighBit = "";
+
+ InitialRedLUTDescr = 0;
+ InitialGreenLUTDescr = 0;
+ InitialBlueLUTDescr = 0;
+ InitialRedLUTData = 0;
+ InitialGreenLUTData = 0;
+ InitialBlueLUTData = 0;
+
+ if ( HeaderInternal->IsReadable() )
+ {
+ // the following values *may* be modified
+ // by File::GetImageDataIntoVectorRaw
+ // we save their initial value.
+ InitialSpp = HeaderInternal->GetEntryByNumber(0x0028,0x0002);
+ InitialPhotInt = HeaderInternal->GetEntryByNumber(0x0028,0x0004);
+ InitialPlanConfig = HeaderInternal->GetEntryByNumber(0x0028,0x0006);
+
+ InitialBitsAllocated = HeaderInternal->GetEntryByNumber(0x0028,0x0100);
+ InitialHighBit = HeaderInternal->GetEntryByNumber(0x0028,0x0102);
+
+ // the following entries *may* be removed from the H table
+ // (NOT deleted ...) by File::GetImageDataIntoVectorRaw
+ // we keep a pointer on them.
+ InitialRedLUTDescr = HeaderInternal->GetDocEntryByNumber(0x0028,0x1101);
+ InitialGreenLUTDescr = HeaderInternal->GetDocEntryByNumber(0x0028,0x1102);
+ InitialBlueLUTDescr = HeaderInternal->GetDocEntryByNumber(0x0028,0x1103);
+
+ InitialRedLUTData = HeaderInternal->GetDocEntryByNumber(0x0028,0x1201);
+ InitialGreenLUTData = HeaderInternal->GetDocEntryByNumber(0x0028,0x1202);
+ InitialBlueLUTData = HeaderInternal->GetDocEntryByNumber(0x0028,0x1203);
+ }
+}
+
+/**
+ * \brief restores some initial values
+ * \warning not end user intended
+ */
+void File::RestoreInitialValues()
+{
+ if ( HeaderInternal->IsReadable() )
+ {
+ // the following values *may* have been modified
+ // by File::GetImageDataIntoVectorRaw
+ // we restore their initial value.
+ if ( InitialSpp != "")
+ HeaderInternal->SetEntryByNumber(InitialSpp,0x0028,0x0002);
+ if ( InitialPhotInt != "")
+ HeaderInternal->SetEntryByNumber(InitialPhotInt,0x0028,0x0004);
+ if ( InitialPlanConfig != "")
+
+ HeaderInternal->SetEntryByNumber(InitialPlanConfig,0x0028,0x0006);
+ if ( InitialBitsAllocated != "")
+ HeaderInternal->SetEntryByNumber(InitialBitsAllocated,0x0028,0x0100);
+ if ( InitialHighBit != "")
+ HeaderInternal->SetEntryByNumber(InitialHighBit,0x0028,0x0102);
+
+ // the following entries *may* be have been removed from the H table
+ // (NOT deleted ...) by File::GetImageDataIntoVectorRaw
+ // we restore them.
+
+ if (InitialRedLUTDescr)
+ HeaderInternal->AddEntry(InitialRedLUTDescr);
+ if (InitialGreenLUTDescr)
+ HeaderInternal->AddEntry(InitialGreenLUTDescr);
+ if (InitialBlueLUTDescr)
+ HeaderInternal->AddEntry(InitialBlueLUTDescr);
+
+ if (InitialRedLUTData)
+ HeaderInternal->AddEntry(InitialBlueLUTDescr);
+ if (InitialGreenLUTData)
+ HeaderInternal->AddEntry(InitialGreenLUTData);
+ if (InitialBlueLUTData)
+ HeaderInternal->AddEntry(InitialBlueLUTData);
+ }
+}
+
+/**
+ * \brief delete initial values (il they were saved)
+ * of InitialLutDescriptors and InitialLutData
+ */
+void File::DeleteInitialValues()
+{
+
+// InitialLutDescriptors and InitialLutData
+// will have to be deleted if the don't belong any longer
+// to the Header H table when the header is deleted...
+
+ if ( InitialRedLUTDescr )
+ delete InitialRedLUTDescr;
+
+ if ( InitialGreenLUTDescr )
+ delete InitialGreenLUTDescr;
+
+ if ( InitialBlueLUTDescr )
+ delete InitialBlueLUTDescr;
+
+ if ( InitialRedLUTData )
+ delete InitialRedLUTData;
+
+ if ( InitialGreenLUTData != NULL)
+ delete InitialGreenLUTData;
+
+ if ( InitialBlueLUTData != NULL)
+ delete InitialBlueLUTData;
+}
+
+//-----------------------------------------------------------------------------
+// Print
+
+//-----------------------------------------------------------------------------
+// Public
+
+/**
+ * \brief computes the length (in bytes) we must ALLOCATE to receive the
+ * image(s) pixels (multiframes taken into account)
+ * \warning : it is NOT the group 7FE0 length
+ * (no interest for compressed images).
+ */
+int File::ComputeDecompressedPixelDataSizeFromHeader()
+{