#include "stdio.h"
-#include <sys/types.h>
-#include <unistd.h>
-
-
-
#define _LARGEFILE64_SOURCE
#include <stdio.h>
#include <sys/types.h>
+
+#if defined(_WIN32)
+#else
#include <unistd.h>
+#endif // defined(_WIN32)
+
#include <stdlib.h>
#include <errno.h>
#include <string.h>
// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
//=====
+
+vtkImageData* ReadMHDPlane::CreateDefaultImage()
+{
+ int i;
+ int sizeX, sizeY, sizeZ;
+ sizeX = 200;
+ sizeY = sizeX;
+ sizeZ = 1;
+ vtkImageData *newImage = vtkImageData::New();
+ newImage->Initialize();
+ newImage->SetScalarTypeToUnsignedChar();
+ newImage->SetSpacing( 1,1,1 );
+ newImage->SetDimensions( sizeX,sizeY,sizeZ );
+ newImage->SetWholeExtent(0, sizeX-1,0,sizeY-1,0,sizeZ-1 );
+ newImage->SetExtent(0, sizeX-1,0,sizeY-1,0,sizeZ-1 );
+ newImage->SetNumberOfScalarComponents(1);
+ newImage->AllocateScalars();
+ newImage->Update();
+ memset ( (void*)newImage->GetScalarPointer(), 0, sizeX*sizeY*1 );
+ for (i=0; i<sizeX; i++)
+ {
+ newImage->SetScalarComponentFromDouble(i,i,0, 0, 255 );
+ newImage->SetScalarComponentFromDouble(i,sizeY-1-i,0, 0, 255 );
+ } // for i
+ return newImage;
+}
+
+
void ReadMHDPlane::ReadNormalMHD()
{
// THE MAIN PROCESSING METHOD BODY
if (ok==false)
{
- int i;
- int sizeX, sizeY, sizeZ;
- sizeX = 200;
- sizeY = sizeX;
- sizeZ = 1;
- newImage = vtkImageData::New();
- newImage->Initialize();
- newImage->SetScalarTypeToUnsignedChar();
- newImage->SetSpacing( 1,1,1 );
- newImage->SetDimensions( sizeX,sizeY,sizeZ );
- newImage->SetWholeExtent(0, sizeX-1,0,sizeY-1,0,sizeZ-1 );
- newImage->SetExtent(0, sizeX-1,0,sizeY-1,0,sizeZ-1 );
- newImage->SetNumberOfScalarComponents(1);
- newImage->AllocateScalars();
- newImage->Update();
- memset ( (void*)newImage->GetScalarPointer(), 0, sizeX*sizeY*1 );
- for (i=0; i<sizeX; i++)
- {
- newImage->SetScalarComponentFromDouble(i,i,0, 0, 255 );
- newImage->SetScalarComponentFromDouble(i,sizeY-1-i,0, 0, 255 );
- } // for i
+ newImage=CreateDefaultImage();
} // if ok
bbSetOutputOut( newImage );
float ox=-1,oy=-1,oz=-1;
long int headersize=0;
- vtkImageData *newImage;
+ vtkImageData *newImage=NULL;
char mystring[250];
char strTmp[30];
FILE *ffIn = fopen(bbGetInputFileName().c_str(),"r");
long long dataSize;
-
-
if (ffIn!=NULL)
{
newImage = vtkImageData::New();
long long pos;
long long lsize = dimX*dimY*1 *dataSize;
+
+
+#if defined(_WIN32)
+ _sopen_s( &fd, filename.c_str(), _O_RDONLY, _SH_DENYNO, 0 );
+#else
fd = open ( filename.c_str() , O_RDONLY|O_LARGEFILE );
+#endif // defined(_WIN32)
+
+
+
if (fd < 0)
{
printf("EED ReadMHDPlane::Read64lseek \n");
newImage->AllocateScalars();
newImage->Update();
pos = dimX*dimY*(long long)bbGetInputSlice()*dataSize;
+#if defined(_WIN32)
+ if (_lseeki64( fd, pos, SEEK_SET ) < 0)
+#else
if (lseek64(fd, pos, SEEK_SET) < 0)
+#endif // defined(_WIN32)
{
printf("EED ReadMHDPlane::Read64lseek \n");
fprintf(stderr, "Failed seeking to %lld, %s\n", pos, strerror(errno));
}
} // if PLANE XY
-
if (bbGetInputDirectionPlane()=="XZ")
{
long long int j;
newImage->Update();
long long sizeBytesPlane = dimX*dimY*dataSize;
pos = dimX*(long long int)bbGetInputSlice()*dataSize;
- void *pImage = newImage->GetScalarPointer();
+ char *pImage = (char*)(newImage->GetScalarPointer());
for (j=0;j<dimZ;j++)
{
-printf("EED EED ReadMHDPlane::Read64lseek XZ j=%d \n", j);
+#if defined(_WIN32)
+ if (_lseeki64( fd, pos + j*sizeBytesPlane , SEEK_SET ) < 0)
+#else
if (lseek64(fd, pos + j*sizeBytesPlane , SEEK_SET) < 0)
+#endif // defined(_WIN32)
{
printf("EED ReadMHDPlane::Read64lseek \n");
fprintf(stderr, "Failed seeking to %lld, %s\n", pos, strerror(errno));
fprintf(stderr, "Failed reading: %s\n", strerror(errno));
exit(1);
}
- pImage=pImage+dimX*dataSize;
+ pImage = pImage+dimX*dataSize;
} // for j
- } // if PLANE XY
+ } // if PLANE XZ
if (bbGetInputDirectionPlane()=="YZ")
newImage->AllocateScalars();
newImage->Update();
long long sizeBytesPlane = dimX*dimY*dataSize;
-// pos = dimX*(long long int)bbGetInputSlice()*dataSize;
- void *pImage;
+ char *pImage;
for (j=0;j<dimZ;j++)
{
-printf("EED EED ReadMHDPlane::Read64lseek YZ i=%d j=%d \n", i,j);
for (i=0;i<dimY;i++)
{
pos = ((long long int)bbGetInputSlice() + i*dimX + j*dimX*dimY)*dataSize ;
- if (lseek64(fd, pos , SEEK_SET) < 0)
+#if defined(_WIN32)
+ if (_lseeki64( fd, pos , SEEK_SET ) < 0)
+#else
+ if (lseek64(fd, pos , SEEK_SET) < 0)
+#endif // defined(_WIN32)
{
printf("EED ReadMHDPlane::Read64lseek \n");
fprintf(stderr, "Failed seeking to %lld, %s\n", pos, strerror(errno));
exit(1);
}
- pImage=newImage->GetScalarPointer(i, j,0 );
+ pImage=(char*)(newImage->GetScalarPointer(i, j,0 ));
if ((ret = read(fd, pImage , dataSize)) < 0)
{
fprintf(stderr, "Failed reading: %s\n", strerror(errno));
}
}
} // for j
- } // if PLANE XY
-
-
+ } // if PLANE YZ
+#if defined(_WIN32)
+ _close (fd);
+#else
close (fd);
+#endif // defined(_WIN32)
+ } else {
+ newImage=CreateDefaultImage();
+ } // if ffIn
- bbSetOutputOut( newImage );
- } // if
-
+ bbSetOutputOut( newImage );
}
// Here we initialize the input 'In' to 0
bbSetInputFileName("");
bbSetInputSlice(0);
- bbSetInputType(0);
+ bbSetInputType(1);
bbSetInputDirectionPlane("XY");
}