1 /* DirectDrawPalette XF86DGA implementation
3 * Copyright 1997-2000 Marcus Meissner
4 * Copyright 1998 Lionel Ulmer (most of Direct3D stuff)
15 #include "debugtools.h"
17 #include "dga_private.h"
19 DEFAULT_DEBUG_CHANNEL(ddraw);
21 #define DPPRIVATE(x) dga_dp_private *dppriv = ((dga_dp_private*)(x)->private)
22 #define DDPRIVATE(x) dga_dd_private *ddpriv = ((dga_dd_private*)(x)->d->private)
24 HRESULT WINAPI DGA_IDirectDrawPaletteImpl_SetEntries(
25 LPDIRECTDRAWPALETTE iface,DWORD x,DWORD start,DWORD count,LPPALETTEENTRY palent
27 ICOM_THIS(IDirectDrawPaletteImpl,iface);
32 TRACE("(%p)->SetEntries(%08lx,%ld,%ld,%p)\n",This,x,start,count,palent);
33 if (!dppriv->cm) /* should not happen */ {
34 TRACE("app tried to set colormap in non-palettized mode\n");
36 for (i=0;i<count;i++) {
37 xc.red = palent[i].peRed<<8;
38 xc.blue = palent[i].peBlue<<8;
39 xc.green = palent[i].peGreen<<8;
40 xc.flags = DoRed|DoBlue|DoGreen;
44 TSXStoreColor(display,dppriv->cm,&xc);
46 This->palents[start+i].peRed = palent[i].peRed;
47 This->palents[start+i].peBlue = palent[i].peBlue;
48 This->palents[start+i].peGreen = palent[i].peGreen;
49 This->palents[start+i].peFlags = palent[i].peFlags;
51 /* Flush the display queue so that palette updates are visible directly */
55 ICOM_VTABLE(IDirectDrawPalette) dga_ddpalvt =
57 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
58 IDirectDrawPaletteImpl_QueryInterface,
59 IDirectDrawPaletteImpl_AddRef,
60 Xlib_IDirectDrawPaletteImpl_Release,
61 IDirectDrawPaletteImpl_GetCaps,
62 IDirectDrawPaletteImpl_GetEntries,
63 IDirectDrawPaletteImpl_Initialize,
64 DGA_IDirectDrawPaletteImpl_SetEntries