]> Creatis software - bbtk.git/blob - packages/vtk/src/bbvtkBinaryOperations.cxx
194b3984c530a1b141a601321eee8972cdc54f11
[bbtk.git] / packages / vtk / src / bbvtkBinaryOperations.cxx
1 /*
2  # ---------------------------------------------------------------------
3  #
4  # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
5  #                        pour la SantÈ)
6  # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
7  # Previous Authors : Laurent Guigues, Jean-Pierre Roux
8  # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
9  #
10  #  This software is governed by the CeCILL-B license under French law and
11  #  abiding by the rules of distribution of free software. You can  use,
12  #  modify and/ or redistribute the software under the terms of the CeCILL-B
13  #  license as circulated by CEA, CNRS and INRIA at the following URL
14  #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
15  #  or in the file LICENSE.txt.
16  #
17  #  As a counterpart to the access to the source code and  rights to copy,
18  #  modify and redistribute granted by the license, users are provided only
19  #  with a limited warranty  and the software's author,  the holder of the
20  #  economic rights,  and the successive licensors  have only  limited
21  #  liability.
22  #
23  #  The fact that you are presently reading this means that you have had
24  #  knowledge of the CeCILL-B license and that you accept its terms.
25  # ------------------------------------------------------------------------ */
26
27
28 #include "bbvtkBinaryOperations.h"
29 #include "bbvtkPackage.h"
30 namespace bbvtk
31 {
32
33
34 BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,BinaryOperations)
35 BBTK_BLACK_BOX_IMPLEMENTATION(BinaryOperations,bbtk::AtomicBlackBox);
36 void BinaryOperations::Process()
37 {
38     // THE MAIN PROCESSING METHOD BODY
39     //   Here we simply set the input 'In' value to the output 'Out'
40     //   And print out the output value
41     // INPUT/OUTPUT ACCESSORS ARE OF THE FORM :
42     //    void bbSet{Input|Output}NAME(const TYPE&)
43     //    const TYPE& bbGet{Input|Output}NAME() const
44     //    Where :
45     //    * NAME is the name of the input/output
46     //      (the one provided in the attribute 'name' of the tag 'input')
47     //    * TYPE is the C++ type of the input/output
48     //      (the one provided in the attribute 'type' of the tag 'input')
49     
50     
51     if (bbGetInputIn1() == NULL)
52     {
53         printf( "EED Warning!!!  (%s)  BinaryOperations::Process  Set In1 at least", bbGetFullName().c_str() );
54         bbSetOutputOut(NULL);
55         return;
56     }
57     
58     if (ope!=NULL)
59     {
60         ope->Delete();
61         ope = NULL;
62     } // if
63     ope = vtkImageMathematics::New();
64
65     
66     //EED 2017-01-01 Migration VTK7
67 #if (VTK_MAJOR_VERSION <= 5) 
68     ope->SetInput1((vtkDataObject*)bbGetInputIn1());
69 #endif
70 #if (VTK_MAJOR_VERSION >= 6) 
71     ope->SetInput1Data((vtkDataObject*)bbGetInputIn1());
72 #endif
73     
74     if (bbGetInputIn2() != NULL)
75     {
76         //EED 2017-01-01 Migration VTK7
77 #if (VTK_MAJOR_VERSION <= 5) 
78         ope->SetInput2((vtkDataObject*)bbGetInputIn2());
79 #endif
80 #if (VTK_MAJOR_VERSION >= 6) 
81         ope->SetInput2Data((vtkDataObject*)bbGetInputIn2());
82 #endif
83     } else {
84         printf( "EED Warning!!!  (%s)  BinaryOperations::Process  Set In2 at least", bbGetFullName().c_str() );
85         bbSetOutputOut(NULL);
86         return;
87     }
88     
89     if ( (bbGetInputOperation()>=0) &&  (bbGetInputOperation()<=5) )
90     {
91         switch ( bbGetInputOperation() )
92         {
93             case 0:
94                 ope->SetOperationToAdd();
95                 break;
96             case 1:
97                 ope->SetOperationToSubtract();
98                 break;
99             case 2:
100                 ope->SetOperationToMultiply();
101                 break;
102             case 3:
103                 ope->SetOperationToDivide();
104                 break;
105             case 4:
106                 ope->SetOperationToMax();
107                 break;
108             case 5:
109                 ope->SetOperationToMin();
110                 break;
111             default:
112                 std::cout << "Invalid Operation" << std::endl;
113                 return;
114                 break;
115         }
116         ope->Modified();
117         ope->Update();
118         bbSetOutputOut( ope->GetOutput() );
119     }  // if operation 0..5
120     
121     if ( bbGetInputOperation()==6 )
122     {
123         bbSetOutputOut( bbGetInputIn1() );
124     }
125     if ( bbGetInputOperation()==7 )
126     {
127         bbSetOutputOut( bbGetInputIn2() );
128     }
129     //  bbSignalOutputModification();
130 }
131
132
133 void BinaryOperations::bbUserSetDefaultValues()
134 {
135     //  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX
136     //    Here we initialize the input 'In' to 0
137     bbSetInputIn1(NULL);
138     bbSetInputIn2(NULL);
139     bbSetOutputOut(NULL);
140     bbSetInputOperation(0);
141     ope = NULL;
142 }
143
144
145 void BinaryOperations::bbUserInitializeProcessing()
146 {
147     //  THE INITIALIZATION METHOD BODY :
148     //    Here does nothing
149     //    but this is where you should allocate the internal/output pointers
150     //    if any
151 }
152
153
154 void BinaryOperations::bbUserFinalizeProcessing()
155 {
156     //  THE FINALIZATION METHOD BODY :
157     //    Here does nothing
158     //    but this is where you should desallocate the internal/output pointers
159     //    if any
160 }
161
162 }// EO namespace bbvtk
163
164