summaryrefslogtreecommitdiffstats
path: root/hl/src/H5IM.c
diff options
context:
space:
mode:
authorPedro Vicente Nunes <pvn@hdfgroup.org>2009-04-09 20:04:03 (GMT)
committerPedro Vicente Nunes <pvn@hdfgroup.org>2009-04-09 20:04:03 (GMT)
commit1dffdaa262aae487df0e9103466c14eafd882559 (patch)
treee1a11928dfe140d4b6f72da481b09164f3a3c52f /hl/src/H5IM.c
parent3fb6b6d6faee14846100214e6d4ac62efb0441f0 (diff)
downloadhdf5-1dffdaa262aae487df0e9103466c14eafd882559.zip
hdf5-1dffdaa262aae487df0e9103466c14eafd882559.tar.gz
hdf5-1dffdaa262aae487df0e9103466c14eafd882559.tar.bz2
[svn-r16720] merge 16719
clean warnings linux tested linux
Diffstat (limited to 'hl/src/H5IM.c')
-rw-r--r--hl/src/H5IM.c1817
1 files changed, 911 insertions, 906 deletions
diff --git a/hl/src/H5IM.c b/hl/src/H5IM.c
index 479b572..361a65b 100644
--- a/hl/src/H5IM.c
+++ b/hl/src/H5IM.c
@@ -1,17 +1,17 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+* Copyright by The HDF Group. *
+* Copyright by the Board of Trustees of the University of Illinois. *
+* All rights reserved. *
+* *
+* This file is part of HDF5. The full HDF5 copyright notice, including *
+* terms governing use, modification, and redistribution, is contained in *
+* the files COPYING and Copyright.html. COPYING can be found at the root *
+* of the source code distribution tree; Copyright.html can be found at the *
+* root level of an installed copy of the electronic HDF5 document set and *
+* is linked from the top-level documents page. It can also be found at *
+* http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+* access to either file, you may request a copy from help@hdfgroup.org. *
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "H5IMprivate.h"
#include "H5LTprivate.h"
@@ -19,155 +19,156 @@
#include <stdlib.h>
/*-------------------------------------------------------------------------
- * Function: H5IMmake_image_8bit
- *
- * Purpose: Creates and writes an image an 8 bit image
- *
- * Return: Success: 0, Failure: -1
- *
- * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
- *
- * Date: June 13, 2001
- *
- * Comments:
- * based on HDF5 Image and Palette Specification
- * http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
+* Function: H5IMmake_image_8bit
+*
+* Purpose: Creates and writes an image an 8 bit image
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+*
+* Date: June 13, 2001
+*
+* Comments:
+* based on HDF5 Image and Palette Specification
+* http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
+*
+* Modifications:
+*
+*-------------------------------------------------------------------------
+*/
herr_t H5IMmake_image_8bit( hid_t loc_id,
- const char *dset_name,
- hsize_t width,
- hsize_t height,
- const unsigned char *buffer )
+ const char *dset_name,
+ hsize_t width,
+ hsize_t height,
+ const unsigned char *buf )
{
- hsize_t dims[IMAGE8_RANK];
+ hsize_t dims[IMAGE8_RANK];
- /* Initialize the image dimensions */
- dims[0] = height;
- dims[1] = width;
+ /* Initialize the image dimensions */
+ dims[0] = height;
+ dims[1] = width;
- /* Make the dataset */
- if ( H5LTmake_dataset( loc_id, dset_name, IMAGE8_RANK, dims, H5T_NATIVE_UCHAR, buffer ) < 0)
- return -1;
+ /* Make the dataset */
+ if ( H5LTmake_dataset( loc_id, dset_name, IMAGE8_RANK, dims, H5T_NATIVE_UCHAR, buf ) < 0)
+ return -1;
- /* Attach the CLASS attribute */
- if ( H5LTset_attribute_string( loc_id, dset_name, "CLASS", IMAGE_CLASS ) < 0)
- return -1;
+ /* Attach the CLASS attribute */
+ if ( H5LTset_attribute_string( loc_id, dset_name, "CLASS", IMAGE_CLASS ) < 0)
+ return -1;
- /* Attach the VERSION attribute */
- if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_VERSION", IMAGE_VERSION ) < 0)
- return -1;
+ /* Attach the VERSION attribute */
+ if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_VERSION", IMAGE_VERSION ) < 0)
+ return -1;
- /* Attach the IMAGE_SUBCLASS attribute */
- if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_SUBCLASS", "IMAGE_INDEXED" ) < 0)
- return -1;
+ /* Attach the IMAGE_SUBCLASS attribute */
+ if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_SUBCLASS", "IMAGE_INDEXED" ) < 0)
+ return -1;
- return 0;
+ return 0;
}
/*-------------------------------------------------------------------------
- * Function: H5IMmake_image_24bit
- *
- * Purpose:
- *
- * Return: Success: 0, Failure: -1
- *
- * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
- *
- * Date: June 13, 2001
- *
- * Comments:
- * based on HDF5 Image and Palette Specification
- * http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
- *
- * Interlace Mode Dimensions in the Dataspace
- * INTERLACE_PIXEL [height][width][pixel components]
- * INTERLACE_PLANE [pixel components][height][width]
- *
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
+* Function: H5IMmake_image_24bit
+*
+* Purpose:
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+*
+* Date: June 13, 2001
+*
+* Comments:
+* based on HDF5 Image and Palette Specification
+* http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
+*
+* Interlace Mode Dimensions in the Dataspace
+* INTERLACE_PIXEL [height][width][pixel components]
+* INTERLACE_PLANE [pixel components][height][width]
+*
+*
+* Modifications:
+*
+*-------------------------------------------------------------------------
+*/
herr_t H5IMmake_image_24bit( hid_t loc_id,
- const char *dset_name,
- hsize_t width,
- hsize_t height,
- const char *interlace,
- const unsigned char *buffer )
+ const char *dset_name,
+ hsize_t width,
+ hsize_t height,
+ const char *interlace,
+ const unsigned char *buf )
{
- hsize_t dims[IMAGE24_RANK];
-
- /* Initialize the image dimensions */
-
- if ( strcmp( interlace, "INTERLACE_PIXEL" ) == 0 )
- {
- /* Number of color planes is defined as the third dimension */
- dims[0] = height;
- dims[1] = width;
- dims[2] = IMAGE24_RANK;
- }
- else
- if ( strcmp( interlace, "INTERLACE_PLANE" ) == 0 )
- {
- /* Number of color planes is defined as the first dimension */
- dims[0] = IMAGE24_RANK;
- dims[1] = height;
- dims[2] = width;
- }
- else return -1;
-
- /* Make the dataset */
- if ( H5LTmake_dataset( loc_id, dset_name, IMAGE24_RANK, dims, H5T_NATIVE_UCHAR, buffer ) < 0)
- return -1;
-
- /* Attach the CLASS attribute */
- if ( H5LTset_attribute_string( loc_id, dset_name, "CLASS", IMAGE_CLASS ) < 0)
- return -1;
-
- /* Attach the VERSION attribute */
- if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_VERSION", IMAGE_VERSION ) < 0)
- return -1;
-
- /* Attach the IMAGE_SUBCLASS attribute */
- if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_SUBCLASS", "IMAGE_TRUECOLOR" ) < 0)
- return -1;
-
- /* Attach the INTERLACE_MODE attribute. This attributes is only for true color images */
- if ( H5LTset_attribute_string( loc_id, dset_name, "INTERLACE_MODE", interlace ) < 0)
- return -1;
-
- return 0;
+ hsize_t dims[IMAGE24_RANK];
+
+ /* Initialize the image dimensions */
+
+ if ( strcmp( interlace, "INTERLACE_PIXEL" ) == 0 )
+ {
+ /* Number of color planes is defined as the third dimension */
+ dims[0] = height;
+ dims[1] = width;
+ dims[2] = IMAGE24_RANK;
+ }
+ else
+ if ( strcmp( interlace, "INTERLACE_PLANE" ) == 0 )
+ {
+ /* Number of color planes is defined as the first dimension */
+ dims[0] = IMAGE24_RANK;
+ dims[1] = height;
+ dims[2] = width;
+ }
+ else return -1;
+
+ /* Make the dataset */
+ if ( H5LTmake_dataset( loc_id, dset_name, IMAGE24_RANK, dims, H5T_NATIVE_UCHAR, buf ) < 0)
+ return -1;
+
+ /* Attach the CLASS attribute */
+ if ( H5LTset_attribute_string( loc_id, dset_name, "CLASS", IMAGE_CLASS ) < 0)
+ return -1;
+
+ /* Attach the VERSION attribute */
+ if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_VERSION", IMAGE_VERSION ) < 0)
+ return -1;
+
+ /* Attach the IMAGE_SUBCLASS attribute */
+ if ( H5LTset_attribute_string( loc_id, dset_name, "IMAGE_SUBCLASS", "IMAGE_TRUECOLOR" ) < 0)
+ return -1;
+
+ /* Attach the INTERLACE_MODE attribute. This attributes is only for true color images */
+ if ( H5LTset_attribute_string( loc_id, dset_name, "INTERLACE_MODE", interlace ) < 0)
+ return -1;
+
+ return 0;
}
/*-------------------------------------------------------------------------
- * Function: find_palette
- *
- * Purpose: operator function used by H5LT_find_palette
- *
- * Return:
- *
- * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
- *
- * Date: May 28, 2001
- *
- * Comments:
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-find_palette(hid_t loc_id, const char *name, const H5A_info_t *ainfo,
- void *op_data)
+* Function: find_palette
+*
+* Purpose: operator function used by H5LT_find_palette
+*
+* Return:
+*
+* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+*
+* Date: May 28, 2001
+*
+* Comments:
+*
+* Modifications:
+*
+*-------------------------------------------------------------------------
+*/
+static herr_t find_palette(hid_t loc_id,
+ const char *name,
+ const H5A_info_t *ainfo,
+ void *op_data)
{
int ret = H5_ITER_CONT;
@@ -175,9 +176,9 @@ find_palette(hid_t loc_id, const char *name, const H5A_info_t *ainfo,
loc_id = loc_id; ainfo = ainfo; op_data = op_data;
/* Define a positive value for return value if the attribute was found. This will
- * cause the iterator to immediately return that positive value,
- * indicating short-circuit success
- */
+ * cause the iterator to immediately return that positive value,
+ * indicating short-circuit success
+ */
if(strcmp(name, "PALETTE") == 0)
ret = H5_ITER_STOP;
@@ -186,23 +187,23 @@ find_palette(hid_t loc_id, const char *name, const H5A_info_t *ainfo,
/*-------------------------------------------------------------------------
- * Function: H5IM_find_palette
- *
- * Purpose: Private function. Find the attribute "PALETTE" in the image dataset
- *
- * Return: Success: 1, Failure: 0
- *
- * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
- *
- * Date: May 11, 2001
- *
- * Comments:
- * The function uses H5Aiterate2 with the operator function find_palette
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
+* Function: H5IM_find_palette
+*
+* Purpose: Private function. Find the attribute "PALETTE" in the image dataset
+*
+* Return: Success: 1, Failure: 0
+*
+* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+*
+* Date: May 11, 2001
+*
+* Comments:
+* The function uses H5Aiterate2 with the operator function find_palette
+*
+* Modifications:
+*
+*-------------------------------------------------------------------------
+*/
herr_t H5IM_find_palette( hid_t loc_id )
{
@@ -211,1007 +212,1011 @@ herr_t H5IM_find_palette( hid_t loc_id )
/*-------------------------------------------------------------------------
- * Function: H5IMget_image_info
- *
- * Purpose: Gets information about an image dataset (dimensions, interlace mode
- * and number of associated palettes).
- *
- * Return: Success: 0, Failure: -1
- *
- * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
- *
- * Date: July 25, 2001
- *
- * Comments:
- * based on HDF5 Image and Palette Specification
- * http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
+* Function: H5IMget_image_info
+*
+* Purpose: Gets information about an image dataset (dimensions, interlace mode
+* and number of associated palettes).
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+*
+* Date: July 25, 2001
+*
+* Comments:
+* based on HDF5 Image and Palette Specification
+* http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
+*
+* Modifications:
+*
+*-------------------------------------------------------------------------
+*/
herr_t H5IMget_image_info( hid_t loc_id,
- const char *dset_name,
- hsize_t *width,
- hsize_t *height,
- hsize_t *planes,
- char *interlace,
- hssize_t *npals )
+ const char *dset_name,
+ hsize_t *width,
+ hsize_t *height,
+ hsize_t *planes,
+ char *interlace,
+ hssize_t *npals )
{
- hid_t did, sid;
- hsize_t dims[IMAGE24_RANK];
- hid_t attr_id;
- hid_t attr_type;
- int has_attr;
- hid_t attr_space_id;
- hid_t attr_class;
- int has_pal;
+ hid_t did;
+ hid_t sid;
+ hsize_t dims[IMAGE24_RANK];
+ hid_t aid;
+ hid_t asid;
+ hid_t atid;
+ H5T_class_t aclass;
+ int has_pal;
+ int has_attr;
- /*assume initially we have no palettes attached*/
- *npals = 0;
+ /*assume initially we have no palettes attached*/
+ *npals = 0;
- /* Open the dataset. */
- if((did = H5Dopen2(loc_id, dset_name, H5P_DEFAULT)) < 0)
- return -1;
+ /* Open the dataset. */
+ if((did = H5Dopen2(loc_id, dset_name, H5P_DEFAULT)) < 0)
+ return -1;
- /* Try to find the attribute "INTERLACE_MODE" on the >>image<< dataset */
- has_attr = H5LT_find_attribute(did, "INTERLACE_MODE");
+ /* Try to find the attribute "INTERLACE_MODE" on the >>image<< dataset */
+ has_attr = H5LT_find_attribute(did, "INTERLACE_MODE");
- /* It exists, get it */
- if(has_attr == 1)
- {
+ /* It exists, get it */
+ if(has_attr == 1)
+ {
- if((attr_id = H5Aopen(did, "INTERLACE_MODE", H5P_DEFAULT)) < 0)
- goto out;
+ if((aid = H5Aopen(did, "INTERLACE_MODE", H5P_DEFAULT)) < 0)
+ goto out;
- if((attr_type = H5Aget_type(attr_id)) < 0)
- goto out;
+ if((atid = H5Aget_type(aid)) < 0)
+ goto out;
- if(H5Aread(attr_id, attr_type, interlace) < 0)
- goto out;
+ if(H5Aread(aid, atid, interlace) < 0)
+ goto out;
- if(H5Tclose(attr_type) < 0)
- goto out;
+ if(H5Tclose(atid) < 0)
+ goto out;
- if(H5Aclose(attr_id) < 0)
- goto out;
- }
+ if(H5Aclose(aid) < 0)
+ goto out;
+ }
- /* Get the dataspace handle */
- if ( (sid = H5Dget_space( did )) < 0)
- goto out;
+ /* Get the dataspace handle */
+ if ( (sid = H5Dget_space( did )) < 0)
+ goto out;
- /* Get dimensions */
- if ( H5Sget_simple_extent_dims( sid, dims, NULL) < 0)
- goto out;
+ /* Get dimensions */
+ if ( H5Sget_simple_extent_dims( sid, dims, NULL) < 0)
+ goto out;
- /* Initialize the image dimensions */
+ /* Initialize the image dimensions */
- if ( has_attr == 1 )
- /* This is a 24 bit image */
- {
+ if ( has_attr == 1 )
+ /* This is a 24 bit image */
+ {
- if ( strcmp( interlace, "INTERLACE_PIXEL" ) == 0 )
- {
- /* Number of color planes is defined as the third dimension */
- *height = dims[0];
- *width = dims[1];
- *planes = dims[2];
- }
- else
- if ( strcmp( interlace, "INTERLACE_PLANE" ) == 0 )
- {
- /* Number of color planes is defined as the first dimension */
- *planes = dims[0];
- *height = dims[1];
- *width = dims[2];
- }
- else return -1;
- }
- else
- /* This is a 8 bit image */
- {
- *height = dims[0];
- *width = dims[1];
- *planes = 1;
- }
+ if ( strcmp( interlace, "INTERLACE_PIXEL" ) == 0 )
+ {
+ /* Number of color planes is defined as the third dimension */
+ *height = dims[0];
+ *width = dims[1];
+ *planes = dims[2];
+ }
+ else
+ if ( strcmp( interlace, "INTERLACE_PLANE" ) == 0 )
+ {
+ /* Number of color planes is defined as the first dimension */
+ *planes = dims[0];
+ *height = dims[1];
+ *width = dims[2];
+ }
+ else return -1;
+ }
+ else
+ /* This is a 8 bit image */
+ {
+ *height = dims[0];
+ *width = dims[1];
+ *planes = 1;
+ }
- /* Close */
- if ( H5Sclose( sid ) < 0)
- goto out;
+ /* Close */
+ if ( H5Sclose( sid ) < 0)
+ goto out;
- /* Get number of palettes */
+ /* Get number of palettes */
- /* Try to find the attribute "PALETTE" on the >>image<< dataset */
- has_pal = H5IM_find_palette(did);
+ /* Try to find the attribute "PALETTE" on the >>image<< dataset */
+ has_pal = H5IM_find_palette(did);
- if(has_pal == 1)
- {
+ if(has_pal == 1)
+ {
- if((attr_id = H5Aopen(did, "PALETTE", H5P_DEFAULT)) < 0)
- goto out;
+ if((aid = H5Aopen(did, "PALETTE", H5P_DEFAULT)) < 0)
+ goto out;
- if((attr_type = H5Aget_type(attr_id)) < 0)
- goto out;
+ if((atid = H5Aget_type(aid)) < 0)
+ goto out;
- if((attr_class = H5Tget_class(attr_type)) < 0)
- goto out;
+ if((aclass = H5Tget_class(atid)) < 0)
+ goto out;
- /* Check if it is really a reference */
+ /* Check if it is really a reference */
- if(attr_class == H5T_REFERENCE)
- {
+ if(aclass == H5T_REFERENCE)
+ {
- /* Get the reference(s) */
+ /* Get the reference(s) */
- if ( (attr_space_id = H5Aget_space( attr_id )) < 0)
- goto out;
+ if ( (asid = H5Aget_space( aid )) < 0)
+ goto out;
- *npals = H5Sget_simple_extent_npoints( attr_space_id );
+ *npals = H5Sget_simple_extent_npoints( asid );
- if ( H5Sclose( attr_space_id ) < 0)
- goto out;
+ if ( H5Sclose( asid ) < 0)
+ goto out;
- } /* H5T_REFERENCE */
+ } /* H5T_REFERENCE */
- if ( H5Tclose( attr_type ) < 0)
- goto out;
+ if ( H5Tclose( atid ) < 0)
+ goto out;
- /* Close the attribute. */
- if ( H5Aclose( attr_id ) < 0)
- goto out;
+ /* Close the attribute. */
+ if ( H5Aclose( aid ) < 0)
+ goto out;
- }
+ }
- /* End access to the dataset and release resources used by it. */
- if ( H5Dclose( did ) < 0)
- goto out;
+ /* End access to the dataset and release resources used by it. */
+ if ( H5Dclose( did ) < 0)
+ goto out;
- return 0;
+ return 0;
out:
- H5Dclose( did );
- return -1;
+ H5Dclose( did );
+ H5Aclose( aid );
+ H5Sclose( asid );
+ H5Tclose( atid );
+ return -1;
}
/*-------------------------------------------------------------------------
- * Function: H5IMread_image
- *
- * Purpose: Reads image data from disk.
- *
- * Return: Success: 0, Failure: -1
- *
- * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
- *
- * Date: June 13, 2001
- *
- * Comments:
- * based on HDF5 Image and Palette Specification
- * http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
+* Function: H5IMread_image
+*
+* Purpose: Reads image data from disk.
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+*
+* Date: June 13, 2001
+*
+* Comments:
+* based on HDF5 Image and Palette Specification
+* http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
+*
+* Modifications:
+*
+*-------------------------------------------------------------------------
+*/
herr_t H5IMread_image( hid_t loc_id,
const char *dset_name,
- unsigned char *buffer )
+ unsigned char *buf )
{
- hid_t did;
+ hid_t did;
- /* Open the dataset. */
- if((did = H5Dopen2(loc_id, dset_name, H5P_DEFAULT)) < 0)
- return -1;
+ /* Open the dataset. */
+ if((did = H5Dopen2(loc_id, dset_name, H5P_DEFAULT)) < 0)
+ return -1;
- /* Read */
- if ( H5Dread( did, H5T_NATIVE_UCHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, buffer ) < 0)
- goto out;
+ /* Read */
+ if ( H5Dread( did, H5T_NATIVE_UCHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf ) < 0)
+ goto out;
- /* End access to the dataset and release resources used by it. */
- if ( H5Dclose( did ) )
- return -1;
+ /* End access to the dataset and release resources used by it. */
+ if ( H5Dclose( did ) )
+ return -1;
- return 0;
+ return 0;
out:
- H5Dclose( did );
- return -1;
+ H5Dclose( did );
+ return -1;
}
/*-------------------------------------------------------------------------
- * Function: H5IMmake_palette
- *
- * Purpose: Creates and writes a palette.
- *
- * Return: Success: 0, Failure: -1
- *
- * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
- *
- * Date: May 01, 2001
- *
- * Comments:
- * based on HDF5 Image and Palette Specification
- * http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
+* Function: H5IMmake_palette
+*
+* Purpose: Creates and writes a palette.
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+*
+* Date: May 01, 2001
+*
+* Comments:
+* based on HDF5 Image and Palette Specification
+* http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
+*
+* Modifications:
+*
+*-------------------------------------------------------------------------
+*/
herr_t H5IMmake_palette( hid_t loc_id,
- const char *pal_name,
- const hsize_t *pal_dims,
- const unsigned char *pal_data )
+ const char *pal_name,
+ const hsize_t *pal_dims,
+ const unsigned char *pal_data )
{
- int has_pal;
+ int has_pal;
- /* Check if the dataset already exists */
- has_pal = H5LTfind_dataset( loc_id, pal_name );
+ /* Check if the dataset already exists */
+ has_pal = H5LTfind_dataset( loc_id, pal_name );
- /* It exists. Return */
- if ( has_pal == 1 )
- return 0;
+ /* It exists. Return */
+ if ( has_pal == 1 )
+ return 0;
- /* Make the palette dataset. */
- if ( H5LTmake_dataset( loc_id, pal_name, 2, pal_dims, H5T_NATIVE_UCHAR, pal_data ) < 0 )
- return -1;
+ /* Make the palette dataset. */
+ if ( H5LTmake_dataset( loc_id, pal_name, 2, pal_dims, H5T_NATIVE_UCHAR, pal_data ) < 0 )
+ return -1;
- /* Attach the attribute "CLASS" to the >>palette<< dataset*/
- if ( H5LTset_attribute_string( loc_id, pal_name, "CLASS", PALETTE_CLASS ) < 0)
- return -1;
+ /* Attach the attribute "CLASS" to the >>palette<< dataset*/
+ if ( H5LTset_attribute_string( loc_id, pal_name, "CLASS", PALETTE_CLASS ) < 0)
+ return -1;
- /* Attach the attribute "PAL_VERSION" to the >>palette<< dataset*/
- if ( H5LTset_attribute_string( loc_id, pal_name, "PAL_VERSION", "1.2" ) < 0)
- return -1;
+ /* Attach the attribute "PAL_VERSION" to the >>palette<< dataset*/
+ if ( H5LTset_attribute_string( loc_id, pal_name, "PAL_VERSION", "1.2" ) < 0)
+ return -1;
- return 0;
+ return 0;
}
/*-------------------------------------------------------------------------
- * Function: H5IMlink_palette
- *
- * Purpose: This function attaches a palette to an existing image dataset
- *
- * Return: Success: 0, Failure: -1
- *
- * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
- *
- * Date: May 01, 2001
- *
- * Comments:
- * based on HDF5 Image and Palette Specification
- * http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
- *
- * An image (dataset) within an HDF5 file may optionally specify an array of
- * palettes to be viewed with. The dataset will have an attribute
- * which contains an array of object reference pointers which refer to palettes in the file.
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
+* Function: H5IMlink_palette
+*
+* Purpose: This function attaches a palette to an existing image dataset
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+*
+* Date: May 01, 2001
+*
+* Comments:
+* based on HDF5 Image and Palette Specification
+* http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
+*
+* An image (dataset) within an HDF5 file may optionally specify an array of
+* palettes to be viewed with. The dataset will have an attribute
+* which contains an array of object reference pointers which refer to palettes in the file.
+*
+* Modifications:
+*
+*-------------------------------------------------------------------------
+*/
herr_t H5IMlink_palette( hid_t loc_id,
- const char *image_name,
- const char *pal_name )
+ const char *image_name,
+ const char *pal_name )
{
- hid_t image_id;
- hid_t attr_type=-1;
- hid_t attr_id=-1;
- hid_t attr_space_id=-1;
- hobj_ref_t ref; /* write a new reference */
- hobj_ref_t *refbuf; /* buffer to read references */
- hssize_t n_refs;
- hsize_t dim_ref;
- int ok_pal;
-
- /* The image dataset may or may not have the attribute "PALETTE"
- * First we try to open to see if it is already there; if not, it is created.
- * If it exists, the array of references is extended to hold the reference
- * to the new palette
- */
-
- /* First we get the image id */
- if((image_id = H5Dopen2(loc_id, image_name, H5P_DEFAULT)) < 0)
- return -1;
-
- /* Try to find the attribute "PALETTE" on the >>image<< dataset */
- ok_pal = H5LT_find_attribute( image_id, "PALETTE" );
+ hid_t did;
+ hid_t atid=-1;
+ hid_t aid=-1;
+ hid_t asid=-1;
+ hobj_ref_t ref; /* write a new reference */
+ hobj_ref_t *refbuf; /* buffer to read references */
+ hssize_t n_refs;
+ hsize_t dim_ref;
+ int ok_pal;
+
+ /* The image dataset may or may not have the attribute "PALETTE"
+ * First we try to open to see if it is already there; if not, it is created.
+ * If it exists, the array of references is extended to hold the reference
+ * to the new palette
+ */
+
+ /* First we get the image id */
+ if((did = H5Dopen2(loc_id, image_name, H5P_DEFAULT)) < 0)
+ return -1;
+
+ /* Try to find the attribute "PALETTE" on the >>image<< dataset */
+ ok_pal = H5LT_find_attribute( did, "PALETTE" );
+
+ /*-------------------------------------------------------------------------
+ * It does not exist. We create the attribute and one reference
+ *-------------------------------------------------------------------------
+ */
+ if(ok_pal == 0 )
+ {
+ if((asid = H5Screate(H5S_SCALAR)) < 0)
+ goto out;
-/*-------------------------------------------------------------------------
- * It does not exist. We create the attribute and one reference
- *-------------------------------------------------------------------------
- */
- if(ok_pal == 0 )
- {
- if((attr_space_id = H5Screate(H5S_SCALAR)) < 0)
- goto out;
-
- /* Create the attribute type for the reference */
- if((attr_type = H5Tcopy(H5T_STD_REF_OBJ)) < 0)
- goto out;
-
- /* Create the attribute "PALETTE" to be attached to the image*/
- if((attr_id = H5Acreate2(image_id, "PALETTE", attr_type, attr_space_id, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
-
- /* Create a reference. The reference is created on the local id. */
- if(H5Rcreate(&ref, loc_id, pal_name, H5R_OBJECT, -1) < 0)
- goto out;
-
- /* Write the attribute with the reference */
- if(H5Awrite(attr_id, attr_type, &ref) < 0)
- goto out;
-
- /* close */
- if(H5Sclose(attr_space_id) < 0)
- goto out;
- if ( H5Tclose( attr_type ) < 0)
- goto out;
- if(H5Aclose(attr_id) < 0)
- goto out;
-
- }
+ /* Create the attribute type for the reference */
+ if((atid = H5Tcopy(H5T_STD_REF_OBJ)) < 0)
+ goto out;
-/*-------------------------------------------------------------------------
- * The attribute already exists, open it
- *-------------------------------------------------------------------------
- */
- else if(ok_pal == 1)
- {
- if((attr_id = H5Aopen(image_id, "PALETTE", H5P_DEFAULT)) < 0)
- goto out;
+ /* Create the attribute "PALETTE" to be attached to the image*/
+ if((aid = H5Acreate2(did, "PALETTE", atid, asid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+ goto out;
- if((attr_type = H5Aget_type(attr_id)) < 0)
- goto out;
+ /* Create a reference. The reference is created on the local id. */
+ if(H5Rcreate(&ref, loc_id, pal_name, H5R_OBJECT, -1) < 0)
+ goto out;
- if(H5Tget_class(attr_type) < 0)
- goto out;
+ /* Write the attribute with the reference */
+ if(H5Awrite(aid, atid, &ref) < 0)
+ goto out;
- /* Get and save the old reference(s) */
- if((attr_space_id = H5Aget_space(attr_id)) < 0)
- goto out;
+ /* close */
+ if(H5Sclose(asid) < 0)
+ goto out;
+ if ( H5Tclose( atid ) < 0)
+ goto out;
+ if(H5Aclose(aid) < 0)
+ goto out;
- n_refs = H5Sget_simple_extent_npoints(attr_space_id);
+ }
- dim_ref = n_refs + 1;
+ /*-------------------------------------------------------------------------
+ * The attribute already exists, open it
+ *-------------------------------------------------------------------------
+ */
+ else if(ok_pal == 1)
+ {
+ if((aid = H5Aopen(did, "PALETTE", H5P_DEFAULT)) < 0)
+ goto out;
- refbuf = malloc( sizeof(hobj_ref_t) * (int)dim_ref );
+ if((atid = H5Aget_type(aid)) < 0)
+ goto out;
- if ( H5Aread( attr_id, attr_type, refbuf ) < 0)
- goto out;
+ if(H5Tget_class(atid) < 0)
+ goto out;
- /* The attribute must be deleted, in order to the new one can reflect the changes*/
- if(H5Adelete(image_id, "PALETTE") < 0)
- goto out;
+ /* Get and save the old reference(s) */
+ if((asid = H5Aget_space(aid)) < 0)
+ goto out;
- /* Create a new reference for this palette. */
- if ( H5Rcreate( &ref, loc_id, pal_name, H5R_OBJECT, -1 ) < 0)
- goto out;
+ n_refs = H5Sget_simple_extent_npoints(asid);
- refbuf[n_refs] = ref;
+ dim_ref = n_refs + 1;
- /* Create the data space for the new references */
- if(H5Sclose(attr_space_id) < 0)
- goto out;
+ refbuf = (hobj_ref_t*)malloc( sizeof(hobj_ref_t) * (int)dim_ref );
- if((attr_space_id = H5Screate_simple(1, &dim_ref, NULL)) < 0)
- goto out;
+ if ( H5Aread( aid, atid, refbuf ) < 0)
+ goto out;
- /* Create the attribute again with the changes of space */
- if(H5Aclose(attr_id) < 0)
- goto out;
+ /* The attribute must be deleted, in order to the new one can reflect the changes*/
+ if(H5Adelete(did, "PALETTE") < 0)
+ goto out;
- if((attr_id = H5Acreate2(image_id, "PALETTE", attr_type, attr_space_id, H5P_DEFAULT, H5P_DEFAULT)) < 0)
- goto out;
+ /* Create a new reference for this palette. */
+ if ( H5Rcreate( &ref, loc_id, pal_name, H5R_OBJECT, -1 ) < 0)
+ goto out;
- /* Write the attribute with the new references */
- if(H5Awrite(attr_id, attr_type, refbuf) < 0)
- goto out;
+ refbuf[n_refs] = ref;
- /* close */
- if(H5Sclose(attr_space_id) < 0)
- goto out;
- if(H5Aclose(attr_id) < 0)
- goto out;
+ /* Create the data space for the new references */
+ if(H5Sclose(asid) < 0)
+ goto out;
- free( refbuf );
+ if((asid = H5Screate_simple(1, &dim_ref, NULL)) < 0)
+ goto out;
- } /* ok_pal == 1 */
+ /* Create the attribute again with the changes of space */
+ if(H5Aclose(aid) < 0)
+ goto out;
- /* Close the image dataset. */
- if ( H5Dclose( image_id ) < 0)
- return -1;
+ if((aid = H5Acreate2(did, "PALETTE", atid, asid, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+ goto out;
- return 0;
+ /* Write the attribute with the new references */
+ if(H5Awrite(aid, atid, refbuf) < 0)
+ goto out;
+
+ /* close */
+ if(H5Sclose(asid) < 0)
+ goto out;
+ if(H5Aclose(aid) < 0)
+ goto out;
+
+ free( refbuf );
+
+ } /* ok_pal == 1 */
+
+ /* Close the image dataset. */
+ if ( H5Dclose( did ) < 0)
+ return -1;
+
+ return 0;
out:
- H5Dclose( image_id );
- H5Sclose( attr_space_id );
- H5Tclose( attr_type );
- H5Aclose( attr_id );
- return -1;
+ H5Dclose( did );
+ H5Sclose( asid );
+ H5Tclose( atid );
+ H5Aclose( aid );
+ return -1;
}
/*-------------------------------------------------------------------------
- * Function: H5IMunlink_palette
- *
- * Purpose: This function dettaches a palette from an existing image dataset
- *
- * Return: Success: 0, Failure: -1
- *
- * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
- *
- * Date: September 10, 2001
- *
- * Comments:
- * based on HDF5 Image and Palette Specification
- * http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
+* Function: H5IMunlink_palette
+*
+* Purpose: This function dettaches a palette from an existing image dataset
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+*
+* Date: September 10, 2001
+*
+* Comments:
+* based on HDF5 Image and Palette Specification
+* http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
+*
+* Modifications:
+*
+*-------------------------------------------------------------------------
+*/
herr_t H5IMunlink_palette( hid_t loc_id,
- const char *image_name,
- const char *pal_name )
+ const char *image_name,
+ const char *pal_name )
{
- hid_t image_id;
- hid_t attr_type;
- hid_t attr_id;
- hid_t attr_class;
- int ok_pal, has_pal;
+ hid_t did;
+ hid_t atid;
+ hid_t aid;
+ H5T_class_t aclass;
+ int ok_pal, has_pal;
- /* Try to find the palette dataset */
- has_pal = H5LTfind_dataset( loc_id, pal_name );
+ /* Try to find the palette dataset */
+ has_pal = H5LTfind_dataset( loc_id, pal_name );
- /* It does not exist. Return */
- if ( has_pal == 0 )
- return -1;
+ /* It does not exist. Return */
+ if ( has_pal == 0 )
+ return -1;
- /* The image dataset may or not have the attribute "PALETTE"
- * First we try to open to see if it is already there; if not, it is created.
- * If it exists, the array of references is extended to hold the reference
- * to the new palette
- */
+ /* The image dataset may or not have the attribute "PALETTE"
+ * First we try to open to see if it is already there; if not, it is created.
+ * If it exists, the array of references is extended to hold the reference
+ * to the new palette
+ */
- /* First we get the image id */
- if((image_id = H5Dopen2(loc_id, image_name, H5P_DEFAULT)) < 0)
- return -1;
+ /* First we get the image id */
+ if((did = H5Dopen2(loc_id, image_name, H5P_DEFAULT)) < 0)
+ return -1;
- /* Try to find the attribute "PALETTE" on the >>image<< dataset */
- ok_pal = H5LT_find_attribute(image_id, "PALETTE");
+ /* Try to find the attribute "PALETTE" on the >>image<< dataset */
+ ok_pal = H5LT_find_attribute(did, "PALETTE");
- /* It does not exist. Nothing to do */
- if(ok_pal == 0)
- return -1;
+ /* It does not exist. Nothing to do */
+ if(ok_pal == 0)
+ return -1;
- /* The attribute exists, open it */
- else if(ok_pal == 1)
- {
- if((attr_id = H5Aopen(image_id, "PALETTE", H5P_DEFAULT)) < 0)
- goto out;
+ /* The attribute exists, open it */
+ else if(ok_pal == 1)
+ {
+ if((aid = H5Aopen(did, "PALETTE", H5P_DEFAULT)) < 0)
+ goto out;
- if((attr_type = H5Aget_type(attr_id)) < 0)
- goto out;
+ if((atid = H5Aget_type(aid)) < 0)
+ goto out;
- if((attr_class = H5Tget_class(attr_type)) < 0)
- goto out;
+ if((aclass = H5Tget_class(atid)) < 0)
+ goto out;
- /* Check if it is really a reference */
- if(attr_class == H5T_REFERENCE)
- {
- /* Delete the attribute */
- if(H5Adelete(image_id, "PALETTE") < 0)
- goto out;
+ /* Check if it is really a reference */
+ if(aclass == H5T_REFERENCE)
+ {
+ /* Delete the attribute */
+ if(H5Adelete(did, "PALETTE") < 0)
+ goto out;
- } /* H5T_REFERENCE */
+ } /* H5T_REFERENCE */
- if(H5Tclose(attr_type) < 0)
- goto out;
+ if(H5Tclose(atid) < 0)
+ goto out;
- /* Close the attribute. */
- if(H5Aclose(attr_id) < 0)
- goto out;
+ /* Close the attribute. */
+ if(H5Aclose(aid) < 0)
+ goto out;
- } /* ok_pal */
+ } /* ok_pal */
- /* Close the image dataset. */
- if(H5Dclose(image_id) < 0)
- return -1;
+ /* Close the image dataset. */
+ if(H5Dclose(did) < 0)
+ return -1;
- return 0;
+ return 0;
out:
- H5Dclose( image_id );
- return -1;
+ H5Dclose( did );
+ return -1;
}
/*-------------------------------------------------------------------------
- * Function: H5IMget_npalettes
- *
- * Purpose: Gets the number of palettes associated to an image
- *
- * Return: Success: 0, Failure: -1
- *
- * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
- *
- * Date: July 22, 2001
- *
- * Comments:
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
+* Function: H5IMget_npalettes
+*
+* Purpose: Gets the number of palettes associated to an image
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+*
+* Date: July 22, 2001
+*
+* Comments:
+*
+* Modifications:
+*
+*-------------------------------------------------------------------------
+*/
herr_t H5IMget_npalettes( hid_t loc_id,
- const char *image_name,
- hssize_t *npals )
+ const char *image_name,
+ hssize_t *npals )
{
- hid_t image_id;
- hid_t attr_type;
- hid_t attr_id;
- hid_t attr_space_id;
- hid_t attr_class;
- int has_pal;
+ hid_t did;
+ hid_t atid;
+ hid_t aid;
+ hid_t asid;
+ H5T_class_t aclass;
+ int has_pal;
- /*assume initially we have no palettes attached*/
- *npals = 0;
+ /*assume initially we have no palettes attached*/
+ *npals = 0;
- /* Open the dataset. */
- if((image_id = H5Dopen2(loc_id, image_name, H5P_DEFAULT)) < 0)
- return -1;
+ /* Open the dataset. */
+ if((did = H5Dopen2(loc_id, image_name, H5P_DEFAULT)) < 0)
+ return -1;
- /* Try to find the attribute "PALETTE" on the >>image<< dataset */
- has_pal = H5IM_find_palette(image_id);
+ /* Try to find the attribute "PALETTE" on the >>image<< dataset */
+ has_pal = H5IM_find_palette(did);
- if(has_pal == 1 )
- {
+ if(has_pal == 1 )
+ {
- if((attr_id = H5Aopen(image_id, "PALETTE", H5P_DEFAULT)) < 0)
- goto out;
+ if((aid = H5Aopen(did, "PALETTE", H5P_DEFAULT)) < 0)
+ goto out;
- if((attr_type = H5Aget_type(attr_id)) < 0)
- goto out;
+ if((atid = H5Aget_type(aid)) < 0)
+ goto out;
- if((attr_class = H5Tget_class(attr_type)) < 0)
- goto out;
+ if((aclass = H5Tget_class(atid)) < 0)
+ goto out;
- /* Check if it is really a reference */
+ /* Check if it is really a reference */
- if(attr_class == H5T_REFERENCE)
- {
- if((attr_space_id = H5Aget_space(attr_id)) < 0)
- goto out;
+ if(aclass == H5T_REFERENCE)
+ {
+ if((asid = H5Aget_space(aid)) < 0)
+ goto out;
- *npals = H5Sget_simple_extent_npoints( attr_space_id );
+ *npals = H5Sget_simple_extent_npoints( asid );
- if ( H5Sclose( attr_space_id ) < 0)
- goto out;
+ if ( H5Sclose( asid ) < 0)
+ goto out;
- } /* H5T_REFERENCE */
+ } /* H5T_REFERENCE */
- if ( H5Tclose( attr_type ) < 0)
- goto out;
+ if ( H5Tclose( atid ) < 0)
+ goto out;
- /* Close the attribute. */
- if ( H5Aclose( attr_id ) < 0)
- goto out;
+ /* Close the attribute. */
+ if ( H5Aclose( aid ) < 0)
+ goto out;
- }
+ }
- /* Close the image dataset. */
- if ( H5Dclose( image_id ) < 0)
- return -1;
+ /* Close the image dataset. */
+ if ( H5Dclose( did ) < 0)
+ return -1;
- return 0;
+ return 0;
out:
- H5Dclose( image_id );
- return -1;
+ H5Dclose( did );
+ return -1;
}
/*-------------------------------------------------------------------------
- * Function: H5IMget_palette_info
- *
- * Purpose: Get palette information
- *
- * Return: Success: 0, Failure: -1
- *
- * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
- *
- * Date: July 22, 2001
- *
- * Comments:
- * based on HDF5 Image and Palette Specification
- * http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
+* Function: H5IMget_palette_info
+*
+* Purpose: Get palette information
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+*
+* Date: July 22, 2001
+*
+* Comments:
+* based on HDF5 Image and Palette Specification
+* http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
+*
+* Modifications:
+*
+*-------------------------------------------------------------------------
+*/
herr_t H5IMget_palette_info( hid_t loc_id,
- const char *image_name,
- int pal_number,
- hsize_t *pal_dims )
+ const char *image_name,
+ int pal_number,
+ hsize_t *pal_dims )
{
- hid_t image_id;
- int has_pal;
- hid_t attr_type=-1;
- hid_t attr_id;
- hid_t attr_space_id=-1;
- hssize_t n_refs;
- hsize_t dim_ref;
- hobj_ref_t *refbuf; /* buffer to read references */
- hid_t pal_id;
- hid_t pal_space_id;
- hsize_t pal_maxdims[2];
+ hid_t did;
+ int has_pal;
+ hid_t atid=-1;
+ hid_t aid;
+ hid_t asid=-1;
+ hssize_t n_refs;
+ hsize_t dim_ref;
+ hobj_ref_t *refbuf; /* buffer to read references */
+ hid_t pal_id;
+ hid_t pal_space_id;
+ hsize_t pal_maxdims[2];
- /* Open the dataset. */
- if((image_id = H5Dopen2(loc_id, image_name, H5P_DEFAULT)) < 0)
- return -1;
+ /* Open the dataset. */
+ if((did = H5Dopen2(loc_id, image_name, H5P_DEFAULT)) < 0)
+ return -1;
- /* Try to find the attribute "PALETTE" on the >>image<< dataset */
- has_pal = H5IM_find_palette(image_id);
+ /* Try to find the attribute "PALETTE" on the >>image<< dataset */
+ has_pal = H5IM_find_palette(did);
- if(has_pal == 1)
- {
- if((attr_id = H5Aopen(image_id, "PALETTE", H5P_DEFAULT)) < 0)
- goto out;
+ if(has_pal == 1)
+ {
+ if((aid = H5Aopen(did, "PALETTE", H5P_DEFAULT)) < 0)
+ goto out;
- if((attr_type = H5Aget_type(attr_id)) < 0)
- goto out;
+ if((atid = H5Aget_type(aid)) < 0)
+ goto out;
- if(H5Tget_class(attr_type) < 0)
- goto out;
+ if(H5Tget_class(atid) < 0)
+ goto out;
- /* Get the reference(s) */
- if((attr_space_id = H5Aget_space(attr_id)) < 0)
- goto out;
+ /* Get the reference(s) */
+ if((asid = H5Aget_space(aid)) < 0)
+ goto out;
- n_refs = H5Sget_simple_extent_npoints(attr_space_id);
+ n_refs = H5Sget_simple_extent_npoints(asid);
- dim_ref = n_refs;
+ dim_ref = n_refs;
- refbuf = malloc( sizeof(hobj_ref_t) * (int)dim_ref );
+ refbuf = (hobj_ref_t*)malloc( sizeof(hobj_ref_t) * (int)dim_ref );
- if ( H5Aread( attr_id, attr_type, refbuf ) < 0)
- goto out;
+ if ( H5Aread( aid, atid, refbuf ) < 0)
+ goto out;
- /* Get the actual palette */
- if ( (pal_id = H5Rdereference( image_id, H5R_OBJECT, &refbuf[pal_number] )) < 0)
- goto out;
+ /* Get the actual palette */
+ if ( (pal_id = H5Rdereference( did, H5R_OBJECT, &refbuf[pal_number] )) < 0)
+ goto out;
- if ( (pal_space_id = H5Dget_space( pal_id )) < 0)
- goto out;
+ if ( (pal_space_id = H5Dget_space( pal_id )) < 0)
+ goto out;
- if ( H5Sget_simple_extent_ndims( pal_space_id ) < 0)
- goto out;
+ if ( H5Sget_simple_extent_ndims( pal_space_id ) < 0)
+ goto out;
- if ( H5Sget_simple_extent_dims( pal_space_id, pal_dims, pal_maxdims ) < 0)
- goto out;
+ if ( H5Sget_simple_extent_dims( pal_space_id, pal_dims, pal_maxdims ) < 0)
+ goto out;
- /* close */
- if (H5Dclose(pal_id)<0)
- goto out;
- if ( H5Sclose( pal_space_id ) < 0)
- goto out;
- if ( H5Sclose( attr_space_id ) < 0)
- goto out;
- if ( H5Tclose( attr_type ) < 0)
- goto out;
- if ( H5Aclose( attr_id ) < 0)
- goto out;
- free( refbuf );
+ /* close */
+ if (H5Dclose(pal_id)<0)
+ goto out;
+ if ( H5Sclose( pal_space_id ) < 0)
+ goto out;
+ if ( H5Sclose( asid ) < 0)
+ goto out;
+ if ( H5Tclose( atid ) < 0)
+ goto out;
+ if ( H5Aclose( aid ) < 0)
+ goto out;
+ free( refbuf );
- }
+ }
- /* Close the image dataset. */
- if ( H5Dclose( image_id ) < 0)
- return -1;
+ /* Close the image dataset. */
+ if ( H5Dclose( did ) < 0)
+ return -1;
- return 0;
+ return 0;
out:
- H5Dclose( image_id );
- H5Sclose( attr_space_id );
- H5Tclose( attr_type );
- H5Aclose( attr_id );
- return -1;
+ H5Dclose( did );
+ H5Sclose( asid );
+ H5Tclose( atid );
+ H5Aclose( aid );
+ return -1;
}
/*-------------------------------------------------------------------------
- * Function: H5IMget_palette
- *
- * Purpose: Read palette
- *
- * Return: Success: 0, Failure: -1
- *
- * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
- *
- * Date: August 30, 2001
- *
- * Comments:
- * based on HDF5 Image and Palette Specification
- * http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
+* Function: H5IMget_palette
+*
+* Purpose: Read palette
+*
+* Return: Success: 0, Failure: -1
+*
+* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+*
+* Date: August 30, 2001
+*
+* Comments:
+* based on HDF5 Image and Palette Specification
+* http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
+*
+* Modifications:
+*
+*-------------------------------------------------------------------------
+*/
herr_t H5IMget_palette( hid_t loc_id,
- const char *image_name,
- int pal_number,
- unsigned char *pal_data )
+ const char *image_name,
+ int pal_number,
+ unsigned char *pal_data )
{
- hid_t image_id;
- int has_pal;
- hid_t attr_type=-1;
- hid_t attr_id;
- hid_t attr_space_id=-1;
- hssize_t n_refs;
- hsize_t dim_ref;
- hobj_ref_t *refbuf; /* buffer to read references */
- hid_t pal_id;
+ hid_t did;
+ int has_pal;
+ hid_t atid=-1;
+ hid_t aid;
+ hid_t asid=-1;
+ hssize_t n_refs;
+ hsize_t dim_ref;
+ hobj_ref_t *refbuf; /* buffer to read references */
+ hid_t pal_id;
- /* Open the dataset. */
- if((image_id = H5Dopen2(loc_id, image_name, H5P_DEFAULT)) < 0)
- return -1;
+ /* Open the dataset. */
+ if((did = H5Dopen2(loc_id, image_name, H5P_DEFAULT)) < 0)
+ return -1;
- /* Try to find the attribute "PALETTE" on the >>image<< dataset */
- has_pal = H5IM_find_palette(image_id);
+ /* Try to find the attribute "PALETTE" on the >>image<< dataset */
+ has_pal = H5IM_find_palette(did);
- if(has_pal == 1 )
- {
- if((attr_id = H5Aopen(image_id, "PALETTE", H5P_DEFAULT)) < 0)
- goto out;
+ if(has_pal == 1 )
+ {
+ if((aid = H5Aopen(did, "PALETTE", H5P_DEFAULT)) < 0)
+ goto out;
- if((attr_type = H5Aget_type(attr_id)) < 0)
- goto out;
+ if((atid = H5Aget_type(aid)) < 0)
+ goto out;
- if(H5Tget_class(attr_type) < 0)
- goto out;
+ if(H5Tget_class(atid) < 0)
+ goto out;
- /* Get the reference(s) */
- if((attr_space_id = H5Aget_space(attr_id)) < 0)
- goto out;
+ /* Get the reference(s) */
+ if((asid = H5Aget_space(aid)) < 0)
+ goto out;
- n_refs = H5Sget_simple_extent_npoints(attr_space_id);
+ n_refs = H5Sget_simple_extent_npoints(asid);
- dim_ref = n_refs;
+ dim_ref = n_refs;
- refbuf = malloc( sizeof(hobj_ref_t) * (int)dim_ref );
+ refbuf = (hobj_ref_t*)malloc( sizeof(hobj_ref_t) * (int)dim_ref );
- if ( H5Aread( attr_id, attr_type, refbuf ) < 0)
- goto out;
+ if ( H5Aread( aid, atid, refbuf ) < 0)
+ goto out;
- /* Get the palette id */
- if ( (pal_id = H5Rdereference( image_id, H5R_OBJECT, &refbuf[pal_number] )) < 0)
- goto out;
+ /* Get the palette id */
+ if ( (pal_id = H5Rdereference( did, H5R_OBJECT, &refbuf[pal_number] )) < 0)
+ goto out;
- /* Read the palette dataset */
- if ( H5Dread( pal_id, H5Dget_type(pal_id), H5S_ALL, H5S_ALL, H5P_DEFAULT, pal_data ) < 0)
- goto out;
+ /* Read the palette dataset */
+ if ( H5Dread( pal_id, H5Dget_type(pal_id), H5S_ALL, H5S_ALL, H5P_DEFAULT, pal_data ) < 0)
+ goto out;
- /* close */
- if (H5Dclose(pal_id)<0)
- goto out;
- if ( H5Sclose( attr_space_id ) < 0)
- goto out;
- if ( H5Tclose( attr_type ) < 0)
- goto out;
- if ( H5Aclose( attr_id ) < 0)
- goto out;
- free( refbuf );
- }
+ /* close */
+ if (H5Dclose(pal_id)<0)
+ goto out;
+ if ( H5Sclose( asid ) < 0)
+ goto out;
+ if ( H5Tclose( atid ) < 0)
+ goto out;
+ if ( H5Aclose( aid ) < 0)
+ goto out;
+ free( refbuf );
+ }
- /* Close the image dataset. */
- if ( H5Dclose( image_id ) < 0)
- return -1;
+ /* Close the image dataset. */
+ if ( H5Dclose( did ) < 0)
+ return -1;
- return 0;
+ return 0;
out:
- H5Dclose( image_id );
- H5Sclose( attr_space_id );
- H5Tclose( attr_type );
- H5Aclose( attr_id );
- return -1;
+ H5Dclose( did );
+ H5Sclose( asid );
+ H5Tclose( atid );
+ H5Aclose( aid );
+ return -1;
}
/*-------------------------------------------------------------------------
- * Function: H5IMis_image
- *
- * Purpose:
- *
- * Return: true, false, fail
- *
- * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
- *
- * Date: August 30, 2001
- *
- * Comments:
- * based on HDF5 Image and Palette Specification
- * http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
+* Function: H5IMis_image
+*
+* Purpose:
+*
+* Return: true, false, fail
+*
+* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+*
+* Date: August 30, 2001
+*
+* Comments:
+* based on HDF5 Image and Palette Specification
+* http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
+*
+* Modifications:
+*
+*-------------------------------------------------------------------------
+*/
herr_t H5IMis_image( hid_t loc_id,
- const char *dset_name )
+ const char *dset_name )
{
- hid_t did;
- int has_class;
- hid_t attr_type;
- hid_t attr_id;
- char attr_data[20];
- herr_t ret;
+ hid_t did;
+ int has_class;
+ hid_t atid;
+ hid_t aid;
+ char attr_data[20];
+ herr_t ret;
- /* Assume initially fail condition */
- ret = -1;
+ /* Assume initially fail condition */
+ ret = -1;
- /* Open the dataset. */
- if((did = H5Dopen2(loc_id, dset_name, H5P_DEFAULT)) < 0)
- return -1;
+ /* Open the dataset. */
+ if((did = H5Dopen2(loc_id, dset_name, H5P_DEFAULT)) < 0)
+ return -1;
- /* Try to find the attribute "CLASS" on the dataset */
- has_class = H5LT_find_attribute(did, "CLASS");
+ /* Try to find the attribute "CLASS" on the dataset */
+ has_class = H5LT_find_attribute(did, "CLASS");
- if(has_class == 0)
- {
- H5Dclose(did);
- return 0;
- }
- else if(has_class == 1)
- {
+ if(has_class == 0)
+ {
+ H5Dclose(did);
+ return 0;
+ }
+ else if(has_class == 1)
+ {
- if((attr_id = H5Aopen(did, "CLASS", H5P_DEFAULT)) < 0)
- goto out;
+ if((aid = H5Aopen(did, "CLASS", H5P_DEFAULT)) < 0)
+ goto out;
- if((attr_type = H5Aget_type(attr_id)) < 0)
- goto out;
+ if((atid = H5Aget_type(aid)) < 0)
+ goto out;
- if(H5Tget_class(attr_type) < 0)
- goto out;
+ if(H5Tget_class(atid) < 0)
+ goto out;
- if(H5Aread(attr_id, attr_type, attr_data) < 0)
- goto out;
+ if(H5Aread(aid, atid, attr_data) < 0)
+ goto out;
- if(strcmp(attr_data, IMAGE_CLASS) == 0)
- ret = 1;
- else
- ret = 0;
+ if(strcmp(attr_data, IMAGE_CLASS) == 0)
+ ret = 1;
+ else
+ ret = 0;
- if ( H5Tclose( attr_type ) < 0)
- goto out;
+ if ( H5Tclose( atid ) < 0)
+ goto out;
- if ( H5Aclose( attr_id ) < 0)
- goto out;
+ if ( H5Aclose( aid ) < 0)
+ goto out;
- }
+ }
- /* Close the dataset. */
- if ( H5Dclose( did ) < 0)
- return -1;
+ /* Close the dataset. */
+ if ( H5Dclose( did ) < 0)
+ return -1;
- return ret;
+ return ret;
out:
- H5Dclose( did );
- return -1;
+ H5Dclose( did );
+ return -1;
}
/*-------------------------------------------------------------------------
- * Function: H5IMis_palette
- *
- * Purpose:
- *
- * Return: true, false, fail
- *
- * Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
- *
- * Date: August 30, 2001
- *
- * Comments:
- * based on HDF5 Image and Palette Specification
- * http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
+* Function: H5IMis_palette
+*
+* Purpose:
+*
+* Return: true, false, fail
+*
+* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
+*
+* Date: August 30, 2001
+*
+* Comments:
+* based on HDF5 Image and Palette Specification
+* http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageSpec.html
+*
+* Modifications:
+*
+*-------------------------------------------------------------------------
+*/
herr_t H5IMis_palette( hid_t loc_id,
- const char *dset_name )
+ const char *dset_name )
{
- hid_t did;
- int has_class;
- hid_t attr_type;
- hid_t attr_id;
- char attr_data[20];
- herr_t ret;
+ hid_t did;
+ int has_class;
+ hid_t atid;
+ hid_t aid;
+ char attr_data[20];
+ herr_t ret;
- /* Assume initially fail condition */
- ret = -1;
+ /* Assume initially fail condition */
+ ret = -1;
- /* Open the dataset. */
- if((did = H5Dopen2(loc_id, dset_name, H5P_DEFAULT)) < 0)
- return -1;
+ /* Open the dataset. */
+ if((did = H5Dopen2(loc_id, dset_name, H5P_DEFAULT)) < 0)
+ return -1;
- /* Try to find the attribute "CLASS" on the dataset */
- has_class = H5LT_find_attribute(did, "CLASS");
+ /* Try to find the attribute "CLASS" on the dataset */
+ has_class = H5LT_find_attribute(did, "CLASS");
- if(has_class == 0)
- {
- H5Dclose( did );
- return 0;
- }
- else if(has_class == 1)
- {
+ if(has_class == 0)
+ {
+ H5Dclose( did );
+ return 0;
+ }
+ else if(has_class == 1)
+ {
- if((attr_id = H5Aopen(did, "CLASS", H5P_DEFAULT)) < 0)
- goto out;
+ if((aid = H5Aopen(did, "CLASS", H5P_DEFAULT)) < 0)
+ goto out;
- if((attr_type = H5Aget_type(attr_id)) < 0)
- goto out;
+ if((atid = H5Aget_type(aid)) < 0)
+ goto out;
- if(H5Tget_class(attr_type) < 0)
- goto out;
+ if(H5Tget_class(atid) < 0)
+ goto out;
- if(H5Aread(attr_id, attr_type, attr_data) < 0)
- goto out;
+ if(H5Aread(aid, atid, attr_data) < 0)
+ goto out;
- if(strcmp(attr_data, PALETTE_CLASS) == 0)
- ret = 1;
- else
- ret = 0;
+ if(strcmp(attr_data, PALETTE_CLASS) == 0)
+ ret = 1;
+ else
+ ret = 0;
- if ( H5Tclose( attr_type ) < 0)
- goto out;
+ if ( H5Tclose( atid ) < 0)
+ goto out;
- if ( H5Aclose( attr_id ) < 0)
- goto out;
+ if ( H5Aclose( aid ) < 0)
+ goto out;
- }
+ }
- /* Close the dataset. */
- if ( H5Dclose( did ) < 0)
- return -1;
+ /* Close the dataset. */
+ if ( H5Dclose( did ) < 0)
+ return -1;
- return ret;
+ return ret;
out:
- H5Dclose( did );
- return -1;
+ H5Dclose( did );
+ return -1;
}