- Move from using include guards to pragma once.
[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 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 //#define EXPERIMENTAL_MOUSE_CURSOR_SUPPORT
32
33 typedef struct _PDEV
34 {
35 HANDLE hDriver;
36 HDEV hDevEng;
37 HSURF hSurfEng;
38 ULONG ModeIndex;
39 ULONG ScreenWidth;
40 ULONG ScreenHeight;
41 ULONG ScreenDelta;
42 BYTE BitsPerPixel;
43 ULONG RedMask;
44 ULONG GreenMask;
45 ULONG BlueMask;
46 BYTE PaletteShift;
47 PVOID ScreenPtr;
48 HPALETTE DefaultPalette;
49 PALETTEENTRY *PaletteEntries;
50
51 #ifdef EXPERIMENTAL_MOUSE_CURSOR_SUPPORT
52 VIDEO_POINTER_ATTRIBUTES PointerAttributes;
53 XLATEOBJ *PointerXlateObject;
54 HSURF PointerColorSurface;
55 HSURF PointerMaskSurface;
56 HSURF PointerSaveSurface;
57 POINTL PointerHotSpot;
58 #endif
59
60 /* DirectX Support */
61 DWORD iDitherFormat;
62 ULONG MemHeight;
63 ULONG MemWidth;
64 DWORD dwHeap;
65 VIDEOMEMORY* pvmList;
66 BOOL bDDInitialized;
67 DDPIXELFORMAT ddpfDisplay;
68 } PDEV, *PPDEV;
69
70 #define DEVICE_NAME L"framebuf"
71 #define ALLOC_TAG 'FUBF'
72
73
74 DHPDEV APIENTRY
75 DrvEnablePDEV(
76 IN DEVMODEW *pdm,
77 IN LPWSTR pwszLogAddress,
78 IN ULONG cPat,
79 OUT HSURF *phsurfPatterns,
80 IN ULONG cjCaps,
81 OUT ULONG *pdevcaps,
82 IN ULONG cjDevInfo,
83 OUT DEVINFO *pdi,
84 IN HDEV hdev,
85 IN LPWSTR pwszDeviceName,
86 IN HANDLE hDriver);
87
88 VOID APIENTRY
89 DrvCompletePDEV(
90 IN DHPDEV dhpdev,
91 IN HDEV hdev);
92
93 VOID APIENTRY
94 DrvDisablePDEV(
95 IN DHPDEV dhpdev);
96
97 HSURF APIENTRY
98 DrvEnableSurface(
99 IN DHPDEV dhpdev);
100
101 VOID APIENTRY
102 DrvDisableSurface(
103 IN DHPDEV dhpdev);
104
105 BOOL APIENTRY
106 DrvAssertMode(
107 IN DHPDEV dhpdev,
108 IN BOOL bEnable);
109
110 ULONG APIENTRY
111 DrvGetModes(
112 IN HANDLE hDriver,
113 IN ULONG cjSize,
114 OUT DEVMODEW *pdm);
115
116 BOOL APIENTRY
117 DrvSetPalette(
118 IN DHPDEV dhpdev,
119 IN PALOBJ *ppalo,
120 IN FLONG fl,
121 IN ULONG iStart,
122 IN ULONG cColors);
123
124 ULONG APIENTRY
125 DrvSetPointerShape(
126 IN SURFOBJ *pso,
127 IN SURFOBJ *psoMask,
128 IN SURFOBJ *psoColor,
129 IN XLATEOBJ *pxlo,
130 IN LONG xHot,
131 IN LONG yHot,
132 IN LONG x,
133 IN LONG y,
134 IN RECTL *prcl,
135 IN FLONG fl);
136
137 VOID APIENTRY
138 DrvMovePointer(
139 IN SURFOBJ *pso,
140 IN LONG x,
141 IN LONG y,
142 IN RECTL *prcl);
143
144 BOOL
145 IntInitScreenInfo(
146 PPDEV ppdev,
147 LPDEVMODEW pDevMode,
148 PGDIINFO pGdiInfo,
149 PDEVINFO pDevInfo);
150
151 BOOL
152 IntInitDefaultPalette(
153 PPDEV ppdev,
154 PDEVINFO pDevInfo);
155
156 BOOL APIENTRY
157 IntSetPalette(
158 IN DHPDEV dhpdev,
159 IN PPALETTEENTRY ppalent,
160 IN ULONG iStart,
161 IN ULONG cColors);