[INTRIN]
[reactos.git] / reactos / win32ss / drivers / displays / framebufacc / framebufacc.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 along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 */
20
21 #pragma once
22
23 #include <stdarg.h>
24 #include <windef.h>
25 #include <guiddef.h>
26 #include <wingdi.h>
27 #include <winddi.h>
28 #include <winioctl.h>
29 #include <ntddvdeo.h>
30
31
32 //#define EXPERIMENTAL_ACC_SUPPORT
33
34 typedef struct _PDEV
35 {
36 /* Driver stuff */
37 HANDLE hDriver;
38 HDEV hDevEng;
39 HSURF hSurfEng;
40 ULONG dwHooks;
41
42 /* Screen Data */
43 ULONG ModeIndex;
44 ULONG ScreenWidth;
45 ULONG ScreenHeight;
46 ULONG ScreenDelta;
47 BYTE BitsPerPixel;
48 ULONG RedMask;
49 ULONG GreenMask;
50 ULONG BlueMask;
51 BYTE PaletteShift;
52 PVOID ScreenPtr;
53
54 /* Vitual desktop stuff */
55 POINTL ScreenOffsetXY;
56
57 /* Palette data */
58 HPALETTE DefaultPalette;
59 PALETTEENTRY *PaletteEntries;
60
61 /* hw mouse acclartions support */
62 VIDEO_POINTER_CAPABILITIES PointerCapabilities;
63 PVIDEO_POINTER_ATTRIBUTES pPointerAttributes;
64 ULONG PointerAttributesSize;
65 POINTL PointerHotSpot;
66 BOOL HwMouseActive;
67
68 #ifdef EXPERIMENTAL_MOUSE_CURSOR_SUPPORT
69 XLATEOBJ *PointerXlateObject;
70 HSURF PointerColorSurface;
71 HSURF PointerMaskSurface;
72 HSURF PointerSaveSurface;
73
74 #endif
75
76 /* DirectX Support */
77 DWORD iDitherFormat;
78 ULONG MemHeight;
79 ULONG MemWidth;
80 DWORD dwHeap;
81 VIDEOMEMORY* pvmList;
82 BOOL bDDInitialized;
83 DDPIXELFORMAT ddpfDisplay;
84
85 /* System Cached data */
86 PVOID pVideoMemCache;
87 PVOID pRealVideoMem;
88
89 /* Avail Video memory from Current Screen and the end range */
90 ULONG VideoMemSize;
91
92 } PDEV, *PPDEV;
93
94
95
96
97 #define DEVICE_NAME L"framebuf"
98 #define ALLOC_TAG 'FUBF'
99
100
101 DHPDEV APIENTRY
102 DrvEnablePDEV(
103 IN DEVMODEW *pdm,
104 IN LPWSTR pwszLogAddress,
105 IN ULONG cPat,
106 OUT HSURF *phsurfPatterns,
107 IN ULONG cjCaps,
108 OUT ULONG *pdevcaps,
109 IN ULONG cjDevInfo,
110 OUT DEVINFO *pdi,
111 IN HDEV hdev,
112 IN LPWSTR pwszDeviceName,
113 IN HANDLE hDriver);
114
115 VOID APIENTRY
116 DrvCompletePDEV(
117 IN DHPDEV dhpdev,
118 IN HDEV hdev);
119
120 VOID APIENTRY
121 DrvDisablePDEV(
122 IN DHPDEV dhpdev);
123
124 HSURF APIENTRY
125 DrvEnableSurface(
126 IN DHPDEV dhpdev);
127
128 VOID APIENTRY
129 DrvDisableSurface(
130 IN DHPDEV dhpdev);
131
132 BOOL APIENTRY
133 DrvAssertMode(
134 IN DHPDEV dhpdev,
135 IN BOOL bEnable);
136
137 ULONG APIENTRY
138 DrvGetModes(
139 IN HANDLE hDriver,
140 IN ULONG cjSize,
141 OUT DEVMODEW *pdm);
142
143 BOOL APIENTRY
144 DrvSetPalette(
145 IN DHPDEV dhpdev,
146 IN PALOBJ *ppalo,
147 IN FLONG fl,
148 IN ULONG iStart,
149 IN ULONG cColors);
150
151 ULONG APIENTRY
152 DrvSetPointerShape(
153 IN SURFOBJ *pso,
154 IN SURFOBJ *psoMask,
155 IN SURFOBJ *psoColor,
156 IN XLATEOBJ *pxlo,
157 IN LONG xHot,
158 IN LONG yHot,
159 IN LONG x,
160 IN LONG y,
161 IN RECTL *prcl,
162 IN FLONG fl);
163
164 VOID APIENTRY
165 DrvMovePointer(
166 IN SURFOBJ *pso,
167 IN LONG x,
168 IN LONG y,
169 IN RECTL *prcl);
170
171 BOOL
172 IntInitScreenInfo(
173 PPDEV ppdev,
174 LPDEVMODEW pDevMode,
175 PGDIINFO pGdiInfo,
176 PDEVINFO pDevInfo);
177
178 BOOL
179 IntInitDefaultPalette(
180 PPDEV ppdev,
181 PDEVINFO pDevInfo);
182
183 BOOL APIENTRY
184 IntSetPalette(
185 IN DHPDEV dhpdev,
186 IN PPALETTEENTRY ppalent,
187 IN ULONG iStart,
188 IN ULONG cColors);
189
190 BOOL
191 CopyMonoPointer(PPDEV ppdev,
192 SURFOBJ *pso);
193
194 BOOL
195 CopyColorPointer(PPDEV ppdev,
196 SURFOBJ *psoMask,
197 SURFOBJ *psoColor,
198 XLATEOBJ *pxlo);