/* * 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); } } }
unsigned encodeLgkmcnt(IsaVersion Version, unsigned Waitcnt, unsigned Lgkmcnt) { return packBits(Lgkmcnt, Waitcnt, getLgkmcntBitShift(), getLgkmcntBitWidth()); }
unsigned encodeExpcnt(IsaVersion Version, unsigned Waitcnt, unsigned Expcnt) { return packBits(Expcnt, Waitcnt, getExpcntBitShift(), getExpcntBitWidth()); }