X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vtk%2FvtkGdcmWriter.h;h=c49f8ceb1454da7410d4bc0f7c869efc5fb0fb78;hb=6a5d0acafd3c6ca5d32d47ea562ad18061265f1c;hp=ff255b2b079fdfa36ff0b3004a3392f6e8b6184e;hpb=51e53b78f995e2dde4f75570a8bf3b0dac5209c2;p=gdcm.git diff --git a/vtk/vtkGdcmWriter.h b/vtk/vtkGdcmWriter.h index ff255b2b..c49f8ceb 100644 --- a/vtk/vtkGdcmWriter.h +++ b/vtk/vtkGdcmWriter.h @@ -1,39 +1,130 @@ -// vtkGdcmWriter.h -//----------------------------------------------------------------------------- +/*========================================================================= + + Program: gdcm + Module: $RCSfile: vtkGdcmWriter.h,v $ + Language: C++ + Date: $Date: 2006/05/02 13:11:58 $ + Version: $Revision: 1.9 $ + + Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de + l'Image). All rights reserved. See Doc/License.txt or + http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + #ifndef __vtkGdcmWriter_h #define __vtkGdcmWriter_h #include "gdcmCommon.h" // To avoid warnings concerning the std +#include "gdcmFile.h" // for gdcm::File #include #include -#include #include //----------------------------------------------------------------------------- + +#define VTK_GDCM_WRITE_TYPE_EXPLICIT_VR 1 +#define VTK_GDCM_WRITE_TYPE_IMPLICIT_VR 2 +#define VTK_GDCM_WRITE_TYPE_ACR 3 +#define VTK_GDCM_WRITE_TYPE_ACR_LIBIDO 4 + +#define VTK_GDCM_WRITE_TYPE_USER_OWN_IMAGE 1 +#define VTK_GDCM_WRITE_TYPE_FILTERED_IMAGE 2 +#define VTK_GDCM_WRITE_TYPE_CREATED_IMAGE 3 +#define VTK_GDCM_WRITE_TYPE_UNMODIFIED_PIXELS_IMAGE 4 + +//----------------------------------------------------------------------------- +class vtkLookupTable; +class vtkMedicalImageProperties; + class VTK_EXPORT vtkGdcmWriter : public vtkImageWriter { public: static vtkGdcmWriter *New(); vtkTypeRevisionMacro(vtkGdcmWriter, vtkImageWriter); - void PrintSelf(ostream& os, vtkIndent indent); + void PrintSelf(ostream &os, vtkIndent indent); + + //vtkSetObjectMacro(LookupTable, vtkLookupTable); + virtual void SetLookupTable(vtkLookupTable*); + vtkGetObjectMacro(LookupTable, vtkLookupTable); - vtkSetObjectMacro(LookupTable,vtkLookupTable); - vtkGetObjectMacro(LookupTable,vtkLookupTable); + void SetWriteTypeToDcmImplVR(){SetWriteType(VTK_GDCM_WRITE_TYPE_EXPLICIT_VR);} + void SetWriteTypeToDcmExplVR(){SetWriteType(VTK_GDCM_WRITE_TYPE_IMPLICIT_VR);} + void SetWriteTypeToAcr() {SetWriteType(VTK_GDCM_WRITE_TYPE_ACR); } + void SetWriteTypeToAcrLibido(){SetWriteType(VTK_GDCM_WRITE_TYPE_ACR_LIBIDO); } + + // gdcm cannot guess how user built his image (and therefore cannot be clever about some Dicom fields) + // It's up to the user to tell gdcm what he did. + // -1) user created ex nihilo his own image and wants to write it as a Dicom image. + // USER_OWN_IMAGE + // -2) user modified the pixels of an existing image. + // FILTERED_IMAGE + // -3) user created a new image, using existing a set of images (eg MIP, MPR, cartography image) + // CREATED_IMAGE + // -4) user modified/added some tags *without processing* the pixels (anonymization.. + // UNMODIFIED_PIXELS_IMAGE + // -Probabely some more to be added + //(see gdcmFileHelper.h for more explanations) + + void SetContentTypeToUserOwnImage() {SetContentType(VTK_GDCM_WRITE_TYPE_USER_OWN_IMAGE);} + void SetContentTypeToFilteredImage() {SetContentType(VTK_GDCM_WRITE_TYPE_FILTERED_IMAGE);} + void SetContentTypeToUserCreatedImage() {SetContentType(VTK_GDCM_WRITE_TYPE_CREATED_IMAGE);} + void SetContentTypeToUnmodifiedPixelsImage(){SetContentType(VTK_GDCM_WRITE_TYPE_UNMODIFIED_PIXELS_IMAGE);} + + vtkSetMacro(WriteType, int); + vtkGetMacro(WriteType, int); + const char *GetWriteTypeAsString(); + + +//BTX + // Description: + // Aware user is allowed to pass his own gdcm::File *, so he may set *any Dicom field* he wants. + // (including his own Shadow Eleents, or any gdcm::SeqEntry) + // gdcm::FileHelper::CheckMandatoryElements() will check inconsistencies, as far as it knows how. + // Sorry, not yet available under Python. + vtkSetMacro(GdcmFile, gdcm::File *); + vtkGetMacro(GdcmFile, gdcm::File *); +//ETX + + vtkSetMacro(ContentType, int); + vtkGetMacro(ContentType, int); + + // Description: + // To pass in some extra information from a VTK context a user can pass a + // vtkMedicalImageProperties object +#if (VTK_MAJOR_VERSION >= 5) + void SetMedicalImageProperties(vtkMedicalImageProperties*); +#else + void SetMedicalImageProperties(vtkMedicalImageProperties*) {} +#endif + protected: vtkGdcmWriter(); ~vtkGdcmWriter(); virtual void RecursiveWrite(int axis, vtkImageData *image, ofstream *file); - void WriteFile(char *fileName,vtkImageData *image); + virtual void RecursiveWrite(int axis, vtkImageData *image, + vtkImageData *cache, ofstream *file); + void WriteDcmFile(char *fileName, vtkImageData *image); private: // Variables vtkLookupTable *LookupTable; + vtkMedicalImageProperties *MedicalImageProperties; + int WriteType; +//BTX + gdcm::File *GdcmFile; +//ETX + int ContentType; + }; //----------------------------------------------------------------------------- #endif -