82#define DDS_PALETTE_SIZE (sizeof(PALETTEENTRY) * 256)
89#define DDS_PIXELFORMAT 0x1000
90#define DDS_MIPMAPCOUNT 0x20000
91#define DDS_LINEARSIZE 0x80000
92#define DDS_DEPTH 0x800000
95#define DDSCAPS_ALPHA 0x2
96#define DDS_CAPS_COMPLEX 0x8
97#define DDSCAPS_PALETTE 0x100
98#define DDS_CAPS_TEXTURE 0x1000
99#define DDS_CAPS_MIPMAP 0x400000
102#define DDS_CAPS2_CUBEMAP 0x200
103#define DDS_CAPS2_CUBEMAP_POSITIVEX 0x400
104#define DDS_CAPS2_CUBEMAP_NEGATIVEX 0x800
105#define DDS_CAPS2_CUBEMAP_POSITIVEY 0x1000
106#define DDS_CAPS2_CUBEMAP_NEGATIVEY 0x2000
107#define DDS_CAPS2_CUBEMAP_POSITIVEZ 0x4000
108#define DDS_CAPS2_CUBEMAP_NEGATIVEZ 0x8000
109#define DDS_CAPS2_CUBEMAP_ALL_FACES ( DDS_CAPS2_CUBEMAP_POSITIVEX | DDS_CAPS2_CUBEMAP_NEGATIVEX \
110 | DDS_CAPS2_CUBEMAP_POSITIVEY | DDS_CAPS2_CUBEMAP_NEGATIVEY \
111 | DDS_CAPS2_CUBEMAP_POSITIVEZ | DDS_CAPS2_CUBEMAP_NEGATIVEZ )
112#define DDS_CAPS2_VOLUME 0x200000
115#define DDS_PF_ALPHA 0x1
116#define DDS_PF_ALPHA_ONLY 0x2
117#define DDS_PF_FOURCC 0x4
118#define DDS_PF_INDEXED 0x20
119#define DDS_PF_RGB 0x40
120#define DDS_PF_YUV 0x200
121#define DDS_PF_LUMINANCE 0x20000
122#define DDS_PF_BUMPLUMINANCE 0x40000
123#define DDS_PF_BUMPDUDV 0x80000
166 *temp_surface =
NULL;
189 WARN(
"Failed to create temporary surface, surface %p, format %#x, "
190 "usage %#lx, pool %#x, write %#x, width %u, height %u.\n",
203 WARN(
"Failed to lock surface %p, write %#x, usage %#lx, pool %#x.\n",
206 *temp_surface =
NULL;
209 TRACE(
"Created temporary surface %p.\n", surface);
232 surface_point.
x = surface_rect->
left;
233 surface_point.
y = surface_rect->
top;
242 WARN(
"Updating surface failed, hr %#lx, surface %p, temp_surface %p.\n",
243 hr, surface, temp_surface);
293 { { 32,
DDS_PF_INDEXED |
DDS_PF_ALPHA, 0, 16, 0, 0, 0, 0xff00, },
D3DX_PIXEL_FORMAT_P8_UINT_A8_UNORM },
315 return pf_a->
bpp == pf_b->
bpp && !((check_rmask && pf_a->
rmask != pf_b->
rmask)
317 || (check_amask && pf_a->
amask != pf_b->
amask));
324 TRACE(
"pixel_format: size %lu, flags %#lx, fourcc %#lx, bpp %lu.\n",
pixel_format->size,
379 WARN(
"Unknown pixel format (flags %#lx, fourcc %#lx, bpp %lu, r %#lx, g %#lx, b %#lx, a %#lx).\n",
453 uint32_t layer_size, row_pitch, slice_pitch,
i;
457 for (
i = 0;
i < mip_levels; ++
i)
461 layer_size += slice_pitch * dims.
depth;
498 uint32_t dst_row_pitch, dst_slice_pitch;
539 assert(0 &&
"Unexpected file format.");
543 if (src_pixels->
size.width != 0 && src_pixels->
size.height != 0)
545 const RECT dst_rect = { 0, 0, src_pixels->
size.width, src_pixels->
size.height };
548 src_pixels->
size.height, src_pixels->
size.depth, &dst_rect);
557 if (*dst_buffer !=
buffer)
581 FIXME(
"Default palette unimplemented.\n");
589 || src_rect->
left < 0 || src_rect->
top < 0)
591 WARN(
"Invalid src_rect specified.\n");
598 src_rect = &src_rect_temp;
637static const uint8_t hdr_file_signature[] = {
'#',
'?',
'R',
'A',
'D',
'I',
'A',
'N',
'C',
'E',
'\n' };
674 if ((src_data_size >=
signature->file_signature_len)
688 uint32_t expected_src_data_size, header_size;
693 if (src_data_size <
sizeof(*
header) ||
header->pixel_format.size !=
sizeof(
header->pixel_format))
696 TRACE(
"File type is DDS.\n");
698 header_size = is_indexed_fmt ?
sizeof(*header) +
DDS_PALETTE_SIZE :
sizeof(*header);
703 image->layer_count = 1;
708 TRACE(
"Pixel format is %#x.\n",
image->format);
718 WARN(
"Tried to load a partial cubemap DDS file.\n");
722 image->layer_count = 6;
730 if (!
image->layer_pitch)
732 expected_src_data_size = (
image->layer_pitch *
image->layer_count) + header_size;
733 if (src_data_size < expected_src_data_size)
735 WARN(
"File is too short %u, expected at least %u bytes.\n", src_data_size, expected_src_data_size);
740 image->pixels = ((
BYTE *)src_data) + header_size;
742 if (starting_mip_level && (
image->mip_levels > 1))
744 uint32_t i, row_pitch, slice_pitch, initial_mip_levels;
747 initial_mip_levels =
image->mip_levels;
748 for (
i = 0;
i < starting_mip_level;
i++)
754 image->pixels += slice_pitch *
image->size.depth;
756 if (--
image->mip_levels == 1)
760 TRACE(
"Requested starting mip level %u, actual starting mip level is %u (of %u total in image).\n",
761 starting_mip_level, (initial_mip_levels -
image->mip_levels), initial_mip_levels);
782 (header_size ==
sizeof(BITMAPV5HEADER)) ||
783 (header_size == 64 ))
812 TRACE(
"Converting DIB file to BMP\n");
837 unsigned int size,
i;
850 ERR(
"Failed to copy pixels, hr %#lx.\n",
hr);
879 case D3DXIFF_JPG:
return &GUID_ContainerFormatJpeg;
891#define FMT_TO_STR(format) case format: return #format
903 return "unrecognized";
927 hr = IWICBitmapFrameDecode_CopyPixels(bitmap_frame,
NULL, row_pitch, slice_pitch,
buffer);
938 hr = IWICImagingFactory_CreatePalette(wic_factory, &wic_palette);
942 hr = IWICBitmapFrameDecode_CopyPalette(bitmap_frame, wic_palette);
946 hr = IWICPalette_GetColorCount(wic_palette, &nb_colors);
950 colors =
malloc(nb_colors *
sizeof(colors[0]));
958 hr = IWICPalette_GetColors(wic_palette, nb_colors, colors, &nb_colors);
963 for (
i = 0;
i < nb_colors;
i++)
965 palette[
i].peRed = (colors[
i] >> 16) & 0xff;
966 palette[
i].peGreen = (colors[
i] >> 8) & 0xff;
968 palette[
i].peFlags = (colors[
i] >> 24) & 0xff;
982 IWICPalette_Release(wic_palette);
1003 hr = IWICImagingFactory_CreateDecoder(wic_factory, container_format_guid,
NULL, &bitmap_decoder);
1007 hr = IWICImagingFactory_CreateStream(wic_factory, &wic_stream);
1011 hr = IWICStream_InitializeFromMemory(wic_stream, (
BYTE *)src_data, src_data_size);
1015 hr = IWICBitmapDecoder_Initialize(bitmap_decoder, (
IStream *)wic_stream, 0);
1019 hr = IWICBitmapDecoder_GetFrameCount(bitmap_decoder, &frame_count);
1027 hr = IWICBitmapDecoder_GetFrame(bitmap_decoder, 0, &bitmap_frame);
1031 hr = IWICBitmapFrameDecode_GetSize(bitmap_frame, &
image->size.width, &
image->size.height);
1035 hr = IWICBitmapFrameDecode_GetPixelFormat(bitmap_frame, &
pixel_format);
1057 image->size.depth = 1;
1058 image->mip_levels = 1;
1059 image->layer_count = 1;
1064 IWICBitmapFrameDecode_Release(bitmap_frame);
1066 IWICBitmapDecoder_Release(bitmap_decoder);
1068 IWICStream_Release(wic_stream);
1069 IWICImagingFactory_Release(wic_factory);
1083 WARN(
"Unhandled bpp %u for targa.\n",
bpp);
1088#define IMAGETYPE_COLORMAPPED 1
1089#define IMAGETYPE_TRUECOLOR 2
1090#define IMAGETYPE_GRAYSCALE 3
1091#define IMAGETYPE_MASK 0x07
1092#define IMAGETYPE_RLE 8
1094#define IMAGE_RIGHTTOLEFT 0x10
1095#define IMAGE_TOPTOBOTTOM 0x20
1097#include "pshpack1.h"
1121 while (pixel_count != row_width)
1123 uint32_t rle_count = (src_ptr[0] & 0x7f) + 1;
1126 rle_packet_size += (src_ptr[0] & 0x80) ? bytes_per_pixel : (bytes_per_pixel * rle_count);
1127 if ((rle_packet_size > src_bytes_left) || (pixel_count + rle_count) > row_width)
1130 if (src_ptr[0] & 0x80)
1134 for (
i = 0;
i < rle_count; ++
i)
1135 memcpy(&dst_row[(pixel_count +
i) * bytes_per_pixel], src_ptr + 1, bytes_per_pixel);
1139 memcpy(&dst_row[pixel_count * bytes_per_pixel], src_ptr + 1, rle_packet_size - 1);
1142 src_ptr += rle_packet_size;
1143 src_bytes_left -= rle_packet_size;
1144 pixel_count += rle_count;
1145 if (!src_bytes_left && pixel_count != row_width)
1172 if (!is_rle && (src_header_size + slice_pitch) > src_data_size)
1177 const uint8_t *src_palette = ((
const uint8_t *)src_data) +
sizeof(*header) +
header->id_length;
1178 const struct volume image_map_size = {
header->color_map_length, 1, 1 };
1179 uint32_t src_row_pitch, src_slice_pitch, dst_row_pitch, dst_slice_pitch;
1197 dst_row_pitch, dst_slice_pitch, &image_map_size, dst_desc, 0,
NULL);
1200 if (
header->color_map_length < 256)
1204 if (!is_rle && !bottom_to_top && !right_to_left)
1211 if (!(img_buf =
malloc(slice_pitch)))
1220 if (!(src_row =
malloc(row_pitch)))
1227 src_pos = (
const uint8_t *)src_data + src_header_size;
1228 for (
i = 0;
i <
image->size.height; ++
i)
1230 const uint32_t dst_row_idx = bottom_to_top ? (
image->size.height -
i - 1) :
i;
1231 uint8_t *dst_row = img_buf + (dst_row_idx * row_pitch);
1243 src_pos += row_pitch;
1252 for (
j = 0;
j <
image->size.width; ++
j)
1261 memcpy(dst_row, src_row, row_pitch);
1271 if (img_buf && (
image->image_buf != img_buf))
1283 uint32_t expected_header_size =
sizeof(*header);
1285 if (src_data_size <
sizeof(*
header))
1288 expected_header_size +=
header->id_length;
1289 expected_header_size +=
header->color_map_length * ((
header->color_map_entrysize + 7) /
CHAR_BIT);
1290 if (src_data_size < expected_header_size)
1293 if (
header->color_map_type && ((
header->color_map_type > 1) || (!
header->color_map_length)
1321 image->mip_levels = 1;
1322 image->layer_count = 1;
1338 if (!src_data || !src_data_size || !
image)
1344 uint32_t src_image_size = src_data_size;
1345 const void *src_image = src_data;
1350 free((
void *)src_image);
1380 ERR(
"Unrecognized file format.\n");
1404 RECT unaligned_rect;
1407 if (mip_level >=
image->mip_levels)
1409 ERR(
"Tried to retrieve mip level %u, but image only has %u mip levels.\n", mip_level,
image->mip_levels);
1415 ERR(
"Tried to retrieve layer %u, but image only has %u layers.\n",
layer,
image->layer_count);
1419 slice_pitch = row_pitch = 0;
1420 for (
i = 0;
i <
image->mip_levels;
i++)
1429 pixels_ptr += slice_pitch * mip_level_size.
depth;
1436 mip_level_size.
height, mip_level_size.
depth, &unaligned_rect);
1443 info->ImageFileFormat =
image->image_file_format;
1448 switch (
image->format)
1465 info->ResourceType =
image->resource_type;
1504 TRACE(
"Invalid or unsupported image file\n");
1534 widename =
malloc(strlength *
sizeof(*widename));
1611 const PALETTEENTRY *dst_palette,
const RECT *dst_rect,
const void *src_memory,
1617 RECT dst_rect_tmp, dst_rect_aligned;
1626 TRACE(
"Multisampled destination surface, doing nothing.\n");
1634 dst_rect = &dst_rect_tmp;
1640 || dst_rect->
left < 0 || dst_rect->
top < 0)
1642 WARN(
"Invalid dst_rect specified.\n");
1647 WARN(
"Empty dst_rect specified.\n");
1654 src_rect->
left, src_rect->
top, src_rect->
right, src_rect->
bottom, 0, 1, &src_pixels);
1659 dst_desc, &dst_rect_aligned);
1664 (dst_rect_aligned.right - dst_rect_aligned.left), (dst_rect_aligned.bottom - dst_rect_aligned.top), 1,
1701 const PALETTEENTRY *pDestPalette,
const RECT *pDestRect,
const void *pSrcData,
UINT SrcDataSize,
1710 TRACE(
"dst_surface %p, dst_palette %p, dst_rect %s, src_data %p, src_data_size %u, "
1711 "src_rect %s, filter %#lx, color_key 0x%08lx, src_info %p.\n",
1712 pDestSurface, pDestPalette,
wine_dbgstr_rect(pDestRect), pSrcData, SrcDataSize,
1715 if (!pDestSurface || !pSrcData || !SrcDataSize)
1727 src_rect = *pSrcRect;
1729 SetRect(&src_rect, 0, 0, img_info.Width, img_info.Height);
1736 pixels.palette, &src_rect, dwFilter, Colorkey);
1738 *pSrcInfo = img_info;
1746 const PALETTEENTRY *dst_palette,
const RECT *dst_rect,
const char *src_file,
1753 TRACE(
"dst_surface %p, dst_palette %p, dst_rect %s, src_file %s, "
1754 "src_rect %s, filter %#lx, color_key 0x%08lx, src_info %p.\n",
1758 if (!src_file || !dst_surface)
1762 src_file_w =
malloc(strlength *
sizeof(*src_file_w));
1780 TRACE(
"dst_surface %p, dst_palette %p, dst_rect %s, src_file %s, "
1781 "src_rect %s, filter %#lx, color_key 0x%08lx, src_info %p.\n",
1785 if (!src_file || !dst_surface)
1806 TRACE(
"dst_surface %p, dst_palette %p, dst_rect %s, src_module %p, resource %s, "
1807 "src_rect %s, filter %#lx, color_key 0x%08lx, src_info %p.\n",
1834 TRACE(
"dst_surface %p, dst_palette %p, dst_rect %s, src_module %p, resource %s, "
1835 "src_rect %s, filter %#lx, color_key 0x%08lx, src_info %p.\n",
1872 info->channelmask = 0;
1874 info->srcformat = srcformat;
1875 info->destformat = destformat;
1877 for(
i = 0;
i < 4;
i++) {
1885 info->destmask[
i] = ((1 << destformat->
bits[
i]) - 1) << destformat->
shift[
i];
1888 if(destformat->
bits[
i]) {
1890 else info->channelmask |=
info->destmask[
i];
1906 for (
i = 0;
i < 4; ++
i)
1908 if (!
info->process_channel[
i])
1913 for (
j = 0;
j < 4 &&
mask; ++
j)
1915 if (
info->srcshift[
i] <
j * 8)
1929 return value < min_value ? min_value : value > max_value ? max_value :
value;
1943 for(
i = 0;
i < 4;
i++) {
1944 if(
info->process_channel[
i]) {
1986 for (
c = 0;
c < 4; ++
c)
1989 static const unsigned int component_offsets[4] = {3, 0, 1, 2};
1990 float *dst_component = &
dst->value.x + component_offsets[
c];
2006 *dst_component = *(
float *)&tmp;
2010 *dst_component = (&
palette[tmp].peRed)[component_offsets[
c]] / 255.0f;
2021 uint32_t tmp_extended = (tmp & sign_bit) ? (tmp | ~(sign_bit - 1)) : tmp;
2027 if (tmp == sign_bit)
2030 *dst_component = (
float)(((
int32_t)tmp_extended)) / (sign_bit - 1);
2041 *dst_component =
dst->value.x;
2045 *dst_component = 1.0f;
2058 for (
c = 0;
c < 4; ++
c)
2061 static const unsigned int component_offsets[4] = {3, 0, 1, 2};
2062 const float src_component = *(&
src->value.x + component_offsets[
c]);
2063 const enum range src_range = !
c ?
src->a_range :
src->rgb_range;
2068 mask32 = ~0
u >> (32 -
format->bits[
c]);
2076 v = *(
DWORD *)&src_component;
2081 float val =
src->value.x * 0.2125f +
src->value.y * 0.7154f +
src->value.z * 0.0721f;
2084 val = (
val + 1.0f) / 2.0f;
2092 float val = src_component;
2095 val = (
val + 1.0f) / 2.0f;
2104 float val = src_component;
2107 val = (
val * 2.0f) - 1.0f;
2155 const BYTE *src_addr;
2161 src_addr =
src +
slice * src_slice_pitch;
2162 dst_addr =
dst +
slice * dst_slice_pitch;
2166 memcpy(dst_addr, src_addr, row_block_count *
format->block_byte_count);
2167 src_addr += src_row_pitch;
2168 dst_addr += dst_row_pitch;
2188 UINT min_width, min_height, min_depth;
2191 TRACE(
"src %p, src_row_pitch %u, src_slice_pitch %u, src_size %p, src_format %p, dst %p, "
2192 "dst_row_pitch %u, dst_slice_pitch %u, dst_size %p, dst_format %p, color_key 0x%08lx, palette %p.\n",
2193 src, src_row_pitch, src_slice_pitch, src_size, src_format,
dst, dst_row_pitch, dst_slice_pitch, dst_size,
2210 for (
z = 0;
z < min_depth;
z++) {
2211 const BYTE *src_slice_ptr =
src +
z * src_slice_pitch;
2212 BYTE *dst_slice_ptr =
dst +
z * dst_slice_pitch;
2214 for (
y = 0;
y < min_height;
y++) {
2215 const BYTE *src_ptr = src_slice_ptr +
y * src_row_pitch;
2216 BYTE *dst_ptr = dst_slice_ptr +
y * dst_row_pitch;
2218 for (
x = 0;
x < min_width;
x++) {
2234 val &= ~conv_info.destmask[0];
2290 TRACE(
"src %p, src_row_pitch %u, src_slice_pitch %u, src_size %p, src_format %p, dst %p, "
2291 "dst_row_pitch %u, dst_slice_pitch %u, dst_size %p, dst_format %p, color_key 0x%08lx, palette %p.\n",
2292 src, src_row_pitch, src_slice_pitch, src_size, src_format,
dst, dst_row_pitch, dst_slice_pitch, dst_size,
2305 for (
z = 0;
z < dst_size->
depth;
z++)
2307 BYTE *dst_slice_ptr =
dst +
z * dst_slice_pitch;
2308 const BYTE *src_slice_ptr =
src + src_slice_pitch * (
z * src_size->
depth / dst_size->
depth);
2312 BYTE *dst_ptr = dst_slice_ptr +
y * dst_row_pitch;
2313 const BYTE *src_row_ptr = src_slice_ptr + src_row_pitch * (
y * src_size->
height / dst_size->
height);
2315 for (
x = 0;
x < dst_size->
width;
x++)
2334 val &= ~conv_info.destmask[0];
2368 void (*fetch_dxt_texel)(
int srcRowStride,
const BYTE *
pixdata,
int i,
int j,
void *texel);
2369 uint32_t x,
y,
z, tmp_pitch, uncompressed_slice_pitch, uncompressed_row_pitch;
2372 BYTE *uncompressed_mem;
2374 switch (
desc->format)
2391 FIXME(
"Unexpected compressed texture format %u.\n",
desc->format);
2396 uncompressed_slice_pitch = uncompressed_row_pitch *
size->height;
2397 if (!(uncompressed_mem =
malloc(
size->depth * uncompressed_slice_pitch)))
2408 const RECT aligned_rect = { 0, 0,
size->width,
size->height };
2418 TRACE(
"Decompressing pixels.\n");
2419 tmp_pitch =
pixels->row_pitch *
desc->block_width /
desc->block_byte_count;
2420 for (
z = 0;
z <
size->depth; ++
z)
2424 for (
y = 0;
y <
size->height; ++
y)
2426 BYTE *
ptr = &uncompressed_mem[(
z * uncompressed_slice_pitch) + (
y * uncompressed_row_pitch)];
2427 for (
x = 0;
x <
size->width; ++
x)
2432 fetch_dxt_texel(tmp_pitch, slice_data,
x +
pixels->unaligned_rect.left,
2435 fetch_dxt_texel(tmp_pitch, slice_data,
x,
y,
ptr);
2442 *out_memory = uncompressed_mem;
2443 *out_row_pitch = uncompressed_row_pitch;
2444 *out_slice_pitch = uncompressed_slice_pitch;
2445 *out_desc = uncompressed_desc;
2456 RECT unaligned_rect;
2471 uint32_t left_aligned, top_aligned;
2476 OffsetRect(&unaligned_rect, -left_aligned, -top_aligned);
2493 return wine_dbg_sprintf(
"(data %p, row_pitch %d, slice_pitch %d, palette %p, width %d, height %d, depth %d, "
2502 struct volume src_size, dst_size, dst_size_aligned;
2505 TRACE(
"dst_pixels %s, dst_desc %p, src_pixels %s, src_desc %p, filter_flags %#x, color_key %#x.\n",
2513 src_size = src_pixels->
size;
2515 dst_size_aligned = dst_pixels->
size;
2520 dst_size = dst_size_aligned;
2533 TRACE(
"Simple copy.\n");
2543 FIXME(
"Unsupported format conversion %#x -> %#x.\n", src_desc->
format, dst_desc->
format);
2553 uint32_t uncompressed_row_pitch, uncompressed_slice_pitch;
2555 void *uncompressed_mem =
NULL;
2558 &uncompressed_slice_pitch, &uncompressed_desc);
2564 uncompressed_desc->
format, 0, 0, src_pixels->
size.width, src_pixels->
size.height,
2565 0, src_pixels->
size.depth, &uncompressed_pixels);
2570 free(uncompressed_mem);
2577 uint32_t uncompressed_row_pitch, uncompressed_slice_pitch;
2580 void *uncompressed_mem =
NULL;
2583 &uncompressed_slice_pitch, &uncompressed_desc);
2590 &uncompressed_pixels);
2599 TRACE(
"Compressing DXTn surface.\n");
2600 switch (dst_desc->
format)
2614 ERR(
"Unexpected destination compressed format %u.\n", dst_desc->
format);
2617 for (
i = 0;
i < dst_size_aligned.
depth; ++
i)
2619 BYTE *uncompressed_mem_slice = (
BYTE *)uncompressed_mem + (
i * uncompressed_slice_pitch);
2623 dst_memory_slice, dst_pixels->
row_pitch);
2626 free(uncompressed_mem);
2639 FIXME(
"Unhandled filter %#x.\n", filter_flags);
2650 WARN(
"Failed to load pixels, hr %#lx.\n",
hr);
2703 const PALETTEENTRY *dst_palette,
const RECT *dst_rect,
const void *src_memory,
2710 TRACE(
"dst_surface %p, dst_palette %p, dst_rect %s, src_memory %p, src_format %#x, "
2711 "src_pitch %u, src_palette %p, src_rect %s, filter %#lx, color_key 0x%08lx.\n",
2712 dst_surface, dst_palette,
wine_dbgstr_rect(dst_rect), src_memory, src_format,
2715 if (!dst_surface || !src_memory || !src_rect)
2717 WARN(
"Invalid argument specified.\n");
2728 WARN(
"Invalid src_format or src_rect.\n");
2735 FIXME(
"Unsupported format %#x.\n", src_format);
2771 struct volume src_size, dst_size;
2780 TRACE(
"dst_surface %p, dst_palette %p, dst_rect %s, src_surface %p, "
2781 "src_palette %p, src_rect %s, filter %#lx, color_key 0x%08lx.\n",
2785 if (!dst_surface || !src_surface)
2800 WARN(
"Empty src_rect specified.\n");
2806 || src_rect->
top < 0 || src_rect->
top > src_desc.
Height)
2808 WARN(
"Invalid src_rect specified.\n");
2821 dst_rect = &dst_rect_temp;
2825 WARN(
"Empty dst_rect specified.\n");
2831 || dst_rect->
top < 0 || dst_rect->
top > dst_desc.
Height)
2833 WARN(
"Invalid dst_rect specified.\n");
2841 if (!dst_palette && !src_palette && !
color_key)
2907 TRACE(
"(%s, %#x, %p, %p, %s): relay\n",
2934 TRACE(
"(%s, %#x, %p, %p, %s): relay\n",
2957 const GUID *container_format;
2958 const GUID *pixel_format_guid;
2966 STATSTG stream_stats;
2971 TRACE(
"dst_buffer %p, file_format %#x, src_surface %p, src_palette %p, src_rect %s.\n",
2972 dst_buffer, file_format, src_surface, src_palette,
wine_dbgstr_rect(src_rect));
2979 FIXME(
"Saving surfaces with palettized pixel formats to non-DDS files is not implemented yet.\n");
2983 switch (file_format)
2987 container_format = &GUID_ContainerFormatBmp;
2990 container_format = &GUID_ContainerFormatPng;
2993 container_format = &GUID_ContainerFormatJpeg;
3001 FIXME(
"File format %#x is not supported yet\n", file_format);
3011 WARN(
"Invalid rectangle with 0 area\n");
3014 if (src_rect->
left < 0 || src_rect->
top < 0)
3034 IWICImagingFactory_Release(
factory);
3043 hr = IWICBitmapEncoder_CreateNewFrame(
encoder, &frame, &encoder_options);
3046 hr = IWICBitmapFrameEncode_Initialize(frame, encoder_options);
3053 if (!pixel_format_guid)
3055 FIXME(
"Pixel format %#x is not supported yet\n", src_surface_desc.
Format);
3060 memcpy(&wic_pixel_format, pixel_format_guid,
sizeof(
GUID));
3061 hr = IWICBitmapFrameEncode_SetPixelFormat(frame, &wic_pixel_format);
3065 TRACE(
"Using pixel format %s %#x\n",
debugstr_guid(&wic_pixel_format), d3d_pixel_format);
3066 if (src_surface_desc.
Format == d3d_pixel_format)
3071 IWICBitmapFrameEncode_WritePixels(frame,
height,
3087 FIXME(
"Unsupported format conversion %#x -> %#x.\n",
3088 src_surface_desc.
Format, d3d_pixel_format);
3109 dst_data, dst_pitch, 0, &
size, dst_format_desc, 0,
NULL);
3112 IWICBitmapFrameEncode_WritePixels(frame,
height, dst_pitch, dst_pitch *
height, dst_data);
3116 hr = IWICBitmapFrameEncode_Commit(frame);
3119 else WARN(
"Unsupported pixel format %#x\n", src_surface_desc.
Format);
3122 hr = IStream_Stat(
stream, &stream_stats, STATFLAG_NONAME);
3125 if (stream_stats.cbSize.u.HighPart != 0)
3130 size = stream_stats.cbSize.u.LowPart;
3160 if (frame) IWICBitmapFrameEncode_Release(frame);
3161 if (encoder_options) IPropertyBag2_Release(encoder_options);
void tx_compress_dxtn(GLint srccomps, GLint width, GLint height, const GLubyte *srcPixData, GLenum destFormat, GLubyte *dest, GLint dstRowStride)
void fetch_2d_texel_rgba_dxt3(GLint srcRowStride, const GLubyte *pixdata, GLint i, GLint j, GLvoid *texel)
void fetch_2d_texel_rgba_dxt1(GLint srcRowStride, const GLubyte *pixdata, GLint i, GLint j, GLvoid *texel)
void fetch_2d_texel_rgba_dxt5(GLint srcRowStride, const GLubyte *pixdata, GLint i, GLint j, GLvoid *texel)
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define D3DERR_INVALIDCALL
enum _D3DRESOURCETYPE D3DRESOURCETYPE
enum _D3DFORMAT D3DFORMAT
enum _D3DTEXTUREFILTERTYPE D3DTEXTUREFILTERTYPE
#define IDirect3DSurface9_GetDevice(p, a)
#define IDirect3DSurface9_LockRect(p, a, b, c)
#define IDirect3DDevice9_StretchRect(p, a, b, c, d, e)
#define IDirect3DSurface9_GetDesc(p, a)
#define IDirect3DDevice9_Release(p)
#define IDirect3DSurface9_UnlockRect(p)
#define IDirect3DDevice9_UpdateSurface(p, a, b, c, d)
#define IDirect3DSurface9_Release(p)
#define IDirect3DDevice9_CreateRenderTarget(p, a, b, c, d, e, f, g, h)
#define IDirect3DDevice9_CreateOffscreenPlainSurface(p, a, b, c, d, e, f)
#define D3DXERR_INVALIDDATA
struct ID3DXBuffer ID3DXBuffer
#define D3DX_IMAGE_INFO_ONLY
const struct pixel_format_desc * get_format_info(D3DFORMAT format)
static BOOL is_conversion_to_supported(const struct pixel_format_desc *format)
static BOOL format_types_match(const struct pixel_format_desc *src, const struct pixel_format_desc *dst)
static BOOL is_index_format(const struct pixel_format_desc *format)
HRESULT map_view_of_file(const WCHAR *filename, void **buffer, DWORD *length)
static BOOL is_unknown_format(const struct pixel_format_desc *format)
float float_16_to_32(const unsigned short in)
static void set_volume_struct(struct volume *volume, uint32_t width, uint32_t height, uint32_t depth)
HRESULT write_buffer_to_file(const WCHAR *filename, ID3DXBuffer *buffer)
const struct pixel_format_desc * get_d3dx_pixel_format_info(enum d3dx_pixel_format_id format)
static HRESULT d3dx9_handle_load_filter(DWORD *filter)
static void set_d3dx_pixels(struct d3dx_pixels *pixels, const void *data, uint32_t row_pitch, uint32_t slice_pitch, const PALETTEENTRY *palette, uint32_t width, uint32_t height, uint32_t depth, const RECT *unaligned_rect)
static BOOL is_conversion_from_supported(const struct pixel_format_desc *format)
enum d3dx_pixel_format_id d3dx_pixel_format_id_from_d3dformat(D3DFORMAT format)
static BOOL is_compressed_format(const struct pixel_format_desc *format)
D3DFORMAT d3dformat_from_d3dx_pixel_format_id(enum d3dx_pixel_format_id format)
HRESULT load_resource_into_memory(HMODULE module, HRSRC resinfo, void **buffer, DWORD *length)
@ D3DX_PIXEL_FORMAT_R16G16B16A16_UNORM
@ D3DX_PIXEL_FORMAT_R32G32_FLOAT
@ D3DX_PIXEL_FORMAT_U10V10W10_SNORM_A2_UNORM
@ D3DX_PIXEL_FORMAT_DXT4_UNORM
@ D3DX_PIXEL_FORMAT_B2G3R3_UNORM
@ D3DX_PIXEL_FORMAT_U8V8_SNORM_L8X8_UNORM
@ D3DX_PIXEL_FORMAT_B5G5R5A1_UNORM
@ D3DX_PIXEL_FORMAT_R32G32B32A32_FLOAT
@ D3DX_PIXEL_FORMAT_U8V8W8Q8_SNORM
@ D3DX_PIXEL_FORMAT_R16G16_UNORM
@ D3DX_PIXEL_FORMAT_B5G6R5_UNORM
@ D3DX_PIXEL_FORMAT_B10G10R10A2_UNORM
@ D3DX_PIXEL_FORMAT_A8_UNORM
@ D3DX_PIXEL_FORMAT_G8R8_G8B8_UNORM
@ D3DX_PIXEL_FORMAT_R16G16B16A16_FLOAT
@ D3DX_PIXEL_FORMAT_B8G8R8_UNORM
@ D3DX_PIXEL_FORMAT_R8G8B8X8_UNORM
@ D3DX_PIXEL_FORMAT_R16G16B16_UNORM
@ D3DX_PIXEL_FORMAT_B2G3R3A8_UNORM
@ D3DX_PIXEL_FORMAT_U16V16_SNORM
@ D3DX_PIXEL_FORMAT_U16V16W16Q16_SNORM
@ D3DX_PIXEL_FORMAT_R16_FLOAT
@ D3DX_PIXEL_FORMAT_P8_UINT_A8_UNORM
@ D3DX_PIXEL_FORMAT_B4G4R4A4_UNORM
@ D3DX_PIXEL_FORMAT_B5G5R5X1_UNORM
@ D3DX_PIXEL_FORMAT_U8V8_SNORM
@ D3DX_PIXEL_FORMAT_B8G8R8X8_UNORM
@ D3DX_PIXEL_FORMAT_R8G8B8A8_UNORM
@ D3DX_PIXEL_FORMAT_DXT3_UNORM
@ D3DX_PIXEL_FORMAT_DXT2_UNORM
@ D3DX_PIXEL_FORMAT_COUNT
@ D3DX_PIXEL_FORMAT_R10G10B10A2_UNORM
@ D3DX_PIXEL_FORMAT_R16G16_FLOAT
@ D3DX_PIXEL_FORMAT_L8_UNORM
@ D3DX_PIXEL_FORMAT_R32_FLOAT
@ D3DX_PIXEL_FORMAT_L4A4_UNORM
@ D3DX_PIXEL_FORMAT_P8_UINT
@ D3DX_PIXEL_FORMAT_DXT1_UNORM
@ D3DX_PIXEL_FORMAT_L8A8_UNORM
@ D3DX_PIXEL_FORMAT_DXT5_UNORM
@ D3DX_PIXEL_FORMAT_L16_UNORM
@ D3DX_PIXEL_FORMAT_B8G8R8A8_UNORM
@ D3DX_PIXEL_FORMAT_B4G4R4X4_UNORM
@ D3DX_PIXEL_FORMAT_R8G8_B8G8_UNORM
unsigned short float_32_to_16(const float in)
static const uint8_t pixdata[]
D3DX10_IMAGE_FILE_FORMAT d3dx_file_format
HRESULT WINAPI D3DXCreateBuffer(DWORD size, ID3DXBuffer **buffer)
HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface, const PALETTEENTRY *dst_palette, const RECT *dst_rect, const void *src_memory, D3DFORMAT src_format, UINT src_pitch, const PALETTEENTRY *src_palette, const RECT *src_rect, DWORD filter, D3DCOLOR color_key)
static HRESULT d3dx_initialize_image_from_tga(const void *src_data, uint32_t src_data_size, struct d3dx_image *image, uint32_t flags)
void format_from_d3dx_color(const struct pixel_format_desc *format, const struct d3dx_color *src, BYTE *dst)
HRESULT WINAPI D3DXLoadSurfaceFromFileA(IDirect3DSurface9 *dst_surface, const PALETTEENTRY *dst_palette, const RECT *dst_rect, const char *src_file, const RECT *src_rect, DWORD filter, D3DCOLOR color_key, D3DXIMAGE_INFO *src_info)
HRESULT WINAPI D3DXGetImageInfoFromFileInMemory(const void *data, UINT datasize, D3DXIMAGE_INFO *info)
static const char * debug_volume(const struct volume *volume)
HRESULT unlock_surface(IDirect3DSurface9 *surface, const RECT *surface_rect, IDirect3DSurface9 *temp_surface, BOOL update)
static const uint8_t dds_file_signature[]
static const struct @284 wic_pixel_formats[]
static const GUID * d3dx_file_format_to_wic_container_guid(D3DXIMAGE_FILEFORMAT iff)
static HRESULT d3dx_save_pixels_to_memory(struct d3dx_pixels *src_pixels, const struct pixel_format_desc *src_fmt_desc, D3DXIMAGE_FILEFORMAT file_format, ID3DXBuffer **dst_buffer)
static const uint8_t ppm_raw_file_signature[]
void get_aligned_rect(uint32_t left, uint32_t top, uint32_t right, uint32_t bottom, uint32_t width, uint32_t height, const struct pixel_format_desc *fmt_desc, RECT *aligned_rect)
#define DDS_CAPS2_CUBEMAP_ALL_FACES
static void d3dx_get_next_mip_level_size(struct volume *size)
HRESULT WINAPI D3DXGetImageInfoFromResourceA(HMODULE module, const char *resource, D3DXIMAGE_INFO *info)
static BOOL convert_dib_to_bmp(const void **data, unsigned int *size)
static BOOL d3dx_get_image_file_format_from_file_signature(const void *src_data, uint32_t src_data_size, D3DXIMAGE_FILEFORMAT *out_iff)
HRESULT lock_surface(IDirect3DSurface9 *surface, const RECT *surface_rect, D3DLOCKED_RECT *lock, IDirect3DSurface9 **temp_surface, BOOL write)
static HRESULT dds_pixel_format_from_d3dx_pixel_format_id(struct dds_pixel_format *pixel_format, enum d3dx_pixel_format_id d3dx_pixel_format)
static const struct d3dx_file_format_signature file_format_signatures[]
HRESULT WINAPI D3DXGetImageInfoFromFileW(const WCHAR *file, D3DXIMAGE_INFO *info)
HRESULT d3dx_load_pixels_from_pixels(struct d3dx_pixels *dst_pixels, const struct pixel_format_desc *dst_desc, struct d3dx_pixels *src_pixels, const struct pixel_format_desc *src_desc, uint32_t filter_flags, uint32_t color_key)
static HRESULT d3dx_image_wic_frame_decode(struct d3dx_image *image, IWICImagingFactory *wic_factory, IWICBitmapFrameDecode *bitmap_frame)
HRESULT WINAPI D3DXSaveSurfaceToFileA(const char *dst_filename, D3DXIMAGE_FILEFORMAT file_format, IDirect3DSurface9 *src_surface, const PALETTEENTRY *src_palette, const RECT *src_rect)
static const char * debug_d3dx_image_file_format(D3DXIMAGE_FILEFORMAT format)
enum d3dx_pixel_format_id d3dx_pixel_format
#define IMAGETYPE_COLORMAPPED
HRESULT WINAPI D3DXLoadSurfaceFromFileW(IDirect3DSurface9 *dst_surface, const PALETTEENTRY *dst_palette, const RECT *dst_rect, const WCHAR *src_file, const RECT *src_rect, DWORD filter, D3DCOLOR color_key, D3DXIMAGE_INFO *src_info)
static const GUID * wic_guid_from_d3dformat(D3DFORMAT format)
static const uint8_t pfm_color_file_signature[]
void d3dx_image_cleanup(struct d3dx_image *image)
static BOOL dds_pixel_format_compare(const struct dds_pixel_format *pf_a, const struct dds_pixel_format *pf_b, BOOL check_rmask, BOOL check_gmask, BOOL check_bmask, BOOL check_amask)
static HRESULT d3dx_image_tga_decode(const void *src_data, uint32_t src_data_size, uint32_t src_header_size, struct d3dx_image *image)
static enum range get_range_for_component_type(enum component_type type)
void convert_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slice_pitch, const struct volume *src_size, const struct pixel_format_desc *src_format, BYTE *dst, UINT dst_row_pitch, UINT dst_slice_pitch, const struct volume *dst_size, const struct pixel_format_desc *dst_format, D3DCOLOR color_key, const PALETTEENTRY *palette)
static void init_argb_conversion_info(const struct pixel_format_desc *srcformat, const struct pixel_format_desc *destformat, struct argb_conversion_info *info)
HRESULT WINAPI D3DXSaveSurfaceToFileInMemory(ID3DXBuffer **dst_buffer, D3DXIMAGE_FILEFORMAT file_format, IDirect3DSurface9 *src_surface, const PALETTEENTRY *src_palette, const RECT *src_rect)
HRESULT WINAPI D3DXGetImageInfoFromFileA(const char *file, D3DXIMAGE_INFO *info)
static HRESULT d3dx_init_dds_header(struct dds_header *header, D3DRESOURCETYPE resource_type, enum d3dx_pixel_format_id format, const struct volume *size, uint32_t mip_levels)
#define DDS_PF_BUMPLUMINANCE
HRESULT WINAPI D3DXGetImageInfoFromResourceW(HMODULE module, const WCHAR *resource, D3DXIMAGE_INFO *info)
HRESULT WINAPI D3DXLoadSurfaceFromResourceA(IDirect3DSurface9 *dst_surface, const PALETTEENTRY *dst_palette, const RECT *dst_rect, HMODULE src_module, const char *resource, const RECT *src_rect, DWORD filter, D3DCOLOR color_key, D3DXIMAGE_INFO *src_info)
void format_to_d3dx_color(const struct pixel_format_desc *format, const BYTE *src, const PALETTEENTRY *palette, struct d3dx_color *dst)
HRESULT WINAPI D3DXLoadSurfaceFromResourceW(IDirect3DSurface9 *dst_surface, const PALETTEENTRY *dst_palette, const RECT *dst_rect, HMODULE src_module, const WCHAR *resource, const RECT *src_rect, DWORD filter, D3DCOLOR color_key, D3DXIMAGE_INFO *src_info)
static BOOL image_is_argb(IWICBitmapFrameDecode *frame, struct d3dx_image *image)
static HRESULT save_dds_surface_to_memory(ID3DXBuffer **dst_buffer, IDirect3DSurface9 *src_surface, const PALETTEENTRY *src_palette, const RECT *src_rect)
static const uint8_t jpg_file_signature[]
void copy_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slice_pitch, BYTE *dst, UINT dst_row_pitch, UINT dst_slice_pitch, const struct volume *size, const struct pixel_format_desc *format)
static const uint8_t bmp_file_signature[]
static const uint8_t hdr_file_signature[]
HRESULT WINAPI D3DXLoadSurfaceFromSurface(IDirect3DSurface9 *dst_surface, const PALETTEENTRY *dst_palette, const RECT *dst_rect, IDirect3DSurface9 *src_surface, const PALETTEENTRY *src_palette, const RECT *src_rect, DWORD filter, D3DCOLOR color_key)
#define IMAGE_RIGHTTOLEFT
#define DDS_PF_ALPHA_ONLY
static const uint8_t ppm_plain_file_signature[]
static void get_relevant_argb_components(const struct argb_conversion_info *info, const BYTE *col, DWORD *out)
static HRESULT d3dx_load_surface_from_memory(IDirect3DSurface9 *dst_surface, const PALETTEENTRY *dst_palette, const RECT *dst_rect, const void *src_memory, enum d3dx_pixel_format_id src_format, uint32_t src_pitch, const PALETTEENTRY *src_palette, const RECT *src_rect, DWORD filter, D3DCOLOR color_key)
static enum d3dx_pixel_format_id d3dx_pixel_format_id_from_wic_pixel_format(const GUID *guid)
HRESULT WINAPI D3DXLoadSurfaceFromFileInMemory(IDirect3DSurface9 *pDestSurface, const PALETTEENTRY *pDestPalette, const RECT *pDestRect, const void *pSrcData, UINT SrcDataSize, const RECT *pSrcRect, DWORD dwFilter, D3DCOLOR Colorkey, D3DXIMAGE_INFO *pSrcInfo)
#define IMAGE_TOPTOBOTTOM
static const uint8_t pfm_gray_file_signature[]
static const struct @285 dds_pixel_formats[]
HRESULT d3dx_image_init(const void *src_data, uint32_t src_data_size, struct d3dx_image *image, uint32_t starting_mip_level, uint32_t flags)
static HRESULT d3dx_initialize_image_from_wic(const void *src_data, uint32_t src_data_size, struct d3dx_image *image, D3DXIMAGE_FILEFORMAT d3dx_file_format, uint32_t flags)
static HRESULT d3dx_initialize_image_from_dds(const void *src_data, uint32_t src_data_size, struct d3dx_image *image, uint32_t starting_mip_level)
static HRESULT d3dx_pixels_decompress(struct d3dx_pixels *pixels, const struct pixel_format_desc *desc, BOOL is_dst, void **out_memory, uint32_t *out_row_pitch, uint32_t *out_slice_pitch, const struct pixel_format_desc **out_desc)
HRESULT WINAPI D3DXSaveSurfaceToFileW(const WCHAR *dst_filename, D3DXIMAGE_FILEFORMAT file_format, IDirect3DSurface9 *src_surface, const PALETTEENTRY *src_palette, const RECT *src_rect)
static enum d3dx_pixel_format_id d3dx_get_tga_format_for_bpp(uint8_t bpp)
#define DDS_CAPS2_CUBEMAP
HRESULT d3dx_image_get_pixels(struct d3dx_image *image, uint32_t layer, uint32_t mip_level, struct d3dx_pixels *pixels)
static const char * debug_d3dx_pixels(struct d3dx_pixels *pixels)
static HRESULT d3dx_image_tga_rle_decode_row(const uint8_t **src, uint32_t src_bytes_left, uint32_t row_width, uint32_t bytes_per_pixel, uint8_t *dst_row)
static enum d3dx_pixel_format_id d3dx_pixel_format_id_from_dds_pixel_format(const struct dds_pixel_format *pixel_format)
#define IMAGETYPE_GRAYSCALE
HRESULT WINAPI WICCreateImagingFactory_Proxy(UINT, IWICImagingFactory **)
static HRESULT d3dx_calculate_pixels_size(enum d3dx_pixel_format_id format, uint32_t width, uint32_t height, uint32_t *pitch, uint32_t *size)
static const uint8_t png_file_signature[]
#define FMT_TO_STR(format)
#define IMAGETYPE_TRUECOLOR
void point_filter_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slice_pitch, const struct volume *src_size, const struct pixel_format_desc *src_format, BYTE *dst, UINT dst_row_pitch, UINT dst_slice_pitch, const struct volume *dst_size, const struct pixel_format_desc *dst_format, D3DCOLOR color_key, const PALETTEENTRY *palette)
static float d3dx_clamp(float value, float min_value, float max_value)
HRESULT d3dx_pixels_init(const void *data, uint32_t row_pitch, uint32_t slice_pitch, const PALETTEENTRY *palette, enum d3dx_pixel_format_id format, uint32_t left, uint32_t top, uint32_t right, uint32_t bottom, uint32_t front, uint32_t back, struct d3dx_pixels *pixels)
static uint32_t d3dx_calculate_layer_pixels_size(enum d3dx_pixel_format_id format, uint32_t width, uint32_t height, uint32_t depth, uint32_t mip_levels)
static DWORD make_argb_color(const struct argb_conversion_info *info, const DWORD *in)
void d3dximage_info_from_d3dx_image(D3DXIMAGE_INFO *info, struct d3dx_image *image)
HRESULT WINAPI GetHGlobalFromStream(IStream *stream, HGLOBAL *phglobal)
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL delete_on_release, IStream **stream)
const char * wine_dbg_sprintf(const char *format,...)
#define MultiByteToWideChar
static void cleanup(void)
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
static BOOL is_dst(const SYSTEMTIME *st)
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
#define ID3DXBuffer_GetBufferPointer(p)
#define ID3DXBuffer_Release(p)
#define D3DX_FILTER_LINEAR
#define D3DX_FILTER_POINT
GLint GLint GLsizei GLsizei GLsizei depth
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei width
GLdouble GLdouble GLdouble GLdouble top
#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT
#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
GLenum GLuint GLint GLint layer
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
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 * u
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 GLint GLint j
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
static ERESOURCE GlobalLock
#define memcpy(s1, s2, n)
D3D11_SHADER_VARIABLE_DESC desc
static const char * dst_format
static const char stream_data[]
static float(__cdecl *square_half_float)(float x
#define IsEqualGUID(rguid1, rguid2)
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
static struct address_cache * front
int int static __inline const char * wine_dbgstr_a(const char *s)
const struct pixel_format_desc * destformat
const struct pixel_format_desc * srcformat
const PALETTEENTRY * palette
#define FIELD_OFFSET(t, f)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
@ WICBitmapEncoderNoCache
struct tagBITMAPFILEHEADER BITMAPFILEHEADER