[AMSTREAM] Sync with Wine Staging 3.9. CORE-14656
[reactos.git] / dll / directx / ddraw / Ddraw / callbacks_dd_hel.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS DirectX
4 * FILE: dll/directx/ddraw/Ddraw/callbacks_dd_hel.c
5 * PURPOSE: HEL Callbacks for Direct Draw
6 * PROGRAMMER: Magnus Olsen
7 *
8 */
9
10 #include "rosdraw.h"
11
12
13 extern DDPIXELFORMAT pixelformats[];
14 extern DWORD pixelformatsCount;
15
16 /*
17 * Direct Draw Callbacks
18 */
19
20 DWORD CALLBACK HelDdDestroyDriver(LPDDHAL_DESTROYDRIVERDATA lpDestroyDriver)
21 {
22 DX_STUB;
23 }
24
25 DWORD CALLBACK HelDdCreateSurface(LPDDHAL_CREATESURFACEDATA lpCreateSurface)
26 {
27 DX_STUB;
28 }
29
30
31 DWORD CALLBACK HelDdSetColorKey(LPDDHAL_DRVSETCOLORKEYDATA lpDrvSetColorKey)
32 {
33 DX_STUB;
34 }
35
36
37 DWORD CALLBACK HelDdSetMode(LPDDHAL_SETMODEDATA SetMode)
38 {
39 DEVMODE DevMode;
40
41 DX_STUB_str("in hel");
42
43 DevMode.dmSize = (WORD)sizeof(DEVMODE);
44 DevMode.dmDriverExtra = 0;
45
46 SetMode->ddRVal = DDERR_UNSUPPORTEDMODE;
47
48 if (EnumDisplaySettingsEx(NULL, SetMode->dwModeIndex, &DevMode, 0 ) != 0)
49 {
50
51
52 if (ChangeDisplaySettings(&DevMode, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
53 {
54 DX_STUB_str("FAIL");
55 SetMode->ddRVal = DDERR_UNSUPPORTEDMODE;
56 }
57 else
58 {
59 DX_STUB_str("OK");
60 SetMode->ddRVal = DD_OK;
61 }
62 }
63
64 return DDHAL_DRIVER_HANDLED;
65 }
66
67 DWORD CALLBACK HelDdWaitForVerticalBlank(LPDDHAL_WAITFORVERTICALBLANKDATA lpWaitForVerticalBlank)
68 {
69 DX_STUB;
70 }
71
72 DWORD CALLBACK HelDdCanCreateSurface(LPDDHAL_CANCREATESURFACEDATA lpCanCreateSurface)
73 {
74 DX_STUB;
75 }
76
77 DWORD CALLBACK HelDdCreatePalette(LPDDHAL_CREATEPALETTEDATA lpCreatePalette)
78 {
79 DDRAWI_DDRAWPALETTE_GBL* ddPalGbl = lpCreatePalette->lpDDPalette;
80 LOGPALETTE* logPal ;
81 WORD size=1;
82
83 if(ddPalGbl->dwFlags & DDRAWIPAL_2)
84 size = 2;
85 else if(ddPalGbl->dwFlags & DDRAWIPAL_4)
86 size = 4;
87 else if(ddPalGbl->dwFlags & DDRAWIPAL_16)
88 size = 16;
89 else if(ddPalGbl->dwFlags & DDRAWIPAL_256)
90 size = 256;
91
92 DxHeapMemAlloc(logPal, sizeof(LOGPALETTE) + size*sizeof(PALETTEENTRY));
93 if(logPal == NULL)
94 {
95 lpCreatePalette->ddRVal = DDERR_OUTOFMEMORY;
96 return DDHAL_DRIVER_HANDLED;
97 }
98
99 logPal->palVersion = 0x300;
100 logPal->palNumEntries = size;
101 CopyMemory(&logPal->palPalEntry[0], lpCreatePalette->lpColorTable, size*sizeof(PALETTEENTRY));
102
103 ddPalGbl->hHELGDIPalette = CreatePalette(logPal);
104
105 if (ddPalGbl->hHELGDIPalette == NULL)
106 {
107 DxHeapMemFree(logPal);
108 lpCreatePalette->ddRVal = DDERR_INVALIDOBJECT;
109 return DDHAL_DRIVER_HANDLED;
110 }
111
112 DxHeapMemFree(logPal);
113 ddPalGbl->lpColorTable = lpCreatePalette->lpColorTable;
114 ddPalGbl->dwFlags |= DDRAWIPAL_INHEL | DDRAWIPAL_GDI ;
115 lpCreatePalette->ddRVal = DD_OK;
116 return DDHAL_DRIVER_HANDLED;
117 }
118
119 DWORD CALLBACK HelDdGetScanLine(LPDDHAL_GETSCANLINEDATA lpGetScanLine)
120 {
121 DX_STUB;
122 }
123
124 DWORD CALLBACK HelDdSetExclusiveMode(LPDDHAL_SETEXCLUSIVEMODEDATA lpSetExclusiveMode)
125 {
126 DX_WINDBG_trace();
127 DX_STUB_str("Not implement yet, return DD_OK for not bsod\n");
128 lpSetExclusiveMode->ddRVal = DD_OK;
129
130 return DDHAL_DRIVER_HANDLED;
131 }
132
133 DWORD CALLBACK HelDdFlipToGDISurface(LPDDHAL_FLIPTOGDISURFACEDATA lpFlipToGDISurface)
134 {
135 DX_STUB;
136 }
137