ReactOS 0.4.17-dev-966-gf06eace
texture.c File Reference
#include "d3drm_private.h"
Include dependency graph for texture.c:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (d3drm)
 
static struct d3drm_texture * impl_from_IDirect3DRMTexture (IDirect3DRMTexture *iface)
 
static struct d3drm_texture * impl_from_IDirect3DRMTexture2 (IDirect3DRMTexture2 *iface)
 
static struct d3drm_texture * impl_from_IDirect3DRMTexture3 (IDirect3DRMTexture3 *iface)
 
static void d3drm_texture_destroy (struct d3drm_texture *texture)
 
static BOOL d3drm_validate_image (D3DRMIMAGE *image)
 
static BOOL d3drm_image_palettise (D3DRMIMAGE *image, unsigned char *src_data, SIZE_T w, SIZE_T h, BOOL flip)
 
static HRESULT d3drm_image_load_32 (D3DRMIMAGE *image, unsigned char *src_data, LONGLONG src_data_size, SIZE_T w, SIZE_T h, BOOL flip)
 
static HRESULT d3drm_image_load_8 (D3DRMIMAGE *image, const RGBQUAD *palette, unsigned char *src_data, LONGLONG src_data_size, SIZE_T w, SIZE_T h, BOOL flip)
 
static void CDECL destroy_image_callback (IDirect3DRMObject *obj, void *arg)
 
static HRESULT d3drm_texture_load (struct d3drm_texture *texture, const char *path, BOOL flip, D3DRMIMAGE **image_out)
 
static HRESULT WINAPI d3drm_texture1_QueryInterface (IDirect3DRMTexture *iface, REFIID riid, void **out)
 
static ULONG WINAPI d3drm_texture1_AddRef (IDirect3DRMTexture *iface)
 
static ULONG WINAPI d3drm_texture1_Release (IDirect3DRMTexture *iface)
 
static HRESULT WINAPI d3drm_texture1_Clone (IDirect3DRMTexture *iface, IUnknown *outer, REFIID iid, void **out)
 
static HRESULT WINAPI d3drm_texture1_AddDestroyCallback (IDirect3DRMTexture *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_texture1_DeleteDestroyCallback (IDirect3DRMTexture *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_texture1_SetAppData (IDirect3DRMTexture *iface, DWORD data)
 
static DWORD WINAPI d3drm_texture1_GetAppData (IDirect3DRMTexture *iface)
 
static HRESULT WINAPI d3drm_texture1_SetName (IDirect3DRMTexture *iface, const char *name)
 
static HRESULT WINAPI d3drm_texture1_GetName (IDirect3DRMTexture *iface, DWORD *size, char *name)
 
static HRESULT WINAPI d3drm_texture1_GetClassName (IDirect3DRMTexture *iface, DWORD *size, char *name)
 
static HRESULT WINAPI d3drm_texture1_InitFromFile (IDirect3DRMTexture *iface, const char *filename)
 
static HRESULT WINAPI d3drm_texture1_InitFromSurface (IDirect3DRMTexture *iface, IDirectDrawSurface *surface)
 
static HRESULT WINAPI d3drm_texture1_InitFromResource (IDirect3DRMTexture *iface, HRSRC resource)
 
static HRESULT WINAPI d3drm_texture1_Changed (IDirect3DRMTexture *iface, BOOL pixels, BOOL palette)
 
static HRESULT WINAPI d3drm_texture1_SetColors (IDirect3DRMTexture *iface, DWORD max_colors)
 
static HRESULT WINAPI d3drm_texture1_SetShades (IDirect3DRMTexture *iface, DWORD max_shades)
 
static HRESULT WINAPI d3drm_texture1_SetDecalSize (IDirect3DRMTexture *iface, D3DVALUE width, D3DVALUE height)
 
static HRESULT WINAPI d3drm_texture1_SetDecalOrigin (IDirect3DRMTexture *iface, LONG x, LONG y)
 
static HRESULT WINAPI d3drm_texture1_SetDecalScale (IDirect3DRMTexture *iface, DWORD scale)
 
static HRESULT WINAPI d3drm_texture1_SetDecalTransparency (IDirect3DRMTexture *iface, BOOL transparency)
 
static HRESULT WINAPI d3drm_texture1_SetDecalTransparentColor (IDirect3DRMTexture *iface, D3DCOLOR color)
 
static HRESULT WINAPI d3drm_texture1_GetDecalSize (IDirect3DRMTexture *iface, D3DVALUE *width, D3DVALUE *height)
 
static HRESULT WINAPI d3drm_texture1_GetDecalOrigin (IDirect3DRMTexture *iface, LONG *x, LONG *y)
 
static D3DRMIMAGE *WINAPI d3drm_texture1_GetImage (IDirect3DRMTexture *iface)
 
static DWORD WINAPI d3drm_texture1_GetShades (IDirect3DRMTexture *iface)
 
static DWORD WINAPI d3drm_texture1_GetColors (IDirect3DRMTexture *iface)
 
static DWORD WINAPI d3drm_texture1_GetDecalScale (IDirect3DRMTexture *iface)
 
static BOOL WINAPI d3drm_texture1_GetDecalTransparency (IDirect3DRMTexture *iface)
 
static D3DCOLOR WINAPI d3drm_texture1_GetDecalTransparentColor (IDirect3DRMTexture *iface)
 
static HRESULT WINAPI d3drm_texture2_QueryInterface (IDirect3DRMTexture2 *iface, REFIID riid, void **out)
 
static ULONG WINAPI d3drm_texture2_AddRef (IDirect3DRMTexture2 *iface)
 
static ULONG WINAPI d3drm_texture2_Release (IDirect3DRMTexture2 *iface)
 
static HRESULT WINAPI d3drm_texture2_Clone (IDirect3DRMTexture2 *iface, IUnknown *outer, REFIID iid, void **out)
 
static HRESULT WINAPI d3drm_texture2_AddDestroyCallback (IDirect3DRMTexture2 *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_texture2_DeleteDestroyCallback (IDirect3DRMTexture2 *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_texture2_SetAppData (IDirect3DRMTexture2 *iface, DWORD data)
 
static DWORD WINAPI d3drm_texture2_GetAppData (IDirect3DRMTexture2 *iface)
 
static HRESULT WINAPI d3drm_texture2_SetName (IDirect3DRMTexture2 *iface, const char *name)
 
static HRESULT WINAPI d3drm_texture2_GetName (IDirect3DRMTexture2 *iface, DWORD *size, char *name)
 
static HRESULT WINAPI d3drm_texture2_GetClassName (IDirect3DRMTexture2 *iface, DWORD *size, char *name)
 
static HRESULT WINAPI d3drm_texture2_InitFromFile (IDirect3DRMTexture2 *iface, const char *filename)
 
static HRESULT WINAPI d3drm_texture2_InitFromSurface (IDirect3DRMTexture2 *iface, IDirectDrawSurface *surface)
 
static HRESULT WINAPI d3drm_texture2_InitFromResource (IDirect3DRMTexture2 *iface, HRSRC resource)
 
static HRESULT WINAPI d3drm_texture2_Changed (IDirect3DRMTexture2 *iface, BOOL pixels, BOOL palette)
 
static HRESULT WINAPI d3drm_texture2_SetColors (IDirect3DRMTexture2 *iface, DWORD max_colors)
 
static HRESULT WINAPI d3drm_texture2_SetShades (IDirect3DRMTexture2 *iface, DWORD max_shades)
 
static HRESULT WINAPI d3drm_texture2_SetDecalSize (IDirect3DRMTexture2 *iface, D3DVALUE width, D3DVALUE height)
 
static HRESULT WINAPI d3drm_texture2_SetDecalOrigin (IDirect3DRMTexture2 *iface, LONG x, LONG y)
 
static HRESULT WINAPI d3drm_texture2_SetDecalScale (IDirect3DRMTexture2 *iface, DWORD scale)
 
static HRESULT WINAPI d3drm_texture2_SetDecalTransparency (IDirect3DRMTexture2 *iface, BOOL transparency)
 
static HRESULT WINAPI d3drm_texture2_SetDecalTransparentColor (IDirect3DRMTexture2 *iface, D3DCOLOR color)
 
static HRESULT WINAPI d3drm_texture2_GetDecalSize (IDirect3DRMTexture2 *iface, D3DVALUE *width, D3DVALUE *height)
 
static HRESULT WINAPI d3drm_texture2_GetDecalOrigin (IDirect3DRMTexture2 *iface, LONG *x, LONG *y)
 
static D3DRMIMAGE *WINAPI d3drm_texture2_GetImage (IDirect3DRMTexture2 *iface)
 
static DWORD WINAPI d3drm_texture2_GetShades (IDirect3DRMTexture2 *iface)
 
static DWORD WINAPI d3drm_texture2_GetColors (IDirect3DRMTexture2 *iface)
 
static DWORD WINAPI d3drm_texture2_GetDecalScale (IDirect3DRMTexture2 *iface)
 
static BOOL WINAPI d3drm_texture2_GetDecalTransparency (IDirect3DRMTexture2 *iface)
 
static D3DCOLOR WINAPI d3drm_texture2_GetDecalTransparentColor (IDirect3DRMTexture2 *iface)
 
static HRESULT WINAPI d3drm_texture2_InitFromImage (IDirect3DRMTexture2 *iface, D3DRMIMAGE *image)
 
static HRESULT WINAPI d3drm_texture2_InitFromResource2 (IDirect3DRMTexture2 *iface, HMODULE module, const char *name, const char *type)
 
static HRESULT WINAPI d3drm_texture2_GenerateMIPMap (IDirect3DRMTexture2 *iface, DWORD flags)
 
static HRESULT WINAPI d3drm_texture3_QueryInterface (IDirect3DRMTexture3 *iface, REFIID riid, void **out)
 
static ULONG WINAPI d3drm_texture3_AddRef (IDirect3DRMTexture3 *iface)
 
static ULONG WINAPI d3drm_texture3_Release (IDirect3DRMTexture3 *iface)
 
static HRESULT WINAPI d3drm_texture3_Clone (IDirect3DRMTexture3 *iface, IUnknown *outer, REFIID iid, void **out)
 
static HRESULT WINAPI d3drm_texture3_AddDestroyCallback (IDirect3DRMTexture3 *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_texture3_DeleteDestroyCallback (IDirect3DRMTexture3 *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_texture3_SetAppData (IDirect3DRMTexture3 *iface, DWORD data)
 
static DWORD WINAPI d3drm_texture3_GetAppData (IDirect3DRMTexture3 *iface)
 
static HRESULT WINAPI d3drm_texture3_SetName (IDirect3DRMTexture3 *iface, const char *name)
 
static HRESULT WINAPI d3drm_texture3_GetName (IDirect3DRMTexture3 *iface, DWORD *size, char *name)
 
static HRESULT WINAPI d3drm_texture3_GetClassName (IDirect3DRMTexture3 *iface, DWORD *size, char *name)
 
static HRESULT WINAPI d3drm_texture3_InitFromFile (IDirect3DRMTexture3 *iface, const char *filename)
 
static HRESULT WINAPI d3drm_texture3_InitFromSurface (IDirect3DRMTexture3 *iface, IDirectDrawSurface *surface)
 
static HRESULT WINAPI d3drm_texture3_InitFromResource (IDirect3DRMTexture3 *iface, HRSRC resource)
 
static HRESULT WINAPI d3drm_texture3_Changed (IDirect3DRMTexture3 *iface, DWORD flags, DWORD rect_count, RECT *rects)
 
static HRESULT WINAPI d3drm_texture3_SetColors (IDirect3DRMTexture3 *iface, DWORD max_colors)
 
static HRESULT WINAPI d3drm_texture3_SetShades (IDirect3DRMTexture3 *iface, DWORD max_shades)
 
static HRESULT WINAPI d3drm_texture3_SetDecalSize (IDirect3DRMTexture3 *iface, D3DVALUE width, D3DVALUE height)
 
static HRESULT WINAPI d3drm_texture3_SetDecalOrigin (IDirect3DRMTexture3 *iface, LONG x, LONG y)
 
static HRESULT WINAPI d3drm_texture3_SetDecalScale (IDirect3DRMTexture3 *iface, DWORD scale)
 
static HRESULT WINAPI d3drm_texture3_SetDecalTransparency (IDirect3DRMTexture3 *iface, BOOL transparency)
 
static HRESULT WINAPI d3drm_texture3_SetDecalTransparentColor (IDirect3DRMTexture3 *iface, D3DCOLOR color)
 
static HRESULT WINAPI d3drm_texture3_GetDecalSize (IDirect3DRMTexture3 *iface, D3DVALUE *width, D3DVALUE *height)
 
static HRESULT WINAPI d3drm_texture3_GetDecalOrigin (IDirect3DRMTexture3 *iface, LONG *x, LONG *y)
 
static D3DRMIMAGE *WINAPI d3drm_texture3_GetImage (IDirect3DRMTexture3 *iface)
 
static DWORD WINAPI d3drm_texture3_GetShades (IDirect3DRMTexture3 *iface)
 
static DWORD WINAPI d3drm_texture3_GetColors (IDirect3DRMTexture3 *iface)
 
static DWORD WINAPI d3drm_texture3_GetDecalScale (IDirect3DRMTexture3 *iface)
 
static BOOL WINAPI d3drm_texture3_GetDecalTransparency (IDirect3DRMTexture3 *iface)
 
static D3DCOLOR WINAPI d3drm_texture3_GetDecalTransparentColor (IDirect3DRMTexture3 *iface)
 
static HRESULT WINAPI d3drm_texture3_InitFromImage (IDirect3DRMTexture3 *iface, D3DRMIMAGE *image)
 
static HRESULT WINAPI d3drm_texture3_InitFromResource2 (IDirect3DRMTexture3 *iface, HMODULE module, const char *name, const char *type)
 
static HRESULT WINAPI d3drm_texture3_GenerateMIPMap (IDirect3DRMTexture3 *iface, DWORD flags)
 
static HRESULT WINAPI d3drm_texture3_GetSurface (IDirect3DRMTexture3 *iface, DWORD flags, IDirectDrawSurface **surface)
 
static HRESULT WINAPI d3drm_texture3_SetCacheOptions (IDirect3DRMTexture3 *iface, LONG importance, DWORD flags)
 
static HRESULT WINAPI d3drm_texture3_GetCacheOptions (IDirect3DRMTexture3 *iface, LONG *importance, DWORD *flags)
 
static HRESULT WINAPI d3drm_texture3_SetDownsampleCallback (IDirect3DRMTexture3 *iface, D3DRMDOWNSAMPLECALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_texture3_SetValidationCallback (IDirect3DRMTexture3 *iface, D3DRMVALIDATIONCALLBACK cb, void *ctx)
 
HRESULT d3drm_texture_create (struct d3drm_texture **texture, IDirect3DRM *d3drm)
 

Variables

static const struct IDirect3DRMTextureVtbl d3drm_texture1_vtbl
 
static const struct IDirect3DRMTexture2Vtbl d3drm_texture2_vtbl
 
static const struct IDirect3DRMTexture3Vtbl d3drm_texture3_vtbl
 

Function Documentation

◆ d3drm_image_load_32()

static HRESULT d3drm_image_load_32 ( D3DRMIMAGE *  image,
unsigned char *  src_data,
LONGLONG  src_data_size,
SIZE_T  w,
SIZE_T  h,
BOOL  flip 
)
static

Definition at line 163 of file texture.c.

165{
166 unsigned char *dst_data, *src_ptr, *dst_ptr;
167 SIZE_T src_pitch, dst_pitch, x, y;
168
169 if (d3drm_image_palettise(image, src_data, w, h, flip))
170 return D3DRM_OK;
171
172 if (w > (~(SIZE_T)0 / 4) / h)
173 return D3DRMERR_BADALLOC;
174
175 src_pitch = flip ? -w * 3 : w * 3;
176 dst_pitch = w * 4;
177
178 if (!(dst_data = malloc(dst_pitch * h)))
179 {
180 WARN("Failed to allocate image buffer.\n");
181 return D3DRMERR_BADALLOC;
182 }
183
184 src_ptr = flip ? &src_data[(h - 1) * w * 3] : src_data;
185 dst_ptr = dst_data;
186
187 for (y = 0; y < h; ++y)
188 {
189 for (x = 0; x < w; ++x)
190 {
191 dst_ptr[x * 4 + 0] = src_ptr[x * 3 + 0];
192 dst_ptr[x * 4 + 1] = src_ptr[x * 3 + 1];
193 dst_ptr[x * 4 + 2] = src_ptr[x * 3 + 2];
194 dst_ptr[x * 4 + 3] = 0xff;
195 }
196
197 src_ptr += src_pitch;
198 dst_ptr += dst_pitch;
199 }
200
201 image->depth = 32;
202 image->rgb = 1;
203 image->bytes_per_line = dst_pitch;
204 image->buffer1 = dst_data;
205 image->red_mask = 0xff0000;
206 image->green_mask = 0x00ff00;
207 image->blue_mask = 0x0000ff;
208 image->palette_size = 0;
209 image->palette = NULL;
210
211 return D3DRM_OK;
212}
#define WARN(fmt,...)
Definition: precomp.h:61
#define D3DRM_OK
Definition: d3drm.h:486
#define D3DRMERR_BADALLOC
Definition: d3drm.h:489
#define malloc
Definition: debug_ros.c:4
#define NULL
Definition: types.h:112
static BOOL d3drm_image_palettise(D3DRMIMAGE *image, unsigned char *src_data, SIZE_T w, SIZE_T h, BOOL flip)
Definition: texture.c:81
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
Definition: image.c:84
ULONG_PTR SIZE_T
Definition: typedefs.h:80

Referenced by d3drm_texture_load().

◆ d3drm_image_load_8()

static HRESULT d3drm_image_load_8 ( D3DRMIMAGE *  image,
const RGBQUAD *  palette,
unsigned char *  src_data,
LONGLONG  src_data_size,
SIZE_T  w,
SIZE_T  h,
BOOL  flip 
)
static

Definition at line 214 of file texture.c.

216{
217 unsigned char *dst_data;
218 SIZE_T i;
219
220 if (w > ~(SIZE_T)0 / h)
221 return D3DRMERR_BADALLOC;
222
223 if (!(dst_data = malloc(w * h)))
224 {
225 WARN("Failed to allocate image buffer.\n");
226 return D3DRMERR_BADALLOC;
227 }
228
229 if (!(image->palette = malloc(256 * sizeof(*image->palette))))
230 {
231 WARN("Failed to allocate palette.\n");
232 free(dst_data);
233 return D3DRMERR_BADALLOC;
234 }
235
236 for (i = 0; i < 256; ++i)
237 {
238 image->palette[i].red = palette[i].rgbRed;
239 image->palette[i].green = palette[i].rgbGreen;
240 image->palette[i].blue = palette[i].rgbBlue;
241 image->palette[i].flags = D3DRMPALETTE_READONLY;
242 }
243
244 if (flip)
245 {
246 for (i = 0; i < h; ++i)
247 {
248 memcpy(&dst_data[i * w], &src_data[(h - 1 - i) * w], w);
249 }
250 }
251 else
252 {
253 memcpy(dst_data, src_data, w * h);
254 }
255
256 image->depth = 8;
257 image->rgb = 0;
258 image->bytes_per_line = w;
259 image->buffer1 = dst_data;
260 image->red_mask = 0xff;
261 image->green_mask = 0xff;
262 image->blue_mask = 0xff;
263 image->palette_size = 256;
264
265 return D3DRM_OK;
266}
@ D3DRMPALETTE_READONLY
Definition: d3drmdef.h:135
#define free
Definition: debug_ros.c:5
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static HPALETTE palette
Definition: clipboard.c:1457

Referenced by d3drm_texture_load().

◆ d3drm_image_palettise()

static BOOL d3drm_image_palettise ( D3DRMIMAGE *  image,
unsigned char *  src_data,
SIZE_T  w,
SIZE_T  h,
BOOL  flip 
)
static

Definition at line 81 of file texture.c.

83{
84 unsigned char *dst_data, *src_ptr, *dst_ptr;
85 SIZE_T src_pitch, dst_pitch, i, x, y;
87 unsigned int colour_count = 0;
88
89 if (w > (~(SIZE_T)0 - 3) / h)
90 return FALSE;
91
92 src_pitch = flip ? -w * 3 : w * 3;
93 dst_pitch = (w + 3) & ~3;
94
95 if (!(dst_data = malloc(dst_pitch * h)))
96 {
97 WARN("Failed to allocate image buffer.\n");
98 return FALSE;
99 }
100 memset(dst_data, 0xff, dst_pitch * h);
101
102 if (!(palette = malloc(256 * sizeof(*palette))))
103 {
104 WARN("Failed to allocate palette.\n");
105 free(dst_data);
106 return FALSE;
107 }
108
109 src_ptr = flip ? &src_data[(h - 1) * w * 3] : src_data;
110 dst_ptr = dst_data;
111
112 for (y = 0; y < h; ++y)
113 {
114 for (x = 0; x < w; ++x)
115 {
116 for (i = 0; i < colour_count; ++i)
117 {
118 entry = &palette[i];
119 if (entry->red == src_ptr[x * 3 + 2]
120 && entry->green == src_ptr[x * 3 + 1]
121 && entry->blue == src_ptr[x * 3 + 0])
122 break;
123 }
124
125 if (i == colour_count)
126 {
127 if (colour_count == 256)
128 {
129 free(dst_data);
130 free(palette);
131 return FALSE;
132 }
133
134 entry = &palette[colour_count++];
135 entry->red = src_ptr[x * 3 + 2];
136 entry->green = src_ptr[x * 3 + 1];
137 entry->blue = src_ptr[x * 3 + 0];
139 }
140
141 dst_ptr[x] = i;
142 }
143
144 src_ptr += src_pitch;
145 dst_ptr += dst_pitch;
146 }
147
148 image->depth = 8;
149 image->rgb = 0;
150 image->bytes_per_line = dst_pitch;
151 image->buffer1 = dst_data;
152 image->red_mask = 0xff;
153 image->green_mask = 0xff;
154 image->blue_mask = 0xff;
155 image->palette_size = colour_count;
156 image->palette = palette;
157 if ((palette = realloc(palette, colour_count * sizeof(*palette))))
158 image->palette = palette;
159
160 return TRUE;
161}
#define realloc
Definition: debug_ros.c:6
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
uint32_t entry
Definition: isohybrid.c:63
#define memset(x, y, z)
Definition: compat.h:39

Referenced by d3drm_image_load_32().

◆ d3drm_texture1_AddDestroyCallback()

static HRESULT WINAPI d3drm_texture1_AddDestroyCallback ( IDirect3DRMTexture *  iface,
D3DRMOBJECTCALLBACK  cb,
void *  ctx 
)
static

Definition at line 404 of file texture.c.

406{
408
409 TRACE("iface %p, cb %p, ctx %p\n", iface, cb, ctx);
410
411 return IDirect3DRMTexture3_AddDestroyCallback(&texture->IDirect3DRMTexture3_iface, cb, ctx);
412}
#define IDirect3DRMTexture3_AddDestroyCallback(p, a, b)
Definition: d3drmobj.h:3479
static struct d3drm_texture * impl_from_IDirect3DRMTexture(IDirect3DRMTexture *iface)
Definition: texture.c:26
static MonoProfilerRuntimeShutdownBeginCallback cb
Definition: metahost.c:118
GLenum GLuint texture
Definition: glext.h:6295
#define TRACE(s)
Definition: solgame.cpp:4

◆ d3drm_texture1_AddRef()

static ULONG WINAPI d3drm_texture1_AddRef ( IDirect3DRMTexture *  iface)
static

Definition at line 376 of file texture.c.

377{
379
380 TRACE("iface %p.\n", iface);
381
382 return IDirect3DRMTexture3_AddRef(&texture->IDirect3DRMTexture3_iface);
383}
#define IDirect3DRMTexture3_AddRef(p)
Definition: d3drmobj.h:3475

◆ d3drm_texture1_Changed()

static HRESULT WINAPI d3drm_texture1_Changed ( IDirect3DRMTexture *  iface,
BOOL  pixels,
BOOL  palette 
)
static

Definition at line 500 of file texture.c.

501{
502 FIXME("iface %p, pixels %#x, palette %#x stub!\n", iface, pixels, palette);
503
504 return E_NOTIMPL;
505}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99
GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
Definition: gl.h:1546

◆ d3drm_texture1_Clone()

static HRESULT WINAPI d3drm_texture1_Clone ( IDirect3DRMTexture *  iface,
IUnknown *  outer,
REFIID  iid,
void **  out 
)
static

Definition at line 394 of file texture.c.

396{
398
399 TRACE("iface %p, outer %p, iid %s, out %p.\n", iface, outer, debugstr_guid(iid), out);
400
401 return IDirect3DRMTexture3_Clone(&texture->IDirect3DRMTexture3_iface, outer, iid, out);
402}
#define IDirect3DRMTexture3_Clone(p, a, b, c)
Definition: d3drmobj.h:3478
#define debugstr_guid
Definition: kernel32.h:35
static IUnknown * outer
Definition: compobj.c:82
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

◆ d3drm_texture1_DeleteDestroyCallback()

static HRESULT WINAPI d3drm_texture1_DeleteDestroyCallback ( IDirect3DRMTexture *  iface,
D3DRMOBJECTCALLBACK  cb,
void *  ctx 
)
static

Definition at line 414 of file texture.c.

416{
418
419 TRACE("iface %p, cb %p, ctx %p\n", iface, cb, ctx);
420
421 return IDirect3DRMTexture3_DeleteDestroyCallback(&texture->IDirect3DRMTexture3_iface, cb, ctx);
422}
#define IDirect3DRMTexture3_DeleteDestroyCallback(p, a, b)
Definition: d3drmobj.h:3480

◆ d3drm_texture1_GetAppData()

static DWORD WINAPI d3drm_texture1_GetAppData ( IDirect3DRMTexture *  iface)
static

Definition at line 433 of file texture.c.

434{
436
437 TRACE("iface %p.\n", iface);
438
439 return IDirect3DRMTexture3_GetAppData(&texture->IDirect3DRMTexture3_iface);
440}
#define IDirect3DRMTexture3_GetAppData(p)
Definition: d3drmobj.h:3482

◆ d3drm_texture1_GetClassName()

static HRESULT WINAPI d3drm_texture1_GetClassName ( IDirect3DRMTexture *  iface,
DWORD *  size,
char *  name 
)
static

Definition at line 460 of file texture.c.

461{
463
464 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
465
466 return IDirect3DRMTexture3_GetClassName(&texture->IDirect3DRMTexture3_iface, size, name);
467}
#define IDirect3DRMTexture3_GetClassName(p, a, b)
Definition: d3drmobj.h:3485
GLsizeiptr size
Definition: glext.h:5919
Definition: name.c:39

◆ d3drm_texture1_GetColors()

static DWORD WINAPI d3drm_texture1_GetColors ( IDirect3DRMTexture *  iface)
static

Definition at line 606 of file texture.c.

607{
609
610 TRACE("iface %p.\n", iface);
611
612 return IDirect3DRMTexture3_GetColors(&texture->IDirect3DRMTexture3_iface);
613}
#define IDirect3DRMTexture3_GetColors(p)
Definition: d3drmobj.h:3502

◆ d3drm_texture1_GetDecalOrigin()

static HRESULT WINAPI d3drm_texture1_GetDecalOrigin ( IDirect3DRMTexture *  iface,
LONG *  x,
LONG *  y 
)
static

Definition at line 579 of file texture.c.

580{
582
583 TRACE("iface %p, x %p, y %p.\n", iface, x, y);
584
585 return IDirect3DRMTexture3_GetDecalOrigin(&texture->IDirect3DRMTexture3_iface, x, y);
586}
#define IDirect3DRMTexture3_GetDecalOrigin(p, a, b)
Definition: d3drmobj.h:3499

◆ d3drm_texture1_GetDecalScale()

static DWORD WINAPI d3drm_texture1_GetDecalScale ( IDirect3DRMTexture *  iface)
static

Definition at line 615 of file texture.c.

616{
618
619 TRACE("iface %p.\n", iface);
620
621 return IDirect3DRMTexture3_GetDecalScale(&texture->IDirect3DRMTexture3_iface);
622}
#define IDirect3DRMTexture3_GetDecalScale(p)
Definition: d3drmobj.h:3503

◆ d3drm_texture1_GetDecalSize()

static HRESULT WINAPI d3drm_texture1_GetDecalSize ( IDirect3DRMTexture *  iface,
D3DVALUE *  width,
D3DVALUE *  height 
)
static

Definition at line 570 of file texture.c.

571{
573
574 TRACE("iface %p, width %p, height %p.\n", iface, width, height);
575
576 return IDirect3DRMTexture3_GetDecalSize(&texture->IDirect3DRMTexture3_iface, width, height);
577}
#define IDirect3DRMTexture3_GetDecalSize(p, a, b)
Definition: d3drmobj.h:3498
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLint GLsizei width
Definition: gl.h:1546

◆ d3drm_texture1_GetDecalTransparency()

static BOOL WINAPI d3drm_texture1_GetDecalTransparency ( IDirect3DRMTexture *  iface)
static

Definition at line 624 of file texture.c.

625{
627
628 TRACE("iface %p.\n", iface);
629
630 return IDirect3DRMTexture3_GetDecalTransparency(&texture->IDirect3DRMTexture3_iface);
631}
#define IDirect3DRMTexture3_GetDecalTransparency(p)
Definition: d3drmobj.h:3504

◆ d3drm_texture1_GetDecalTransparentColor()

static D3DCOLOR WINAPI d3drm_texture1_GetDecalTransparentColor ( IDirect3DRMTexture *  iface)
static

Definition at line 633 of file texture.c.

634{
636
637 TRACE("iface %p.\n", iface);
638
639 return IDirect3DRMTexture3_GetDecalTransparentColor(&texture->IDirect3DRMTexture3_iface);
640}
#define IDirect3DRMTexture3_GetDecalTransparentColor(p)
Definition: d3drmobj.h:3505

◆ d3drm_texture1_GetImage()

static D3DRMIMAGE *WINAPI d3drm_texture1_GetImage ( IDirect3DRMTexture *  iface)
static

Definition at line 588 of file texture.c.

589{
591
592 TRACE("iface %p.\n", iface);
593
594 return IDirect3DRMTexture3_GetImage(&texture->IDirect3DRMTexture3_iface);
595}
#define IDirect3DRMTexture3_GetImage(p)
Definition: d3drmobj.h:3500

◆ d3drm_texture1_GetName()

static HRESULT WINAPI d3drm_texture1_GetName ( IDirect3DRMTexture *  iface,
DWORD *  size,
char *  name 
)
static

Definition at line 451 of file texture.c.

452{
454
455 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
456
457 return IDirect3DRMTexture3_GetName(&texture->IDirect3DRMTexture3_iface, size, name);
458}
#define IDirect3DRMTexture3_GetName(p, a, b)
Definition: d3drmobj.h:3484

◆ d3drm_texture1_GetShades()

static DWORD WINAPI d3drm_texture1_GetShades ( IDirect3DRMTexture *  iface)
static

Definition at line 597 of file texture.c.

598{
600
601 TRACE("iface %p.\n", iface);
602
603 return IDirect3DRMTexture3_GetShades(&texture->IDirect3DRMTexture3_iface);
604}
#define IDirect3DRMTexture3_GetShades(p)
Definition: d3drmobj.h:3501

◆ d3drm_texture1_InitFromFile()

static HRESULT WINAPI d3drm_texture1_InitFromFile ( IDirect3DRMTexture *  iface,
const char *  filename 
)
static

Definition at line 469 of file texture.c.

470{
473 HRESULT hr;
474
475 TRACE("iface %p, filename %s.\n", iface, debugstr_a(filename));
476
478 return hr;
479
480 return IDirect3DRMTexture3_InitFromImage(&texture->IDirect3DRMTexture3_iface, image);
481}
#define IDirect3DRMTexture3_InitFromImage(p, a)
Definition: d3drmobj.h:3506
HRESULT hr
Definition: delayimp.cpp:582
static HRESULT d3drm_texture_load(struct d3drm_texture *texture, const char *path, BOOL flip, D3DRMIMAGE **image_out)
Definition: texture.c:278
#define FAILED(hr)
Definition: intsafe.h:51
const char * filename
Definition: ioapi.h:137
#define debugstr_a
Definition: kernel32.h:31
D3DRMIMAGE * image
Definition: d3drm_private.h:62

◆ d3drm_texture1_InitFromResource()

static HRESULT WINAPI d3drm_texture1_InitFromResource ( IDirect3DRMTexture *  iface,
HRSRC  resource 
)
static

Definition at line 493 of file texture.c.

494{
495 FIXME("iface %p, resource %p stub!\n", iface, resource);
496
497 return E_NOTIMPL;
498}

◆ d3drm_texture1_InitFromSurface()

static HRESULT WINAPI d3drm_texture1_InitFromSurface ( IDirect3DRMTexture *  iface,
IDirectDrawSurface *  surface 
)
static

Definition at line 483 of file texture.c.

485{
487
488 TRACE("iface %p, surface %p.\n", iface, surface);
489
490 return IDirect3DRMTexture3_InitFromSurface(&texture->IDirect3DRMTexture3_iface, surface);
491}
#define IDirect3DRMTexture3_InitFromSurface(p, a)
Definition: d3drmobj.h:3488
IDirectDrawSurface * surface
Definition: d3drm_private.h:63

◆ d3drm_texture1_QueryInterface()

static HRESULT WINAPI d3drm_texture1_QueryInterface ( IDirect3DRMTexture *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 367 of file texture.c.

368{
370
371 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
372
373 return IDirect3DRMTexture3_QueryInterface(&texture->IDirect3DRMTexture3_iface, riid, out);
374}
#define IDirect3DRMTexture3_QueryInterface(p, a, b)
Definition: d3drmobj.h:3474
REFIID riid
Definition: atlbase.h:39

◆ d3drm_texture1_Release()

static ULONG WINAPI d3drm_texture1_Release ( IDirect3DRMTexture *  iface)
static

Definition at line 385 of file texture.c.

386{
388
389 TRACE("iface %p.\n", iface);
390
391 return IDirect3DRMTexture3_Release(&texture->IDirect3DRMTexture3_iface);
392}
#define IDirect3DRMTexture3_Release(p)
Definition: d3drmobj.h:3476

◆ d3drm_texture1_SetAppData()

static HRESULT WINAPI d3drm_texture1_SetAppData ( IDirect3DRMTexture *  iface,
DWORD  data 
)
static

Definition at line 424 of file texture.c.

425{
427
428 TRACE("iface %p, data %#lx.\n", iface, data);
429
430 return IDirect3DRMTexture3_SetAppData(&texture->IDirect3DRMTexture3_iface, data);
431}
#define IDirect3DRMTexture3_SetAppData(p, a)
Definition: d3drmobj.h:3481
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950

◆ d3drm_texture1_SetColors()

static HRESULT WINAPI d3drm_texture1_SetColors ( IDirect3DRMTexture *  iface,
DWORD  max_colors 
)
static

Definition at line 507 of file texture.c.

508{
510
511 TRACE("iface %p, max_colors %lu.\n", iface, max_colors);
512
513 return IDirect3DRMTexture3_SetColors(&texture->IDirect3DRMTexture3_iface, max_colors);
514}
#define IDirect3DRMTexture3_SetColors(p, a)
Definition: d3drmobj.h:3491

◆ d3drm_texture1_SetDecalOrigin()

static HRESULT WINAPI d3drm_texture1_SetDecalOrigin ( IDirect3DRMTexture *  iface,
LONG  x,
LONG  y 
)
static

Definition at line 534 of file texture.c.

535{
537
538 TRACE("iface %p, x %ld, y %ld.\n", iface, x, y);
539
540 return IDirect3DRMTexture3_SetDecalOrigin(&texture->IDirect3DRMTexture3_iface, x, y);
541}
#define IDirect3DRMTexture3_SetDecalOrigin(p, a, b)
Definition: d3drmobj.h:3494

◆ d3drm_texture1_SetDecalScale()

static HRESULT WINAPI d3drm_texture1_SetDecalScale ( IDirect3DRMTexture *  iface,
DWORD  scale 
)
static

Definition at line 543 of file texture.c.

544{
546
547 TRACE("iface %p, scale %lu.\n", iface, scale);
548
549 return IDirect3DRMTexture3_SetDecalScale(&texture->IDirect3DRMTexture3_iface, scale);
550}
#define IDirect3DRMTexture3_SetDecalScale(p, a)
Definition: d3drmobj.h:3495
GLenum GLenum GLenum GLenum GLenum scale
Definition: glext.h:9032

◆ d3drm_texture1_SetDecalSize()

static HRESULT WINAPI d3drm_texture1_SetDecalSize ( IDirect3DRMTexture *  iface,
D3DVALUE  width,
D3DVALUE  height 
)
static

Definition at line 525 of file texture.c.

526{
528
529 TRACE("iface %p, width %.8e, height %.8e.\n", iface, width, height);
530
531 return IDirect3DRMTexture3_SetDecalSize(&texture->IDirect3DRMTexture3_iface, width, height);
532}
#define IDirect3DRMTexture3_SetDecalSize(p, a, b)
Definition: d3drmobj.h:3493

◆ d3drm_texture1_SetDecalTransparency()

static HRESULT WINAPI d3drm_texture1_SetDecalTransparency ( IDirect3DRMTexture *  iface,
BOOL  transparency 
)
static

Definition at line 552 of file texture.c.

553{
555
556 TRACE("iface %p, transparency %#x.\n", iface, transparency);
557
558 return IDirect3DRMTexture3_SetDecalTransparency(&texture->IDirect3DRMTexture3_iface, transparency);
559}
#define IDirect3DRMTexture3_SetDecalTransparency(p, a)
Definition: d3drmobj.h:3496

◆ d3drm_texture1_SetDecalTransparentColor()

static HRESULT WINAPI d3drm_texture1_SetDecalTransparentColor ( IDirect3DRMTexture *  iface,
D3DCOLOR  color 
)
static

Definition at line 561 of file texture.c.

562{
564
565 TRACE("iface %p, color 0x%08lx.\n", iface, color);
566
567 return IDirect3DRMTexture3_SetDecalTransparentColor(&texture->IDirect3DRMTexture3_iface, color);
568}
#define IDirect3DRMTexture3_SetDecalTransparentColor(p, a)
Definition: d3drmobj.h:3497
GLuint color
Definition: glext.h:6243

◆ d3drm_texture1_SetName()

static HRESULT WINAPI d3drm_texture1_SetName ( IDirect3DRMTexture *  iface,
const char *  name 
)
static

Definition at line 442 of file texture.c.

443{
445
446 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
447
448 return IDirect3DRMTexture3_SetName(&texture->IDirect3DRMTexture3_iface, name);
449}
#define IDirect3DRMTexture3_SetName(p, a)
Definition: d3drmobj.h:3483

◆ d3drm_texture1_SetShades()

static HRESULT WINAPI d3drm_texture1_SetShades ( IDirect3DRMTexture *  iface,
DWORD  max_shades 
)
static

Definition at line 516 of file texture.c.

517{
519
520 TRACE("iface %p, max_shades %lu.\n", iface, max_shades);
521
522 return IDirect3DRMTexture3_SetShades(&texture->IDirect3DRMTexture3_iface, max_shades);
523}
#define IDirect3DRMTexture3_SetShades(p, a)
Definition: d3drmobj.h:3492

◆ d3drm_texture2_AddDestroyCallback()

static HRESULT WINAPI d3drm_texture2_AddDestroyCallback ( IDirect3DRMTexture2 *  iface,
D3DRMOBJECTCALLBACK  cb,
void *  ctx 
)
static

Definition at line 713 of file texture.c.

715{
717
718 TRACE("iface %p, cb %p, ctx %p\n", iface, cb, ctx);
719
720 return IDirect3DRMTexture3_AddDestroyCallback(&texture->IDirect3DRMTexture3_iface, cb, ctx);
721}
static struct d3drm_texture * impl_from_IDirect3DRMTexture2(IDirect3DRMTexture2 *iface)
Definition: texture.c:31

◆ d3drm_texture2_AddRef()

static ULONG WINAPI d3drm_texture2_AddRef ( IDirect3DRMTexture2 *  iface)
static

Definition at line 685 of file texture.c.

686{
688
689 TRACE("iface %p.\n", iface);
690
691 return IDirect3DRMTexture3_AddRef(&texture->IDirect3DRMTexture3_iface);
692}

◆ d3drm_texture2_Changed()

static HRESULT WINAPI d3drm_texture2_Changed ( IDirect3DRMTexture2 *  iface,
BOOL  pixels,
BOOL  palette 
)
static

Definition at line 804 of file texture.c.

805{
806 FIXME("iface %p, pixels %#x, palette %#x stub!\n", iface, pixels, palette);
807
808 return E_NOTIMPL;
809}

◆ d3drm_texture2_Clone()

static HRESULT WINAPI d3drm_texture2_Clone ( IDirect3DRMTexture2 *  iface,
IUnknown *  outer,
REFIID  iid,
void **  out 
)
static

Definition at line 703 of file texture.c.

705{
707
708 TRACE("iface %p, outer %p, iid %s, out %p.\n", iface, outer, debugstr_guid(iid), out);
709
710 return IDirect3DRMTexture3_Clone(&texture->IDirect3DRMTexture3_iface, outer, iid, out);
711}

◆ d3drm_texture2_DeleteDestroyCallback()

static HRESULT WINAPI d3drm_texture2_DeleteDestroyCallback ( IDirect3DRMTexture2 *  iface,
D3DRMOBJECTCALLBACK  cb,
void *  ctx 
)
static

Definition at line 723 of file texture.c.

725{
727
728 TRACE("iface %p, cb %p, ctx %p\n", iface, cb, ctx);
729
730 return IDirect3DRMTexture3_DeleteDestroyCallback(&texture->IDirect3DRMTexture3_iface, cb, ctx);
731}

◆ d3drm_texture2_GenerateMIPMap()

static HRESULT WINAPI d3drm_texture2_GenerateMIPMap ( IDirect3DRMTexture2 *  iface,
DWORD  flags 
)
static

Definition at line 964 of file texture.c.

965{
967
968 TRACE("iface %p, flags %#lx.\n", iface, flags);
969
970 return IDirect3DRMTexture3_GenerateMIPMap(&texture->IDirect3DRMTexture3_iface, flags);
971}
#define IDirect3DRMTexture3_GenerateMIPMap(p, a)
Definition: d3drmobj.h:3508
GLbitfield flags
Definition: glext.h:7161

◆ d3drm_texture2_GetAppData()

static DWORD WINAPI d3drm_texture2_GetAppData ( IDirect3DRMTexture2 *  iface)
static

Definition at line 742 of file texture.c.

743{
745
746 TRACE("iface %p.\n", iface);
747
748 return IDirect3DRMTexture3_GetAppData(&texture->IDirect3DRMTexture3_iface);
749}

◆ d3drm_texture2_GetClassName()

static HRESULT WINAPI d3drm_texture2_GetClassName ( IDirect3DRMTexture2 *  iface,
DWORD *  size,
char *  name 
)
static

Definition at line 769 of file texture.c.

770{
772
773 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
774
775 return IDirect3DRMTexture3_GetClassName(&texture->IDirect3DRMTexture3_iface, size, name);
776}

◆ d3drm_texture2_GetColors()

static DWORD WINAPI d3drm_texture2_GetColors ( IDirect3DRMTexture2 *  iface)
static

Definition at line 910 of file texture.c.

911{
913
914 TRACE("iface %p.\n", iface);
915
916 return IDirect3DRMTexture3_GetColors(&texture->IDirect3DRMTexture3_iface);
917}

◆ d3drm_texture2_GetDecalOrigin()

static HRESULT WINAPI d3drm_texture2_GetDecalOrigin ( IDirect3DRMTexture2 *  iface,
LONG *  x,
LONG *  y 
)
static

Definition at line 883 of file texture.c.

884{
886
887 TRACE("iface %p, x %p, y %p.\n", iface, x, y);
888
889 return IDirect3DRMTexture3_GetDecalOrigin(&texture->IDirect3DRMTexture3_iface, x, y);
890}

◆ d3drm_texture2_GetDecalScale()

static DWORD WINAPI d3drm_texture2_GetDecalScale ( IDirect3DRMTexture2 *  iface)
static

Definition at line 919 of file texture.c.

920{
922
923 TRACE("iface %p.\n", iface);
924
925 return IDirect3DRMTexture3_GetDecalScale(&texture->IDirect3DRMTexture3_iface);
926}

◆ d3drm_texture2_GetDecalSize()

static HRESULT WINAPI d3drm_texture2_GetDecalSize ( IDirect3DRMTexture2 *  iface,
D3DVALUE *  width,
D3DVALUE *  height 
)
static

Definition at line 874 of file texture.c.

875{
877
878 TRACE("iface %p, width %p, height %p.\n", iface, width, height);
879
880 return IDirect3DRMTexture3_GetDecalSize(&texture->IDirect3DRMTexture3_iface, width, height);
881}

◆ d3drm_texture2_GetDecalTransparency()

static BOOL WINAPI d3drm_texture2_GetDecalTransparency ( IDirect3DRMTexture2 *  iface)
static

Definition at line 928 of file texture.c.

929{
931
932 TRACE("iface %p.\n", iface);
933
934 return IDirect3DRMTexture3_GetDecalTransparency(&texture->IDirect3DRMTexture3_iface);
935}

◆ d3drm_texture2_GetDecalTransparentColor()

static D3DCOLOR WINAPI d3drm_texture2_GetDecalTransparentColor ( IDirect3DRMTexture2 *  iface)
static

Definition at line 937 of file texture.c.

938{
940
941 TRACE("iface %p.\n", iface);
942
943 return IDirect3DRMTexture3_GetDecalTransparentColor(&texture->IDirect3DRMTexture3_iface);
944}

◆ d3drm_texture2_GetImage()

static D3DRMIMAGE *WINAPI d3drm_texture2_GetImage ( IDirect3DRMTexture2 *  iface)
static

Definition at line 892 of file texture.c.

893{
895
896 TRACE("iface %p.\n", iface);
897
898 return IDirect3DRMTexture3_GetImage(&texture->IDirect3DRMTexture3_iface);
899}

◆ d3drm_texture2_GetName()

static HRESULT WINAPI d3drm_texture2_GetName ( IDirect3DRMTexture2 *  iface,
DWORD *  size,
char *  name 
)
static

Definition at line 760 of file texture.c.

761{
763
764 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
765
766 return IDirect3DRMTexture3_GetName(&texture->IDirect3DRMTexture3_iface, size, name);
767}

◆ d3drm_texture2_GetShades()

static DWORD WINAPI d3drm_texture2_GetShades ( IDirect3DRMTexture2 *  iface)
static

Definition at line 901 of file texture.c.

902{
904
905 TRACE("iface %p.\n", iface);
906
907 return IDirect3DRMTexture3_GetShades(&texture->IDirect3DRMTexture3_iface);
908}

◆ d3drm_texture2_InitFromFile()

static HRESULT WINAPI d3drm_texture2_InitFromFile ( IDirect3DRMTexture2 *  iface,
const char *  filename 
)
static

Definition at line 778 of file texture.c.

779{
781
782 TRACE("iface %p, filename %s.\n", iface, debugstr_a(filename));
783
784 return IDirect3DRMTexture3_InitFromFile(&texture->IDirect3DRMTexture3_iface, filename);
785}
#define IDirect3DRMTexture3_InitFromFile(p, a)
Definition: d3drmobj.h:3487

◆ d3drm_texture2_InitFromImage()

static HRESULT WINAPI d3drm_texture2_InitFromImage ( IDirect3DRMTexture2 *  iface,
D3DRMIMAGE *  image 
)
static

Definition at line 946 of file texture.c.

947{
949
950 TRACE("iface %p, image %p.\n", iface, image);
951
952 return IDirect3DRMTexture3_InitFromImage(&texture->IDirect3DRMTexture3_iface, image);
953}

◆ d3drm_texture2_InitFromResource()

static HRESULT WINAPI d3drm_texture2_InitFromResource ( IDirect3DRMTexture2 *  iface,
HRSRC  resource 
)
static

Definition at line 797 of file texture.c.

798{
799 FIXME("iface %p, resource %p stub!\n", iface, resource);
800
801 return E_NOTIMPL;
802}

◆ d3drm_texture2_InitFromResource2()

static HRESULT WINAPI d3drm_texture2_InitFromResource2 ( IDirect3DRMTexture2 *  iface,
HMODULE  module,
const char *  name,
const char *  type 
)
static

Definition at line 955 of file texture.c.

957{
958 FIXME("iface %p, module %p, name %s, type %s stub!\n",
960
961 return E_NOTIMPL;
962}
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545

◆ d3drm_texture2_InitFromSurface()

static HRESULT WINAPI d3drm_texture2_InitFromSurface ( IDirect3DRMTexture2 *  iface,
IDirectDrawSurface *  surface 
)
static

Definition at line 787 of file texture.c.

789{
791
792 TRACE("iface %p, surface %p.\n", iface, surface);
793
794 return IDirect3DRMTexture3_InitFromSurface(&texture->IDirect3DRMTexture3_iface, surface);
795}

◆ d3drm_texture2_QueryInterface()

static HRESULT WINAPI d3drm_texture2_QueryInterface ( IDirect3DRMTexture2 *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 676 of file texture.c.

677{
679
680 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
681
682 return IDirect3DRMTexture3_QueryInterface(&texture->IDirect3DRMTexture3_iface, riid, out);
683}

◆ d3drm_texture2_Release()

static ULONG WINAPI d3drm_texture2_Release ( IDirect3DRMTexture2 *  iface)
static

Definition at line 694 of file texture.c.

695{
697
698 TRACE("iface %p.\n", iface);
699
700 return IDirect3DRMTexture3_Release(&texture->IDirect3DRMTexture3_iface);
701}

◆ d3drm_texture2_SetAppData()

static HRESULT WINAPI d3drm_texture2_SetAppData ( IDirect3DRMTexture2 *  iface,
DWORD  data 
)
static

Definition at line 733 of file texture.c.

734{
736
737 TRACE("iface %p, data %#lx.\n", iface, data);
738
739 return IDirect3DRMTexture3_SetAppData(&texture->IDirect3DRMTexture3_iface, data);
740}

◆ d3drm_texture2_SetColors()

static HRESULT WINAPI d3drm_texture2_SetColors ( IDirect3DRMTexture2 *  iface,
DWORD  max_colors 
)
static

Definition at line 811 of file texture.c.

812{
814
815 TRACE("iface %p, max_colors %lu.\n", iface, max_colors);
816
817 return IDirect3DRMTexture3_SetColors(&texture->IDirect3DRMTexture3_iface, max_colors);
818}

◆ d3drm_texture2_SetDecalOrigin()

static HRESULT WINAPI d3drm_texture2_SetDecalOrigin ( IDirect3DRMTexture2 *  iface,
LONG  x,
LONG  y 
)
static

Definition at line 838 of file texture.c.

839{
841
842 TRACE("iface %p, x %ld, y %ld.\n", iface, x, y);
843
844 return IDirect3DRMTexture3_SetDecalOrigin(&texture->IDirect3DRMTexture3_iface, x, y);
845}

◆ d3drm_texture2_SetDecalScale()

static HRESULT WINAPI d3drm_texture2_SetDecalScale ( IDirect3DRMTexture2 *  iface,
DWORD  scale 
)
static

Definition at line 847 of file texture.c.

848{
850
851 TRACE("iface %p, scale %lu.\n", iface, scale);
852
853 return IDirect3DRMTexture3_SetDecalScale(&texture->IDirect3DRMTexture3_iface, scale);
854}

◆ d3drm_texture2_SetDecalSize()

static HRESULT WINAPI d3drm_texture2_SetDecalSize ( IDirect3DRMTexture2 *  iface,
D3DVALUE  width,
D3DVALUE  height 
)
static

Definition at line 829 of file texture.c.

830{
832
833 TRACE("iface %p, width %.8e, height %.8e.\n", iface, width, height);
834
835 return IDirect3DRMTexture3_SetDecalSize(&texture->IDirect3DRMTexture3_iface, width, height);
836}

◆ d3drm_texture2_SetDecalTransparency()

static HRESULT WINAPI d3drm_texture2_SetDecalTransparency ( IDirect3DRMTexture2 *  iface,
BOOL  transparency 
)
static

Definition at line 856 of file texture.c.

857{
859
860 TRACE("iface %p, transparency %#x.\n", iface, transparency);
861
862 return IDirect3DRMTexture3_SetDecalTransparency(&texture->IDirect3DRMTexture3_iface, transparency);
863}

◆ d3drm_texture2_SetDecalTransparentColor()

static HRESULT WINAPI d3drm_texture2_SetDecalTransparentColor ( IDirect3DRMTexture2 *  iface,
D3DCOLOR  color 
)
static

Definition at line 865 of file texture.c.

866{
868
869 TRACE("iface %p, color 0x%08lx.\n", iface, color);
870
871 return IDirect3DRMTexture3_SetDecalTransparentColor(&texture->IDirect3DRMTexture3_iface, color);
872}

◆ d3drm_texture2_SetName()

static HRESULT WINAPI d3drm_texture2_SetName ( IDirect3DRMTexture2 *  iface,
const char *  name 
)
static

Definition at line 751 of file texture.c.

752{
754
755 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
756
757 return IDirect3DRMTexture3_SetName(&texture->IDirect3DRMTexture3_iface, name);
758}

◆ d3drm_texture2_SetShades()

static HRESULT WINAPI d3drm_texture2_SetShades ( IDirect3DRMTexture2 *  iface,
DWORD  max_shades 
)
static

Definition at line 820 of file texture.c.

821{
823
824 TRACE("iface %p, max_shades %lu.\n", iface, max_shades);
825
826 return IDirect3DRMTexture3_SetShades(&texture->IDirect3DRMTexture3_iface, max_shades);
827}

◆ d3drm_texture3_AddDestroyCallback()

static HRESULT WINAPI d3drm_texture3_AddDestroyCallback ( IDirect3DRMTexture3 *  iface,
D3DRMOBJECTCALLBACK  cb,
void *  ctx 
)
static

Definition at line 1073 of file texture.c.

1075{
1077
1078 TRACE("iface %p, cb %p, ctx %p\n", iface, cb, ctx);
1079
1081}
HRESULT d3drm_object_add_destroy_callback(struct d3drm_object *object, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: d3drm_main.c:57
static struct d3drm_texture * impl_from_IDirect3DRMTexture3(IDirect3DRMTexture3 *iface)
Definition: texture.c:36

◆ d3drm_texture3_AddRef()

static ULONG WINAPI d3drm_texture3_AddRef ( IDirect3DRMTexture3 *  iface)
static

Definition at line 1042 of file texture.c.

1043{
1045 ULONG refcount = InterlockedIncrement(&texture->obj.ref);
1046
1047 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
1048
1049 return refcount;
1050}
#define InterlockedIncrement
Definition: armddk.h:53
uint32_t ULONG
Definition: typedefs.h:59

◆ d3drm_texture3_Changed()

static HRESULT WINAPI d3drm_texture3_Changed ( IDirect3DRMTexture3 *  iface,
DWORD  flags,
DWORD  rect_count,
RECT *  rects 
)
static

Definition at line 1182 of file texture.c.

1184{
1185 FIXME("iface %p, flags %#lx, rect_count %lu, rects %p stub!\n", iface, flags, rect_count, rects);
1186
1187 return E_NOTIMPL;
1188}

◆ d3drm_texture3_Clone()

static HRESULT WINAPI d3drm_texture3_Clone ( IDirect3DRMTexture3 *  iface,
IUnknown *  outer,
REFIID  iid,
void **  out 
)
static

Definition at line 1065 of file texture.c.

1067{
1068 FIXME("iface %p, outer %p, iid %s, out %p stub!\n", iface, outer, debugstr_guid(iid), out);
1069
1070 return E_NOTIMPL;
1071}

◆ d3drm_texture3_DeleteDestroyCallback()

static HRESULT WINAPI d3drm_texture3_DeleteDestroyCallback ( IDirect3DRMTexture3 *  iface,
D3DRMOBJECTCALLBACK  cb,
void *  ctx 
)
static

Definition at line 1083 of file texture.c.

1085{
1087
1088 TRACE("iface %p, cb %p, ctx %p\n", iface, cb, ctx);
1089
1091}
HRESULT d3drm_object_delete_destroy_callback(struct d3drm_object *object, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: d3drm_main.c:74

◆ d3drm_texture3_GenerateMIPMap()

static HRESULT WINAPI d3drm_texture3_GenerateMIPMap ( IDirect3DRMTexture3 *  iface,
DWORD  flags 
)
static

Definition at line 1358 of file texture.c.

1359{
1360 FIXME("iface %p, flags %#lx stub!\n", iface, flags);
1361
1362 return E_NOTIMPL;
1363}

◆ d3drm_texture3_GetAppData()

static DWORD WINAPI d3drm_texture3_GetAppData ( IDirect3DRMTexture3 *  iface)
static

Definition at line 1104 of file texture.c.

1105{
1107
1108 TRACE("iface %p.\n", iface);
1109
1110 return texture->obj.appdata;
1111}

◆ d3drm_texture3_GetCacheOptions()

static HRESULT WINAPI d3drm_texture3_GetCacheOptions ( IDirect3DRMTexture3 *  iface,
LONG *  importance,
DWORD *  flags 
)
static

Definition at line 1394 of file texture.c.

1396{
1397 FIXME("iface %p, importance %p, flags %p stub!\n", iface, importance, flags);
1398
1399 return E_NOTIMPL;
1400}

◆ d3drm_texture3_GetClassName()

static HRESULT WINAPI d3drm_texture3_GetClassName ( IDirect3DRMTexture3 *  iface,
DWORD *  size,
char *  name 
)
static

Definition at line 1131 of file texture.c.

1132{
1134
1135 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
1136
1138}
HRESULT d3drm_object_get_class_name(struct d3drm_object *object, DWORD *size, char *name)
Definition: d3drm_main.c:94

◆ d3drm_texture3_GetColors()

static DWORD WINAPI d3drm_texture3_GetColors ( IDirect3DRMTexture3 *  iface)
static

Definition at line 1299 of file texture.c.

1300{
1302 TRACE("iface %p\n", iface);
1303 return texture->max_colors;
1304}

◆ d3drm_texture3_GetDecalOrigin()

static HRESULT WINAPI d3drm_texture3_GetDecalOrigin ( IDirect3DRMTexture3 *  iface,
LONG *  x,
LONG *  y 
)
static

Definition at line 1271 of file texture.c.

1272{
1274
1275 TRACE("iface %p, x %p, y %p\n", iface, x, y);
1276
1277 *x = texture->decal_x;
1278 *y = texture->decal_y;
1279
1280 return S_OK;
1281}
#define S_OK
Definition: intsafe.h:52

◆ d3drm_texture3_GetDecalScale()

static DWORD WINAPI d3drm_texture3_GetDecalScale ( IDirect3DRMTexture3 *  iface)
static

Definition at line 1306 of file texture.c.

1307{
1308 FIXME("iface %p stub!\n", iface);
1309
1310 return 0;
1311}

◆ d3drm_texture3_GetDecalSize()

static HRESULT WINAPI d3drm_texture3_GetDecalSize ( IDirect3DRMTexture3 *  iface,
D3DVALUE *  width,
D3DVALUE *  height 
)
static

Definition at line 1259 of file texture.c.

1260{
1262
1263 TRACE("iface %p, width %p, height %p.\n", iface, width, height);
1264
1265 *width = texture->decal_width;
1266 *height = texture->decal_height;
1267
1268 return S_OK;
1269}

◆ d3drm_texture3_GetDecalTransparency()

static BOOL WINAPI d3drm_texture3_GetDecalTransparency ( IDirect3DRMTexture3 *  iface)
static

Definition at line 1313 of file texture.c.

1314{
1316
1317 TRACE("iface %p.\n", iface);
1318
1319 return texture->transparency;
1320}

◆ d3drm_texture3_GetDecalTransparentColor()

static D3DCOLOR WINAPI d3drm_texture3_GetDecalTransparentColor ( IDirect3DRMTexture3 *  iface)
static

Definition at line 1322 of file texture.c.

1323{
1324 FIXME("iface %p stub!\n", iface);
1325
1326 return 0;
1327}

◆ d3drm_texture3_GetImage()

static D3DRMIMAGE *WINAPI d3drm_texture3_GetImage ( IDirect3DRMTexture3 *  iface)
static

Definition at line 1283 of file texture.c.

1284{
1286
1287 TRACE("iface %p.\n", iface);
1288
1289 return texture->image;
1290}

◆ d3drm_texture3_GetName()

static HRESULT WINAPI d3drm_texture3_GetName ( IDirect3DRMTexture3 *  iface,
DWORD *  size,
char *  name 
)
static

Definition at line 1122 of file texture.c.

1123{
1125
1126 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
1127
1128 return d3drm_object_get_name(&texture->obj, size, name);
1129}
HRESULT d3drm_object_get_name(struct d3drm_object *object, DWORD *size, char *name)
Definition: d3drm_main.c:113

◆ d3drm_texture3_GetShades()

static DWORD WINAPI d3drm_texture3_GetShades ( IDirect3DRMTexture3 *  iface)
static

Definition at line 1292 of file texture.c.

1293{
1295 TRACE("iface %p\n", iface);
1296 return texture->max_shades;
1297}

◆ d3drm_texture3_GetSurface()

static HRESULT WINAPI d3drm_texture3_GetSurface ( IDirect3DRMTexture3 *  iface,
DWORD  flags,
IDirectDrawSurface **  surface 
)
static

Definition at line 1365 of file texture.c.

1367{
1369
1370 TRACE("iface %p, flags %#lx, surface %p.\n", iface, flags, surface);
1371
1372 if (flags)
1373 FIXME("unexpected flags %#lx.\n", flags);
1374
1375 if (!surface)
1376 return D3DRMERR_BADVALUE;
1377
1378 if (texture->image)
1380
1381 *surface = texture->surface;
1382 IDirectDrawSurface_AddRef(*surface);
1383
1384 return D3DRM_OK;
1385}
#define D3DRMERR_NOTCREATEDFROMDDS
Definition: d3drm.h:513
#define D3DRMERR_BADVALUE
Definition: d3drm.h:496

◆ d3drm_texture3_InitFromFile()

static HRESULT WINAPI d3drm_texture3_InitFromFile ( IDirect3DRMTexture3 *  iface,
const char *  filename 
)
static

Definition at line 1140 of file texture.c.

1141{
1144 HRESULT hr;
1145
1146 TRACE("iface %p, filename %s.\n", iface, debugstr_a(filename));
1147
1149 return hr;
1150
1152}

◆ d3drm_texture3_InitFromImage()

static HRESULT WINAPI d3drm_texture3_InitFromImage ( IDirect3DRMTexture3 *  iface,
D3DRMIMAGE *  image 
)
static

Definition at line 1329 of file texture.c.

1330{
1332
1333 TRACE("iface %p, image %p.\n", iface, image);
1334
1336 return D3DRMERR_BADOBJECT;
1337
1338 /* d3drm intentionally leaks a reference to IDirect3DRM here if texture has already been initialized. */
1340
1341 if (texture->image || texture->surface)
1342 return D3DRMERR_BADOBJECT;
1343
1344 texture->image = image;
1345
1346 return D3DRM_OK;
1347}
#define D3DRMERR_BADOBJECT
Definition: d3drm.h:487
#define IDirect3DRM_AddRef(p)
Definition: d3drm.h:110
static BOOL d3drm_validate_image(D3DRMIMAGE *image)
Definition: texture.c:53

◆ d3drm_texture3_InitFromResource()

static HRESULT WINAPI d3drm_texture3_InitFromResource ( IDirect3DRMTexture3 *  iface,
HRSRC  resource 
)
static

Definition at line 1175 of file texture.c.

1176{
1177 FIXME("iface %p, resource %p stub!\n", iface, resource);
1178
1179 return E_NOTIMPL;
1180}

◆ d3drm_texture3_InitFromResource2()

static HRESULT WINAPI d3drm_texture3_InitFromResource2 ( IDirect3DRMTexture3 *  iface,
HMODULE  module,
const char *  name,
const char *  type 
)
static

Definition at line 1349 of file texture.c.

1351{
1352 FIXME("iface %p, module %p, name %s, type %s stub!\n",
1353 iface, module, debugstr_a(name), debugstr_a(type));
1354
1355 return E_NOTIMPL;
1356}

◆ d3drm_texture3_InitFromSurface()

static HRESULT WINAPI d3drm_texture3_InitFromSurface ( IDirect3DRMTexture3 *  iface,
IDirectDrawSurface *  surface 
)
static

Definition at line 1154 of file texture.c.

1156{
1158
1159 TRACE("iface %p, surface %p.\n", iface, surface);
1160
1161 if (!surface)
1162 return D3DRMERR_BADOBJECT;
1163
1164 /* d3drm intentionally leaks a reference to IDirect3DRM here if texture has already been initialized. */
1166
1167 if (texture->image || texture->surface)
1168 return D3DRMERR_BADOBJECT;
1169
1170 texture->surface = surface;
1171 IDirectDrawSurface_AddRef(texture->surface);
1172 return D3DRM_OK;
1173}

◆ d3drm_texture3_QueryInterface()

static HRESULT WINAPI d3drm_texture3_QueryInterface ( IDirect3DRMTexture3 *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 1010 of file texture.c.

1011{
1013
1014 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
1015
1016 if (IsEqualGUID(riid, &IID_IDirect3DRMTexture)
1017 || IsEqualGUID(riid, &IID_IDirect3DRMVisual)
1018 || IsEqualGUID(riid, &IID_IDirect3DRMObject)
1020 {
1021 *out = &texture->IDirect3DRMTexture_iface;
1022 }
1023 else if (IsEqualGUID(riid, &IID_IDirect3DRMTexture2))
1024 {
1025 *out = &texture->IDirect3DRMTexture2_iface;
1026 }
1027 else if (IsEqualGUID(riid, &IID_IDirect3DRMTexture3))
1028 {
1029 *out = &texture->IDirect3DRMTexture3_iface;
1030 }
1031 else
1032 {
1033 *out = NULL;
1034 WARN("%s not implemented, returning CLASS_E_CLASSNOTAVAILABLE.\n", debugstr_guid(riid));
1036 }
1037
1038 IUnknown_AddRef((IUnknown *)*out);
1039 return S_OK;
1040}
const GUID IID_IUnknown
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772

◆ d3drm_texture3_Release()

static ULONG WINAPI d3drm_texture3_Release ( IDirect3DRMTexture3 *  iface)
static

Definition at line 1052 of file texture.c.

1053{
1055 ULONG refcount = InterlockedDecrement(&texture->obj.ref);
1056
1057 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
1058
1059 if (!refcount)
1061
1062 return refcount;
1063}
#define InterlockedDecrement
Definition: armddk.h:52
static void d3drm_texture_destroy(struct d3drm_texture *texture)
Definition: texture.c:41

◆ d3drm_texture3_SetAppData()

static HRESULT WINAPI d3drm_texture3_SetAppData ( IDirect3DRMTexture3 *  iface,
DWORD  data 
)
static

Definition at line 1093 of file texture.c.

1094{
1096
1097 TRACE("iface %p, data %#lx.\n", iface, data);
1098
1099 texture->obj.appdata = data;
1100
1101 return D3DRM_OK;
1102}

◆ d3drm_texture3_SetCacheOptions()

static HRESULT WINAPI d3drm_texture3_SetCacheOptions ( IDirect3DRMTexture3 *  iface,
LONG  importance,
DWORD  flags 
)
static

Definition at line 1387 of file texture.c.

1388{
1389 FIXME("iface %p, importance %ld, flags %#lx stub!\n", iface, importance, flags);
1390
1391 return E_NOTIMPL;
1392}

◆ d3drm_texture3_SetColors()

static HRESULT WINAPI d3drm_texture3_SetColors ( IDirect3DRMTexture3 *  iface,
DWORD  max_colors 
)
static

Definition at line 1190 of file texture.c.

1191{
1193 TRACE("iface %p, max_colors %lu\n", iface, max_colors);
1194
1195 texture->max_colors= max_colors;
1196
1197 return S_OK;
1198}

◆ d3drm_texture3_SetDecalOrigin()

static HRESULT WINAPI d3drm_texture3_SetDecalOrigin ( IDirect3DRMTexture3 *  iface,
LONG  x,
LONG  y 
)
static

Definition at line 1222 of file texture.c.

1223{
1225
1226 TRACE("iface %p, x %ld, y %ld\n", iface, x, y);
1227
1228 texture->decal_x = x;
1229 texture->decal_y = y;
1230
1231 return S_OK;
1232}

◆ d3drm_texture3_SetDecalScale()

static HRESULT WINAPI d3drm_texture3_SetDecalScale ( IDirect3DRMTexture3 *  iface,
DWORD  scale 
)
static

Definition at line 1234 of file texture.c.

1235{
1236 FIXME("iface %p, scale %lu stub!\n", iface, scale);
1237
1238 return E_NOTIMPL;
1239}

◆ d3drm_texture3_SetDecalSize()

static HRESULT WINAPI d3drm_texture3_SetDecalSize ( IDirect3DRMTexture3 *  iface,
D3DVALUE  width,
D3DVALUE  height 
)
static

Definition at line 1210 of file texture.c.

1211{
1213
1214 TRACE("iface %p, width %.8e, height %.8e.\n", iface, width, height);
1215
1216 texture->decal_width = width;
1217 texture->decal_height = height;
1218
1219 return S_OK;
1220}

◆ d3drm_texture3_SetDecalTransparency()

static HRESULT WINAPI d3drm_texture3_SetDecalTransparency ( IDirect3DRMTexture3 *  iface,
BOOL  transparency 
)
static

Definition at line 1241 of file texture.c.

1242{
1244
1245 TRACE("iface %p, transparency %#x.\n", iface, transparency);
1246
1247 texture->transparency = transparency;
1248
1249 return S_OK;
1250}

◆ d3drm_texture3_SetDecalTransparentColor()

static HRESULT WINAPI d3drm_texture3_SetDecalTransparentColor ( IDirect3DRMTexture3 *  iface,
D3DCOLOR  color 
)
static

Definition at line 1252 of file texture.c.

1253{
1254 FIXME("iface %p, color 0x%08lx stub!\n", iface, color);
1255
1256 return E_NOTIMPL;
1257}

◆ d3drm_texture3_SetDownsampleCallback()

static HRESULT WINAPI d3drm_texture3_SetDownsampleCallback ( IDirect3DRMTexture3 *  iface,
D3DRMDOWNSAMPLECALLBACK  cb,
void *  ctx 
)
static

Definition at line 1402 of file texture.c.

1404{
1405 FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
1406
1407 return E_NOTIMPL;
1408}

◆ d3drm_texture3_SetName()

static HRESULT WINAPI d3drm_texture3_SetName ( IDirect3DRMTexture3 *  iface,
const char *  name 
)
static

Definition at line 1113 of file texture.c.

1114{
1116
1117 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
1118
1119 return d3drm_object_set_name(&texture->obj, name);
1120}
HRESULT d3drm_object_set_name(struct d3drm_object *object, const char *name)
Definition: d3drm_main.c:137

◆ d3drm_texture3_SetShades()

static HRESULT WINAPI d3drm_texture3_SetShades ( IDirect3DRMTexture3 *  iface,
DWORD  max_shades 
)
static

Definition at line 1200 of file texture.c.

1201{
1203 TRACE("iface %p, max_shades %lu\n", iface, max_shades);
1204
1205 texture->max_shades = max_shades;
1206
1207 return S_OK;
1208}

◆ d3drm_texture3_SetValidationCallback()

static HRESULT WINAPI d3drm_texture3_SetValidationCallback ( IDirect3DRMTexture3 *  iface,
D3DRMVALIDATIONCALLBACK  cb,
void *  ctx 
)
static

Definition at line 1410 of file texture.c.

1412{
1413 FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
1414
1415 return E_NOTIMPL;
1416}

◆ d3drm_texture_create()

HRESULT d3drm_texture_create ( struct d3drm_texture **  texture,
IDirect3DRM *  d3drm 
)

Definition at line 1460 of file texture.c.

1461{
1462 static const char classname[] = "Texture";
1463 struct d3drm_texture *object;
1464
1465 TRACE("texture %p.\n", texture);
1466
1467 if (!(object = calloc(1, sizeof(*object))))
1468 return E_OUTOFMEMORY;
1469
1470 object->IDirect3DRMTexture_iface.lpVtbl = &d3drm_texture1_vtbl;
1471 object->IDirect3DRMTexture2_iface.lpVtbl = &d3drm_texture2_vtbl;
1472 object->IDirect3DRMTexture3_iface.lpVtbl = &d3drm_texture3_vtbl;
1473 object->d3drm = d3drm;
1474 object->max_colors = 8;
1475 object->max_shades = 16;
1476 object->transparency = FALSE;
1477 object->decal_width = 1.0f;
1478 object->decal_height = 1.0f;
1479
1481
1482 *texture = object;
1483
1484 return D3DRM_OK;
1485}
void d3drm_object_init(struct d3drm_object *object, const char *classname)
Definition: d3drm_main.c:41
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
static const struct IDirect3DRMTexture2Vtbl d3drm_texture2_vtbl
Definition: texture.c:973
static const struct IDirect3DRMTextureVtbl d3drm_texture1_vtbl
Definition: texture.c:642
static const struct IDirect3DRMTexture3Vtbl d3drm_texture3_vtbl
Definition: texture.c:1418
WCHAR classname[128]
Definition: startup.c:15
#define calloc
Definition: rosglue.h:14
IDirect3DRM * d3drm
Definition: d3drm_private.h:61

Referenced by d3drm1_LoadTexture(), d3drm1_LoadTextureFromResource(), d3drm2_LoadTextureFromResource(), d3drm3_CreateTexture(), d3drm3_CreateTextureFromSurface(), d3drm3_LoadTexture(), d3drm3_LoadTextureFromResource(), d3drm_create_texture_object(), and load_mesh_data().

◆ d3drm_texture_destroy()

static void d3drm_texture_destroy ( struct d3drm_texture *  texture)
static

Definition at line 41 of file texture.c.

42{
43 TRACE("texture %p is being destroyed.\n", texture);
44
45 d3drm_object_cleanup((IDirect3DRMObject*)&texture->IDirect3DRMTexture_iface, &texture->obj);
46 if (texture->image || texture->surface)
48 if (texture->surface)
49 IDirectDrawSurface_Release(texture->surface);
51}
#define IDirect3DRM_Release(p)
Definition: d3drm.h:111
void d3drm_object_cleanup(IDirect3DRMObject *iface, struct d3drm_object *object)
Definition: d3drm_main.c:155

Referenced by d3drm_texture3_Release().

◆ d3drm_texture_load()

static HRESULT d3drm_texture_load ( struct d3drm_texture *  texture,
const char *  path,
BOOL  flip,
D3DRMIMAGE **  image_out 
)
static

Definition at line 278 of file texture.c.

280{
282 unsigned int w, h, bpp;
287 LONGLONG rem;
288 HRESULT hr;
289
291 return D3DRMERR_BADOBJECT;
292
296 return D3DRMERR_BADVALUE;
297
298 if (!GetFileSizeEx(mapping, &size))
299 {
301 return D3DRMERR_BADVALUE;
302 }
303 rem = size.QuadPart;
304
307 if (!header)
308 return D3DRMERR_BADVALUE;
309
311 if (!(image = calloc(1, sizeof(*image))))
312 goto fail;
313
315 if (rem < sizeof(*header) || header->bfType != 0x4d42 /* BM */)
316 goto fail;
317 rem -= sizeof(*header);
318
319 info = (BITMAPINFO *)&header[1];
320 /* Only allow version 1 DIB's (BITMAPINFOHEADER) to be loaded. */
321 if (rem < sizeof(info->bmiHeader) || info->bmiHeader.biSize != sizeof(info->bmiHeader))
322 goto fail;
323 rem -= sizeof(info->bmiHeader);
324
325 w = info->bmiHeader.biWidth;
326 h = abs(info->bmiHeader.biHeight);
327 bpp = info->bmiHeader.biBitCount == 24 ? 32 : info->bmiHeader.biBitCount;
328 if (bpp != 8 && bpp != 32)
329 goto fail;
330
331 image->width = w;
332 image->height = h;
333 image->aspectx = 1;
334 image->aspecty = 1;
335 if (bpp == 8)
336 {
337 rem -= 256 * sizeof(*info->bmiColors);
338 if (w > rem / h)
339 goto fail;
340 hr = d3drm_image_load_8(image, info->bmiColors, (unsigned char *)&info->bmiColors[256], rem, w, h, flip);
341 }
342 else
343 {
344 if (w > (rem / 3) / h)
345 goto fail;
346 hr = d3drm_image_load_32(image, (unsigned char *)&info->bmiColors, rem, w, h, flip);
347 }
348 if (FAILED(hr))
349 goto fail;
350
351 /* Use an internal destroy callback to destroy the image struct. */
353
354 *image_out = image;
355
357
358 return hr;
359
360fail:
361 free(image);
363
364 return hr;
365}
#define D3DRMERR_BADFILE
Definition: d3drm.h:494
#define IDirect3DRMObject_AddDestroyCallback(p, a, b)
Definition: d3drmobj.h:223
static HRESULT d3drm_image_load_8(D3DRMIMAGE *image, const RGBQUAD *palette, unsigned char *src_data, LONGLONG src_data_size, SIZE_T w, SIZE_T h, BOOL flip)
Definition: texture.c:214
static HRESULT d3drm_image_load_32(D3DRMIMAGE *image, unsigned char *src_data, LONGLONG src_data_size, SIZE_T w, SIZE_T h, BOOL flip)
Definition: texture.c:163
static void CDECL destroy_image_callback(IDirect3DRMObject *obj, void *arg)
Definition: texture.c:268
#define CloseHandle
Definition: compat.h:739
#define PAGE_READONLY
Definition: compat.h:138
#define UnmapViewOfFile
Definition: compat.h:746
#define OPEN_EXISTING
Definition: compat.h:775
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define CreateFileMappingW(a, b, c, d, e, f)
Definition: compat.h:744
#define CreateFileA(a, b, c, d, e, f, g)
Definition: compat.h:740
#define GENERIC_READ
Definition: compat.h:135
#define FILE_MAP_READ
Definition: compat.h:776
#define GetFileSizeEx
Definition: compat.h:757
#define MapViewOfFile
Definition: compat.h:745
#define FILE_SHARE_READ
Definition: compat.h:136
#define abs(i)
Definition: fconv.c:206
GLenum GLenum GLenum GLenum mapping
Definition: glext.h:9031
Definition: fci.c:123
int64_t LONGLONG
Definition: typedefs.h:68
ULONG bpp[]
Definition: xlate.c:19

Referenced by d3drm_texture1_InitFromFile(), and d3drm_texture3_InitFromFile().

◆ d3drm_validate_image()

static BOOL d3drm_validate_image ( D3DRMIMAGE *  image)
static

Definition at line 53 of file texture.c.

54{
55 if (!image)
56 return FALSE;
57
58 TRACE("size (%d, %d), aspect (%d, %d), depth %d, red %#lx, green %#lx, blue %#lx, "
59 "buffer1 %p, buffer2 %p, rgb %d, pal %p, size %d\n",
60 image->width, image->height, image->aspectx, image->aspecty,
61 image->depth, image->red_mask, image->green_mask, image->blue_mask, image->buffer1,
62 image->buffer2, image->rgb, image->palette, image->palette_size );
63
64 if (!image->buffer1)
65 return FALSE;
66
67 if (image->rgb)
68 {
69 if (!image->red_mask || !image->green_mask || !image->blue_mask)
70 return FALSE;
71 }
72 else
73 {
74 if (!image->palette || !image->palette_size)
75 return FALSE;
76 }
77
78 return TRUE;
79}

Referenced by d3drm_texture3_InitFromImage().

◆ destroy_image_callback()

static void CDECL destroy_image_callback ( IDirect3DRMObject *  obj,
void *  arg 
)
static

Definition at line 268 of file texture.c.

269{
271
272 TRACE("texture object %p, image %p.\n", obj, image);
273
274 free(image->buffer1);
275 free(image);
276}
void * arg
Definition: msvc.h:10

Referenced by d3drm_texture_load().

◆ impl_from_IDirect3DRMTexture()

◆ impl_from_IDirect3DRMTexture2()

◆ impl_from_IDirect3DRMTexture3()

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( d3drm  )

Variable Documentation

◆ d3drm_texture1_vtbl

const struct IDirect3DRMTextureVtbl d3drm_texture1_vtbl
static

Definition at line 642 of file texture.c.

Referenced by d3drm_texture_create().

◆ d3drm_texture2_vtbl

const struct IDirect3DRMTexture2Vtbl d3drm_texture2_vtbl
static

Definition at line 973 of file texture.c.

Referenced by d3drm_texture_create().

◆ d3drm_texture3_vtbl

const struct IDirect3DRMTexture3Vtbl d3drm_texture3_vtbl
static

Definition at line 1418 of file texture.c.

Referenced by d3drm_texture_create().