summaryrefslogtreecommitdiffstats
path: root/hl/test/test_image.c
diff options
context:
space:
mode:
authorPedro Vicente Nunes <pvn@hdfgroup.org>2005-05-16 19:08:41 (GMT)
committerPedro Vicente Nunes <pvn@hdfgroup.org>2005-05-16 19:08:41 (GMT)
commit5b6c08e68e94cab82653dff0c74d1725fd2852f4 (patch)
treed08b050aff5fcaa5f51897769e41a023709a7177 /hl/test/test_image.c
parent4977e0ac5163ce29211596f84cb39c3c5e525a16 (diff)
downloadhdf5-5b6c08e68e94cab82653dff0c74d1725fd2852f4.zip
hdf5-5b6c08e68e94cab82653dff0c74d1725fd2852f4.tar.gz
hdf5-5b6c08e68e94cab82653dff0c74d1725fd2852f4.tar.bz2
[svn-r10747] Purpose:
bug fix Description: the fortran type integer*1 has become not portable. define the image fortran datatype as "integer" and make special save, read, and palette functions that use native integer for a memory type and UCHAR as disk type for the image data added some more tests with new palette definitions Solution: Platforms tested: linux solaris Misc. update:
Diffstat (limited to 'hl/test/test_image.c')
-rw-r--r--hl/test/test_image.c95
1 files changed, 70 insertions, 25 deletions
diff --git a/hl/test/test_image.c b/hl/test/test_image.c
index c7176d9..539991d 100644
--- a/hl/test/test_image.c
+++ b/hl/test/test_image.c
@@ -31,10 +31,12 @@
#define PAL1_NAME "rainbow"
#define PAL2_NAME "sepia"
#define PAL3_NAME "earth"
+#define PAL4_NAME "blue-red"
-#define WIDTH (hsize_t)50
-#define HEIGHT (hsize_t)20
+#define WIDTH (hsize_t)500
+#define HEIGHT (hsize_t)200
+#define PAL_ENTRIES 9
/* struct to store RGB values read from a .pal file */
typedef struct rgb_t {
@@ -86,33 +88,55 @@ static int test_simple(void)
hsize_t width;
hsize_t height;
hsize_t planes;
- hsize_t pal_dims[] = {9,3};
+ hsize_t pal_dims[] = {PAL_ENTRIES,3};
hsize_t pal_dims_out[2];
char interlace[20];
hssize_t npals;
- hsize_t i;
+ hsize_t i, j;
herr_t is_image;
herr_t is_pal;
unsigned char image_in1 [ WIDTH*HEIGHT ];
unsigned char image_out1[ WIDTH*HEIGHT ];
unsigned char image_in2 [ WIDTH*HEIGHT*3 ];
unsigned char image_out2[ WIDTH*HEIGHT*3 ];
- unsigned char pal_data_out[9*3];
- /* create a 9 entry grey palette */
- unsigned char pal_data_in[9*3] = {0,0,0,
- 25,25,25,
- 50,50,50,
- 75,75,75,
- 100,100,100,
- 125,125,125,
- 150,150,150,
- 175,175,175,
- 200,200,200};
-
- for (i = 0; i < WIDTH*HEIGHT; i++ )
- image_in1[i] = (unsigned char)i;
- for (i = 0; i < WIDTH*HEIGHT*3; i++)
- image_in2[i] = (unsigned char)i;
+ unsigned char pal_data_out[PAL_ENTRIES*3];
+ unsigned char n;
+ int space;
+ /* create a PAL_ENTRIES entry palette */
+ unsigned char pal_data_in[PAL_ENTRIES*3] = {
+ 0,0,168, /* dark blue */
+ 0,0,252, /* blue */
+ 0,168,252, /* ocean blue */
+ 84,252,252, /* light blue */
+ 168,252,168, /* light green */
+ 0,252,168, /* green */
+ 252,252,84, /* yellow */
+ 252,168,0, /* orange */
+ 252,0,0}; /* red */
+
+ /* create an image of 9 values divided evenly by the array */
+ space = WIDTH*HEIGHT / PAL_ENTRIES;
+ for (i=0, j=0, n=0; i < WIDTH*HEIGHT; i++, j++ )
+ {
+ image_in1[i] = n;
+ if ( j > space )
+ {
+ n++;
+ j=0;
+ }
+ if (n>PAL_ENTRIES-1) n=0;
+ }
+ /* create an image 3 byte RGB image */
+ for (i=0, j=0, n=0; i < WIDTH*HEIGHT*3; i++, j++)
+ {
+ image_in2[i] = n;
+ if (j==3)
+ {
+ n++;
+ j=0;
+ }
+ if (n>255) n=0;
+ }
/* create a file using default properties */
if ((fid=H5Fcreate(FILE1,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
@@ -126,7 +150,7 @@ static int test_simple(void)
*-------------------------------------------------------------------------
*/
- TESTING2("indexed image");
+ TESTING2("indexed images");
/* write image */
if (H5IMmake_image_8bit(fid,"image1",WIDTH,HEIGHT,image_in1)<0)
@@ -166,6 +190,7 @@ static int test_simple(void)
}
}
+
PASSED();
/*-------------------------------------------------------------------------
@@ -244,7 +269,7 @@ static int test_simple(void)
goto out;
/* check */
- for (i = 0; i < 9*3; i++)
+ for (i = 0; i < PAL_ENTRIES*3; i++)
{
if ( pal_data_in[i] != pal_data_out[i] )
{
@@ -360,7 +385,7 @@ static int test_data(void)
goto out;
/*-------------------------------------------------------------------------
- * palette #1. sepia palette.
+ * palette #2. sepia palette.
* read a PAL file and attach the palette to the HDF5 file
*-------------------------------------------------------------------------
*/
@@ -386,12 +411,11 @@ static int test_data(void)
goto out;
/*-------------------------------------------------------------------------
- * palette #1. earth palette.
+ * palette #3. earth palette.
* read a PAL file and attach the palette to the HDF5 file
*-------------------------------------------------------------------------
*/
-
/* read a PAL file */
if (read_palette(PAL3_FILE, rgb, sizeof(rgb))<0)
goto out;
@@ -416,6 +440,27 @@ static int test_data(void)
/*-------------------------------------------------------------------------
+ * palette #4. blue-red
+ * make a palette whith blue to red colors
+ *-------------------------------------------------------------------------
+ */
+ for ( i=0, n=0; i<256*3; i+=3, n++)
+ {
+ pal[i] =n;
+ pal[i+1]=0;
+ pal[i+2]=255-n;
+ }
+
+ /* make a palette */
+ if (H5IMmake_palette(fid,PAL4_NAME,pal_dims,pal)<0)
+ goto out;
+
+ /* attach the palette to the image dataset */
+ if (H5IMlink_palette(fid,IMAGE1_NAME,PAL4_NAME)<0)
+ goto out;
+
+
+/*-------------------------------------------------------------------------
* true color image example with pixel interlace
*-------------------------------------------------------------------------
*/