-#include "bbTranslationElementTypeChanger.h"
-#include "bbTranslationPackage.h"
-namespace bbTranslation
-{
-
-BBTK_ADD_BLACK_BOX_TO_PACKAGE(Translation,ElementTypeChanger)
-BBTK_BLACK_BOX_IMPLEMENTATION(ElementTypeChanger,bbtk::AtomicBlackBox);
-void ElementTypeChanger::Process()
-{
- vtkImageData* ans = NULL;
- vtkImageData* src = bbGetInputIn();
- if (src == NULL){
- return;
- }
-
- if (bbGetInputIsFLOATToUSHORT())
- {
- ans = myOwnCast(src, bbGetInputInType());
- }
- else
- {
- caster->SetOutputScalarType(bbGetInputInType());
- //caster->SetOutputScalarTypeToUnsignedShort();
- caster->SetClampOverflow(bbGetInputClampOverflow());
- caster->SetInput(src);
- caster->Update();
- ans = caster->GetOutput();
-
- double typeMin = ans->GetScalarTypeMin();
- double typeMax = ans->GetScalarTypeMax();
-
- std::cout << typeMin << "," << typeMax << std::endl;
-
- /*
- vtkStructuredPoints* stPoints = vtkStructuredPoints::New( );
- vtkImageChangeInformation* change = vtkImageChangeInformation::New();
-
- vtkDataArray* apt2 = filtro->GetOutput()->GetPointData()->GetScalars();
-
- stPoints->GetPointData( )->SetScalars(apt2);
- stPoints->SetDimensions( sizeIma, sizeIma, 1 );
- stPoints->SetScalarType( volume->GetScalarType( ) );
- stPoints->Update();
-
- change->SetInput( stPoints );
- change->Update(); //important
-
- return change->GetOutput();
- */
-
- }
- bbSetOutputOut(ans);
-}
-vtkImageData* ElementTypeChanger::myOwnCast(vtkImageData* original, int type)
-{
- vtkImageData* final = vtkImageData::New();
-
- int ext[6];
- int newDim[3];
- double space[3];
- double origin[3];
-
- original->GetSpacing(space);
- original->GetExtent(ext);
- original->GetOrigin(origin);
- original->GetDimensions(newDim);
-
- final->SetScalarTypeToUnsignedShort();
-
- final->SetSpacing(space);
- final->SetDimensions(newDim);
- final->SetOrigin(origin);
-
- final->AllocateScalars();
- final->Update();
-
- float * ap1;
- unsigned short * ap2;
-
- float max_value = 0;
- float max_value2 = 0;
- //double min_value = GetScalarTypeMin();
- //double max_value = GetScalarTypeMax();
- for (int i=0; i<newDim[0]; i++){
- for (int j=0; j<newDim[1]; j++){
- for (int k=0; k<newDim[2]; k++){
- ap1 = (float *) original->GetScalarPointer(i,j,k);
-
- ap2 = (unsigned short *) final->GetScalarPointer(i,j,k);
- *ap2 = (((float) *ap1)*(bbGetInputScale()));
- }
- }
- }
-
- return final;
-}
-
-void ElementTypeChanger::bbUserSetDefaultValues()
-{
-
- bbSetInputClampOverflow(1);
- bbSetInputIn(NULL);
- bbSetInputScale(1);
- bbSetOutputOut(NULL);
- bbSetInputInType(VTK_UNSIGNED_SHORT);
- bbSetInputIsFLOATToUSHORT(false);
- caster = vtkImageCast::New();
-
-}
-void ElementTypeChanger::bbUserInitializeProcessing()
-{
-
-// THE INITIALIZATION METHOD BODY :
-// Here does nothing
-// but this is where you should allocate the internal/output pointers
-// if any
-
-
-}
-void ElementTypeChanger::bbUserFinalizeProcessing()
-{
-
-// THE FINALIZATION METHOD BODY :
-// Here does nothing
-// but this is where you should desallocate the internal/output pointers
-// if any
-
-}
-}
-// EO namespace bbTranslation
-
-