98 rect.Width = srcwidth;
99 rect.Height = srcheight;
104 if (rc->
X < 0 || rc->
Y < 0 || rc->
X+rc->
Width > srcwidth || rc->
Y+rc->
Height > srcheight)
108 bytesperrow = ((
bpp * rc->
Width)+7)/8;
110 if (dststride < bytesperrow)
113 if ((dststride * (rc->
Height-1)) + bytesperrow > dstbuffersize)
117 if (rc->
X == 0 && rc->
Y == 0 && rc->
Width == srcwidth && rc->
Height == srcheight &&
118 srcstride == dststride && srcstride == bytesperrow)
120 memcpy(dstbuffer, srcbuffer, srcstride * srcheight);
124 row_offset = rc->
X *
bpp;
126 if (row_offset % 8 == 0)
133 src = srcbuffer + (row_offset / 8) + srcstride * rc->
Y;
146 FIXME(
"cannot reliably copy bitmap data if bpp < 8\n");
182 if (
FAILED(
hr) || bytesread < *data_size)
211 pixel += bytesperpixel;
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
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
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 GLsizei height
GLint GLint GLsizei width
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
#define memcpy(s1, s2, n)
const struct decoder_funcs * vtable
const struct encoder_funcs * vtable
HRESULT CDECL decoder_get_color_context(struct decoder *decoder, UINT frame, UINT num, BYTE **data, DWORD *datasize)
static ULONG read_ulong_be(BYTE *data)
HRESULT CDECL encoder_create_frame(struct encoder *encoder, const struct encoder_frame *frame)
HRESULT read_png_chunk(IStream *stream, BYTE *type, BYTE **data, ULONG *data_size)
HRESULT CDECL decoder_get_frame_info(struct decoder *decoder, UINT frame, struct decoder_frame *info)
void reverse_bgr8(UINT bytesperpixel, LPBYTE bits, UINT width, UINT height, INT stride)
HRESULT CDECL encoder_write_lines(struct encoder *encoder, BYTE *data, DWORD line_count, DWORD stride)
HRESULT CDECL decoder_initialize(struct decoder *decoder, IStream *stream, struct decoder_stat *st)
HRESULT CDECL encoder_commit_file(struct encoder *encoder)
HRESULT CDECL decoder_copy_pixels(struct decoder *decoder, UINT frame, const WICRect *prc, UINT stride, UINT buffersize, BYTE *buffer)
HRESULT CDECL decoder_get_metadata_blocks(struct decoder *decoder, UINT frame, UINT *count, struct decoder_block **blocks)
void CDECL decoder_destroy(struct decoder *decoder)
HRESULT copy_pixels(UINT bpp, const BYTE *srcbuffer, UINT srcwidth, UINT srcheight, INT srcstride, const WICRect *rc, UINT dststride, UINT dstbuffersize, BYTE *dstbuffer)
HRESULT CDECL encoder_commit_frame(struct encoder *encoder)
HRESULT CDECL encoder_initialize(struct encoder *encoder, IStream *stream)
HRESULT CDECL encoder_get_supported_format(struct encoder *encoder, GUID *pixel_format, DWORD *bpp, BOOL *indexed)
void CDECL encoder_destroy(struct encoder *encoder)