ReactOS  0.4.13-dev-259-g5ca9c9c
palette.h
Go to the documentation of this file.
1 #pragma once
2 
3 #ifdef _MSC_VER
4 #pragma warning(disable:4200) // zero-sized array in struct/union
5 #endif // _MSC_VER
6 
7 // Palette mode flags
9 {
10 #ifndef _WINDDI_ // Defined in ddk/winddi.h
11  PAL_INDEXED = 0x00000001, // Indexed palette
12  PAL_BITFIELDS = 0x00000002, // Bit fields used for DIB, DIB section
13  PAL_RGB = 0x00000004, // Red, green, blue
14  PAL_BGR = 0x00000008, // Blue, green, red
15  PAL_CMYK = 0x00000010, // Cyan, magenta, yellow, black
16 #endif
17  PAL_DC = 0x00000100,
18  PAL_FIXED = 0x00000200, // Can't be changed
19  PAL_FREE = 0x00000400,
20  PAL_MANAGED = 0x00000800,
21  PAL_NOSTATIC = 0x00001000,
22  PAL_MONOCHROME = 0x00002000, // Two colors only
23  PAL_BRUSHHACK = 0x00004000,
24  PAL_DIBSECTION = 0x00008000, // Used for a DIB section
25  PAL_NOSTATIC256 = 0x00010000,
26  PAL_HT = 0x00100000, // Halftone palette
27  PAL_RGB16_555 = 0x00200000, // 16-bit RGB in 555 format
28  PAL_RGB16_565 = 0x00400000, // 16-bit RGB in 565 format
29  PAL_GAMMACORRECTION = 0x00800000, // Correct colors
30 };
31 
32 typedef struct _PALETTE
33 {
34  /* Header for all gdi objects in the handle table.
35  Do not (re)move this. */
37 
40  FLONG flFlags; // PAL_INDEXED, PAL_BITFIELDS, PAL_RGB, PAL_BGR
49  HDEV hPDev;
51 } PALETTE, *PPALETTE;
52 
55 
56 #define PALETTE_UnlockPalette(pPalette) GDIOBJ_vUnlockObject((POBJ)pPalette)
57 #define PALETTE_ShareLockPalette(hpal) \
58  ((PPALETTE)GDIOBJ_ShareLockObj((HGDIOBJ)hpal, GDI_OBJECT_TYPE_PALETTE))
59 #define PALETTE_ShareUnlockPalette(ppal) \
60  GDIOBJ_vDereferenceObject(&ppal->BaseObject)
61 
62 INIT_FUNCTION
64 NTAPI
66 
68 NTAPI
71  _In_ ULONG cColors,
72  _In_opt_ const PALETTEENTRY* pEntries,
73  _In_ FLONG flRed,
74  _In_ FLONG flGreen,
75  _In_ FLONG flBlue);
76 
78 NTAPI
81  _In_ ULONG cColors,
82  _In_opt_ const PALETTEENTRY* pEntries,
83  _In_ FLONG flRed,
84  _In_ FLONG flGreen,
85  _In_ FLONG flBlue);
86 
87 VOID
90  PALETTEENTRY* lpPalE,
91  INT size);
92 
93 INT
96  PPALETTE pGdiObject,
97  INT cbCount,
99 
100 ULONG
101 NTAPI
103  PPALETTE ppal,
104  ULONG iColor);
105 
106 ULONG
107 NTAPI
109  PPALETTE ppal,
110  ULONG iColor);
111 
112 ULONG
113 NTAPI
115  PPALETTE ppal,
116  ULONG ulColor);
117 
118 VOID
119 NTAPI
121  PPALETTE ppal,
122  PULONG pulColors);
123 
124 VOID
125 NTAPI
126 PALETTE_vCleanup(PVOID ObjectBody);
127 
129 ULONG
130 CalculateShift(ULONG ulMask1, ULONG ulMask2)
131 {
132  ULONG ulShift1, ulShift2;
133  BitScanReverse(&ulShift1, ulMask1);
134  BitScanReverse(&ulShift2, ulMask2);
135  ulShift2 -= ulShift1;
136  if ((INT)ulShift2 < 0) ulShift2 += 32;
137  return ulShift2;
138 }
139 
141 ULONG
143 {
144  if (ulIndex >= ppal->NumColors) return 0;
145  return RGB(ppal->IndexedColors[ulIndex].peRed,
147  ppal->IndexedColors[ulIndex].peBlue);
148 }
149 
151 VOID
153 {
154  if (ulIndex >= ppal->NumColors) return;
155  ppal->IndexedColors[ulIndex].peRed = GetRValue(crColor);
156  ppal->IndexedColors[ulIndex].peGreen = GetGValue(crColor);
157  ppal->IndexedColors[ulIndex].peBlue = GetBValue(crColor);
158 }
159 
160 HPALETTE
161 NTAPI
163  IN LPLOGPALETTE pLogPal,
164  IN UINT cEntries);
165 
struct _PALETTE * PPALETTE
PALETTEENTRY apalColors[0]
Definition: palette.h:50
PALETTE gpalRGB
Definition: palette.c:17
#define IN
Definition: typedefs.h:38
PALETTE * gppalDefault
Definition: palette.c:17
struct _PALETTE PALETTE
PALETTE gpalBGR
Definition: palette.c:17
static int cbCount
Definition: fiber.c:42
_In_ ULONG iMode
Definition: winddi.h:3520
ULONG NTAPI PALETTE_ulGetNearestPaletteIndex(PPALETTE ppal, ULONG iColor)
ULONG ulBlueShift
Definition: palette.h:48
ULONG ulGreenShift
Definition: palette.h:47
XLATEOBJ * logicalToSystem
Definition: palette.h:39
LONG NTSTATUS
Definition: precomp.h:26
#define GetRValue(rgb)
Definition: wingdi.h:2913
PALETTEENTRY * IndexedColors
Definition: palette.h:42
ULONG ulRedShift
Definition: palette.h:46
PALOBJ PalObj
Definition: palette.h:38
#define FASTCALL
Definition: nt_native.h:50
int32_t INT
Definition: typedefs.h:56
#define _In_opt_
Definition: no_sal2.h:213
FORCEINLINE VOID PALETTE_vSetRGBColorForIndex(PPALETTE ppal, ULONG ulIndex, COLORREF crColor)
Definition: palette.h:152
#define GetGValue(rgb)
Definition: wingdi.h:2914
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
ULONG RedMask
Definition: palette.h:43
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:173
VOID FASTCALL PALETTE_ValidateFlags(PALETTEENTRY *lpPalE, INT size)
Definition: palette.c:122
#define FORCEINLINE
Definition: ntbasedef.h:221
Definition: palette.h:26
unsigned long FLONG
Definition: ntbasedef.h:373
_PALFLAGS
Definition: palette.h:8
ULONG NTAPI PALETTE_ulGetNearestIndex(PPALETTE ppal, ULONG iColor)
ULONG BlueMask
Definition: palette.h:45
PALETTE * gppalMono
Definition: palette.c:17
PPALETTE appalSurfaceDefault[]
Definition: palette.c:18
GLsizeiptr size
Definition: glext.h:5919
ULONG GreenMask
Definition: palette.h:44
FORCEINLINE ULONG PALETTE_ulGetRGBColorFromIndex(PPALETTE ppal, ULONG ulIndex)
Definition: palette.h:142
INIT_FUNCTION NTSTATUS NTAPI InitPaletteImpl(VOID)
Definition: palette.c:63
DWORD COLORREF
Definition: windef.h:285
INT FASTCALL PALETTE_GetObject(PPALETTE pGdiObject, INT cbCount, LPLOGBRUSH lpBuffer)
Definition: palette.c:244
#define RGB(r, g, b)
Definition: wingdi.h:2918
VOID NTAPI PALETTE_vGetBitMasks(PPALETTE ppal, PULONG pulColors)
Definition: palette.c:319
_In_ UINT _In_ UINT cEntries
Definition: wingdi.h:3598
#define BitScanReverse
Definition: interlocked.h:6
BASEOBJECT BaseObject
Definition: palette.h:36
HDEV hPDev
Definition: palette.h:49
ULONG NumColors
Definition: palette.h:41
FLONG flFlags
Definition: palette.h:40
#define _In_
Definition: no_sal2.h:204
HPALETTE NTAPI GreCreatePaletteInternal(IN LPLOGPALETTE pLogPal, IN UINT cEntries)
Definition: palette.c:445
ULONG ulIndex
Definition: symbols.c:92
PPALETTE NTAPI PALETTE_AllocPalette(_In_ ULONG iMode, _In_ ULONG cColors, _In_opt_ const PALETTEENTRY *pEntries, _In_ FLONG flRed, _In_ FLONG flGreen, _In_ FLONG flBlue)
Definition: palette.c:132
ULONG NTAPI PALETTE_ulGetNearestBitFieldsIndex(PPALETTE ppal, ULONG ulColor)
unsigned int * PULONG
Definition: retypes.h:1
unsigned int UINT
Definition: ndis.h:50
FORCEINLINE ULONG CalculateShift(ULONG ulMask1, ULONG ulMask2)
Definition: palette.h:130
Definition: palette.h:17
unsigned int ULONG
Definition: retypes.h:1
#define GetBValue(rgb)
Definition: wingdi.h:2915
PALETTE gpalRGB565
Definition: palette.c:17
PALETTE gpalRGB555
Definition: palette.c:17
VOID NTAPI PALETTE_vCleanup(PVOID ObjectBody)
Definition: palette.c:233
_In_ ULONG iColor
Definition: xlateobj.h:17
PPALETTE NTAPI PALETTE_AllocPalWithHandle(_In_ ULONG iMode, _In_ ULONG cColors, _In_opt_ const PALETTEENTRY *pEntries, _In_ FLONG flRed, _In_ FLONG flGreen, _In_ FLONG flBlue)
Definition: palette.c:206