CSharpImageLibrary.Headers.DDS_Header.DDS_PIXELFORMAT.DDS_PIXELFORMAT C# (CSharp) Method

DDS_PIXELFORMAT() public method

Build PixelFormat sub-header for a specified surface format.
public DDS_PIXELFORMAT ( ImageEngineFormat surfaceFormat, List customMasks = null ) : System
surfaceFormat ImageEngineFormat Format to base PixelHeader on.
customMasks List Custom user defined masks for colours.
return System
            public DDS_PIXELFORMAT(ImageEngineFormat surfaceFormat, List<uint> customMasks = null)
                : this()
            {
                dwSize = 32;
                dwFourCC = ParseFormatToFourCC(surfaceFormat);

                if (dwFourCC != FourCC.Unknown)
                    dwFlags = DDS_PFdwFlags.DDPF_FOURCC;

                switch (surfaceFormat)
                {
                    // Compressed formats don't need anything written here since pitch/linear size is unreliable. Why bother?
                    #region Uncompressed
                    case ImageEngineFormat.DDS_G8_L8:
                        dwFlags = DDS_PFdwFlags.DDPF_LUMINANCE;
                        dwRGBBitCount = 8;
                        dwRBitMask = 0xFF;
                        break;
                    case ImageEngineFormat.DDS_ARGB:
                        dwFlags = DDS_PFdwFlags.DDPF_ALPHAPIXELS | DDS_PFdwFlags.DDPF_RGB;
                        dwRGBBitCount = 32;
                        dwABitMask = 0xFF000000;
                        dwRBitMask = 0x00FF0000;
                        dwGBitMask = 0x0000FF00;
                        dwBBitMask = 0x000000FF;
                        break;
                    case ImageEngineFormat.DDS_V8U8:
                        dwFlags = DDS_PFdwFlags.DDPF_SIGNED;
                        dwRGBBitCount = 16;
                        dwRBitMask = 0x00FF;
                        dwGBitMask = 0xFF00;
                        break;
                    case ImageEngineFormat.DDS_A8L8:
                        dwFlags = DDS_PFdwFlags.DDPF_LUMINANCE | DDS_PFdwFlags.DDPF_ALPHAPIXELS;
                        dwRGBBitCount = 16;
                        dwABitMask = 0xFF00;
                        dwRBitMask = 0x00FF;
                        break;
                    case ImageEngineFormat.DDS_RGB:
                        dwFlags = DDS_PFdwFlags.DDPF_RGB;
                        dwRBitMask = 0xFF0000;
                        dwGBitMask = 0x00FF00;
                        dwBBitMask = 0x0000FF;
                        dwRGBBitCount = 24;
                        break;
                    case ImageEngineFormat.DDS_CUSTOM:
                        if (customMasks != null)
                        {
                            int numChannels = customMasks.Where(mask => mask != 0).Count();
                            dwABitMask = customMasks[0];
                            dwRBitMask = customMasks[1];
                            dwGBitMask = customMasks[2];
                            dwBBitMask = customMasks[3];
                            dwRGBBitCount = 8 * numChannels;

                            if (numChannels == 1)
                                dwFlags = DDS_PFdwFlags.DDPF_LUMINANCE;
                            else if (numChannels == 2)
                                dwFlags = DDS_PFdwFlags.DDPF_LUMINANCE | DDS_PFdwFlags.DDPF_ALPHAPIXELS;
                        }
                        break;
                    #endregion Uncompressed
                }
            }

Same methods

DDS_Header.DDS_PIXELFORMAT::DDS_PIXELFORMAT ( byte temp ) : System
DDS_Header.DDS_PIXELFORMAT