+/*
+ # ---------------------------------------------------------------------
+ #
+ # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+ # pour la SantÈ)
+ # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+ # Previous Authors : Laurent Guigues, Jean-Pierre Roux
+ # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+ #
+ # 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.
+ # ------------------------------------------------------------------------ */
+
+
#include "bbvtkBinaryOperations.h"
#include "bbvtkPackage.h"
namespace bbvtk
BBTK_BLACK_BOX_IMPLEMENTATION(BinaryOperations,bbtk::AtomicBlackBox);
void BinaryOperations::Process()
{
-
// THE MAIN PROCESSING METHOD BODY
// Here we simply set the input 'In' value to the output 'Out'
// And print out the output value
// * TYPE is the C++ type of the input/output
// (the one provided in the attribute 'type' of the tag 'input')
+
if (bbGetInputIn1() == NULL)
{
- std::cout << "Set In1 at least" << std::endl;
+ printf( "EED Warning!!! (%s) BinaryOperations::Process Set In1 at least", bbGetFullName().c_str() );
+ bbSetOutputOut(NULL);
return;
}
+//EED 2017-01-01 Migration VTK7
+#if (VTK_MAJOR_VERSION <= 5)
ope->SetInput1((vtkDataObject*)bbGetInputIn1());
+#endif
+#if (VTK_MAJOR_VERSION >= 6)
+ ope->SetInput1Data((vtkDataObject*)bbGetInputIn1());
+#endif
if (bbGetInputIn2() != NULL)
{
+//EED 2017-01-01 Migration VTK7
+#if (VTK_MAJOR_VERSION <= 5)
ope->SetInput2((vtkDataObject*)bbGetInputIn2());
-
- }
- else
- {
- std::cout << "Set In2" << std::endl;
+#endif
+#if (VTK_MAJOR_VERSION >= 6)
+ ope->SetInput2Data((vtkDataObject*)bbGetInputIn2());
+#endif
+
+ } else {
+ printf( "EED Warning!!! (%s) BinaryOperations::Process Set In2 at least", bbGetFullName().c_str() );
+ bbSetOutputOut(NULL);
return;
}
-
-
-
- switch (bbGetInputOperation())
- {
- case 0:
- ope->SetOperationToAdd();
- break;
- case 1:
- ope->SetOperationToSubtract();
-
- break;
- case 2:
- ope->SetOperationToMultiply();
- break;
- case 3:
- ope->SetOperationToDivide();
- break;
- default:
- std::cout << "Invalid Operation" << std::endl;
- return;
- break;
- }
-
- ope->Update();
- vtkImageData* salida = ope->GetOutput();
-
- bbSetOutputOut(salida);
- bbSignalOutputModification();
-
-}
-void BinaryOperations::crearPredeterminado()
-{
- int ext[6];
- vtkImageData* inicial = bbGetInputIn1();
-
-
- if (constante == NULL)
- {
- inicial->GetExtent(ext);
- constante = vtkImageData::New();
- constante->SetExtent(ext);
- constante->SetScalarType(inicial->GetScalarType());
- constante->AllocateScalars();
- constante->Update();
- }
-
- for (int i=ext[0]; i<=ext[1]; i++)
- {
- for (int j=ext[2]; j<=ext[3]; j++)
- {
- for (int k=ext[4]; k<=ext[5]; k++)
- {
- unsigned short* value = (unsigned short*)constante->GetScalarPointer(i,j,k);
- *value = bbGetInputInConstant();
- }
- }
- }
+
+ if ( (bbGetInputOperation()>=0) && (bbGetInputOperation()<=5) )
+ {
+ switch (bbGetInputOperation())
+ {
+ case 0:
+ ope->SetOperationToAdd();
+ break;
+ case 1:
+ ope->SetOperationToSubtract();
+ break;
+ case 2:
+ ope->SetOperationToMultiply();
+ break;
+ case 3:
+ ope->SetOperationToDivide();
+ break;
+ case 4:
+ ope->SetOperationToMax();
+ break;
+ case 5:
+ ope->SetOperationToMin();
+ break;
+ default:
+ std::cout << "Invalid Operation" << std::endl;
+ return;
+ break;
+ }
+ ope->Modified();
+ ope->Update();
+ bbSetOutputOut( ope->GetOutput() );
+ } // if operation 0..5
+
+ if ( bbGetInputOperation()==6 )
+ {
+ bbSetOutputOut( bbGetInputIn1() );
+ }
+ if ( bbGetInputOperation()==7 )
+ {
+ bbSetOutputOut( bbGetInputIn2() );
+ }
+
+// bbSignalOutputModification();
}
bbSetInputIn1(NULL);
bbSetInputIn2(NULL);
bbSetOutputOut(NULL);
- bbSetInputInConstant(0);
+ bbSetInputOperation(0);
ope = vtkImageMathematics::New();
- constante = NULL;
}
+
+
void BinaryOperations::bbUserInitializeProcessing()
{
// but this is where you should allocate the internal/output pointers
// if any
-
}
+
+
void BinaryOperations::bbUserFinalizeProcessing()
{