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