If you take a look in bmp.h, which is included as a header file to copy.c, you'll see a definition for structures named RGBTRIPLE:
typedef struct { BYTE rgbtBlue; BYTE rgbtGreen; BYTE rgbtRed; } __attribute__((__packed__)) RGBTRIPLE;
So a triple has 3 variables in it of type BYTE. BYTE is defined in the header of the same bmp.h:
#include <stdint.h> /** * Common Data Types * * The data types in this section are essentially aliases for C/C++ * primitive data types. * * Adapted from http://msdn.microsoft.com/en-us/library/cc230309.aspx. * See http://en.wikipedia.org/wiki/Stdint.h for more on stdint.h. */ typedef uint8_t BYTE;
SO: BYTE was explicitly defined as 8 bits of data via stdint.h, which is our standard idea of what a byte is anyway.
The structure called RGBTRIPLE therefore has 3 variables, each using 1 byte of space, for a total of 3 bytes.
We could change the size of an RGBTRIPLE by changing its definition in the bmp.h file, although I suspect we would also need to make some adjustments to our file/info headers.