+void File::SetWriteToRGB()
+{
+ if(HeaderInternal->GetNumberOfScalarComponents()==3)
+ {
+ PixelReadConverter->BuildRGBImage();
+
+ ValEntry* spp = CopyValEntry(0x0028,0x0002);
+ spp->SetValue("3 ");
+
+ ValEntry* planConfig = CopyValEntry(0x0028,0x0006);
+ planConfig->SetValue("0 ");
+
+ ValEntry* photInt = CopyValEntry(0x0028,0x0004);
+ photInt->SetValue("RGB ");
+
+ if(PixelReadConverter->GetRGB())
+ {
+ PixelWriteConverter->SetReadData(PixelReadConverter->GetRGB(),
+ PixelReadConverter->GetRGBSize());
+ }
+ else // Raw data
+ {
+ PixelWriteConverter->SetReadData(PixelReadConverter->GetRaw(),
+ PixelReadConverter->GetRawSize());
+ }
+
+ BinEntry* pixel = CopyBinEntry(GetHeader()->GetGrPixel(),GetHeader()->GetNumPixel());
+ pixel->SetValue(GDCM_BINLOADED);
+ pixel->SetBinArea(PixelWriteConverter->GetData(),false);
+ pixel->SetLength(PixelWriteConverter->GetDataSize());
+
+ Archive->Push(spp);
+ Archive->Push(planConfig);
+ Archive->Push(photInt);
+ Archive->Push(pixel);
+
+ // Remove any LUT
+ Archive->Push(0x0028,0x1101);
+ Archive->Push(0x0028,0x1102);
+ Archive->Push(0x0028,0x1103);
+ Archive->Push(0x0028,0x1201);
+ Archive->Push(0x0028,0x1202);
+ Archive->Push(0x0028,0x1203);
+
+ // For old ACR-NEMA
+ // Thus, we have a RGB image and the bits allocated = 24 and
+ // samples per pixels = 1 (in the read file)
+ if(HeaderInternal->GetBitsAllocated()==24)
+ {
+ ValEntry* bitsAlloc = CopyValEntry(0x0028,0x0100);
+ bitsAlloc->SetValue("8 ");
+
+ ValEntry* bitsStored = CopyValEntry(0x0028,0x0101);
+ bitsStored->SetValue("8 ");
+
+ ValEntry* highBit = CopyValEntry(0x0028,0x0102);
+ highBit->SetValue("7 ");
+
+ Archive->Push(bitsAlloc);
+ Archive->Push(bitsStored);
+ Archive->Push(highBit);
+ }
+ }
+ else
+ {
+ SetWriteToRaw();
+ }