- for (i = 0; i < count; ++i) {
- for (ch = 0; ch < im->channels; ++ch) {
- ((double *)im->idata)[off] = Sample8ToF(vals[i].channel[ch]);
- ++off;
+ if (I_ALL_CHANNELS_WRITABLE(im)) {
+ for (i = 0; i < count; ++i) {
+ for (ch = 0; ch < im->channels; ++ch) {
+ ((double *)im->idata)[off] = Sample8ToF(vals[i].channel[ch]);
+ ++off;
+ }
+ }
+ }
+ else {
+ for (i = 0; i < count; ++i) {
+ for (ch = 0; ch < im->channels; ++ch) {
+ if (im->ch_mask & (1 << ch))
+ ((double *)im->idata)[off] = Sample8ToF(vals[i].channel[ch]);
+ ++off;
+ }