From 38223e35ad6a0b45a09955b131caab32028ca72b Mon Sep 17 00:00:00 2001 From: jean-pierre roux Date: Wed, 6 Oct 2010 16:44:04 +0000 Subject: [PATCH] Flip (Upside down) box --- packages/vtk/src/bbvtkFlip.cxx | 167 +++++++++++++++++++++++++++++++++ packages/vtk/src/bbvtkFlip.h | 90 ++++++++++++++++++ 2 files changed, 257 insertions(+) create mode 100644 packages/vtk/src/bbvtkFlip.cxx create mode 100644 packages/vtk/src/bbvtkFlip.h diff --git a/packages/vtk/src/bbvtkFlip.cxx b/packages/vtk/src/bbvtkFlip.cxx new file mode 100644 index 0000000..93317a1 --- /dev/null +++ b/packages/vtk/src/bbvtkFlip.cxx @@ -0,0 +1,167 @@ +/*========================================================================= + Program: bbtk + Module: $RCSfile: bbvtkFlip.cxx,v $ + Language: C++ + Date: $Date: 2010/10/06 16:44:04 $ + Version: $Revision: 1.1 $ +=========================================================================*/ + +/* --------------------------------------------------------------------- + +* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) +* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux +* +* This software is governed by the CeCILL-B license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL-B +* license as circulated by CEA, CNRS and INRIA at the following URL +* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +* or in the file LICENSE.txt. +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited +* liability. +* +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL-B license and that you accept its terms. +* ------------------------------------------------------------------------ */ + +/** + * \file + * \brief + */ + +#ifdef _USE_VTK_ +#include "bbvtkFlip.h" +#include "bbvtkPackage.h" + +namespace bbvtk +{ + BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,Flip) + BBTK_BLACK_BOX_IMPLEMENTATION(Flip,bbtk::AtomicBlackBox); + +//--------------------------------------------------------------------- + + void Flip::bbUserSetDefaultValues() + { + //std::cout << "-------- entree ds Flip::bbUserSetDefaultValues()\n" << std::endl; + + bbSetInputIn(NULL); + mImageOut = NULL; + bbSetOutputOut(NULL); + } + +//--------------------------------------------------------------------- + + void Flip::bbUserInitializeProcessing() + { + //std::cout << "-------- entree ds Flip::bbUserInitalizeProcessing()\n" << std::endl; + //bbUserFinalizeProcessing(); + mImageOut = vtkImageData::New(); // Alloc depends on bbGetInputIn().size() + } + +//--------------------------------------------------------------------- + + void Flip::bbUserFinalizeProcessing() + { + //std::cout << "-------- entree ds Flip::bbUserFinalizeProcessing()\n" << std::endl; + // WTF? we never enter here // JPR bbUserFinalizeProcessing() JPR + if (mImageOut!=NULL) + { + // mImageOut->Delete(); + // mImageOut=NULL; + } + bbSetOutputOut(mImageOut); + } + +//--------------------------------------------------------------------- + + /// : + /// - receives a vtkImageData*imageIn, flips it + /// - exports a vtkImageData* + /// + /// +void Flip::Process() +{ + vtkImageData* imageIn = bbGetInputIn(); + vtkImageData * mImageOut = flip(imageIn); + + // Devrait etre dans bbUserFinalizeProcessing() ? // JPR + bbSetOutputOut(mImageOut); +} + + +vtkImageData * Flip::flip(vtkImageData *imageIn) +{ + int inputdims[3]; +// int outputdims[3]; + imageIn->GetDimensions (inputdims); + imageIn->Update(); + int nbScalComp = imageIn->GetNumberOfScalarComponents(); + int scalarSize = imageIn->GetScalarSize(); + int lineSize = inputdims[0]*scalarSize*nbScalComp; + int planeSize = inputdims[1]*lineSize; + char *pixelsIn = (char *)imageIn->GetScalarPointer(); + +/* + outputdims[0] = inputdims[1]; + outputdims[1] = inputdims[0]; + outputdims[2] = inputdims[2]; + std::cout << " inputdims[0] " << inputdims[0] <<" inputdims[1] " <SetDimensions( outputdims ); + vtkImageOut->SetExtent(0,outputdims[0]-1,0,outputdims[1]-1,0,outputdims[2]-1); + vtkImageOut->SetWholeExtent(0,outputdims[0]-1,0,outputdims[1]-1,0,outputdims[2]-1); + int nbScalComp = imageIn->GetNumberOfScalarComponents(); + vtkImageOut->SetNumberOfScalarComponents(nbScalComp); + vtkImageOut->SetSpacing( imageIn->GetSpacing() ); + vtkImageOut->SetScalarType(imageIn->GetScalarType() ); + vtkImageOut->AllocateScalars(); + vtkImageOut->Update(); + char *pixelsOut = (char *)vtkImageOut->GetScalarPointer(); + unsigned short *output =(unsigned short *)(vtkImageOut->GetScalarPointer()); + */ + + char *temp = (char *)malloc(lineSize); + char *line1; + char *line2; + char *debPlan; + for(int k=0; kSetScalarComponentFromDouble(j,i,k,l,imageIn->GetScalarComponentAsDouble(i,j,k,l)); + } + } + + } + } + return vtkImageOut; +*/ + free (temp); + return imageIn; +} + +}//namespace bbtk + +#endif // _USE_VTK_ diff --git a/packages/vtk/src/bbvtkFlip.h b/packages/vtk/src/bbvtkFlip.h new file mode 100644 index 0000000..f6af304 --- /dev/null +++ b/packages/vtk/src/bbvtkFlip.h @@ -0,0 +1,90 @@ +/*========================================================================= + Program: bbtk + Module: $RCSfile: bbvtkFlip.h,v $ + Language: C++ + Date: $Date: 2010/10/06 16:44:04 $ + Version: $Revision: 1.1 $ +=========================================================================*/ + +/* --------------------------------------------------------------------- + +* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) +* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux +* +* This software is governed by the CeCILL-B license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL-B +* license as circulated by CEA, CNRS and INRIA at the following URL +* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +* or in the file LICENSE.txt. +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited +* liability. +* +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL-B license and that you accept its terms. +* ------------------------------------------------------------------------ */ + +/** + * \brief Short description in one line + * + * Long description which + * can span multiple lines + */ +/** + * \file + * \brief Pattern for the definition of a new type of Node (header) + */ +/** + * \class bbtk::NodePatern + * \brief Pattern for the definition of a new type of Node + */ + +#ifdef _USE_VTK_ + +#ifndef __bbvtkFlip_h_INCLUDED__ +#define __bbvtkFlip_h_INCLUDED__ +#include "bbvtk_EXPORT.h" + +#include "bbtkAtomicBlackBox.h" + +#include "vtkImageData.h" + +namespace bbvtk +{ + class bbvtk_EXPORT Flip : public bbtk::AtomicBlackBox + { + public: + BBTK_BLACK_BOX_INTERFACE(Flip, bbtk::AtomicBlackBox); + BBTK_DECLARE_INPUT (In,vtkImageData *); + BBTK_DECLARE_OUTPUT(Out, vtkImageData*); + BBTK_PROCESS(Process); + void Process(); + private : + vtkImageData * flip(vtkImageData *imageIn); + protected: + + // Attributes : + private: + vtkImageData *mImageOut; + }; + + //================================================================= + // UserBlackBox description + BBTK_BEGIN_DESCRIBE_BLACK_BOX(Flip,bbtk::AtomicBlackBox); + BBTK_NAME("Flip"); + BBTK_AUTHOR("jp at creatis.univ-lyon.fr"); + BBTK_DESCRIPTION("flips a "); + BBTK_CATEGORY("application, image"); + BBTK_INPUT(Flip, In, "image", vtkImageData *, ""); + BBTK_OUTPUT(Flip, Out, "fliped image", vtkImageData *, ""); + BBTK_END_DESCRIBE_BLACK_BOX(Flip); + //================================================================= + +}//namespace bbvtk + +#endif //__bbtvtkFlip_h__ +#endif //_USE_VTK_ -- 2.45.0