/*! * Reads meta data of VTU file (grid size, data fields, codex, position of data within file). * Calls setDimension. */ void VTKUnstructuredGrid::readMetaData( ){ std::fstream str; std::string line, temp; std::fstream::pos_type position; str.open( fh.getPath( ), std::ios::in ) ; getline( str, line); while( ! bitpit::utils::keywordInString( line, "<VTKFile")){ getline(str, line); }; if( bitpit::utils::getAfterKeyword( line, "header_type", '\"', temp) ){ setHeaderType( temp) ; }; while( ! bitpit::utils::keywordInString( line, "<Piece")){ getline(str, line); }; bitpit::utils::getAfterKeyword( line, "NumberOfPoints", '\"', temp) ; bitpit::utils::convertString( temp, nr_points ); bitpit::utils::getAfterKeyword( line, "NumberOfCells", '\"', temp) ; bitpit::utils::convertString( temp, nr_cells ); position = str.tellg() ; readDataHeader( str ) ; for( auto &field : geometry ){ str.seekg( position) ; if( ! readDataArray( str, *field ) ) { std::cout << field->getName() << " DataArray not found" << std::endl ; }; }; str.close() ; if( homogeneousType == VTKElementType::UNDEFINED) { setDimensions( nr_cells, nr_points, calcSizeConnectivity() ) ; } else { setDimensions( nr_cells, nr_points ) ; }; return ; };
/*! * Reads meta data of VTR file (grid size, data fields, codex, position of data within file). * Calls setDimension. */ void VTKRectilinearGrid::readMetaData( ){ std::fstream str; std::string line, temp; std::fstream::pos_type position; std::array<int,6> extensions ; str.open( fh.getPath( ), std::ios::in ) ; getline( str, line); while( ! bitpit::utils::keywordInString( line, "<VTKFile")){ getline(str, line); }; if( bitpit::utils::getAfterKeyword( line, "header_type", '\"', temp) ){ setHeaderType( temp) ; }; while( ! bitpit::utils::keywordInString( line, "<Piece")){ getline(str, line); }; bitpit::utils::getAfterKeyword( line, "Extent", '\"', temp) ; bitpit::utils::convertString( temp, extensions ); local_index[0][0] = extensions[0] ; local_index[0][1] = extensions[1] ; local_index[1][0] = extensions[2] ; local_index[1][1] = extensions[3] ; local_index[2][0] = extensions[4] ; local_index[2][1] = extensions[5] ; position = str.tellg() ; readDataHeader( str ) ; for( auto &field : geometry ){ //int i=0; i<geometry.size(); ++i){ str.seekg( position) ; if( ! readDataArray( str, *field ) ) { std::cout << field->getName() << " DataArray not found" << std::endl ; }; }; setDimensions( local_index[0][0], local_index[0][1], local_index[1][0], local_index[1][1], local_index[2][0], local_index[2][1] ) ; str.close() ; return ; };
IMAGE* readRGB(char *fileName, bool printInfo) { if(printInfo) printf("Reading File...\n"); FileHeader fileHeader; BMPHeader bmpHeader; FILE *fhandle = fopen(fileName,"rb"); readFileHeader(fhandle, &fileHeader, printInfo); readDataHeader(fhandle, &bmpHeader, printInfo); IMAGE *image = readRaster(fhandle, &fileHeader, &bmpHeader, printInfo); fclose(fhandle); return image; }
IMAGE* readGrey(char *fileName, bool printInfo) { if(printInfo) printf("Reading File...\n"); FileHeader fileHeader; BMPHeader bmpHeader; FILE *fhandle = fopen(fileName,"rb"); readFileHeader(fhandle, &fileHeader, printInfo); readDataHeader(fhandle, &bmpHeader, printInfo); IMAGE *image; if(bmpHeader.bitCount == 8) image = readRaster(fhandle, &fileHeader, &bmpHeader, printInfo); else image = readLuminance(fhandle, &fileHeader, &bmpHeader, printInfo); fclose(fhandle); return image; }
PUBLIC int list(char *filename) { FILE *fp; // Open wav file if ((fp = fopen(filename, "rb")) == NULL ) { printf("Error: Unable to open file %s\n", filename); return EXIT_FAILURE; } RIFFHEADER *riff_header; FMTHEADER *fmt_header; DATAHEADER *data_header; /** * Read headers */ if(readRiffHeader(fp, &riff_header) == EXIT_FAILURE) { return EXIT_FAILURE; } if(readFmtHeader(fp, &fmt_header) == EXIT_FAILURE) { return EXIT_FAILURE; } if(readDataHeader(fp, &data_header) == EXIT_FAILURE) { return EXIT_FAILURE; } printf("\nFile: %s\n", filename); printf("--------------------\n"); printf("RIFF_CHUNK_HEADER\n"); printf("=================\n"); printf("chunkID: %.*s\n", sizeof(riff_header->id), riff_header->id); printf("chunkSize: %d\n", riff_header->size); printf("format: %.*s\n", sizeof(riff_header->format), riff_header->format); printf("\n"); printf("FMT_SUBCHUNK_HEADER\n"); printf("===================\n"); printf("subChunk1ID: %.*s\n", sizeof(fmt_header->id), fmt_header->id); printf("subChunk1Size: %d\n", fmt_header->size); printf("audioFormat: %hu\n", fmt_header->audioFormat); printf("numChannels: %hu\n", fmt_header->numChannels); printf("sampleRate: %d\n", fmt_header->sampleRate); printf("byteRate: %d\n", fmt_header->byteRate); printf("blockAlign: %hu\n", fmt_header->blockAlign); printf("bitsPerSample: %hu\n", fmt_header->bitsPerSample); printf("\n"); printf("DATA_SUBCHUNK_HEADER\n"); printf("====================\n"); printf("subChunk2ID: %.*s\n", sizeof(data_header->id), data_header->id); printf("subChunk2Size: %d\n\n", data_header->size); /** * Free resources */ free(riff_header); free(fmt_header); free(data_header); fclose(fp); return EXIT_SUCCESS; }