Reactos
at master 139 lines 4.0 kB view raw
1/* 2 * Copyright (C) 2007 Google (Evan Stade) 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19#ifndef _GDIPLUSPIXELFORMATS_H 20#define _GDIPLUSPIXELFORMATS_H 21 22typedef DWORD ARGB; 23typedef INT PixelFormat; 24 25#define PixelFormatIndexed 0x00010000 26#define PixelFormatGDI 0x00020000 27#define PixelFormatAlpha 0x00040000 28#define PixelFormatPAlpha 0x00080000 29#define PixelFormatExtended 0x00100000 30#define PixelFormatCanonical 0x00200000 31 32#define PixelFormatUndefined 0 33#define PixelFormatDontCare 0 34 35#define PixelFormat1bppIndexed (1 | (1 << 8) | PixelFormatIndexed | PixelFormatGDI) 36#define PixelFormat4bppIndexed (2 | (4 << 8) | PixelFormatIndexed | PixelFormatGDI) 37#define PixelFormat8bppIndexed (3 | (8 << 8) | PixelFormatIndexed | PixelFormatGDI) 38#define PixelFormat16bppGrayScale (4 | (16 << 8) | PixelFormatExtended) 39#define PixelFormat16bppRGB555 (5 | (16 << 8) | PixelFormatGDI) 40#define PixelFormat16bppRGB565 (6 | (16 << 8) | PixelFormatGDI) 41#define PixelFormat16bppARGB1555 (7 | (16 << 8) | PixelFormatAlpha | PixelFormatGDI) 42#define PixelFormat24bppRGB (8 | (24 << 8) | PixelFormatGDI) 43#define PixelFormat32bppRGB (9 | (32 << 8) | PixelFormatGDI) 44#define PixelFormat32bppARGB (10 | (32 << 8) | PixelFormatAlpha | PixelFormatGDI | PixelFormatCanonical) 45#define PixelFormat32bppPARGB (11 | (32 << 8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatGDI) 46#define PixelFormat48bppRGB (12 | (48 << 8) | PixelFormatExtended) 47#define PixelFormat64bppARGB (13 | (64 << 8) | PixelFormatAlpha | PixelFormatCanonical | PixelFormatExtended) 48#define PixelFormat64bppPARGB (14 | (64 << 8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatExtended) 49#define PixelFormat32bppCMYK (15 | (32 << 8)) 50#define PixelFormatMax 16 51 52static inline BOOL 53IsIndexedPixelFormat(PixelFormat format) 54{ 55 return (format & PixelFormatIndexed) != 0; 56} 57 58static inline BOOL 59IsAlphaPixelFormat(PixelFormat format) 60{ 61 return (format & PixelFormatAlpha) != 0; 62} 63 64static inline BOOL 65IsCanonicalPixelFormat(PixelFormat format) 66{ 67 return (format & PixelFormatCanonical) != 0; 68} 69 70static inline BOOL 71IsExtendedPixelFormat(PixelFormat format) 72{ 73 return (format & PixelFormatExtended) != 0; 74} 75 76static inline UINT 77GetPixelFormatSize(PixelFormat format) 78{ 79 return (format >> 8) & 0xff; 80} 81 82enum PaletteFlags 83{ 84 PaletteFlagsHasAlpha = 1, 85 PaletteFlagsGrayScale = 2, 86 PaletteFlagsHalftone = 4 87}; 88 89#ifdef __cplusplus 90 91struct ColorPalette 92{ 93 public: 94 UINT Flags; 95 UINT Count; 96 ARGB Entries[1]; 97}; 98 99#else /* end of c++ typedefs */ 100 101typedef struct ColorPalette 102{ 103 UINT Flags; 104 UINT Count; 105 ARGB Entries[1]; 106} ColorPalette; 107 108#endif /* end of c typedefs */ 109 110typedef enum DitherType 111{ 112 DitherTypeNone, 113 DitherTypeSolid, 114 DitherTypeOrdered4x4, 115 DitherTypeOrdered8x8, 116 DitherTypeOrdered16x16, 117 DitherTypeSpiral4x4, 118 DitherTypeSpiral8x8, 119 DitherTypeDualSpiral4x4, 120 DitherTypeDualSpiral8x8, 121 DitherTypeErrorDiffusion, 122 DitherTypeMax 123} DitherType; 124 125typedef enum PaletteType 126{ 127 PaletteTypeCustom, 128 PaletteTypeOptimal, 129 PaletteTypeFixedBW, 130 PaletteTypeFixedHalftone8, 131 PaletteTypeFixedHalftone27, 132 PaletteTypeFixedHalftone64, 133 PaletteTypeFixedHalftone125, 134 PaletteTypeFixedHalftone216, 135 PaletteTypeFixedHalftone252, 136 PaletteTypeFixedHalftone256 137} PaletteType; 138 139#endif