Annotation of generator/main/dib.c, revision 1.1.1.1

1.1       root        1: /* Generator is (c) James Ponder, 1997-2001 http://www.squish.net/generator/ */
                      2: 
                      3: #include <assert.h>
                      4: #include <stdlib.h>
                      5: 
                      6: #include "generator.h"
                      7: 
                      8: #include "dib.h"
                      9: 
                     10: /* From http://www.jmcgowan.com/avitech.html */
                     11: 
                     12: /*
                     13:  * The DIB files have a standard header that identifies the format, size,
                     14:  * color palette (if applicable) of the bitmapped image.  The header
                     15:  * is a BITMAPINFO structure.
                     16:  * 
                     17:  * typedef struct tagBITMAPINFO {
                     18:  *     BITMAPINFOHEADER    bmiHeader;
                     19:  *     RGBQUAD             bmiColors[1];
                     20:  * } BITMAPINFO;
                     21:  * 
                     22:  * The BITMAPINFOHEADER is a structure of the form:
                     23:  * 
                     24:  * typedef struct tagBITMAPINFOHEADER{ // bmih 
                     25:  *    DWORD  biSize; 
                     26:  *    LONG   biWidth; 
                     27:  *    LONG   biHeight; 
                     28:  *    WORD   biPlanes; 
                     29:  *    WORD   biBitCount 
                     30:  *    DWORD  biCompression; // a DIB can be compressed using run length encoding
                     31:  *    DWORD  biSizeImage; 
                     32:  *    LONG   biXPelsPerMeter; 
                     33:  *    LONG   biYPelsPerMeter; 
                     34:  *    DWORD  biClrUsed; 
                     35:  *    DWORD  biClrImportant; 
                     36:  * } BITMAPINFOHEADER; 
                     37:  *  
                     38:  * bmiColors[1] is the first entry in an optional color palette or color
                     39:  * table of RGBQUAD data structures.  True color (24 bit RGB) images
                     40:  * do not need a color table.  4 and 8 bit color images use a color table.
                     41:  * 
                     42:  * typedef struct tagRGBQUAD { // rgbq 
                     43:  *     BYTE    rgbBlue; 
                     44:  *     BYTE    rgbGreen; 
                     45:  *     BYTE    rgbRed; 
                     46:  *     BYTE    rgbReserved; // always zero
                     47:  * } RGBQUAD; 
                     48:  *  
                     49:  * A DIB consists of
                     50:  * 
                     51:  *   (BITMAPINFOHEADER)(optional color table of RGBQUAD's)(data for the
                     52:  * bitmapped image)
                     53:  * 
                     54:  */
                     55: 
                     56: /*
                     57:  * Other useful links:
                     58:  * http://www.cwi.nl/ftp/audio/RIFF-format
                     59:  *
                     60:  */
                     61: 
                     62: void dib_setheader(t_bmih *bmih, uint32 x, uint32 y)
                     63: {
                     64:   uint8 pad = 4 - ((x * 3) & 3); /* must align to 32 bits (4 bytes) */
                     65: 
                     66:   if (pad == 4)
                     67:     pad = 0; 
                     68:   bmih->biSize = sizeof(t_bmih);
                     69:   bmih->biWidth = x;
                     70:   bmih->biHeight = y;
                     71:   bmih->biPlanes = 1;
                     72:   bmih->biBitCount = 24;
                     73:   bmih->biCompression = 0; /* BI_RGB */
                     74:   bmih->biSizeImage = ((x * 3) + pad) * y;
                     75:   bmih->biXPelsPerMeter = 0;
                     76:   bmih->biYPelsPerMeter = 0;
                     77:   bmih->biClrUsed = 0; /* no palette in 24 bit mode */
                     78:   bmih->biClrImportant = 0; /* no palette in 24 bit mode */
                     79:   assert(bmih->biSize == 40);
                     80: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.