17 #define TACHYON_INTERNAL 1 24 fputc((num ) & 0xFF, dfile);
25 fputc((num >> 8 ) & 0xFF, dfile);
26 fputc((num >> 16) & 0xFF, dfile);
27 fputc((num >> 24) & 0xFF, dfile);
31 fputc((num ) & 0xFF, dfile);
32 fputc((num >> 8 ) & 0xFF, dfile);
35 int writebmp(
char * filename,
int xs,
int ys,
unsigned char * img) {
39 if ((dfile = fopen(filename,
"wb")) != NULL) {
41 int imgdataoffset = 14 + 40;
43 int rowsz = (rowlen + 3) & -4;
44 int imgdatasize = rowsz * ys;
45 int filesize = imgdataoffset + imgdatasize;
46 unsigned char * rowbuf = NULL;
72 rowbuf = (
unsigned char *) malloc(rowsz);
74 memset(rowbuf, 0, rowsz);
76 for (y=0; y<ys; y++) {
77 int addr = xs * 3 * y;
81 for (i=0; i<rowlen; i+=3) {
82 rowbuf[i ] = img[addr + i + 2];
83 rowbuf[i + 1] = img[addr + i + 1];
84 rowbuf[i + 2] = img[addr + i ];
87 fwrite(rowbuf, rowsz, 1, dfile);
static void write_le_int16(FILE *dfile, int num)
Tachyon cross-platform timers, special math function wrappers, and RNGs.
static void write_le_int32(FILE *dfile, int num)
#define IMAGENOERR
no error
int writebmp(char *filename, int xs, int ys, unsigned char *img)
Tachyon public API function prototypes and declarations used to drive the ray tracing engine...