54b5807fa9b3e9031968937a56830ded051c266e
[reactos.git] / reactos / subsystems / win32 / win32k / include / xlateobj.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * PURPOSE: XLATEOBJ structures and functions
5 * FILE: subsystem/win32/win32k/eng/objects.h
6 * PROGRAMER: Timo Kreuzer
7 *
8 */
9
10 struct _EXLATEOBJ;
11
12 typedef ULONG (FASTCALL *PFN_XLATE)(struct _EXLATEOBJ *pexlo, ULONG iColor);
13
14 typedef struct _EXLATEOBJ
15 {
16 XLATEOBJ xlo;
17
18 PFN_XLATE pfnXlate;
19
20 PPALETTE ppalSrc;
21 PPALETTE ppalDst;
22 PPALETTE ppalDstDc;
23
24 HANDLE hColorTransform;
25
26 union
27 {
28 ULONG aulXlate[6];
29 struct
30 {
31 ULONG ulRedMask;
32 ULONG ulGreenMask;
33 ULONG ulBlueMask;
34 ULONG ulRedShift;
35 ULONG ulGreenShift;
36 ULONG ulBlueShift;
37 };
38 };
39 } EXLATEOBJ, *PEXLATEOBJ;
40
41 PFN_XLATE
42 FORCEINLINE
43 XLATEOBJ_pfnXlate(XLATEOBJ *pxlo)
44 {
45 return ((PEXLATEOBJ)pxlo)->pfnXlate;
46 }
47
48 extern EXLATEOBJ gexloTrivial;
49
50 ULONG
51 FASTCALL
52 EXLATEOBJ_iXlateTrivial(PEXLATEOBJ pexlo, ULONG iColor);
53
54 void
55 DbgCmpXlate(XLATEOBJ *pxlo1, XLATEOBJ *pxlo2);
56
57 VOID NTAPI EXLATEOBJ_vInitialize(PEXLATEOBJ pexlo, PALETTE *ppalSrc, PALETTE *ppalDst, ULONG, ULONG, ULONG);
58 VOID NTAPI EXLATEOBJ_vInitXlateFromDCs(PEXLATEOBJ pexlo, PDC pdcSrc, PDC pdcDst);
59 VOID NTAPI EXLATEOBJ_vInitSrcMonoXlate(PEXLATEOBJ pexlo, PPALETTE ppalDst, ULONG Color0, ULONG Color1);
60 VOID NTAPI EXLATEOBJ_vCleanup(PEXLATEOBJ pexlo);