diff options
Diffstat (limited to 'tools/h52jpeg/h52jpegtst.c')
-rw-r--r-- | tools/h52jpeg/h52jpegtst.c | 176 |
1 files changed, 159 insertions, 17 deletions
diff --git a/tools/h52jpeg/h52jpegtst.c b/tools/h52jpeg/h52jpegtst.c index 3a4b277..b420168 100644 --- a/tools/h52jpeg/h52jpegtst.c +++ b/tools/h52jpeg/h52jpegtst.c @@ -15,6 +15,7 @@ #include "hdf5.h" #include "hdf5_hl.h" +#include "H5private.h" #include <stdlib.h> #include <string.h> @@ -24,23 +25,72 @@ #define IMAGE2_NAME "image24bitpixel" #define PAL_NAME "palette" #define PAL_ENTRIES 256 +#define RANK 2 +#define HEIGHT 200 +#define WIDTH 300 -static int read_data(const char* file_name, hsize_t *width, hsize_t *height ); + +static int make_datasets( hid_t fid ); +static int make_images( hid_t fid ); +static int read_data(const char* file_name, hsize_t *width, hsize_t *height ); unsigned char *gbuf = 0; /* global buffer for image data */ + +/*------------------------------------------------------------------------- + * Function: main + * + * Purpose: h52jpegtst main program. Generate images and datasets to be used + * by h52jpeg tests + * + * Programmer: Pedro Vicente, pvn@hdfgroup.org + * + * Date: May 30, 2008 + * + *------------------------------------------------------------------------- + */ int main( void ) { - hid_t fid; /* HDF5 file identifier */ + hid_t fid; /* HDF5 file identifier */ + + /* create a new HDF5 file using default properties. */ + if (( fid = H5Fcreate( "h52jpegtst.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT )) < 0 ) + return 1; + + /* make images */ + if ( make_images( fid ) < 0 ) + goto out; + + /* make images */ + if ( make_datasets( fid ) < 0 ) + goto out; + + /* close the file. */ + H5Fclose( fid ); + + return 0; + +out: + printf("Error on return function...Exiting\n"); + H5Fclose( fid ); + return 1; +} + +/*------------------------------------------------------------------------- + * Function: make_images + * + * Purpose: generate images + * + *------------------------------------------------------------------------- + */ + +static int make_images( hid_t fid ) +{ hsize_t width; /* width of image */ hsize_t height; /* height of image */ unsigned char pal[ PAL_ENTRIES * 3 ]; /* palette array */ hsize_t pal_dims[2] = {PAL_ENTRIES,3}; /* palette dimensions */ int i, n; - /* create a new HDF5 file using default properties. */ - if (( fid = H5Fcreate( "h52jpegtst.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT )) < 0 ) - return 1; - /* read first data file */ if ( read_data( DATA_FILE1, &width, &height ) < 0 ) goto out; @@ -50,9 +100,9 @@ int main( void ) goto out; /*------------------------------------------------------------------------- - * define a palette, blue to red tones - *------------------------------------------------------------------------- - */ + * define a palette, blue to red tones + *------------------------------------------------------------------------- + */ for ( i=0, n=0; i<PAL_ENTRIES*3; i+=3, n++) { pal[i] =n; /* red */ @@ -69,9 +119,9 @@ int main( void ) goto out; /*------------------------------------------------------------------------- - * true color image example with pixel interlace in RGB type - *------------------------------------------------------------------------- - */ + * true color image example with pixel interlace in RGB type + *------------------------------------------------------------------------- + */ /* read second data file */ if ( read_data( DATA_FILE2, &width, &height ) < 0 ) @@ -80,16 +130,108 @@ int main( void ) /* make dataset */ if ( H5IMmake_image_24bit( fid, IMAGE2_NAME, width, height, "INTERLACE_PIXEL", gbuf ) < 0 ) goto out; + + return 0; - /* close the file. */ - H5Fclose( fid ); +out: + printf("Error on return function...Exiting\n"); + return -1; +} + + + + + +/*------------------------------------------------------------------------- + * Function: make_datasets + * + * Purpose: generate datasets + * + *------------------------------------------------------------------------- + */ +static int make_datasets( hid_t fid ) +{ + hsize_t width; /* width of image */ + hsize_t height; /* height of image */ + hid_t sid; + hid_t did; + hsize_t dims[2]; + unsigned char *buf; + hsize_t i; + + /* read a data file with 8bit data */ + if ( read_data( DATA_FILE1, &width, &height ) < 0 ) + goto out; + + dims[0] = height; + dims[1] = width; + + if ((sid = H5Screate_simple(RANK, dims, NULL)) < 0) + { + goto out; + } + + /*------------------------------------------------------------------------- + * H5T_NATIVE_SHORT + *------------------------------------------------------------------------- + */ + if (NULL == (buf = HDmalloc( (size_t)width * (size_t)height * sizeof(short) ))) + goto out; + + for ( i = 0; i < height * width; i++) + { + buf[i] = gbuf[i]; + } + + if ((did = H5Dcreate2(fid, "short", H5T_NATIVE_SHORT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) + goto out; + if (H5Dwrite(did, H5T_NATIVE_SHORT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) + goto out; + if (H5Dclose(did)< 0) + goto out; + + free( buf ); + + /*------------------------------------------------------------------------- + * H5T_NATIVE_INT + *------------------------------------------------------------------------- + */ + if (NULL == (buf = HDmalloc( (size_t)width * (size_t)height * sizeof(int) ))) + goto out; + + for ( i = 0; i < height * width; i++) + { + buf[i] = gbuf[i]; + } + + if ((did = H5Dcreate2(fid, "int", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) + goto out; + if (H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) + goto out; + if (H5Dclose(did)< 0) + goto out; + + free( buf ); + + + + + /* close */ + H5Sclose(sid); return 0; out: - printf("Error on return function...Exiting\n"); - H5Fclose( fid ); - return 1; + H5E_BEGIN_TRY + { + + H5Sclose(sid); + H5Dclose(did); + + } H5E_END_TRY; + + return -1; + } |