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

◆ test_band_pixtype_32BUI()

static void test_band_pixtype_32BUI ( )
static

Definition at line 863 of file cu_band_basics.c.

863 {
864 rt_pixtype pixtype = PT_32BUI;
865 uint8_t *data = NULL;
866 rt_band band = NULL;
867 int width = 5;
868 int height = 5;
869 int err = 0;
870 int clamped = 0;
871 double val = 0;
872 int x;
873 int y;
874
875 /* inline band */
876 data = rtalloc(rt_pixtype_size(pixtype) * width * height);
877 CU_ASSERT(data != NULL);
878 memset(data, 0, rt_pixtype_size(pixtype) * width * height);
879
881 width, height,
882 pixtype,
883 0, 0,
884 data
885 );
886 CU_ASSERT(band != NULL);
888 CU_ASSERT(rt_band_get_ownsdata_flag(band));
889
890 err = rt_band_set_nodata(band, 1, &clamped);
891 CU_ASSERT_EQUAL(err, ES_NONE);
892 CU_ASSERT(!clamped);
893 rt_band_get_nodata(band, &val);
894 CU_ASSERT_DOUBLE_EQUAL(val, 1, DBL_EPSILON);
895
896 err = rt_band_set_nodata(band, 0, &clamped);
897 CU_ASSERT_EQUAL(err, ES_NONE);
898 CU_ASSERT(!clamped);
899 rt_band_get_nodata(band, &val);
900 CU_ASSERT_DOUBLE_EQUAL(val, 0, DBL_EPSILON);
901
902 err = rt_band_set_nodata(band, 65535, &clamped);
903 CU_ASSERT_EQUAL(err, ES_NONE);
904 CU_ASSERT(!clamped);
905 rt_band_get_nodata(band, &val);
906 CU_ASSERT_DOUBLE_EQUAL(val, 65535, DBL_EPSILON);
907
908 err = rt_band_set_nodata(band, 4294967295UL, &clamped);
909 CU_ASSERT_EQUAL(err, ES_NONE);
910 CU_ASSERT(!clamped);
911 rt_band_get_nodata(band, &val);
912 CU_ASSERT_DOUBLE_EQUAL(val, 4294967295UL, DBL_EPSILON);
913
914 /* out of range */
915 err = rt_band_set_nodata(band, 4294967296ULL, &clamped);
916 CU_ASSERT_EQUAL(err, ES_NONE);
917 CU_ASSERT(clamped);
918
919 /* out of value range */
920 err = rt_band_set_pixel(band, 0, 0, 4294967296ULL, &clamped);
921 CU_ASSERT_EQUAL(err, ES_NONE);
922 CU_ASSERT(clamped);
923
924 /* out of dimensions range */
925 err = rt_band_set_pixel(band, rt_band_get_width(band), 0, 4294967296ULL, NULL);
926 CU_ASSERT((err != ES_NONE));
927
928 for (x=0; x<rt_band_get_width(band); ++x) {
929 for (y=0; y<rt_band_get_height(band); ++y) {
930 err = rt_band_set_pixel(band, x, y, 1, NULL);
931 CU_ASSERT_EQUAL(err, ES_NONE);
932 err = rt_band_get_pixel(band, x, y, &val, NULL);
933 CU_ASSERT_EQUAL(err, ES_NONE);
934 CU_ASSERT_DOUBLE_EQUAL(val, 1, DBL_EPSILON);
935
936 err = rt_band_set_pixel(band, x, y, 0, NULL);
937 CU_ASSERT_EQUAL(err, ES_NONE);
938 err = rt_band_get_pixel(band, x, y, &val, NULL);
939 CU_ASSERT_EQUAL(err, ES_NONE);
940 CU_ASSERT_DOUBLE_EQUAL(val, 0, DBL_EPSILON);
941
942 err = rt_band_set_pixel(band, x, y, 65535, NULL);
943 CU_ASSERT_EQUAL(err, ES_NONE);
944 err = rt_band_get_pixel(band, x, y, &val, NULL);
945 CU_ASSERT_EQUAL(err, ES_NONE);
946 CU_ASSERT_DOUBLE_EQUAL(val, 65535, DBL_EPSILON);
947
948 err = rt_band_set_pixel(band, x, y, 4294967295UL, NULL);
949 CU_ASSERT_EQUAL(err, ES_NONE);
950 err = rt_band_get_pixel(band, x, y, &val, NULL);
951 CU_ASSERT_EQUAL(err, ES_NONE);
952 CU_ASSERT_DOUBLE_EQUAL(val, 4294967295UL, DBL_EPSILON);
953 }
954 }
955
956 rt_band_destroy(band);
957}
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:818
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:791
rt_errorstate rt_band_get_pixel(rt_band band, int x, int y, double *value, int *nodata)
Get pixel value.
Definition rt_band.c:1527
rt_pixtype
Definition librtcore.h:187
@ PT_32BUI
Definition librtcore.h:196
rt_errorstate rt_band_set_nodata(rt_band band, double val, int *converted)
Set nodata value.
Definition rt_band.c:884
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:1125
@ ES_NONE
Definition librtcore.h:182
void rt_band_destroy(rt_band band)
Destroy a raster band.
Definition rt_band.c:491
rt_errorstate rt_band_get_nodata(rt_band band, double *nodata)
Get NODATA value.
Definition rt_band.c:2038
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:810
uint16_t rt_band_get_height(rt_band band)
Return height of this band.
Definition rt_band.c:800
int rt_pixtype_size(rt_pixtype pixtype)
Return size in bytes of a value in the given pixtype.
Definition rt_pixel.c:39

References ES_NONE, PT_32BUI, 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: