|
- /**************************************************************************\
- *
- * Copyright (c) 1998-2000, Microsoft Corp. All Rights Reserved.
- *
- * Module Name:
- *
- * Gdiplus pixel formats
- *
- * Abstract:
- *
- * Definitions for color types, palettes, pixel format IDs.
- *
- \**************************************************************************/
-
- #ifndef _GDIPLUSPIXELFORMATS_H
- #define _GDIPLUSPIXELFORMATS_H
-
- /*
- * 32-bit and 64-bit ARGB pixel value
- */
-
- 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
- */
-
- #ifndef DCR_USE_NEW_105760
-
- enum PixelFormat
- {
- PixelFormatIndexed = 0x00010000, // Indexes into a palette
- PixelFormatGDI = 0x00020000, // Is a GDI-supported format
- PixelFormatAlpha = 0x00040000, // Has an alpha component
- PixelFormatPAlpha = 0x00080000, // Uses pre-multiplied alpha
- PixelFormatExtended = 0x00100000, // Uses extended color (16 bits per channel)
- PixelFormatCanonical = 0x00200000, // ?
-
- PixelFormatUndefined = 0,
- PixelFormatDontCare = 0,
-
- PixelFormat1bppIndexed = 1 | ( 1 << 8) | PixelFormatIndexed
- | PixelFormatGDI,
- PixelFormat4bppIndexed = 2 | ( 4 << 8) | PixelFormatIndexed
- | PixelFormatGDI,
- PixelFormat8bppIndexed = 3 | ( 8 << 8) | PixelFormatIndexed
- | PixelFormatGDI,
- PixelFormat16bppGrayScale = 4 | (16 << 8) | PixelFormatExtended,
- PixelFormat16bppRGB555 = 5 | (16 << 8) | PixelFormatGDI,
- PixelFormat16bppRGB565 = 6 | (16 << 8) | PixelFormatGDI,
- PixelFormat16bppARGB1555 = 7 | (16 << 8) | PixelFormatAlpha
- | PixelFormatGDI,
- PixelFormat24bppRGB = 8 | (24 << 8) | PixelFormatGDI,
- PixelFormat32bppRGB = 9 | (32 << 8) | PixelFormatGDI,
- PixelFormat32bppARGB = 10 | (32 << 8) | PixelFormatAlpha
- | PixelFormatGDI
- | PixelFormatCanonical,
- PixelFormat32bppPARGB = 11 | (32 << 8) | PixelFormatAlpha
- | PixelFormatPAlpha
- | PixelFormatGDI,
- PixelFormat48bppRGB = 12 | (48 << 8) | PixelFormatExtended,
- PixelFormat64bppARGB = 13 | (64 << 8) | PixelFormatAlpha
- | PixelFormatCanonical
- | PixelFormatExtended,
- PixelFormat64bppPARGB = 14 | (64 << 8) | PixelFormatAlpha
- | PixelFormatPAlpha
- | PixelFormatExtended,
- PixelFormat24bppBGR = 15 | (24 << 8) | PixelFormatGDI,
- PixelFormatMax = 16
- };
-
- #else
-
- 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 // Uses pre-multiplied alpha
- #define PixelFormatExtended 0x00100000 // Uses extended color (16 bits per 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
-
- #endif
-
-
- /*
- * Return the pixel size for the specified format (in bits)
- */
-
- inline UINT
- GetPixelFormatSize(
- PixelFormat pixfmt
- )
- {
- return (pixfmt >> 8) & 0xff;
- }
-
- /*
- * Determine if the specified pixel format is an indexed color format
- */
-
- inline BOOL
- IsIndexedPixelFormat(
- PixelFormat pixfmt
- )
- {
- return (pixfmt & PixelFormatIndexed) != 0;
- }
-
- /*
- * Determine if the pixel format can have alpha channel
- */
-
- inline BOOL
- IsAlphaPixelFormat(
- PixelFormat pixfmt
- )
- {
- return (pixfmt & PixelFormatAlpha) != 0;
- }
-
- /*
- * Determine if the pixel format is an extended format,
- * i.e. supports 16-bit per channel
- */
-
- 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;
- }
-
- /*
- * Color palette
- * palette entries are limited to 32bpp ARGB pixel format
- */
-
- 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
|