Like the AUTORADIOBUTTON, the parent of a RADIOBUTTON style button
[wine] / dlls / ddraw / dpalette / main.c
1 /*              DirectDraw - IDirectPalette base interface
2  *
3  * Copyright 1997-2000 Marcus Meissner
4  */
5
6 #include "config.h"
7 #include "winerror.h"
8
9 #include <unistd.h>
10 #include <assert.h>
11 #include <string.h>
12 #include <stdio.h>
13
14 #include "ddraw_private.h"
15 #include "debugtools.h"
16
17 DEFAULT_DEBUG_CHANNEL(ddraw);
18
19 /******************************************************************************
20  *                      IDirectDrawPalette
21  */
22 HRESULT WINAPI IDirectDrawPaletteImpl_GetEntries(
23     LPDIRECTDRAWPALETTE iface,DWORD x,DWORD start,DWORD count,LPPALETTEENTRY palent
24 ) {
25     ICOM_THIS(IDirectDrawPaletteImpl,iface);
26     int i;
27
28     TRACE("(%p)->GetEntries(%08lx,%ld,%ld,%p)\n",This,x,start,count,palent);
29
30     for (i=0;i<count;i++) {
31         palent[i].peRed   = This->palents[start+i].peRed;
32         palent[i].peBlue  = This->palents[start+i].peBlue;
33         palent[i].peGreen = This->palents[start+i].peGreen;
34         palent[i].peFlags = This->palents[start+i].peFlags;
35     }
36     return DD_OK;
37 }
38
39 HRESULT WINAPI IDirectDrawPaletteImpl_SetEntries(
40     LPDIRECTDRAWPALETTE iface,DWORD x,DWORD start,DWORD count,LPPALETTEENTRY palent
41 ) {
42     ICOM_THIS(IDirectDrawPaletteImpl,iface);
43     int         i;
44
45     TRACE("(%p)->SetEntries(%08lx,%ld,%ld,%p)\n", This,x,start,count,palent);
46     for (i=0;i<count;i++) {
47         This->palents[start+i].peRed = palent[i].peRed;
48         This->palents[start+i].peBlue = palent[i].peBlue;
49         This->palents[start+i].peGreen = palent[i].peGreen;
50         This->palents[start+i].peFlags = palent[i].peFlags;
51     }
52
53     /* Now, if we are in 'depth conversion mode', update the screen palette */
54     /* FIXME: we need to update the image or we won't get palette fading. */
55     if (This->ddraw->d.palette_convert != NULL)
56         This->ddraw->d.palette_convert(palent,This->screen_palents,start,count);
57     return DD_OK;
58 }
59
60 ULONG WINAPI IDirectDrawPaletteImpl_Release(LPDIRECTDRAWPALETTE iface) {
61     ICOM_THIS(IDirectDrawPaletteImpl,iface);
62     TRACE("(%p)->() decrementing from %lu.\n", This, This->ref );
63     if (!--(This->ref)) {
64             HeapFree(GetProcessHeap(),0,This);
65             return S_OK;
66     }
67     return This->ref;
68 }
69
70 ULONG WINAPI IDirectDrawPaletteImpl_AddRef(LPDIRECTDRAWPALETTE iface) {
71     ICOM_THIS(IDirectDrawPaletteImpl,iface);
72     TRACE("(%p)->() incrementing from %lu.\n", This, This->ref );
73     return ++(This->ref);
74 }
75
76 HRESULT WINAPI IDirectDrawPaletteImpl_Initialize(
77     LPDIRECTDRAWPALETTE iface,LPDIRECTDRAW ddraw,DWORD x,LPPALETTEENTRY palent
78 ) {
79     ICOM_THIS(IDirectDrawPaletteImpl,iface);
80     TRACE("(%p)->(%p,%ld,%p)\n", This, ddraw, x, palent);
81     return DDERR_ALREADYINITIALIZED;
82 }
83
84 HRESULT WINAPI IDirectDrawPaletteImpl_GetCaps(
85      LPDIRECTDRAWPALETTE iface, LPDWORD lpdwCaps )
86 {
87    ICOM_THIS(IDirectDrawPaletteImpl,iface);
88    FIXME("(%p)->(%p) stub.\n", This, lpdwCaps );
89    return DD_OK;
90
91
92 HRESULT WINAPI IDirectDrawPaletteImpl_QueryInterface(
93     LPDIRECTDRAWPALETTE iface,REFIID refiid,LPVOID *obj ) 
94 {
95     ICOM_THIS(IDirectDrawPaletteImpl,iface);
96     FIXME("(%p)->(%s,%p) stub.\n",This,debugstr_guid(refiid),obj);
97     return S_OK;
98 }
99
100 ICOM_VTABLE(IDirectDrawPalette) ddraw_ddpalvt = 
101 {
102     ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
103     IDirectDrawPaletteImpl_QueryInterface,
104     IDirectDrawPaletteImpl_AddRef,
105     IDirectDrawPaletteImpl_Release,
106     IDirectDrawPaletteImpl_GetCaps,
107     IDirectDrawPaletteImpl_GetEntries,
108     IDirectDrawPaletteImpl_Initialize,
109     IDirectDrawPaletteImpl_SetEntries
110 };