Generate a new inline band and add it to a raster.
Memory is allocated in this function for band data.
498 int32_t checkvalint = 0;
500 double checkvaldouble = 0;
501 float checkvalfloat = 0;
505 assert(NULL != raster);
511 else if (index > oldnumbands + 1)
512 index = oldnumbands + 1;
517 numval = width * height;
520 mem = (
int *)
rtalloc(datasize);
522 rterror(
"rt_raster_generate_new_band: Could not allocate memory for band");
526 if (
FLT_EQ(initialvalue, 0.0))
527 memset(mem, 0, datasize);
535 for (i = 0; i < numval; i++)
536 ptr[i] = clamped_initval;
537 checkvalint = ptr[0];
544 for (i = 0; i < numval; i++)
545 ptr[i] = clamped_initval;
546 checkvalint = ptr[0];
553 for (i = 0; i < numval; i++)
554 ptr[i] = clamped_initval;
555 checkvalint = ptr[0];
562 for (i = 0; i < numval; i++)
563 ptr[i] = clamped_initval;
564 checkvalint = ptr[0];
571 for (i = 0; i < numval; i++)
572 ptr[i] = clamped_initval;
573 checkvalint = ptr[0];
580 for (i = 0; i < numval; i++)
581 ptr[i] = clamped_initval;
582 checkvalint = ptr[0];
589 for (i = 0; i < numval; i++)
590 ptr[i] = clamped_initval;
591 checkvalint = ptr[0];
598 for (i = 0; i < numval; i++)
599 ptr[i] = clamped_initval;
600 checkvalint = ptr[0];
607 for (i = 0; i < numval; i++)
608 ptr[i] = clamped_initval;
609 checkvaluint = ptr[0];
616 for (i = 0; i < numval; i++)
617 ptr[i] = clamped_initval;
618 checkvalfloat = ptr[0];
624 for (i = 0; i < numval; i++)
625 ptr[i] = initialvalue;
626 checkvaldouble = ptr[0];
631 rterror(
"rt_raster_generate_new_band: Unknown pixeltype %d", pixtype);
641 checkvalint, checkvaluint,
642 checkvalfloat, checkvaldouble,
648 rterror(
"rt_raster_generate_new_band: Could not add band to raster. Aborting");
655 if (numbands == oldnumbands || index == -1) {
656 rterror(
"rt_raster_generate_new_band: Could not add band to raster. Aborting");
661 if (hasnodata &&
FLT_EQ(initialvalue, nodatavalue))
int32_t rt_util_clamp_to_32BSI(double value)
uint32_t rt_util_clamp_to_32BUI(double value)
int rt_raster_add_band(rt_raster raster, rt_band band, int index)
Add band data to a raster.
int rt_raster_get_num_bands(rt_raster raster)
void rterror(const char *fmt,...)
Wrappers used for reporting errors and info.
void * rtalloc(size_t size)
Wrappers used for managing memory.
void rt_band_destroy(rt_band band)
Destroy a raster band.
uint16_t rt_util_clamp_to_16BUI(double value)
void rt_band_set_ownsdata_flag(rt_band band, int flag)
int8_t rt_util_clamp_to_8BSI(double value)
int rt_util_dbl_trunc_warning(double initialvalue, int32_t checkvalint, uint32_t checkvaluint, float checkvalfloat, double checkvaldouble, rt_pixtype pixtype)
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.
uint8_t rt_util_clamp_to_4BUI(double value)
uint8_t rt_util_clamp_to_8BUI(double value)
int rt_pixtype_size(rt_pixtype pixtype)
Return size in bytes of a value in the given pixtype.
uint8_t rt_util_clamp_to_1BB(double value)
rt_errorstate rt_band_set_isnodata_flag(rt_band band, int flag)
Set isnodata flag value.
void rtdealloc(void *mem)
uint8_t rt_util_clamp_to_2BUI(double value)
float rt_util_clamp_to_32F(double value)
uint16_t rt_raster_get_height(rt_raster raster)
uint16_t rt_raster_get_width(rt_raster raster)
int16_t rt_util_clamp_to_16BSI(double value)