#include <stdio.h>
#include <stdlib.h>
void
convert_pixels(unsigned char *pixdata, unsigned char *convertedpix,
int width, int height) {
int i, j, k;
unsigned int mask;
unsigned char temp;
for(i = 0; i < height; ++i) {
for(j = 0; j < width; ++j) {
k = 0;
temp = *(pixdata + i * width + j);
for (mask = 0x80; mask != 0; mask >>= 1) {
if (mask != 0x10 && mask != 0x01) { /* code below will be
* executed 6 times */
if (temp & mask) {
*(convertedpix + i * width + k) = 0xFF;
} else {
*(convertedpix + i * width + k) = 0;
}
++k;
}
}
}
}
}
int main(void) {
// your code goes here
size_t h, w;
unsigned char *pix, *conv_pix;
h = 100;
w = 200;
pix
= malloc(h
* w
* sizeof(unsigned char)); if (pix == NULL) {
perror("malloc failed for pix array"); }
conv_pix
= calloc(h
* w
* 6, sizeof(unsigned char)); if (conv_pix == NULL) {
perror("calloc failed for convpix array"); }
convert_pixels(pix, conv_pix, w, h);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnZvaWQKY29udmVydF9waXhlbHModW5zaWduZWQgY2hhciAqcGl4ZGF0YSwgdW5zaWduZWQgY2hhciAqY29udmVydGVkcGl4LAogICAgICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKICAgIGludCBpLCBqLCBrOwogICAgdW5zaWduZWQgaW50IG1hc2s7CiAgICB1bnNpZ25lZCBjaGFyIHRlbXA7CiAgICBmb3IoaSA9IDA7IGkgPCBoZWlnaHQ7ICsraSkgewogICAgICAgIGZvcihqID0gMDsgaiA8IHdpZHRoOyArK2opIHsKICAgICAgICAgICAgayA9IDA7CiAgICAgICAgICAgIHRlbXAgPSAqKHBpeGRhdGEgKyBpICogd2lkdGggKyBqKTsKICAgICAgICAgICAgZm9yIChtYXNrID0gMHg4MDsgbWFzayAhPSAwOyBtYXNrID4+PSAxKSB7CiAgICAgICAgICAgICAgICBpZiAobWFzayAhPSAweDEwICYmIG1hc2sgIT0gMHgwMSkgeyAvKiBjb2RlIGJlbG93IHdpbGwgYmUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBleGVjdXRlZCA2IHRpbWVzICovCiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgJiBtYXNrKSB7IAogICAgICAgICAgICAgICAgICAgICAgICAqKGNvbnZlcnRlZHBpeCArIGkgKiB3aWR0aCArIGspID0gMHhGRjsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAqKGNvbnZlcnRlZHBpeCArIGkgKiB3aWR0aCArIGspID0gMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKytrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbih2b2lkKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglzaXplX3QgaCwgdzsKCXVuc2lnbmVkIGNoYXIgKnBpeCwgKmNvbnZfcGl4OwoJaCA9IDEwMDsKCXcgPSAyMDA7CglwaXggPSBtYWxsb2MoaCAqIHcgKiBzaXplb2YodW5zaWduZWQgY2hhcikpOwoJaWYgKHBpeCA9PSBOVUxMKSB7CgkJcGVycm9yKCJtYWxsb2MgZmFpbGVkIGZvciBwaXggYXJyYXkiKTsKCX0KCWNvbnZfcGl4ID0gY2FsbG9jKGggKiB3ICogNiwgIHNpemVvZih1bnNpZ25lZCBjaGFyKSk7CglpZiAoY29udl9waXggPT0gTlVMTCkgewoJCWZyZWUocGl4KTsKCQlwZXJyb3IoImNhbGxvYyBmYWlsZWQgZm9yIGNvbnZwaXggYXJyYXkiKTsKCX0KCWNvbnZlcnRfcGl4ZWxzKHBpeCwgY29udl9waXgsIHcsIGgpOwoJZnJlZShwaXgpOwoJZnJlZShjb252X3BpeCk7CgkKCXJldHVybiAwOwp9Cg==