Beispiel #1
0
/*
 * Write the contents of param pbm to FILE pointer fp.
 */
void pbm_write(FILE* fp, pbm_t* pbm)
{
    char header[CHAR_BUF];
    memset(header, '\0', sizeof(header));

    sprintf(header, "P4\n%d %d\n", pbm->width, pbm->height);
    fputs(header, fp);

    int k = 0;
    int bitArr[8] = {0, 0, 0, 0, 0, 0, 0, 0};

    for (int i = 0; i < pbm->height; ++i) {
        for (int j = 0; j < pbm->width + pbm->pad; j += 8) {
            bitArr[0] = pbm->buf[k++];
            bitArr[1] = pbm->buf[k++];
            bitArr[2] = pbm->buf[k++];
            bitArr[3] = pbm->buf[k++];
            bitArr[4] = pbm->buf[k++];
            bitArr[5] = pbm->buf[k++];
            bitArr[6] = pbm->buf[k++];
            bitArr[7] = pbm->buf[k++];

            uint8_t byte = packBits(bitArr);
            fwrite(&byte, 1, 1, fp);
        }
    }
}
Beispiel #2
0
unsigned encodeLgkmcnt(IsaVersion Version, unsigned Waitcnt, unsigned Lgkmcnt) {
  return packBits(Lgkmcnt, Waitcnt, getLgkmcntBitShift(), getLgkmcntBitWidth());
}
Beispiel #3
0
unsigned encodeExpcnt(IsaVersion Version, unsigned Waitcnt, unsigned Expcnt) {
  return packBits(Expcnt, Waitcnt, getExpcntBitShift(), getExpcntBitWidth());
}