+/**Template used for the different image types
+*/
+template <class T>
+void CheckBoard::createImageByType(T* dataImagePointer1, T* dataImagePointer2, T* dataImageResultPointer, vtkImageData *img1, vtkImageData *img2, int sizeX, int sizeY)
+{
+ dataImagePointer1 = (T*) img1->GetScalarPointer(0,0,0);
+ dataImagePointer2 = (T*) img2->GetScalarPointer(0,0,0);
+ dataImageResultPointer = (T*) newImage->GetScalarPointer(0,0,0);
+
+ if(squaresX == 0)
+ {
+ squaresX = 1;
+ }
+ if(squaresY == 0)
+ {
+ squaresY = 1;
+ }
+
+ int divX = sizeX/squaresX;
+ int divY = sizeY/squaresY;
+ int i, j;
+ int counterX=0, counterY; // JPR : uninitialized
+ for(i = 0; i < sizeX; i++)
+ {
+ counterY = 0;
+ for(j = 0; j < sizeY; j++)
+ {
+ dataImagePointer1 = (T*)img1->GetScalarPointer(i,j,0);
+ dataImagePointer2 = (T*)img2->GetScalarPointer(i,j,0);
+ dataImageResultPointer = (T*)newImage->GetScalarPointer(i,j,0);
+ if( (counterX <= divX && counterY <= divY) || ((counterX >= divX && counterX <= 2*divX) && (counterY >= divY && counterY <= 2*divY)) )
+ {
+ *dataImageResultPointer = (T) *dataImagePointer1;
+ }
+ else //if( ((counterX >= divX && counterX <= 2*divX) && counterY <= divY) || (counterX <= divX && (counterY >= divY && counterY <= 2*divY)) )
+ {
+ *dataImageResultPointer = (T) *dataImagePointer2;
+ }
+
+ if(counterX >= 2*divX)
+ {
+ counterX = 0;
+ }
+ else if(counterY >= 2*divY)
+ {
+ counterY = 0;
+ }
+ counterY++;
+ }
+ counterX++;
+ }
+}