PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ test_band_pixtype_32BSI()

static void test_band_pixtype_32BSI ( )
static

Definition at line 959 of file cu_band_basics.c.

959 {
960 rt_pixtype pixtype = PT_32BSI;
961 uint8_t *data = NULL;
962 rt_band band = NULL;
963 int width = 5;
964 int height = 5;
965 int err = 0;
966 int clamped = 0;
967 double val = 0;
968 int x;
969 int y;
970
971 /* inline band */
972 data = rtalloc(rt_pixtype_size(pixtype) * width * height);
973 CU_ASSERT(data != NULL);
974 memset(data, 0, rt_pixtype_size(pixtype) * width * height);
975
977 width, height,
978 pixtype,
979 0, 0,
980 data
981 );
982 CU_ASSERT(band != NULL);
984 CU_ASSERT(rt_band_get_ownsdata_flag(band));
985
986 err = rt_band_set_nodata(band, 1, &clamped);
987 CU_ASSERT_EQUAL(err, ES_NONE);
988 CU_ASSERT(!clamped);
989 rt_band_get_nodata(band, &val);
990 CU_ASSERT_DOUBLE_EQUAL(val, 1, DBL_EPSILON);
991
992 err = rt_band_set_nodata(band, 0, &clamped);
993 CU_ASSERT_EQUAL(err, ES_NONE);
994 CU_ASSERT(!clamped);
995 rt_band_get_nodata(band, &val);
996 CU_ASSERT_DOUBLE_EQUAL(val, 0, DBL_EPSILON);
997
998 err = rt_band_set_nodata(band, 65535, &clamped);
999 CU_ASSERT_EQUAL(err, ES_NONE);
1000 CU_ASSERT(!clamped);
1001 rt_band_get_nodata(band, &val);
1002 CU_ASSERT_DOUBLE_EQUAL(val, 65535, DBL_EPSILON);
1003
1004 err = rt_band_set_nodata(band, 2147483647, &clamped);
1005 CU_ASSERT_EQUAL(err, ES_NONE);
1006 CU_ASSERT(!clamped);
1007 rt_band_get_nodata(band, &val);
1008 /*printf("32BSI pix is %ld\n", (long int)val);*/
1009 CU_ASSERT_DOUBLE_EQUAL(val, 2147483647, DBL_EPSILON);
1010
1011 /* out of range */
1012 err = rt_band_set_nodata(band, 2147483648UL, &clamped);
1013 CU_ASSERT_EQUAL(err, ES_NONE);
1014 CU_ASSERT(clamped);
1015
1016 /* out of value range */
1017 err = rt_band_set_pixel(band, 0, 0, 2147483648UL, &clamped);
1018 CU_ASSERT_EQUAL(err, ES_NONE);
1019 CU_ASSERT(clamped);
1020
1021 /* out of dimensions range */
1022 err = rt_band_set_pixel(band, rt_band_get_width(band), 0, 0, NULL);
1023 CU_ASSERT((err != ES_NONE));
1024
1025 for (x=0; x<rt_band_get_width(band); ++x) {
1026 for (y=0; y<rt_band_get_height(band); ++y) {
1027 err = rt_band_set_pixel(band, x, y, 1, NULL);
1028 CU_ASSERT_EQUAL(err, ES_NONE);
1029 err = rt_band_get_pixel(band, x, y, &val, NULL);
1030 CU_ASSERT_EQUAL(err, ES_NONE);
1031 CU_ASSERT_DOUBLE_EQUAL(val, 1, DBL_EPSILON);
1032
1033 err = rt_band_set_pixel(band, x, y, 0, NULL);
1034 CU_ASSERT_EQUAL(err, ES_NONE);
1035 err = rt_band_get_pixel(band, x, y, &val, NULL);
1036 CU_ASSERT_EQUAL(err, ES_NONE);
1037 CU_ASSERT_DOUBLE_EQUAL(val, 0, DBL_EPSILON);
1038
1039 err = rt_band_set_pixel(band, x, y, 65535, NULL);
1040 CU_ASSERT_EQUAL(err, ES_NONE);
1041 err = rt_band_get_pixel(band, x, y, &val, NULL);
1042 CU_ASSERT_EQUAL(err, ES_NONE);
1043 CU_ASSERT_DOUBLE_EQUAL(val, 65535, DBL_EPSILON);
1044
1045 err = rt_band_set_pixel(band, x, y, 2147483647, NULL);
1046 CU_ASSERT_EQUAL(err, ES_NONE);
1047 err = rt_band_get_pixel(band, x, y, &val, NULL);
1048 CU_ASSERT_EQUAL(err, ES_NONE);
1049 CU_ASSERT_DOUBLE_EQUAL(val, 2147483647, DBL_EPSILON);
1050 }
1051 }
1052
1053 rt_band_destroy(band);
1054}
rt_band rt_band_new_inline(uint16_t width, uint16_t height, rt_pixtype pixtype, uint32_t hasnodata, double nodataval, uint8_t *data)
Create an in-db rt_band with no data.
Definition rt_band.c:64
void rt_band_set_ownsdata_flag(rt_band band, int flag)
Definition rt_band.c:826
void * rtalloc(size_t size)
Wrappers used for managing memory.
Definition rt_context.c:191
uint16_t rt_band_get_width(rt_band band)
Return width of this band.
Definition rt_band.c:799
rt_errorstate rt_band_get_pixel(rt_band band, int x, int y, double *value, int *nodata)
Get pixel value.
Definition rt_band.c:1551
rt_pixtype
Definition librtcore.h:188
@ PT_32BSI
Definition librtcore.h:196
rt_errorstate rt_band_set_nodata(rt_band band, double val, int *converted)
Set nodata value.
Definition rt_band.c:892
rt_errorstate rt_band_set_pixel(rt_band band, int x, int y, double val, int *converted)
Set single pixel's value.
Definition rt_band.c:1140
@ ES_NONE
Definition librtcore.h:182
void rt_band_destroy(rt_band band)
Destroy a raster band.
Definition rt_band.c:499
rt_errorstate rt_band_get_nodata(rt_band band, double *nodata)
Get NODATA value.
Definition rt_band.c:2067
int rt_band_get_ownsdata_flag(rt_band band)
Return 0 (FALSE) or non-zero (TRUE) indicating if rt_band is responsible for managing the memory for ...
Definition rt_band.c:818
uint16_t rt_band_get_height(rt_band band)
Return height of this band.
Definition rt_band.c:808
int rt_pixtype_size(rt_pixtype pixtype)
Return size in bytes of a value in the given pixtype.
Definition rt_pixel.c:40

References ES_NONE, PT_32BSI, rt_band_destroy(), rt_band_get_height(), rt_band_get_nodata(), rt_band_get_ownsdata_flag(), rt_band_get_pixel(), rt_band_get_width(), rt_band_new_inline(), rt_band_set_nodata(), rt_band_set_ownsdata_flag(), rt_band_set_pixel(), rt_pixtype_size(), and rtalloc().

Referenced by band_basics_suite_setup().

Here is the call graph for this function:
Here is the caller graph for this function: