]> Creatis software - creaVtk.git/commitdiff
#2711 creaVtk Feature New Normal - new Box ReadMHDPlane
authorEduardo DAVILA <eduardo.davila@creatis.insa-lyon.fr>
Tue, 6 Oct 2015 08:47:12 +0000 (10:47 +0200)
committerEduardo DAVILA <eduardo.davila@creatis.insa-lyon.fr>
Tue, 6 Oct 2015 08:47:12 +0000 (10:47 +0200)
bbtk_creaVtk_PKG/src/bbcreaVtkReadMHDPlane.cxx [new file with mode: 0644]
bbtk_creaVtk_PKG/src/bbcreaVtkReadMHDPlane.h [new file with mode: 0644]

diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkReadMHDPlane.cxx b/bbtk_creaVtk_PKG/src/bbcreaVtkReadMHDPlane.cxx
new file mode 100644 (file)
index 0000000..cc881a8
--- /dev/null
@@ -0,0 +1,140 @@
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+#include "bbcreaVtkReadMHDPlane.h"
+#include "bbcreaVtkPackage.h"
+
+#include "stdio.h"
+
+namespace bbcreaVtk
+{
+
+BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaVtk,ReadMHDPlane)
+BBTK_BLACK_BOX_IMPLEMENTATION(ReadMHDPlane,bbtk::AtomicBlackBox);
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+void ReadMHDPlane::Process()
+{
+
+// THE MAIN PROCESSING METHOD BODY
+//   Here we simply set the input 'In' value to the output 'Out'
+//   And print out the output value
+// INPUT/OUTPUT ACCESSORS ARE OF THE FORM :
+//    void bbSet{Input|Output}NAME(const TYPE&)
+//    const TYPE& bbGet{Input|Output}NAME() const 
+//    Where :
+//    * NAME is the name of the input/output
+//      (the one provided in the attribute 'name' of the tag 'input')
+//    * TYPE is the C++ type of the input/output
+//      (the one provided in the attribute 'type' of the tag 'input')
+
+//    bbSetOutputOut( bbGetInputIn() );
+//    std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
+
+
+
+
+       long int newHeaderSize;
+       std::string newFileName=bbGetInputFileName()+"-OneSlice";
+
+    int sx,sy,sz;
+    char mystring[250];
+    char strTmp[20];
+    FILE *ffOut        = fopen(newFileName.c_str(),"w+");
+    FILE *ffIn = fopen(bbGetInputFileName().c_str(),"r+");
+
+    while(!feof(ffIn))
+    {
+        strcpy(mystring,"\n");
+        fgets(mystring,250,ffIn);
+        if (strncmp("NDims",mystring,5)==0) {strcpy(mystring,"NDims = 2\n");}
+        if (strncmp("DimSize",mystring,6)==0) 
+       {
+               sscanf(mystring,"%s %s %d %d",strTmp, strTmp, &sx, &sy);
+               sprintf(mystring,"DimSize = %d %d\n",sx,sy);
+               newHeaderSize = sx*sy*bbGetInputSlice();
+       }
+        if (strncmp("ElementType = MET_USHORT",mystring,24)==0) { newHeaderSize=newHeaderSize*2; }
+        if (strncmp("ElementType = MET_SHORT",mystring,23)==0) { newHeaderSize=newHeaderSize*2; }
+        if (strncmp("ElementType = MET_FLOAT",mystring,23)==0) { newHeaderSize=newHeaderSize*2; }
+        if (strncmp("Offset",mystring,6)==0) {strcpy(mystring,"Offset = 0 0 0\n");}
+        if (strncmp("HeaderSize",mystring,10)==0) {strcpy(mystring,"");}
+        if (strncmp("ElementDataFile",mystring,15)==0) 
+       {
+               fprintf(ffOut,"HeaderSize = %ld\n\n", newHeaderSize );
+       }
+        fprintf(ffOut,mystring); 
+    }
+
+/*
+   fprintf(ff,"ObjectType = Image\n");
+   fprintf(ff,"NDims = 2\n");
+   fprintf(ff,"BinaryData = True\n");
+   fprintf(ff,"BinaryDataByteOrderMSB = False\n");
+   fprintf(ff,"CompressedData = False\n");
+   fprintf(ff,"TransformMatrix = 1 0 0 0 1 0 0 0 1\n");
+   fprintf(ff,"CenterOfRotation = 0 0 0\n");
+   fprintf(ff,"ElementSpacing = 0.7 0.7 0.7\n");
+   fprintf(ff,"DimSize = 512 512\n");
+   fprintf(ff,"AnatomicalOrientation = ???\n");
+   fprintf(ff,"ElementType = MET_SHORT\n");
+   fprintf(ff,"ElementNumberOfChannels = 1\n");
+   fprintf(ff,"Offset = 0 0 0\n");
+   fprintf(ff,"HeaderSize = %ld\n", newHeaderSize );
+   fprintf(ff,"ElementDataFile = inspi1_ana.raw\n");
+*/
+
+   fclose(ffIn);
+   fclose(ffOut);
+
+
+   vtkMetaImageReader * reader = vtkMetaImageReader::New();
+   reader->SetFileName( newFileName.c_str() );
+   reader->Update();
+   
+   bbSetOutputOut( reader->GetOutput() );
+
+
+}
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+void ReadMHDPlane::bbUserSetDefaultValues()
+{
+
+//  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
+//    Here we initialize the input 'In' to 0
+   bbSetInputFileName("");
+   bbSetInputSlice(0);
+  
+}
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+void ReadMHDPlane::bbUserInitializeProcessing()
+{
+
+//  THE INITIALIZATION METHOD BODY :
+//    Here does nothing 
+//    but this is where you should allocate the internal/output pointers 
+//    if any 
+
+  
+}
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+void ReadMHDPlane::bbUserFinalizeProcessing()
+{
+
+//  THE FINALIZATION METHOD BODY :
+//    Here does nothing 
+//    but this is where you should desallocate the internal/output pointers 
+//    if any
+  
+}
+}
+// EO namespace bbcreaVtk
+
+
diff --git a/bbtk_creaVtk_PKG/src/bbcreaVtkReadMHDPlane.h b/bbtk_creaVtk_PKG/src/bbcreaVtkReadMHDPlane.h
new file mode 100644 (file)
index 0000000..5ea1c96
--- /dev/null
@@ -0,0 +1,50 @@
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+#ifndef __bbcreaVtkReadMHDPlane_h_INCLUDED__
+#define __bbcreaVtkReadMHDPlane_h_INCLUDED__
+#include "bbcreaVtk_EXPORT.h"
+#include "bbtkAtomicBlackBox.h"
+#include "iostream"
+
+#include "vtkImageData.h"
+#include "vtkMetaImageReader.h"
+
+namespace bbcreaVtk
+{
+
+class bbcreaVtk_EXPORT ReadMHDPlane
+ : 
+   public bbtk::AtomicBlackBox
+{
+  BBTK_BLACK_BOX_INTERFACE(ReadMHDPlane,bbtk::AtomicBlackBox);
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+  BBTK_DECLARE_INPUT(FileName,std::string);
+  BBTK_DECLARE_INPUT(Slice,int);
+  BBTK_DECLARE_OUTPUT(Out,vtkImageData*); 
+  BBTK_PROCESS(Process);
+  void Process();
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+};
+
+BBTK_BEGIN_DESCRIBE_BLACK_BOX(ReadMHDPlane,bbtk::AtomicBlackBox);
+ BBTK_NAME("ReadMHDPlane");
+ BBTK_AUTHOR("InfoDev");
+ BBTK_DESCRIPTION("No Description.");
+ BBTK_CATEGORY("empty");
+ BBTK_INPUT(ReadMHDPlane,FileName,"Image file name",std::string,"");
+ BBTK_INPUT(ReadMHDPlane,Slice,"Slice number",int,"");
+ BBTK_OUTPUT(ReadMHDPlane,Out,"Image 2D",vtkImageData*,"");
+BBTK_END_DESCRIBE_BLACK_BOX(ReadMHDPlane);
+//===== 
+// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
+//===== 
+}
+// EO namespace bbcreaVtk
+
+#endif // __bbcreaVtkReadMHDPlane_h_INCLUDED__
+