PostGIS  2.5.7dev-r@@SVN_REVISION@@

◆ test_band_pixtype_16BUI()

static void test_band_pixtype_16BUI ( )
static

Definition at line 662 of file cu_band_basics.c.

662  {
663  rt_pixtype pixtype = PT_16BUI;
664  uint8_t *data = NULL;
665  rt_band band = NULL;
666  int width = 5;
667  int height = 5;
668  int err = 0;
669  int clamped = 0;
670  double val = 0;
671  int x;
672  int y;
673 
674  /* inline band */
675  data = rtalloc(rt_pixtype_size(pixtype) * width * height);
676  CU_ASSERT(data != NULL);
677  memset(data, 0, rt_pixtype_size(pixtype) * width * height);
678 
680  width, height,
681  pixtype,
682  0, 0,
683  data
684  );
685  CU_ASSERT(band != NULL);
687  CU_ASSERT(rt_band_get_ownsdata_flag(band));
688 
689  err = rt_band_set_nodata(band, 1, &clamped);
690  CU_ASSERT_EQUAL(err, ES_NONE);
691  CU_ASSERT(!clamped);
692  rt_band_get_nodata(band, &val);
693  CU_ASSERT_DOUBLE_EQUAL(val, 1, DBL_EPSILON);
694 
695  err = rt_band_set_nodata(band, 0, &clamped);
696  CU_ASSERT_EQUAL(err, ES_NONE);
697  CU_ASSERT(!clamped);
698  rt_band_get_nodata(band, &val);
699  CU_ASSERT_DOUBLE_EQUAL(val, 0, DBL_EPSILON);
700 
701  err = rt_band_set_nodata(band, 31, &clamped);
702  CU_ASSERT_EQUAL(err, ES_NONE);
703  CU_ASSERT(!clamped);
704  rt_band_get_nodata(band, &val);
705  CU_ASSERT_DOUBLE_EQUAL(val, 31, DBL_EPSILON);
706 
707  err = rt_band_set_nodata(band, 255, &clamped);
708  CU_ASSERT_EQUAL(err, ES_NONE);
709  CU_ASSERT(!clamped);
710  rt_band_get_nodata(band, &val);
711  CU_ASSERT_DOUBLE_EQUAL(val, 255, DBL_EPSILON);
712 
713  err = rt_band_set_nodata(band, 65535, &clamped);
714  CU_ASSERT_EQUAL(err, ES_NONE);
715  CU_ASSERT(!clamped);
716  rt_band_get_nodata(band, &val);
717  CU_ASSERT_DOUBLE_EQUAL(val, 65535, DBL_EPSILON);
718 
719  err = rt_band_set_nodata(band, 65536, &clamped); /* out of range */
720  CU_ASSERT_EQUAL(err, ES_NONE);
721  CU_ASSERT(clamped);
722 
723  /* out of value range */
724  err = rt_band_set_pixel(band, 0, 0, 65536, &clamped);
725  CU_ASSERT_EQUAL(err, ES_NONE);
726  CU_ASSERT(clamped);
727 
728  /* out of dimensions range */
729  err = rt_band_set_pixel(band, rt_band_get_width(band), 0, 0, &clamped);
730  CU_ASSERT((err != ES_NONE));
731 
732  for (x=0; x<rt_band_get_width(band); ++x) {
733  for (y=0; y<rt_band_get_height(band); ++y) {
734  err = rt_band_set_pixel(band, x, y, 255, NULL);
735  CU_ASSERT_EQUAL(err, ES_NONE);
736  err = rt_band_get_pixel(band, x, y, &val, NULL);
737  CU_ASSERT_EQUAL(err, ES_NONE);
738  CU_ASSERT_DOUBLE_EQUAL(val, 255, DBL_EPSILON);
739 
740  err = rt_band_set_pixel(band, x, y, 65535, NULL);
741  CU_ASSERT_EQUAL(err, ES_NONE);
742  err = rt_band_get_pixel(band, x, y, &val, NULL);
743  CU_ASSERT_EQUAL(err, ES_NONE);
744  CU_ASSERT_DOUBLE_EQUAL(val, 65535, DBL_EPSILON);
745  }
746  }
747 
749 }
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:63
void rt_band_set_ownsdata_flag(rt_band band, int flag)
Definition: rt_band.c:667
void * rtalloc(size_t size)
Wrappers used for managing memory.
Definition: rt_context.c:171
uint16_t rt_band_get_width(rt_band band)
Return width of this band.
Definition: rt_band.c:640
rt_errorstate rt_band_get_pixel(rt_band band, int x, int y, double *value, int *nodata)
Get pixel value.
Definition: rt_band.c:1221
rt_pixtype
Definition: librtcore.h:185
@ PT_16BUI
Definition: librtcore.h:192
rt_errorstate rt_band_set_nodata(rt_band band, double val, int *converted)
Set nodata value.
Definition: rt_band.c:733
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:974
@ ES_NONE
Definition: librtcore.h:180
void rt_band_destroy(rt_band band)
Destroy a raster band.
Definition: rt_band.c:340
rt_errorstate rt_band_get_nodata(rt_band band, double *nodata)
Get NODATA value.
Definition: rt_band.c:1730
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:659
uint16_t rt_band_get_height(rt_band band)
Return height of this band.
Definition: rt_band.c:649
int rt_pixtype_size(rt_pixtype pixtype)
Return size in bytes of a value in the given pixtype.
Definition: rt_pixel.c:39
band
Definition: ovdump.py:57
data
Definition: ovdump.py:103
unsigned char uint8_t
Definition: uthash.h:79

References ovdump::band, ovdump::data, ES_NONE, PT_16BUI, 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().

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