1 /* DirectDraw IDirectDrawPalette X11 implementation
3 * Copyright 1997-2000 Marcus Meissner
15 #include "debugtools.h"
17 #include "x11_private.h"
19 DEFAULT_DEBUG_CHANNEL(ddraw);
21 #define DPPRIVATE(x) x11_dp_private *dppriv = ((x11_dp_private*)x->private)
23 /******************************************************************************
27 HRESULT WINAPI Xlib_IDirectDrawPaletteImpl_SetEntries(
28 LPDIRECTDRAWPALETTE iface,DWORD x,DWORD start,DWORD count,LPPALETTEENTRY palent
30 ICOM_THIS(IDirectDrawPaletteImpl,iface);
35 TRACE("(%p)->SetEntries(%08lx,%ld,%ld,%p)\n",This,x,start,count,palent);
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;
52 /* Now, if we are in 'depth conversion mode', update the screen palette */
53 /* FIXME: we need to update the image or we won't get palette fading. */
54 if (This->ddraw->d.palette_convert != NULL) {
55 This->ddraw->d.palette_convert(palent,This->screen_palents,start,count);
60 ULONG WINAPI Xlib_IDirectDrawPaletteImpl_Release(LPDIRECTDRAWPALETTE iface) {
61 ICOM_THIS(IDirectDrawPaletteImpl,iface);
63 TRACE("(%p)->() decrementing from %lu.\n", This, This->ref );
66 TSXFreeColormap(display,dppriv->cm);
69 HeapFree(GetProcessHeap(),0,This);
75 ICOM_VTABLE(IDirectDrawPalette) xlib_ddpalvt =
77 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
78 IDirectDrawPaletteImpl_QueryInterface,
79 IDirectDrawPaletteImpl_AddRef,
80 Xlib_IDirectDrawPaletteImpl_Release,
81 IDirectDrawPaletteImpl_GetCaps,
82 IDirectDrawPaletteImpl_GetEntries,
83 IDirectDrawPaletteImpl_Initialize,
84 Xlib_IDirectDrawPaletteImpl_SetEntries