# HG changeset patch # User Eleni Maria Stea # Date 1389995156 -7200 # Node ID 92c163c939be9a4133a32a6ba11dcd1b1d2fa1a8 # Parent 1fbbe10c8e087f942eb151f00b84b2d5dcd50b99 Volume::load diff -r 1fbbe10c8e08 -r 92c163c939be data/test1.vol --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data/test1.vol Fri Jan 17 23:45:56 2014 +0200 @@ -0,0 +1,19 @@ +VOLUME +zaspect = 1 + +SLICES +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0001.png +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0003.png +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0004.png +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0005.png +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0006.png +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0007.png +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0008.png +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0009.png +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0010.png +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0011.png +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0012.png +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0013.png +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0014.png +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0015.png +/home/eleni/code/med/test1/data/la_colonoscopie/IM-0001-0016.png diff -r 1fbbe10c8e08 -r 92c163c939be src/volume.cc --- a/src/volume.cc Sat Jan 11 23:49:58 2014 +0200 +++ b/src/volume.cc Fri Jan 17 23:45:56 2014 +0200 @@ -1,14 +1,70 @@ +#include +#include #include +#include + +#include +#include #include "volume.h" +static char *strip_whitespaces(char *buf); + Volume::Volume() { width = height = 0; + zaspect = 1; } bool Volume::load_volume(const char *fname) { + FILE *fp = fopen(fname, "r"); + if(!fp) { + fprintf(stderr, "Failed to open file: %s: %s\n", fname, strerror(errno)); + return false; + } + + char buf[512]; + if(!fgets(buf, sizeof buf, fp)) { + fprintf(stderr, "Empty file: %s.\n", fname); + return false; + } + if(strstr(buf, "VOLUME") != buf) { + fprintf(stderr, "Invalid volume file format: %s\n", fname); + return false; + } + + bool reading_slices = false; + std::vector img_fnames; + + while(fgets(buf, sizeof buf, fp)) { + char *line = strip_whitespaces(buf); + if(!line || *line == 0 || *line == '#') + continue; + + if(reading_slices == false) { + if(strcmp(line, "SLICES") == 0) + reading_slices = true; + + sscanf(line, "zaspect = %f", &zaspect); + } + else { + img_fnames.push_back(line); + } + } + + fclose(fp); + + for(size_t i=0; i buf && isspace(*end)) + end--; + end[1] = 0; + return buf; +} diff -r 1fbbe10c8e08 -r 92c163c939be src/volume.h --- a/src/volume.h Sat Jan 11 23:49:58 2014 +0200 +++ b/src/volume.h Fri Jan 17 23:45:56 2014 +0200 @@ -9,6 +9,7 @@ std::vector slices; int width; int height; + float zaspect; public: Volume();