static _rti_colormap_arg _rti_colormap_arg_init(rt_raster raster) { _rti_colormap_arg arg = NULL; arg = rtalloc(sizeof(struct _rti_colormap_arg_t)); if (arg == NULL) { rterror("_rti_colormap_arg_init: Could not allocate memory for _rti_color_arg"); return NULL; } arg->band = NULL; arg->nodataentry = NULL; arg->hasnodata = 0; arg->nodataval = 0; if (raster == NULL) arg->raster = NULL; /* raster provided */ else { arg->raster = rt_raster_clone(raster, 0); if (arg->raster == NULL) { rterror("_rti_colormap_arg_init: Could not create output raster"); return NULL; } } arg->nexpr = 0; arg->expr = NULL; arg->npos = 0; arg->pos = NULL; return arg; }
static void test_raster_clone() { rt_raster rast1; rt_raster rast2; rt_band band; int maxX = 5; int maxY = 5; double gt[6]; rast1 = rt_raster_new(maxX, maxY); CU_ASSERT(rast1 != NULL); rt_raster_set_offsets(rast1, 0, 0); rt_raster_set_scale(rast1, 1, -1); rt_raster_set_srid(rast1, 4326); band = cu_add_band(rast1, PT_32BUI, 1, 6); CU_ASSERT(band != NULL); /* clone without bands */ rast2 = rt_raster_clone(rast1, 0); CU_ASSERT(rast2 != NULL); CU_ASSERT_EQUAL(rt_raster_get_num_bands(rast2), 0); rt_raster_get_geotransform_matrix(rast2, gt); CU_ASSERT_EQUAL(rt_raster_get_srid(rast2), 4326); CU_ASSERT_DOUBLE_EQUAL(gt[0], 0, DBL_EPSILON); CU_ASSERT_DOUBLE_EQUAL(gt[1], 1, DBL_EPSILON); CU_ASSERT_DOUBLE_EQUAL(gt[2], 0, DBL_EPSILON); CU_ASSERT_DOUBLE_EQUAL(gt[3], 0, DBL_EPSILON); CU_ASSERT_DOUBLE_EQUAL(gt[4], 0, DBL_EPSILON); CU_ASSERT_DOUBLE_EQUAL(gt[5], -1, DBL_EPSILON); cu_free_raster(rast2); /* clone with bands */ rast2 = rt_raster_clone(rast1, 1); CU_ASSERT(rast2 != NULL); CU_ASSERT_EQUAL(rt_raster_get_num_bands(rast2), 1); cu_free_raster(rast2); cu_free_raster(rast1); }