125 xmippFREAD(fieldValue, datatypesize, n, fimg, swap);
131 short* sValue = (
short*) fieldValue;
132 *fieldValue = (double) *sValue;
137 int* iValue = (
int*) fieldValue;
138 *fieldValue = (double) *iValue;
143 unsigned short* usValue = (
unsigned short*) fieldValue;
144 *fieldValue = (double) *usValue;
149 unsigned int* uiValue = (
unsigned int*) fieldValue;
150 *fieldValue = (double) *uiValue;
155 float* fValue = (
float*) fieldValue;
156 *fieldValue = (double) *fValue;
166 bool* bValue = (
bool*) fieldValue;
167 *fieldValue = (double) *bValue;
173 char* cValue = (
char*) fieldValue;
174 *fieldValue = (double) *cValue;
179 unsigned long* cValue = (
unsigned long*) fieldValue;
180 *fieldValue = (double) *cValue;
185 long* cValue = (
long*) fieldValue;
186 *fieldValue = (double) *cValue;
203 unsigned short int ltName;
205 xmippFREAD(&cdTag,
sizeof (
unsigned char),1,fimg,
false);
206 xmippFREAD(<Name,
sizeof(
unsigned short int), 1,fimg,isLE);
207 int idTag = int(cdTag);
209 std::string stagName;
213 char * tagName =
new char[ltName+1];
215 tagName[ltName] =
'\0';
222 fseek(fimg, 8, SEEK_CUR);
237 xmippFREAD(&dummy,
sizeof(
unsigned char),1,fimg,
false);
238 xmippFREAD(&dummy,
sizeof(
unsigned char),1,fimg,
false);
249 readTagDM4(fimg, header, parentId, nodeId, isLE, swap);
253 else if (idTag == 21)
262 info =
new size_t[nnum];
275 std::vector<double> vtagValue(1);
276 vtagValue.assign(1,tagValue);
283 else if(nnum == 3 && info[0]==20)
294 std::vector<double> vtagValue(1);
295 vtagValue.assign(1,(
double) ftell(fimg));
301 if(info[1] == 2 || info[1] == 4)
303 else if(info[1] == 3 || info[1] == 5 || info[1] == 6)
305 else if(info[1] == 10 )
310 fseek( fimg, ftell(fimg)+(info[nnum-1])*k , SEEK_SET );
314 else if (info[0]==20 && info[1] == 15)
328 for (
int n=1;
n<=info[3];
n++)
333 if(info[3+2*
n] == 2 || info[3+2*
n] == 4)
335 else if(info[3+2*
n] == 3 || info[3+2*
n] == 5)
337 else if(info[3+2*
n] == 10 )
343 fseek( fimg, ftell(fimg)+(info[nnum-1]-1)*nBytes , SEEK_SET );
347 else if (info[0] == 15)
359 std::vector<double> vtagValue((
int)info[2]);
360 for (
int n=1;
n<=info[2];
n++)
364 vtagValue.assign(
n,fieldValue);
380 for (
int n = 0;
n < depth;
n++)
396 std::vector<std::string> vTags;
406 for (
size_t n = 0;
n < vTags.size();
n++)
410 queryParentId.setValue(nodeId);
436 std::cout << tag << std::endl;
438 std::vector<size_t> vObjs;
443 for (
size_t i = 0;
i < vObjs.size();
i++)
455 std::vector<size_t> vObjs;
459 for (
size_t i = 0;
i < vObjs.size();
i++)
471 printf(
"DEBUG readDM4: Reading DM4 file\n");
481 xmippFREAD(&dummy,
sizeof(
long), 1, fimg, isLE);
503 int nodeID = 0, parentID = 0;
506 readTagDM4(fimg, header, parentID, nodeID, isLE, swap);
520 std::vector<DM4dataHead> dataHeaders;
523 std::vector<double> vValue;
529 std::vector<size_t> objIdsDataType;
532 for (
size_t objId : objIdsDataType)
541 dataHeaders.push_back(dhRef);
549 dataHeaders[header->
nIm].dataType = (
short int) iValue;
552 dataHeaders[header->
nIm].headerSize = (size_t) vValue[0];
564 dataHeaders[header->
nIm].imageWidth = (int) vValue[0];
570 dataHeaders[header->
nIm].imageHeight = (int) vValue[0];
578 dataHeaders[header->
nIm].imageDepth = (int) vValue[0];
580 dataHeaders[header->
nIm].imageDepth = 1;
586 dataHeaders[header->
nIm].dataTypeSize = (
short int) vValue[0];
589 id =
gotoTagDM4(header->
tags, nodeID,
"ImageTags,Acquisition,Frame,CCD,Pixel Size (um)");
594 dataHeaders[header->
nIm].pixelHeight = vValue[0]*1e4;
595 dataHeaders[header->
nIm].pixelWidth = vValue[1]*1e4;
604 if (dataHeaders.size() == 0)
607 int _xDim,_yDim, _zDim;
609 _xDim = dataHeaders[0].imageWidth;
610 _yDim = dataHeaders[0].imageHeight;
612 _nDim = dataHeaders[0].imageDepth;
616 if (select_img > _nDim)
637 setDimensions(_xDim, _yDim, _zDim, _nDim);
640 size_t imgEnd = (select_img !=
ALL_IMAGES) ? imgStart + 1 : _nDim;
655 for (
size_t i = 0;
i < imgEnd-imgStart;
i++)
657 offset = dataHeaders[0].headerSize;
660 if( dataMode <
DATA )
666 MDMainHeader.write(std::cerr);
671 readData(fimg, select_img, datatype, pad);
void addAndQuery(MDQuery &query)
bool IsLittleEndian(void)
#define REPORT_ERROR(nerr, ErrormMsg)
Couldn't write to file.
Cannot read image from file.
ql0001_ & k(htemp+1),(cvec+1),(atemp+1),(bj+1),(bl+1),(bu+1),(x+1),(clamda+1), &iout, infoqp, &zero,(w+1), &lenw,(iw+1), &leniw, &glob_grd.epsmac
int parentDM4(MetaData &MD, int nodeId, int depth=1)
int splitString(const String &input, const String &delimiter, StringVector &results, bool includeEmpties)
Incorrect argument received.
Couldn't read from file.
static MDRowVec emptyHeaderVec()
double readTagDM4(FILE *fimg, DM4head *header, int parentId, int &nodeId, bool isLE, bool swap)
void printDM4node(const MetaData &MD, size_t id)
size_t xmippFREAD(void *dest, size_t size, size_t nitems, FILE *&fp, bool reverse)
double CalibrationOffsetX
int readDM4(size_t img_select, bool isStack=false)
void printDM4(const MetaData &MD)
String formatString(const char *format,...)
void FREADTagValueDM4(double *fieldValue, int numberType, int n, FILE *fimg, bool swap)
#define IMG_INDEX(select_img)
size_t gotoTagDM4(MetaData &MD, int &nodeId, const std::string &tagsList)
DataType datatypeDM4(int nType)
int writeDM4(size_t img_select, bool isStack=false, int mode=WRITE_OVERWRITE)
double CalibrationOffsetY
size_t gettypesize(DataType type)
Returns memory size of datatype.