Fill in the cells of a band with a starting value frequently used to init with nodata value.
116 {
117 assert(band != NULL);
118 assert(
band->data.mem != NULL);
120 uint32_t width =
band->width;
121 uint32_t height =
band->height;
122 uint32_t numval = width * height;
123 void *mem =
band->data.mem;
125
126
127 int32_t checkvalint = 0;
128 uint32_t checkvaluint = 0;
129 double checkvaldouble = 0;
130 float checkvalfloat = 0;
131
132
133 if (
FLT_EQ(initval, 0.0)) {
134 memset(mem, 0, memsize);
135 return;
136 }
137
138 switch (pixtype) {
140 {
141 uint8_t *ptr = mem;
143 for (uint32_t i = 0; i < numval; i++)
144 ptr[i] = clamped_initval;
145 checkvalint = ptr[0];
146 break;
147 }
149 {
150 uint8_t *ptr = mem;
152 for (uint32_t i = 0; i < numval; i++)
153 ptr[i] = clamped_initval;
154 checkvalint = ptr[0];
155 break;
156 }
158 {
159 uint8_t *ptr = mem;
161 for (uint32_t i = 0; i < numval; i++)
162 ptr[i] = clamped_initval;
163 checkvalint = ptr[0];
164 break;
165 }
167 {
168 int8_t *ptr = mem;
170 for (uint32_t i = 0; i < numval; i++)
171 ptr[i] = clamped_initval;
172 checkvalint = ptr[0];
173 break;
174 }
176 {
177 uint8_t *ptr = mem;
179 for (uint32_t i = 0; i < numval; i++)
180 ptr[i] = clamped_initval;
181 checkvalint = ptr[0];
182 break;
183 }
185 {
186 int16_t *ptr = mem;
188 for (uint32_t i = 0; i < numval; i++)
189 ptr[i] = clamped_initval;
190 checkvalint = ptr[0];
191 break;
192 }
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 uint16_t *ptr = mem;
205 for (uint32_t i = 0; i < numval; i++)
206 ptr[i] = packed;
208 break;
209 }
211 int32_t *ptr = mem;
213 for (uint32_t i = 0; i < numval; i++)
214 ptr[i] = clamped_initval;
215 checkvalint = ptr[0];
216 break;
217 }
219 {
220 uint32_t *ptr = mem;
222 for (uint32_t i = 0; i < numval; i++)
223 ptr[i] = clamped_initval;
224 checkvaluint = ptr[0];
225 break;
226 }
228 {
229 float *ptr = mem;
231 for (uint32_t i = 0; i < numval; i++)
232 ptr[i] = clamped_initval;
233 checkvalfloat = ptr[0];
234 break;
235 }
237 {
238 double *ptr = mem;
239 for (uint32_t i = 0; i < numval; i++)
240 ptr[i] = initval;
241 checkvaldouble = ptr[0];
242 break;
243 }
244 default:
245 {
246 rterror(
"%s: Unknown pixeltype %d", __func__, pixtype);
247 return;
248 }
249 }
250
251
253 initval,
254 checkvalint, checkvaluint,
255 checkvalfloat, checkvaldouble,
256 pixtype
257 );
258
259 return;
260}
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)
float rt_util_clamp_to_16F(double value)
int32_t rt_util_clamp_to_32BSI(double value)
uint16_t rt_util_float_to_float16(float value)
float rt_util_float16_to_float(uint16_t 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.