Program: gdcm
Module: $RCSfile: gdcmFile.cxx,v $
Language: C++
- Date: $Date: 2004/11/25 13:12:02 $
- Version: $Revision: 1.164 $
+ Date: $Date: 2004/11/30 14:17:52 $
+ Version: $Revision: 1.167 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
SetWriteFileTypeToExplicitVR();
break;
case ACR:
- SetWriteFileTypeToACR();
- break;
case ACR_LIBIDO:
- SetWriteFileTypeToACRLibido();
+ SetWriteFileTypeToACR();
break;
+ default:
+ SetWriteFileTypeToExplicitVR();
+ }
+
+ if( type == ACR_LIBIDO )
+ {
+ SetWriteToLibido();
+ }
+ else
+ {
+ SetWriteToNoLibido();
}
switch(WriteMode)
RestoreWrite();
RestoreWriteFileType();
+ RestoreWriteOfLibido();
return check;
}
numberBitsAllocated = 16;
}
- int decSize = HeaderInternal->GetXSize()
+ size_t decSize = HeaderInternal->GetXSize()
* HeaderInternal->GetYSize()
* HeaderInternal->GetZSize()
* ( numberBitsAllocated / 8 )
* HeaderInternal->GetSamplesPerPixel();
- int rgbSize = decSize;
+ size_t rgbSize = decSize;
if( HeaderInternal->HasLUT() )
rgbSize = decSize * 3;
Archive->Push(0x0002,0x0010);
}
-void File::SetWriteFileTypeToACRLibido()
-{
- SetWriteFileTypeToACR();
-}
-
void File::SetWriteFileTypeToExplicitVR()
{
- std::string ts =
- Util::DicomString( TransferSyntaxStrings[ExplicitVRLittleEndian] );
+ std::string ts = Util::DicomString(
+ Document::GetTransferSyntaxValue(ExplicitVRLittleEndian).c_str() );
ValEntry* tss = CopyValEntry(0x0002,0x0010);
tss->SetValue(ts);
void File::SetWriteFileTypeToImplicitVR()
{
- std::string ts =
- Util::DicomString( TransferSyntaxStrings[ImplicitVRLittleEndian] );
+ std::string ts = Util::DicomString(
+ Document::GetTransferSyntaxValue(ImplicitVRLittleEndian).c_str() );
ValEntry* tss = CopyValEntry(0x0002,0x0010);
tss->SetValue(ts);
Archive->Push(newRow);
Archive->Push(newCol);
}
+
+ ValEntry *libidoCode = CopyValEntry(0x0008,0x0010);
+ libidoCode->SetValue("ACRNEMA_LIBIDO_1.1");
+ libidoCode->SetLength(10);
+ Archive->Push(libidoCode);
}
-void File::RestoreWriteFromLibido()
+void File::SetWriteToNoLibido()
+{
+ ValEntry *recCode = dynamic_cast<ValEntry *>(HeaderInternal->GetDocEntryByNumber(0x0008,0x0010));
+ if( recCode )
+ {
+ if( recCode->GetValue() == "ACRNEMA_LIBIDO_1.1" )
+ {
+ ValEntry *libidoCode = CopyValEntry(0x0008,0x0010);
+ libidoCode->SetValue("");
+ libidoCode->SetLength(0);
+ Archive->Push(libidoCode);
+ }
+ }
+}
+
+void File::RestoreWriteOfLibido()
{
Archive->Restore(0x0028,0x0010);
Archive->Restore(0x0028,0x0011);
+ Archive->Restore(0x0008,0x0010);
}
ValEntry* File::CopyValEntry(uint16_t group,uint16_t element)
//-----------------------------------------------------------------------------
// Private
-/**
- * \brief Set the pixel datas in the good entry of the Header
- */
-void File::SetPixelData(uint8_t* data)
-{
- GetHeader()->SetEntryByNumber( GDCM_BINLOADED,
- GetHeader()->GetGrPixel(), GetHeader()->GetNumPixel());
-
- // Will be 7fe0, 0010 in standard case
- DocEntry* currentEntry = GetHeader()->GetDocEntryByNumber(GetHeader()->GetGrPixel(), GetHeader()->GetNumPixel());
- if ( currentEntry )
- {
- if ( BinEntry* binEntry = dynamic_cast<BinEntry *>(currentEntry) )
- // Flag is to false because datas are kept in the gdcmPixelConvert
- binEntry->SetBinArea( data, false );
- }
-}
//-----------------------------------------------------------------------------
} // end namespace gdcm