1 /*
2 * gdipluspixelformats.h
3 *
4 * GDI+ pixel formats
5 *
6 * This file is part of the w32api package.
7 *
8 * Contributors:
9 * Created by Markus Koenig <markus@stber-koenig.de>
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23 #ifndef __GDIPLUS_PIXELFORMATS_H
24 #define __GDIPLUS_PIXELFORMATS_H
25 #if __GNUC__ >=3
26 #pragma GCC system_header
27 #endif
28
29 typedef DWORD ARGB;
30 typedef INT PixelFormat;
31
32 #define PixelFormatIndexed ((INT) 0x00010000)
33 #define PixelFormatGDI ((INT) 0x00020000)
34 #define PixelFormatAlpha ((INT) 0x00040000)
35 #define PixelFormatPAlpha ((INT) 0x00080000)
36 #define PixelFormatExtended ((INT) 0x00100000)
37 #define PixelFormatCanonical ((INT) 0x00200000)
38 #define PixelFormatUndefined ((INT) 0)
39 #define PixelFormatDontCare ((INT) 0)
40 #define PixelFormat1bppIndexed ((INT) \
41 (1 | (1<<8) | PixelFormatIndexed | PixelFormatGDI))
42 #define PixelFormat4bppIndexed ((INT) \
43 (2 | (4<<8) | PixelFormatIndexed | PixelFormatGDI))
44 #define PixelFormat8bppIndexed ((INT) \
45 (3 | (8<<8) | PixelFormatIndexed | PixelFormatGDI))
46 #define PixelFormat16bppGrayScale ((INT) \
47 (4 | (16<<8) | PixelFormatExtended))
48 #define PixelFormat16bppRGB555 ((INT) \
49 (5 | (16<<8) | PixelFormatGDI))
50 #define PixelFormat16bppRGB565 ((INT) \
51 (6 | (16<<8) | PixelFormatGDI))
52 #define PixelFormat16bppARGB1555 ((INT) \
53 (7 | (16<<8) | PixelFormatAlpha | PixelFormatGDI))
54 #define PixelFormat24bppRGB ((INT) \
55 (8 | (24<<8) | PixelFormatGDI))
56 #define PixelFormat32bppRGB ((INT) \
57 (9 | (32<<8) | PixelFormatGDI))
58 #define PixelFormat32bppARGB ((INT) \
59 (10 | (32<<8) | PixelFormatAlpha | PixelFormatGDI | PixelFormatCanonical))
60 #define PixelFormat32bppPARGB ((INT) \
61 (11 | (32<<8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatGDI))
62 #define PixelFormat48bppRGB ((INT) \
63 (12 | (48<<8) | PixelFormatExtended))
64 #define PixelFormat64bppARGB ((INT) \
65 (13 | (64<<8) | PixelFormatAlpha | PixelFormatCanonical | PixelFormatExtended))
66 #define PixelFormat64bppPARGB ((INT) \
67 (14 | (64<<8) | PixelFormatAlpha | PixelFormatPAlpha | PixelFormatExtended))
68 #define PixelFormatMax ((INT) 15)
69
70 typedef enum PaletteFlags {
71 PaletteFlagsHasAlpha = 1,
72 PaletteFlagsGrayScale = 2,
73 PaletteFlagsHalftone = 4
74 } PaletteFlags;
75
76 typedef enum PaletteType {
77 PaletteTypeCustom = 0,
78 PaletteTypeOptimal = 1,
79 PaletteTypeFixedBW = 2,
80 PaletteTypeFixedHalftone8 = 3,
81 PaletteTypeFixedHalftone27 = 4,
82 PaletteTypeFixedHalftone64 = 5,
83 PaletteTypeFixedHalftone125 = 6,
84 PaletteTypeFixedHalftone216 = 7,
85 PaletteTypeFixedHalftone252 = 8,
86 PaletteTypeFixedHalftone256 = 9
87 } PaletteType;
88
89 typedef struct ColorPalette {
90 UINT Flags;
91 UINT Count;
92 ARGB Entries[1];
93 } ColorPalette;
94
GetPixelFormatSize(PixelFormat pixfmt)95 static __inline__ UINT GetPixelFormatSize(PixelFormat pixfmt)
96 {
97 return (((UINT) pixfmt) & 0xff00U) >> 8;
98 }
99
IsAlphaPixelFormat(PixelFormat pixfmt)100 static __inline__ BOOL IsAlphaPixelFormat(PixelFormat pixfmt)
101 {
102 return (pixfmt & PixelFormatAlpha) != 0;
103 }
104
IsCanonicalPixelFormat(PixelFormat pixfmt)105 static __inline__ BOOL IsCanonicalPixelFormat(PixelFormat pixfmt)
106 {
107 return (pixfmt & PixelFormatCanonical) != 0;
108 }
109
IsExtendedPixelFormat(PixelFormat pixfmt)110 static __inline__ BOOL IsExtendedPixelFormat(PixelFormat pixfmt)
111 {
112 return (pixfmt & PixelFormatExtended) != 0;
113 }
114
IsIndexedPixelFormat(PixelFormat pixfmt)115 static __inline__ BOOL IsIndexedPixelFormat(PixelFormat pixfmt)
116 {
117 return (pixfmt & PixelFormatIndexed) != 0;
118 }
119
120 #endif /* __GDIPLUS_PIXELFORMATS_H */
121