X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmFileHelper.h;h=de75a809a0de89e285a799ec2ae4120154f70743;hb=2d350674e2d48610fafc396a2f68548ca4b32afb;hp=5a17c28f0c3108c6fd5e7e1482149f5c1a0d1080;hpb=46afb30d2d016a9b1581c7ee4ca96d614a35203c;p=gdcm.git diff --git a/src/gdcmFileHelper.h b/src/gdcmFileHelper.h index 5a17c28f..de75a809 100644 --- a/src/gdcmFileHelper.h +++ b/src/gdcmFileHelper.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmFileHelper.h,v $ Language: C++ - Date: $Date: 2005/11/28 15:20:33 $ - Version: $Revision: 1.34 $ + Date: $Date: 2006/03/01 15:32:52 $ + Version: $Revision: 1.40 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -20,7 +20,7 @@ #define GDCMFILEHELPER_H #include "gdcmDebug.h" -#include "gdcmCommandManager.h" +#include "gdcmRefCounter.h" namespace gdcm @@ -40,7 +40,7 @@ typedef void (*VOID_FUNCTION_PUINT8_PFILE_POINTER)(uint8_t *, File *); * for accessing the image/volume content. One can also use it to * write Dicom/ACR-NEMA/RAW files. */ -class GDCM_EXPORT FileHelper : public CommandManager +class GDCM_EXPORT FileHelper : public RefCounter { gdcmTypeMacro(FileHelper); @@ -50,8 +50,7 @@ public: WMODE_RAW, WMODE_RGB }; - -public: + /// \brief Constructs a FileHelper with a RefCounter static FileHelper *New() {return new FileHelper();} /// \brief Constructs a FileHelper with a RefCounter from a fileHelper @@ -148,12 +147,23 @@ public: bool WriteDcmExplVR(std::string const &fileName); bool WriteAcr (std::string const &fileName); bool Write (std::string const &fileName); - /// \brief if user knows he didn't modify the pixels (e.g. he just anonymized - /// the file), he is allowed to ask to keep the original - /// 'Media Storage SOP Class UID' and 'Image Type' - void SetKeepMediaStorageSOPClassUID (bool v) - { KeepMediaStorageSOPClassUID = v; } - // no GetKeepMediaStorageSOPClassUID() method, on purpose! + +/// \brief We have to deal with 4 *very* different cases : +/// -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 images (eg MIP, MPR, cartography image) +/// CREATED_IMAGE +/// -4) user modified/added some tags *without processing* the pixels (anonymization... +/// UNMODIFIED_PIXELS_IMAGE + + void SetContentType (ImageContentType c) { ContentType = c; } + // no GetContentType() method, on purpose! + + void CallStartMethod(); + void CallProgressMethod(); + void CallEndMethod(); protected: FileHelper( ); @@ -190,6 +200,13 @@ private: uint8_t *GetRaw(); // members variables: +protected: + /// value of the ??? for any progress bar + float Progress; + mutable bool Abort; + +private: + /// gdcm::File to use to load the file File *FileInternal; @@ -209,7 +226,7 @@ private: // Write variables /// \brief (WMODE_RAW, WMODE_RGB) FileMode WriteMode; - + /// \brief (ImplicitVR, ExplicitVR, ACR, ACR_LIBIDO) FileType WriteType; @@ -221,10 +238,13 @@ private: /// See vtkgdcmSerieViewer for an example VOID_FUNCTION_PUINT8_PFILE_POINTER UserFunction; - /// \brief if user knows he didn't modify the pixels (e.g. he just - /// anonymized the file), he is allowed to ask to keep the original - /// 'Media Storage SOP Class UID' and 'Image Type' - bool KeepMediaStorageSOPClassUID; + /// \brief only user knows what he did before asking the image to be written + /// - he created ex nihilo his own image + /// - he just applied a mathematical process on the pixels + /// - he created a new image, using existing images (eg MIP, MPR,cartography) + /// - he anonymized and image (*no* modif on the pixels) + ImageContentType ContentType; + }; } // end namespace gdcm