PostGIS  2.3.8dev-r@@SVN_REVISION@@

◆ test_band_pixtype_32BSI()

static void test_band_pixtype_32BSI ( )
static

Definition at line 952 of file cu_band_basics.c.

References ovdump::band, ovdump::data, 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(), rtalloc(), pixval::x, and pixval::y.

Referenced by band_basics_suite_setup().

952  {
953  rt_pixtype pixtype = PT_32BSI;
954  uint8_t *data = NULL;
955  rt_band band = NULL;
956  int width = 5;
957  int height = 5;
958  int err = 0;
959  int clamped = 0;
960  double val = 0;
961  int x;
962  int y;
963 
964  /* inline band */
965  data = rtalloc(rt_pixtype_size(pixtype) * width * height);
966  CU_ASSERT(data != NULL);
967  memset(data, 0, rt_pixtype_size(pixtype) * width * height);
968 
969  band = rt_band_new_inline(
970  width, height,
971  pixtype,
972  0, 0,
973  data
974  );
975  CU_ASSERT(band != NULL);
976  rt_band_set_ownsdata_flag(band, 1);
977  CU_ASSERT(rt_band_get_ownsdata_flag(band));
978 
979  err = rt_band_set_nodata(band, 1, &clamped);
980  CU_ASSERT_EQUAL(err, ES_NONE);
981  CU_ASSERT(!clamped);
982  rt_band_get_nodata(band, &val);
983  CU_ASSERT_DOUBLE_EQUAL(val, 1, DBL_EPSILON);
984 
985  err = rt_band_set_nodata(band, 0, &clamped);
986  CU_ASSERT_EQUAL(err, ES_NONE);
987  CU_ASSERT(!clamped);
988  rt_band_get_nodata(band, &val);
989  CU_ASSERT_DOUBLE_EQUAL(val, 0, DBL_EPSILON);
990 
991  err = rt_band_set_nodata(band, 65535, &clamped);
992  CU_ASSERT_EQUAL(err, ES_NONE);
993  CU_ASSERT(!clamped);
994  rt_band_get_nodata(band, &val);
995  CU_ASSERT_DOUBLE_EQUAL(val, 65535, DBL_EPSILON);
996 
997  err = rt_band_set_nodata(band, 2147483647, &clamped);
998  CU_ASSERT_EQUAL(err, ES_NONE);
999  CU_ASSERT(!clamped);
1000  rt_band_get_nodata(band, &val);
1001  /*printf("32BSI pix is %ld\n", (long int)val);*/
1002  CU_ASSERT_DOUBLE_EQUAL(val, 2147483647, DBL_EPSILON);
1003 
1004  /* out of range */
1005  err = rt_band_set_nodata(band, 2147483648UL, &clamped);
1006  CU_ASSERT_EQUAL(err, ES_NONE);
1007  CU_ASSERT(clamped);
1008 
1009  /* out of value range */
1010  err = rt_band_set_pixel(band, 0, 0, 2147483648UL, &clamped);
1011  CU_ASSERT_EQUAL(err, ES_NONE);
1012  CU_ASSERT(clamped);
1013 
1014  /* out of dimensions range */
1015  err = rt_band_set_pixel(band, rt_band_get_width(band), 0, 0, NULL);
1016  CU_ASSERT((err != ES_NONE));
1017 
1018  for (x=0; x<rt_band_get_width(band); ++x) {
1019  for (y=0; y<rt_band_get_height(band); ++y) {
1020  err = rt_band_set_pixel(band, x, y, 1, NULL);
1021  CU_ASSERT_EQUAL(err, ES_NONE);
1022  err = rt_band_get_pixel(band, x, y, &val, NULL);
1023  CU_ASSERT_EQUAL(err, ES_NONE);
1024  CU_ASSERT_DOUBLE_EQUAL(val, 1, DBL_EPSILON);
1025 
1026  err = rt_band_set_pixel(band, x, y, 0, NULL);
1027  CU_ASSERT_EQUAL(err, ES_NONE);
1028  err = rt_band_get_pixel(band, x, y, &val, NULL);
1029  CU_ASSERT_EQUAL(err, ES_NONE);
1030  CU_ASSERT_DOUBLE_EQUAL(val, 0, DBL_EPSILON);
1031 
1032  err = rt_band_set_pixel(band, x, y, 65535, NULL);
1033  CU_ASSERT_EQUAL(err, ES_NONE);
1034  err = rt_band_get_pixel(band, x, y, &val, NULL);
1035  CU_ASSERT_EQUAL(err, ES_NONE);
1036  CU_ASSERT_DOUBLE_EQUAL(val, 65535, DBL_EPSILON);
1037 
1038  err = rt_band_set_pixel(band, x, y, 2147483647, NULL);
1039  CU_ASSERT_EQUAL(err, ES_NONE);
1040  err = rt_band_get_pixel(band, x, y, &val, NULL);
1041  CU_ASSERT_EQUAL(err, ES_NONE);
1042  CU_ASSERT_DOUBLE_EQUAL(val, 2147483647, DBL_EPSILON);
1043  }
1044  }
1045 
1046  rt_band_destroy(band);
1047 }
band
Definition: ovdump.py:57
void * rtalloc(size_t size)
Wrappers used for managing memory.
Definition: rt_context.c:171
data
Definition: ovdump.py:103
rt_errorstate rt_band_set_nodata(rt_band band, double val, int *converted)
Set nodata value.
Definition: rt_band.c:600
rt_pixtype
Definition: librtcore.h:197
void rt_band_destroy(rt_band band)
Destroy a raster band.
Definition: rt_band.c:242
rt_errorstate rt_band_get_nodata(rt_band band, double *nodata)
Get NODATA value.
Definition: rt_band.c:1597
void rt_band_set_ownsdata_flag(rt_band band, int flag)
Definition: rt_band.c:534
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:526
rt_errorstate rt_band_get_pixel(rt_band band, int x, int y, double *value, int *nodata)
Get pixel value.
Definition: rt_band.c:1088
uint16_t rt_band_get_width(rt_band band)
Return width of this band.
Definition: rt_band.c:507
uint16_t rt_band_get_height(rt_band band)
Return height of this band.
Definition: rt_band.c:516
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:58
int rt_pixtype_size(rt_pixtype pixtype)
Return size in bytes of a value in the given pixtype.
Definition: rt_pixel.c:39
rt_errorstate rt_band_set_pixel(rt_band band, int x, int y, double val, int *converted)
Set single pixel&#39;s value.
Definition: rt_band.c:841
Here is the call graph for this function:
Here is the caller graph for this function: