X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FTransparency.cxx;h=1459e2da459d5d6dfb3cd9c4877af42e0bb81108;hb=bb6bffc75df349b5f74f4197206718a87b42e4a7;hp=0cf822d90a6b36df7954c8ac5c243472748af1f3;hpb=7c0413065745f2cd119bbb1f352770d61be6b21c;p=creaRigidRegistration.git diff --git a/lib/Transparency.cxx b/lib/Transparency.cxx index 0cf822d..1459e2d 100644 --- a/lib/Transparency.cxx +++ b/lib/Transparency.cxx @@ -138,20 +138,7 @@ void Transparency::createImage(vtkImageData *img1, vtkImageData *img2, int sizeX char* dataImagePointer2 = NULL; char* dataImageResultPointer = NULL; - dataImagePointer1 = (char*) img1->GetScalarPointer(0,0,0); - dataImagePointer2 = (char*) img2->GetScalarPointer(0,0,0); - dataImageResultPointer = (char*) _newImage->GetScalarPointer(0,0,0); - for(i = 0; i < sizeX; i++) - { - for(j = 0; j < sizeY; j++) - { - dataImagePointer1 = (char*)img1->GetScalarPointer(i,j,0); - dataImagePointer2 = (char*)img2->GetScalarPointer(i,j,0); - dataImageResultPointer = (char*)_newImage->GetScalarPointer(i,j,0); - - *dataImageResultPointer = (char)*dataImagePointer1*_percent + (char)*dataImagePointer2*(1-_percent); - } - } + createImageByType(dataImagePointer1, dataImagePointer2, dataImageResultPointer, img1, img2, sizeX, sizeY); } else if(_type == VTK_SIGNED_CHAR) { @@ -160,20 +147,7 @@ void Transparency::createImage(vtkImageData *img1, vtkImageData *img2, int sizeX signed char* dataImagePointer2 = NULL; signed char* dataImageResultPointer = NULL; - dataImagePointer1 = (signed char*) img1->GetScalarPointer(0,0,0); - dataImagePointer2 = (signed char*) img2->GetScalarPointer(0,0,0); - dataImageResultPointer = (signed char*) _newImage->GetScalarPointer(0,0,0); - for(i = 0; i < sizeX; i++) - { - for(j = 0; j < sizeY; j++) - { - dataImagePointer1 = (signed char*)img1->GetScalarPointer(i,j,0); - dataImagePointer2 = (signed char*)img2->GetScalarPointer(i,j,0); - dataImageResultPointer = (signed char*)_newImage->GetScalarPointer(i,j,0); - - *dataImageResultPointer = (signed char)*dataImagePointer1*_percent + (signed char)*dataImagePointer2*(1-_percent); - } - } + createImageByType(dataImagePointer1, dataImagePointer2, dataImageResultPointer, img1, img2, sizeX, sizeY); } else if(_type == VTK_UNSIGNED_CHAR) { @@ -182,20 +156,7 @@ void Transparency::createImage(vtkImageData *img1, vtkImageData *img2, int sizeX unsigned char* dataImagePointer2 = NULL; unsigned char* dataImageResultPointer = NULL; - dataImagePointer1 = (unsigned char*) img1->GetScalarPointer(0,0,0); - dataImagePointer2 = (unsigned char*) img2->GetScalarPointer(0,0,0); - dataImageResultPointer = (unsigned char*) _newImage->GetScalarPointer(0,0,0); - for(i = 0; i < sizeX; i++) - { - for(j = 0; j < sizeY; j++) - { - dataImagePointer1 = (unsigned char*)img1->GetScalarPointer(i,j,0); - dataImagePointer2 = (unsigned char*)img2->GetScalarPointer(i,j,0); - dataImageResultPointer = (unsigned char*)_newImage->GetScalarPointer(i,j,0); - - *dataImageResultPointer = (unsigned char)*dataImagePointer1*_percent + (unsigned char)*dataImagePointer2*(1-_percent); - } - } + createImageByType(dataImagePointer1, dataImagePointer2, dataImageResultPointer, img1, img2, sizeX, sizeY); } else if(_type == VTK_SHORT) { @@ -204,20 +165,7 @@ void Transparency::createImage(vtkImageData *img1, vtkImageData *img2, int sizeX short* dataImagePointer2 = NULL; short* dataImageResultPointer = NULL; - dataImagePointer1 = (short*) img1->GetScalarPointer(0,0,0); - dataImagePointer2 = (short*) img2->GetScalarPointer(0,0,0); - dataImageResultPointer = (short*) _newImage->GetScalarPointer(0,0,0); - for(i = 0; i < sizeX; i++) - { - for(j = 0; j < sizeY; j++) - { - dataImagePointer1 = (short*)img1->GetScalarPointer(i,j,0); - dataImagePointer2 = (short*)img2->GetScalarPointer(i,j,0); - dataImageResultPointer = (short*)_newImage->GetScalarPointer(i,j,0); - - *dataImageResultPointer = (short)*dataImagePointer1*_percent + (short)*dataImagePointer2*(1-_percent); - } - } + createImageByType(dataImagePointer1, dataImagePointer2, dataImageResultPointer, img1, img2, sizeX, sizeY); } else if(_type == VTK_UNSIGNED_SHORT) { @@ -226,20 +174,7 @@ void Transparency::createImage(vtkImageData *img1, vtkImageData *img2, int sizeX unsigned short* dataImagePointer2 = NULL; unsigned short* dataImageResultPointer = NULL; - dataImagePointer1 = (unsigned short*) img1->GetScalarPointer(0,0,0); - dataImagePointer2 = (unsigned short*) img2->GetScalarPointer(0,0,0); - dataImageResultPointer = (unsigned short*) _newImage->GetScalarPointer(0,0,0); - for(i = 0; i < sizeX; i++) - { - for(j = 0; j < sizeY; j++) - { - dataImagePointer1 = (unsigned short*)img1->GetScalarPointer(i,j,0); - dataImagePointer2 = (unsigned short*)img2->GetScalarPointer(i,j,0); - dataImageResultPointer = (unsigned short*)_newImage->GetScalarPointer(i,j,0); - - *dataImageResultPointer = (unsigned short)*dataImagePointer1*_percent + (unsigned short)*dataImagePointer2*(1-_percent); - } - } + createImageByType(dataImagePointer1, dataImagePointer2, dataImageResultPointer, img1, img2, sizeX, sizeY); } else if(_type == VTK_INT) { @@ -248,20 +183,7 @@ void Transparency::createImage(vtkImageData *img1, vtkImageData *img2, int sizeX int* dataImagePointer2 = NULL; int* dataImageResultPointer = NULL; - dataImagePointer1 = (int*) img1->GetScalarPointer(0,0,0); - dataImagePointer2 = (int*) img2->GetScalarPointer(0,0,0); - dataImageResultPointer = (int*) _newImage->GetScalarPointer(0,0,0); - for(i = 0; i < sizeX; i++) - { - for(j = 0; j < sizeY; j++) - { - dataImagePointer1 = (int*)img1->GetScalarPointer(i,j,0); - dataImagePointer2 = (int*)img2->GetScalarPointer(i,j,0); - dataImageResultPointer = (int*)_newImage->GetScalarPointer(i,j,0); - - *dataImageResultPointer = (int)*dataImagePointer1*_percent + (int)*dataImagePointer2*(1-_percent); - } - } + createImageByType(dataImagePointer1, dataImagePointer2, dataImageResultPointer, img1, img2, sizeX, sizeY); } else if(_type == VTK_UNSIGNED_INT) { @@ -270,20 +192,7 @@ void Transparency::createImage(vtkImageData *img1, vtkImageData *img2, int sizeX unsigned int* dataImagePointer2 = NULL; unsigned int* dataImageResultPointer = NULL; - dataImagePointer1 = (unsigned int*) img1->GetScalarPointer(0,0,0); - dataImagePointer2 = (unsigned int*) img2->GetScalarPointer(0,0,0); - dataImageResultPointer = (unsigned int*) _newImage->GetScalarPointer(0,0,0); - for(i = 0; i < sizeX; i++) - { - for(j = 0; j < sizeY; j++) - { - dataImagePointer1 = (unsigned int*)img1->GetScalarPointer(i,j,0); - dataImagePointer2 = (unsigned int*)img2->GetScalarPointer(i,j,0); - dataImageResultPointer = (unsigned int*)_newImage->GetScalarPointer(i,j,0); - - *dataImageResultPointer = (unsigned int)*dataImagePointer1*_percent + (unsigned int)*dataImagePointer2*(1-_percent); - } - } + createImageByType(dataImagePointer1, dataImagePointer2, dataImageResultPointer, img1, img2, sizeX, sizeY); } else if(_type == VTK_LONG) { @@ -292,20 +201,7 @@ void Transparency::createImage(vtkImageData *img1, vtkImageData *img2, int sizeX long* dataImagePointer2 = NULL; long* dataImageResultPointer = NULL; - dataImagePointer1 = (long*) img1->GetScalarPointer(0,0,0); - dataImagePointer2 = (long*) img2->GetScalarPointer(0,0,0); - dataImageResultPointer = (long*) _newImage->GetScalarPointer(0,0,0); - for(i = 0; i < sizeX; i++) - { - for(j = 0; j < sizeY; j++) - { - dataImagePointer1 = (long*)img1->GetScalarPointer(i,j,0); - dataImagePointer2 = (long*)img2->GetScalarPointer(i,j,0); - dataImageResultPointer = (long*)_newImage->GetScalarPointer(i,j,0); - - *dataImageResultPointer = (long)*dataImagePointer1*_percent + (long)*dataImagePointer2*(1-_percent); - } - } + createImageByType(dataImagePointer1, dataImagePointer2, dataImageResultPointer, img1, img2, sizeX, sizeY); } else if(_type == VTK_UNSIGNED_LONG) { @@ -314,20 +210,7 @@ void Transparency::createImage(vtkImageData *img1, vtkImageData *img2, int sizeX unsigned long* dataImagePointer2 = NULL; unsigned long* dataImageResultPointer = NULL; - dataImagePointer1 = (unsigned long*) img1->GetScalarPointer(0,0,0); - dataImagePointer2 = (unsigned long*) img2->GetScalarPointer(0,0,0); - dataImageResultPointer = (unsigned long*) _newImage->GetScalarPointer(0,0,0); - for(i = 0; i < sizeX; i++) - { - for(j = 0; j < sizeY; j++) - { - dataImagePointer1 = (unsigned long*)img1->GetScalarPointer(i,j,0); - dataImagePointer2 = (unsigned long*)img2->GetScalarPointer(i,j,0); - dataImageResultPointer = (unsigned long*)_newImage->GetScalarPointer(i,j,0); - - *dataImageResultPointer = (unsigned long)*dataImagePointer1*_percent + (unsigned long)*dataImagePointer2*(1-_percent); - } - } + createImageByType(dataImagePointer1, dataImagePointer2, dataImageResultPointer, img1, img2, sizeX, sizeY); } else if(_type == VTK_FLOAT) { @@ -336,20 +219,7 @@ void Transparency::createImage(vtkImageData *img1, vtkImageData *img2, int sizeX float* dataImagePointer2 = NULL; float* dataImageResultPointer = NULL; - dataImagePointer1 = (float*) img1->GetScalarPointer(0,0,0); - dataImagePointer2 = (float*) img2->GetScalarPointer(0,0,0); - dataImageResultPointer = (float*) _newImage->GetScalarPointer(0,0,0); - for(i = 0; i < sizeX; i++) - { - for(j = 0; j < sizeY; j++) - { - dataImagePointer1 = (float*)img1->GetScalarPointer(i,j,0); - dataImagePointer2 = (float*)img2->GetScalarPointer(i,j,0); - dataImageResultPointer = (float*)_newImage->GetScalarPointer(i,j,0); - - *dataImageResultPointer = (float)*dataImagePointer1*_percent + (float)*dataImagePointer2*(1-_percent); - } - } + createImageByType(dataImagePointer1, dataImagePointer2, dataImageResultPointer, img1, img2, sizeX, sizeY); } else if(_type == VTK_DOUBLE) { @@ -357,24 +227,32 @@ void Transparency::createImage(vtkImageData *img1, vtkImageData *img2, int sizeX double* dataImagePointer1 = NULL; double* dataImagePointer2 = NULL; double* dataImageResultPointer = NULL; + + createImageByType(dataImagePointer1, dataImagePointer2, dataImageResultPointer, img1, img2, sizeX, sizeY); + } + + _newImage->Update(); +} + +template +void Transparency::createImageByType(T* dataImagePointer1, T* dataImagePointer2, T* dataImageResultPointer, vtkImageData *img1, vtkImageData *img2, int sizeX, int sizeY) +{ + int i, j; - dataImagePointer1 = (double*) img1->GetScalarPointer(0,0,0); - dataImagePointer2 = (double*) img2->GetScalarPointer(0,0,0); - dataImageResultPointer = (double*) _newImage->GetScalarPointer(0,0,0); - for(i = 0; i < sizeX; i++) + dataImagePointer1 = (T*) img1->GetScalarPointer(0,0,0); + dataImagePointer2 = (T*) img2->GetScalarPointer(0,0,0); + dataImageResultPointer = (T*) _newImage->GetScalarPointer(0,0,0); + for(i = 0; i < sizeX; i++) + { + for(j = 0; j < sizeY; j++) { - for(j = 0; j < sizeY; j++) - { - dataImagePointer1 = (double*)img1->GetScalarPointer(i,j,0); - dataImagePointer2 = (double*)img2->GetScalarPointer(i,j,0); - dataImageResultPointer = (double*)_newImage->GetScalarPointer(i,j,0); - - *dataImageResultPointer = (double)*dataImagePointer1*_percent + (double)*dataImagePointer2*(1-_percent); - } + dataImagePointer1 = (T*)img1->GetScalarPointer(i,j,0); + dataImagePointer2 = (T*)img2->GetScalarPointer(i,j,0); + dataImageResultPointer = (T*)_newImage->GetScalarPointer(i,j,0); + + *dataImageResultPointer = (T)*dataImagePointer1*_percent + (T)*dataImagePointer2*(1-_percent); } } - - _newImage->Update(); } /* @@ -407,4 +285,5 @@ void Transparency::setImage2(vtkImageData *image) void Transparency::setPercent(int percent) { _percent=(double)percent/100.0; -} \ No newline at end of file +} +