Fill in the cells of a band with a starting value frequently used to init with nodata value.
115 {
116 assert(band != NULL);
117 assert(
band->data.mem != NULL);
119 uint32_t width =
band->width;
120 uint32_t height =
band->height;
121 uint32_t numval = width * height;
122 void *mem =
band->data.mem;
124
125
126 int32_t checkvalint = 0;
127 uint32_t checkvaluint = 0;
128 double checkvaldouble = 0;
129 float checkvalfloat = 0;
130
131
132 if (
FLT_EQ(initval, 0.0)) {
133 memset(mem, 0, memsize);
134 return;
135 }
136
137 switch (pixtype) {
139 {
140 uint8_t *ptr = mem;
142 for (uint32_t i = 0; i < numval; i++)
143 ptr[i] = clamped_initval;
144 checkvalint = ptr[0];
145 break;
146 }
148 {
149 uint8_t *ptr = mem;
151 for (uint32_t i = 0; i < numval; i++)
152 ptr[i] = clamped_initval;
153 checkvalint = ptr[0];
154 break;
155 }
157 {
158 uint8_t *ptr = mem;
160 for (uint32_t i = 0; i < numval; i++)
161 ptr[i] = clamped_initval;
162 checkvalint = ptr[0];
163 break;
164 }
166 {
167 int8_t *ptr = mem;
169 for (uint32_t i = 0; i < numval; i++)
170 ptr[i] = clamped_initval;
171 checkvalint = ptr[0];
172 break;
173 }
175 {
176 uint8_t *ptr = mem;
178 for (uint32_t i = 0; i < numval; i++)
179 ptr[i] = clamped_initval;
180 checkvalint = ptr[0];
181 break;
182 }
184 {
185 int16_t *ptr = mem;
187 for (uint32_t i = 0; i < numval; i++)
188 ptr[i] = clamped_initval;
189 checkvalint = ptr[0];
190 break;
191 }
193 {
194 uint16_t *ptr = mem;
196 for (uint32_t i = 0; i < numval; i++)
197 ptr[i] = clamped_initval;
198 checkvalint = ptr[0];
199 break;
200 }
202 {
203 int32_t *ptr = mem;
205 for (uint32_t i = 0; i < numval; i++)
206 ptr[i] = clamped_initval;
207 checkvalint = ptr[0];
208 break;
209 }
211 {
212 uint32_t *ptr = mem;
214 for (uint32_t i = 0; i < numval; i++)
215 ptr[i] = clamped_initval;
216 checkvaluint = ptr[0];
217 break;
218 }
220 {
221 float *ptr = mem;
223 for (uint32_t i = 0; i < numval; i++)
224 ptr[i] = clamped_initval;
225 checkvalfloat = ptr[0];
226 break;
227 }
229 {
230 double *ptr = mem;
231 for (uint32_t i = 0; i < numval; i++)
232 ptr[i] = initval;
233 checkvaldouble = ptr[0];
234 break;
235 }
236 default:
237 {
238 rterror(
"%s: Unknown pixeltype %d", __func__, pixtype);
239 return;
240 }
241 }
242
243
245 initval,
246 checkvalint, checkvaluint,
247 checkvalfloat, checkvaldouble,
248 pixtype
249 );
250
251 return;
252}
void rterror(const char *fmt,...) __attribute__((format(printf
Wrappers used for reporting errors and info.
int8_t rt_util_clamp_to_8BSI(double value)
uint8_t rt_util_clamp_to_1BB(double value)
int32_t rt_util_clamp_to_32BSI(double value)
int rt_util_dbl_trunc_warning(double initialvalue, int32_t checkvalint, uint32_t checkvaluint, float checkvalfloat, double checkvaldouble, rt_pixtype pixtype)
uint8_t rt_util_clamp_to_2BUI(double value)
uint8_t rt_util_clamp_to_8BUI(double value)
int16_t rt_util_clamp_to_16BSI(double value)
uint8_t rt_util_clamp_to_4BUI(double value)
uint16_t rt_util_clamp_to_16BUI(double value)
uint32_t rt_util_clamp_to_32BUI(double value)
float rt_util_clamp_to_32F(double value)
int rt_pixtype_size(rt_pixtype pixtype)
Return size in bytes of a value in the given pixtype.