In addition to the link Philo already provided, below is info from comments in my LDView source code. Note that I didn't create any of these color schemes; I simply coded LDView to recognize them.
Notes:
Note that I believe that if you manually enter the integer value from one of the 0x2RRGGBB or 0x3RRGGBB colors into MLCad, it will display it in the right color. (In other words, calculate the big integer value, and then enter that into the color number box, instead of entering R, G, and B.) I could be wrong about this, though.
Code:
// 0x2RRGGBB = opaque RGB
// 0x3RRGGBB = transparent RGB
// 0x4RGBRGB = opaque dither
// 0x5RGBxxx = transparent dither (xxx is ignored)
// 0x6xxxRGB = transparent dither (xxx is ignored)
// 0x7xxxxxx = invisible
Notes:
- In all of the above, "x" indicates a hex digit that is completely ignored.
- 0x3RRGGBB are ostensibly 50% opaque, but they are intended to represent transparent (translucent, really) bricks, so 50% isn't necessarily an appropriate degree of opacity.
- The dither pattern used when the above "dither" colors were created was a 50/50 checkerboard.
- Combining two 12-bit colors together in a 50/50 checkerboard does not give you a 24 bits of color space.
- LDView does not use a checkerboard dither pattern. It instead averages the two input colors together (after converting them from 12 bits each to 24 bits each by multiplying each 4-bit component of the 12-bit number by 17 and then placing the result in the appropriate spot in the 24-bit number).
- For 0x4xxxxxx-0x7xxxxxx colors, the bottom two bits of the 4, 5, 6, and 7 can be interpreted as "ignore this part of the dither and treat it as transparent".
Note that I believe that if you manually enter the integer value from one of the 0x2RRGGBB or 0x3RRGGBB colors into MLCad, it will display it in the right color. (In other words, calculate the big integer value, and then enter that into the color number box, instead of entering R, G, and B.) I could be wrong about this, though.