e66c756a6c28916296d6950093625a7c651b8cd1
[reactos.git] / reactos / drivers / video / displays / framebuf / framebuf.h
1 /*
2 * ReactOS Generic Framebuffer display driver
3 *
4 * Copyright (C) 2004 Filip Navara
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 */
20
21 #ifndef FRAMEBUF_H
22 #define FRAMEBUF_H
23
24 #include <stdarg.h>
25 #include <windef.h>
26 #include <guiddef.h>
27 #include <wingdi.h>
28 #include <winddi.h>
29 #include <winioctl.h>
30 #include <ntddvdeo.h>
31
32 //#define EXPERIMENTAL_MOUSE_CURSOR_SUPPORT
33
34 typedef struct _PDEV
35 {
36 HANDLE hDriver;
37 HDEV hDevEng;
38 HSURF hSurfEng;
39 ULONG ModeIndex;
40 ULONG ScreenWidth;
41 ULONG ScreenHeight;
42 ULONG ScreenDelta;
43 BYTE BitsPerPixel;
44 ULONG RedMask;
45 ULONG GreenMask;
46 ULONG BlueMask;
47 BYTE PaletteShift;
48 PVOID ScreenPtr;
49 HPALETTE DefaultPalette;
50 PALETTEENTRY *PaletteEntries;
51
52 #ifdef EXPERIMENTAL_MOUSE_CURSOR_SUPPORT
53 VIDEO_POINTER_ATTRIBUTES PointerAttributes;
54 XLATEOBJ *PointerXlateObject;
55 HSURF PointerColorSurface;
56 HSURF PointerMaskSurface;
57 HSURF PointerSaveSurface;
58 POINTL PointerHotSpot;
59 #endif
60
61 /* DirectX Support */
62 DWORD iDitherFormat;
63 ULONG MemHeight;
64 ULONG MemWidth;
65 DWORD dwHeap;
66 VIDEOMEMORY* pvmList;
67 BOOL bDDInitialized;
68 DDPIXELFORMAT ddpfDisplay;
69 } PDEV, *PPDEV;
70
71 #define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
72
73 #define DEVICE_NAME L"framebuf"
74 #define ALLOC_TAG TAG('F','B','U','F')
75
76
77 DHPDEV APIENTRY
78 DrvEnablePDEV(
79 IN DEVMODEW *pdm,
80 IN LPWSTR pwszLogAddress,
81 IN ULONG cPat,
82 OUT HSURF *phsurfPatterns,
83 IN ULONG cjCaps,
84 OUT ULONG *pdevcaps,
85 IN ULONG cjDevInfo,
86 OUT DEVINFO *pdi,
87 IN HDEV hdev,
88 IN LPWSTR pwszDeviceName,
89 IN HANDLE hDriver);
90
91 VOID APIENTRY
92 DrvCompletePDEV(
93 IN DHPDEV dhpdev,
94 IN HDEV hdev);
95
96 VOID APIENTRY
97 DrvDisablePDEV(
98 IN DHPDEV dhpdev);
99
100 HSURF APIENTRY
101 DrvEnableSurface(
102 IN DHPDEV dhpdev);
103
104 VOID APIENTRY
105 DrvDisableSurface(
106 IN DHPDEV dhpdev);
107
108 BOOL APIENTRY
109 DrvAssertMode(
110 IN DHPDEV dhpdev,
111 IN BOOL bEnable);
112
113 ULONG APIENTRY
114 DrvGetModes(
115 IN HANDLE hDriver,
116 IN ULONG cjSize,
117 OUT DEVMODEW *pdm);
118
119 BOOL APIENTRY
120 DrvSetPalette(
121 IN DHPDEV dhpdev,
122 IN PALOBJ *ppalo,
123 IN FLONG fl,
124 IN ULONG iStart,
125 IN ULONG cColors);
126
127 ULONG APIENTRY
128 DrvSetPointerShape(
129 IN SURFOBJ *pso,
130 IN SURFOBJ *psoMask,
131 IN SURFOBJ *psoColor,
132 IN XLATEOBJ *pxlo,
133 IN LONG xHot,
134 IN LONG yHot,
135 IN LONG x,
136 IN LONG y,
137 IN RECTL *prcl,
138 IN FLONG fl);
139
140 VOID APIENTRY
141 DrvMovePointer(
142 IN SURFOBJ *pso,
143 IN LONG x,
144 IN LONG y,
145 IN RECTL *prcl);
146
147 BOOL
148 IntInitScreenInfo(
149 PPDEV ppdev,
150 LPDEVMODEW pDevMode,
151 PGDIINFO pGdiInfo,
152 PDEVINFO pDevInfo);
153
154 BOOL
155 IntInitDefaultPalette(
156 PPDEV ppdev,
157 PDEVINFO pDevInfo);
158
159 BOOL APIENTRY
160 IntSetPalette(
161 IN DHPDEV dhpdev,
162 IN PPALETTEENTRY ppalent,
163 IN ULONG iStart,
164 IN ULONG cColors);
165
166 #endif /* FRAMEBUF_H */