From 081f2c9ffd1bbbd8fc50efef8576f6df8fc1176f Mon Sep 17 00:00:00 2001 From: heziqi Date: Wed, 26 Nov 2014 07:36:23 +0800 Subject: [PATCH] made bip bil files workable in function band & band_index in envi class --- envi/envi.h | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/envi/envi.h b/envi/envi.h index d7a1f37..eb4a468 100644 --- a/envi/envi.h +++ b/envi/envi.h @@ -574,16 +574,66 @@ public: if(header.interleave == envi_header::BSQ){ //if the infile is bsq file if(header.data_type ==envi_header::float32) return ((bsq*)file)->band((float*)ptr, wavelength); - + else if (header.data_type == envi_header::float64) + return ((bsq*)file)->band((double*)ptr, wavelength); + else{ + std::cout << "ERROR: unidentified data type" << std::endl; + exit(1); + } + } + else if (header.interleave == envi_header::BIL){ + if (header.data_type == envi_header::float32) + return ((bil*)file)->band((float*)ptr, wavelength); + else if (header.data_type == envi_header::float64) + return ((bil*)file)->band((double*)ptr, wavelength); + else{ + std::cout << "ERROR: unidentified data type" << std::endl; + exit(1); + } + } + else if (header.interleave == envi_header::BIP){ + if (header.data_type == envi_header::float32) + return ((bip*)file)->band((float*)ptr, wavelength); + else if (header.data_type == envi_header::float64) + return ((bip*)file)->band((double*)ptr, wavelength); + else{ + std::cout << "ERROR: unidentified data type" << std::endl; + exit(1); + } } return false; } bool band_index(void* ptr, unsigned int b){ - if(header.interleave == envi_header::BSQ){ //if the infile is bsq file - if(header.data_type ==envi_header::float32) + if (header.interleave == envi_header::BSQ){ //if the infile is bsq file + if (header.data_type == envi_header::float32) return ((bsq*)file)->band_index((float*)ptr, b); - + else if (header.data_type == envi_header::float64) + return ((bsq*)file)->band_index((double*)ptr, b); + else{ + std::cout << "ERROR: unidentified data type" << std::endl; + exit(1); + } + } + else if (header.interleave == envi_header::BIL){ + if (header.data_type == envi_header::float32) + return ((bil*)file)->band_index((float*)ptr, b); + else if (header.data_type == envi_header::float64) + return ((bil*)file)->band_index((double*)ptr, b); + else{ + std::cout << "ERROR: unidentified data type" << std::endl; + exit(1); + } + } + else if (header.interleave == envi_header::BIP){ + if (header.data_type == envi_header::float32) + return ((bip*)file)->band_index((float*)ptr, b); + else if (header.data_type == envi_header::float64) + return ((bip*)file)->band_index((double*)ptr, b); + else{ + std::cout << "ERROR: unidentified data type" << std::endl; + exit(1); + } } return false; } -- libgit2 0.21.4