+void File::SetWriteToNative()
+{
+ if(Pixel_Data)
+ {
+ BinEntry* pixel = CopyBinEntry(GetHeader()->GetGrPixel(),GetHeader()->GetNumPixel());
+ pixel->SetValue(GDCM_BINLOADED);
+ pixel->SetBinArea(Pixel_Data,false);
+ pixel->SetLength(ImageDataSize);
+
+ Archive->Push(pixel);
+ }
+}
+
+void File::SetWriteToDecompressed()
+{
+ if(HeaderInternal->GetNumberOfScalarComponents()==3 && !HeaderInternal->HasLUT())
+ {
+ SetWriteToRGB();
+ }
+ else
+ {
+ ValEntry* photInt = CopyValEntry(0x0028,0x0004);
+ if(HeaderInternal->HasLUT())
+ {
+ photInt->SetValue("PALETTE COLOR ");
+ photInt->SetLength(14);
+ }
+ else
+ {
+ photInt->SetValue("MONOCHROME1 ");
+ photInt->SetLength(12);
+ }
+
+ BinEntry* pixel = CopyBinEntry(GetHeader()->GetGrPixel(),GetHeader()->GetNumPixel());
+ pixel->SetValue(GDCM_BINLOADED);
+ if(Pixel_Data)
+ {
+ pixel->SetBinArea(Pixel_Data,false);
+ pixel->SetLength(ImageDataSize);
+ }
+ else
+ {
+ pixel->SetBinArea(PixelConverter->GetDecompressed(),false);
+ pixel->SetLength(PixelConverter->GetDecompressedSize());
+ }
+
+ Archive->Push(photInt);
+ Archive->Push(pixel);
+ }
+}
+
+void File::SetWriteToRGB()
+{
+ if(HeaderInternal->GetNumberOfScalarComponents()==3)
+ {
+ PixelConverter->BuildRGBImage();
+
+ ValEntry* spp = CopyValEntry(0x0028,0x0002);
+ spp->SetValue("3 ");
+ spp->SetLength(2);
+
+ ValEntry* planConfig = CopyValEntry(0x0028,0x0006);
+ planConfig->SetValue("0 ");
+ planConfig->SetLength(2);
+
+ ValEntry* photInt = CopyValEntry(0x0028,0x0004);
+ photInt->SetValue("RGB ");
+ photInt->SetLength(4);
+
+ BinEntry* pixel = CopyBinEntry(GetHeader()->GetGrPixel(),GetHeader()->GetNumPixel());
+ pixel->SetValue(GDCM_BINLOADED);
+ if(Pixel_Data)
+ {
+ pixel->SetBinArea(Pixel_Data,false);
+ pixel->SetLength(ImageDataSize);
+ }
+ else if(PixelConverter->GetRGB())
+ {
+ pixel->SetBinArea(PixelConverter->GetRGB(),false);
+ pixel->SetLength(PixelConverter->GetRGBSize());
+ }
+ else // Decompressed data
+ {
+ pixel->SetBinArea(PixelConverter->GetDecompressed(),false);
+ pixel->SetLength(PixelConverter->GetDecompressedSize());
+ }