- /**************************************************************************
- *
- * Copyright (c) 1998-2001, Microsoft Corp. All Rights Reserved.
- *
- * Module Name:
- *
- * Gdiplus Pixel Formats
- *
- * Abstract:
- *
- * GDI+ Pixel Formats
- *
- **************************************************************************/
- #ifndef _GDIPLUSPIXELFORMATS_H
- #define _GDIPLUSPIXELFORMATS_H
- typedef DWORD ARGB;
- typedef DWORDLONG ARGB64;
- #define ALPHA_SHIFT 24
- #define RED_SHIFT 16
- #define GREEN_SHIFT 8
- #define BLUE_SHIFT 0
- #define ALPHA_MASK ((ARGB) 0xff << ALPHA_SHIFT)
- // In-memory pixel data formats:
- // bits 0-7 = format index
- // bits 8-15 = pixel size (in bits)
- // bits 16-23 = flags
- // bits 24-31 = reserved
- typedef INT PixelFormat;
- #define PixelFormatIndexed 0x00010000 // Indexes into a palette
- #define PixelFormatGDI 0x00020000 // Is a GDI-supported format
- #define PixelFormatAlpha 0x00040000 // Has an alpha component
- #define PixelFormatPAlpha 0x00080000 // Pre-multiplied alpha
- #define PixelFormatExtended 0x00100000 // Extended color 16 bits/channel
- #define PixelFormatCanonical 0x00200000
- #define PixelFormatUndefined 0
- #define PixelFormatDontCare 0
- #define PixelFormat1bppIndexed (1 | ( 1 << 8) | PixelFormatIndexed | PixelFormatGDI)
- #define PixelFormat4bppIndexed (2 | ( 4 << 8) | PixelFormatIndexed | PixelFormatGDI)
- #define PixelFormat8bppIndexed (3 | ( 8 << 8) | PixelFormatIndexed | PixelFormatGDI)
- #define PixelFormat16bppGrayScale (4 | (16 << 8) | PixelFormatExtended)
- #define PixelFormat16bppRGB555 (5 | (16 << 8) | PixelFormatGDI)
- #define PixelFormat16bppRGB565 (6 | (16 << 8) | PixelFormatGDI)
- #define PixelFormat16bppARGB1555 (7 | (16 << 8) | PixelFormatAlpha | PixelFormatGDI)
- #define PixelFormat24bppRGB (8 | (24 << 8) | PixelFormatGDI)
- #define PixelFormat32bppRGB (9 | (32 << 8) | PixelFormatGDI)
- #define PixelFormat32bppARGB (10 | (32 << 8) | PixelFormatAlpha | PixelFormatGDI | PixelFormatCanonical)
- #define PixelFormat32bppPARGB (11 | (32 << 8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatGDI)
- #define PixelFormat48bppRGB (12 | (48 << 8) | PixelFormatExtended)
- #define PixelFormat64bppARGB (13 | (64 << 8) | PixelFormatAlpha | PixelFormatCanonical | PixelFormatExtended)
- #define PixelFormat64bppPARGB (14 | (64 << 8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatExtended)
- #define PixelFormatMax 15
- inline UINT
- GetPixelFormatSize(
- PixelFormat pixfmt
- )
- {
- return (pixfmt >> 8) & 0xff;
- }
- inline BOOL
- IsIndexedPixelFormat(
- PixelFormat pixfmt
- )
- {
- return (pixfmt & PixelFormatIndexed) != 0;
- }
- inline BOOL
- IsAlphaPixelFormat(
- PixelFormat pixfmt
- )
- {
- return (pixfmt & PixelFormatAlpha) != 0;
- }
- inline BOOL
- IsExtendedPixelFormat(
- PixelFormat pixfmt
- )
- {
- return (pixfmt & PixelFormatExtended) != 0;
- }
- //--------------------------------------------------------------------------
- // Determine if the Pixel Format is Canonical format:
- // PixelFormat32bppARGB
- // PixelFormat32bppPARGB
- // PixelFormat64bppARGB
- // PixelFormat64bppPARGB
- //--------------------------------------------------------------------------
- inline BOOL
- IsCanonicalPixelFormat(
- PixelFormat pixfmt
- )
- {
- return (pixfmt & PixelFormatCanonical) != 0;
- }
- enum PaletteFlags
- {
- PaletteFlagsHasAlpha = 0x0001,
- PaletteFlagsGrayScale = 0x0002,
- PaletteFlagsHalftone = 0x0004
- };
- struct ColorPalette
- {
- public:
- UINT Flags; // Palette flags
- UINT Count; // Number of color entries
- ARGB Entries[1]; // Palette color entries
- };
- #endif