From 9c50e1a635e1178e71a264e40713b6748700ac24 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Fri, 14 Oct 2016 10:01:02 +0200 Subject: [PATCH 1/3] Replaced _VF formats with copy flags. --- client/X11/xf_gdi.c | 12 +- client/X11/xf_gfx.c | 2 +- client/X11/xf_graphics.c | 5 +- include/freerdp/codec/color.h | 180 +++----- include/freerdp/codec/nsc.h | 2 +- include/freerdp/gdi/gdi.h | 2 +- libfreerdp/codec/clear.c | 2 +- libfreerdp/codec/color.c | 176 +++----- libfreerdp/codec/interleaved.c | 66 +-- libfreerdp/codec/nsc.c | 28 +- libfreerdp/codec/planar.c | 2 +- libfreerdp/codec/progressive.c | 2 +- libfreerdp/codec/rfx.c | 2 +- .../codec/test/TestFreeRDPCodecProgressive.c | 395 ++++++------------ libfreerdp/gdi/bitmap.c | 4 +- libfreerdp/gdi/gdi.c | 35 +- libfreerdp/gdi/gfx.c | 10 +- libfreerdp/gdi/graphics.c | 66 ++- libfreerdp/gdi/test/helpers.c | 2 +- server/shadow/X11/x11_shadow.c | 112 ++--- 20 files changed, 407 insertions(+), 698 deletions(-) diff --git a/client/X11/xf_gdi.c b/client/X11/xf_gdi.c index e684c59e1..f1fe81b68 100644 --- a/client/X11/xf_gdi.c +++ b/client/X11/xf_gdi.c @@ -234,11 +234,11 @@ static Pixmap xf_brush_new(xfContext* xfc, UINT32 width, UINT32 height, if (data) { - brushFormat = gdi_get_pixel_format(bpp, FALSE); + brushFormat = gdi_get_pixel_format(bpp); cdata = (BYTE*) _aligned_malloc(width * height * 4, 16); freerdp_image_copy(cdata, gdi->dstFormat, 0, 0, 0, width, height, data, brushFormat, 0, 0, 0, - &xfc->context.gdi->palette); + &xfc->context.gdi->palette, FREERDP_FLIP_NONE); image = XCreateImage(xfc->display, xfc->visual, xfc->depth, ZPixmap, 0, (char*) cdata, width, height, xfc->scanline_pad, 0); gc = XCreateGC(xfc->display, xfc->drawable, 0, NULL); @@ -1030,24 +1030,24 @@ static BOOL xf_gdi_surface_bits(rdpContext* context, break; case RDP_CODEC_ID_NSCODEC: - format = FREERDP_VFLIP_PIXEL_FORMAT(gdi->dstFormat); + format = gdi->dstFormat; if (!nsc_process_message(context->codecs->nsc, cmd->bpp, cmd->width, cmd->height, cmd->bitmapData, cmd->bitmapDataLength, gdi->primary_buffer, format, stride, - 0, 0, cmd->width, cmd->height)) + 0, 0, cmd->width, cmd->height, FREERDP_FLIP_VERTICAL)) goto fail; break; case RDP_CODEC_ID_NONE: pSrcData = cmd->bitmapData; - format = PIXEL_FORMAT_BGRX32_VF; + format = PIXEL_FORMAT_BGRX32; if (!freerdp_image_copy(gdi->primary_buffer, gdi->dstFormat, stride, 0, 0, cmd->width, cmd->height, pSrcData, - format, 0, 0, 0, &xfc->context.gdi->palette)) + format, 0, 0, 0, &xfc->context.gdi->palette, FREERDP_FLIP_VERTICAL)) goto fail; break; diff --git a/client/X11/xf_gfx.c b/client/X11/xf_gfx.c index 8ed7b751a..6f205bd06 100644 --- a/client/X11/xf_gfx.c +++ b/client/X11/xf_gfx.c @@ -64,7 +64,7 @@ static UINT xf_OutputUpdate(xfContext* xfc, xfGfxSurface* surface) surface->stageScanline, 0, 0, surface->gdi.width, surface->gdi.height, surface->gdi.data, surface->gdi.format, - surface->gdi.scanline, 0, 0, NULL); + surface->gdi.scanline, 0, 0, NULL, FREERDP_FLIP_NONE); } #ifdef WITH_XRENDER diff --git a/client/X11/xf_graphics.c b/client/X11/xf_graphics.c index 54672d250..2cfd6e1aa 100644 --- a/client/X11/xf_graphics.c +++ b/client/X11/xf_graphics.c @@ -53,8 +53,7 @@ BOOL xf_decode_color(rdpGdi* gdi, const UINT32 srcColor, return FALSE; xfc = (xfContext*)gdi->context; - SrcFormat = gdi_get_pixel_format(gdi->context->settings->ColorDepth, - FALSE); + SrcFormat = gdi_get_pixel_format(gdi->context->settings->ColorDepth); if (format) *format = SrcFormat; @@ -98,7 +97,7 @@ static BOOL xf_Bitmap_New(rdpContext* context, rdpBitmap* bitmap) freerdp_image_copy(data, gdi->dstFormat, 0, 0, 0, bitmap->width, bitmap->height, bitmap->data, SrcFormat, - 0, 0, 0, &context->gdi->palette); + 0, 0, 0, &context->gdi->palette, FREERDP_FLIP_NONE); _aligned_free(bitmap->data); bitmap->data = data; bitmap->format = gdi->dstFormat; diff --git a/include/freerdp/codec/color.h b/include/freerdp/codec/color.h index 4d08b7194..98544ccf7 100644 --- a/include/freerdp/codec/color.h +++ b/include/freerdp/codec/color.h @@ -35,24 +35,15 @@ #define FREERDP_PIXEL_FORMAT_IS_ABGR(_format) (FREERDP_PIXEL_FORMAT_TYPE(_format) == FREERDP_PIXEL_FORMAT_TYPE_ABGR) -#define FREERDP_PIXEL_FLIP_NONE 0 -#define FREERDP_PIXEL_FLIP_VERTICAL 1 -#define FREERDP_PIXEL_FLIP_HORIZONTAL 2 +#define FREERDP_FLIP_NONE 0 +#define FREERDP_FLIP_VERTICAL 1 +#define FREERDP_FLIP_HORIZONTAL 2 -#define FREERDP_PIXEL_FORMAT(_flip, _bpp, _type, _a, _r, _g, _b) \ - ((_flip << 30) | (_bpp << 24) | (_type << 16) | (_a << 12) | (_r << 8) | (_g << 4) | (_b)) +#define FREERDP_PIXEL_FORMAT(_bpp, _type, _a, _r, _g, _b) \ + ((_bpp << 24) | (_type << 16) | (_a << 12) | (_r << 8) | (_g << 4) | (_b)) -#define FREERDP_PIXEL_FORMAT_FLIP(_format) (((_format) >> 30) & 0x03) #define FREERDP_PIXEL_FORMAT_TYPE(_format) (((_format) >> 16) & 0x07) -#define FREERDP_PIXEL_FORMAT_FLIP_MASKED(_format) (_format & 0x3FFFFFFF) - -#define FREERDP_VFLIP_PIXEL_FORMAT(format) \ - FREERDP_PIXEL_FORMAT_FLIP_MASKED(format) | (FREERDP_PIXEL_FLIP_VERTICAL << 30) - -#define FREERDP_HFLIP_PIXEL_FORMAT(format) \ - FREERDP_PIXEL_FORMAT_FLIP_MASKED(format) | (FREERDP_PIXEL_FLIP_HORIZONTAL << 30) - /*** Design considerations * * The format naming scheme is based on byte position in memory. @@ -69,87 +60,68 @@ */ /* 32bpp formats */ -#define PIXEL_FORMAT_A8R8G8B8_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 32, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 8, 8, 8, 8) +#define PIXEL_FORMAT_A8R8G8B8_F() FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 8, 8, 8, 8) -#define PIXEL_FORMAT_ARGB32 PIXEL_FORMAT_A8R8G8B8_F(0) -#define PIXEL_FORMAT_ARGB32_VF PIXEL_FORMAT_A8R8G8B8_F(1) +#define PIXEL_FORMAT_ARGB32 PIXEL_FORMAT_A8R8G8B8_F() -#define PIXEL_FORMAT_X8R8G8B8_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 32, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 8, 8, 8) -#define PIXEL_FORMAT_XRGB32 PIXEL_FORMAT_X8R8G8B8_F(0) -#define PIXEL_FORMAT_XRGB32_VF PIXEL_FORMAT_X8R8G8B8_F(1) +#define PIXEL_FORMAT_X8R8G8B8_F(_flip) FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 8, 8, 8) +#define PIXEL_FORMAT_XRGB32 PIXEL_FORMAT_X8R8G8B8_F() -#define PIXEL_FORMAT_A8B8G8R8_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 32, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 8, 8, 8, 8) -#define PIXEL_FORMAT_ABGR32 PIXEL_FORMAT_A8B8G8R8_F(0) -#define PIXEL_FORMAT_ABGR32_VF PIXEL_FORMAT_A8B8G8R8_F(1) +#define PIXEL_FORMAT_A8B8G8R8_F(_flip) FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 8, 8, 8, 8) +#define PIXEL_FORMAT_ABGR32 PIXEL_FORMAT_A8B8G8R8_F() -#define PIXEL_FORMAT_X8B8G8R8_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 32, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 8, 8, 8) -#define PIXEL_FORMAT_XBGR32 PIXEL_FORMAT_X8B8G8R8_F(0) -#define PIXEL_FORMAT_XBGR32_VF PIXEL_FORMAT_X8B8G8R8_F(1) +#define PIXEL_FORMAT_X8B8G8R8_F(_flip) FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 8, 8, 8) +#define PIXEL_FORMAT_XBGR32 PIXEL_FORMAT_X8B8G8R8_F() -#define PIXEL_FORMAT_B8G8R8A8_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 32, FREERDP_PIXEL_FORMAT_TYPE_BGRA, 8, 8, 8, 8) -#define PIXEL_FORMAT_BGRA32 PIXEL_FORMAT_B8G8R8A8_F(0) -#define PIXEL_FORMAT_BGRA32_VF PIXEL_FORMAT_B8G8R8A8_F(1) +#define PIXEL_FORMAT_B8G8R8A8_F(_flip) FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_BGRA, 8, 8, 8, 8) +#define PIXEL_FORMAT_BGRA32 PIXEL_FORMAT_B8G8R8A8_F() -#define PIXEL_FORMAT_B8G8R8X8_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 32, FREERDP_PIXEL_FORMAT_TYPE_BGRA, 0, 8, 8, 8) -#define PIXEL_FORMAT_BGRX32 PIXEL_FORMAT_B8G8R8X8_F(0) -#define PIXEL_FORMAT_BGRX32_VF PIXEL_FORMAT_B8G8R8X8_F(1) +#define PIXEL_FORMAT_B8G8R8X8_F(_flip) FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_BGRA, 0, 8, 8, 8) +#define PIXEL_FORMAT_BGRX32 PIXEL_FORMAT_B8G8R8X8_F() -#define PIXEL_FORMAT_R8G8B8A8_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 32, FREERDP_PIXEL_FORMAT_TYPE_RGBA, 8, 8, 8, 8) -#define PIXEL_FORMAT_RGBA32 PIXEL_FORMAT_R8G8B8A8_F(0) -#define PIXEL_FORMAT_RGBA32_VF PIXEL_FORMAT_R8G8B8A8_F(1) +#define PIXEL_FORMAT_R8G8B8A8_F(_flip) FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_RGBA, 8, 8, 8, 8) +#define PIXEL_FORMAT_RGBA32 PIXEL_FORMAT_R8G8B8A8_F() -#define PIXEL_FORMAT_R8G8B8X8_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 32, FREERDP_PIXEL_FORMAT_TYPE_RGBA, 0, 8, 8, 8) -#define PIXEL_FORMAT_RGBX32 PIXEL_FORMAT_R8G8B8X8_F(0) -#define PIXEL_FORMAT_RGBX32_VF PIXEL_FORMAT_R8G8B8X8_F(1) +#define PIXEL_FORMAT_R8G8B8X8_F(_flip) FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_RGBA, 0, 8, 8, 8) +#define PIXEL_FORMAT_RGBX32 PIXEL_FORMAT_R8G8B8X8_F() /* 24bpp formats */ -#define PIXEL_FORMAT_R8G8B8_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 24, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 8, 8, 8) -#define PIXEL_FORMAT_RGB24 PIXEL_FORMAT_R8G8B8_F(0) -#define PIXEL_FORMAT_RGB24_VF PIXEL_FORMAT_R8G8B8_F(1) +#define PIXEL_FORMAT_R8G8B8_F(_flip) FREERDP_PIXEL_FORMAT(24, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 8, 8, 8) +#define PIXEL_FORMAT_RGB24 PIXEL_FORMAT_R8G8B8_F() -#define PIXEL_FORMAT_B8G8R8_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 24, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 8, 8, 8) -#define PIXEL_FORMAT_BGR24 PIXEL_FORMAT_B8G8R8_F(0) -#define PIXEL_FORMAT_BGR24_VF PIXEL_FORMAT_B8G8R8_F(1) +#define PIXEL_FORMAT_B8G8R8_F(_flip) FREERDP_PIXEL_FORMAT(24, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 8, 8, 8) +#define PIXEL_FORMAT_BGR24 PIXEL_FORMAT_B8G8R8_F() /* 16bpp formats */ -#define PIXEL_FORMAT_R5G6B5_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 16, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 5, 6, 5) -#define PIXEL_FORMAT_RGB16 PIXEL_FORMAT_R5G6B5_F(0) -#define PIXEL_FORMAT_RGB16_VF PIXEL_FORMAT_R5G6B5_F(1) +#define PIXEL_FORMAT_R5G6B5_F(_flip) FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 5, 6, 5) +#define PIXEL_FORMAT_RGB16 PIXEL_FORMAT_R5G6B5_F() -#define PIXEL_FORMAT_B5G6R5_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 16, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 5, 6, 5) -#define PIXEL_FORMAT_BGR16 PIXEL_FORMAT_B5G6R5_F(0) -#define PIXEL_FORMAT_BGR16_VF PIXEL_FORMAT_B5G6R5_F(1) +#define PIXEL_FORMAT_B5G6R5_F(_flip) FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 5, 6, 5) +#define PIXEL_FORMAT_BGR16 PIXEL_FORMAT_B5G6R5_F() -#define PIXEL_FORMAT_A1R5G5B5_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 16, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 1, 5, 5, 5) -#define PIXEL_FORMAT_ARGB15 PIXEL_FORMAT_A1R5G5B5_F(0) -#define PIXEL_FORMAT_ARGB15_VF PIXEL_FORMAT_A1R5G5B5_F(1) +#define PIXEL_FORMAT_A1R5G5B5_F(_flip) FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 1, 5, 5, 5) +#define PIXEL_FORMAT_ARGB15 PIXEL_FORMAT_A1R5G5B5_F() -#define PIXEL_FORMAT_X1R5G5B5_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 15, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 5, 5, 5) -#define PIXEL_FORMAT_RGB15 PIXEL_FORMAT_X1R5G5B5_F(0) -#define PIXEL_FORMAT_RGB15_VF PIXEL_FORMAT_X1R5G5B5_F(1) +#define PIXEL_FORMAT_X1R5G5B5_F(_flip) FREERDP_PIXEL_FORMAT(15, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 5, 5, 5) +#define PIXEL_FORMAT_RGB15 PIXEL_FORMAT_X1R5G5B5_F() -#define PIXEL_FORMAT_A1B5G5R5_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 16, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 1, 5, 5, 5) -#define PIXEL_FORMAT_ABGR15 PIXEL_FORMAT_A1B5G5R5_F(0) -#define PIXEL_FORMAT_ABGR15_VF PIXEL_FORMAT_A1B5G5R5_F(1) +#define PIXEL_FORMAT_A1B5G5R5_F(_flip) FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 1, 5, 5, 5) +#define PIXEL_FORMAT_ABGR15 PIXEL_FORMAT_A1B5G5R5_F() -#define PIXEL_FORMAT_X1B5G5R5_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 15, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 5, 5, 5) -#define PIXEL_FORMAT_BGR15 PIXEL_FORMAT_X1B5G5R5_F(0) -#define PIXEL_FORMAT_BGR15_VF PIXEL_FORMAT_X1B5G5R5_F(1) +#define PIXEL_FORMAT_X1B5G5R5_F(_flip) FREERDP_PIXEL_FORMAT(15, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 5, 5, 5) +#define PIXEL_FORMAT_BGR15 PIXEL_FORMAT_X1B5G5R5_F() /* 8bpp formats */ -#define PIXEL_FORMAT_A8_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 8, FREERDP_PIXEL_FORMAT_TYPE_A, 8, 0, 0, 0) -#define PIXEL_FORMAT_RGB8 PIXEL_FORMAT_A8_F(0) -#define PIXEL_FORMAT_RGB8_VF PIXEL_FORMAT_A8_F(1) +#define PIXEL_FORMAT_A8_F(_flip) FREERDP_PIXEL_FORMAT(8, FREERDP_PIXEL_FORMAT_TYPE_A, 8, 0, 0, 0) +#define PIXEL_FORMAT_RGB8 PIXEL_FORMAT_A8_F() /* 4 bpp formats */ -#define PIXEL_FORMAT_A4_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 4, FREERDP_PIXEL_FORMAT_TYPE_A, 4, 0, 0, 0) -#define PIXEL_FORMAT_A4 PIXEL_FORMAT_A4_F(0) -#define PIXEL_FORMAT_A4_VF PIXEL_FORMAT_A4_F(1) +#define PIXEL_FORMAT_A4_F(_flip) FREERDP_PIXEL_FORMAT(4, FREERDP_PIXEL_FORMAT_TYPE_A, 4, 0, 0, 0) +#define PIXEL_FORMAT_A4 PIXEL_FORMAT_A4_F() /* 1bpp formats */ -#define PIXEL_FORMAT_A1_F(_flip) FREERDP_PIXEL_FORMAT(_flip, 1, FREERDP_PIXEL_FORMAT_TYPE_A, 1, 0, 0, 0) -#define PIXEL_FORMAT_MONO PIXEL_FORMAT_A1_F(0) -#define PIXEL_FORMAT_MONO_VF PIXEL_FORMAT_A1_F(1) +#define PIXEL_FORMAT_A1_F(_flip) FREERDP_PIXEL_FORMAT(1, FREERDP_PIXEL_FORMAT_TYPE_A, 1, 0, 0, 0) +#define PIXEL_FORMAT_MONO PIXEL_FORMAT_A1_F() struct gdi_palette { @@ -180,122 +152,65 @@ static const char* GetColorFormatName(UINT32 format) case PIXEL_FORMAT_ARGB32: return "PIXEL_FORMAT_ARGB32"; - case PIXEL_FORMAT_ARGB32_VF: - return "PIXEL_FORMAT_ARGB32_VF"; - case PIXEL_FORMAT_XRGB32: return "PIXEL_FORMAT_XRGB32"; - case PIXEL_FORMAT_XRGB32_VF: - return "PIXEL_FORMAT_XRGB32_VF"; - case PIXEL_FORMAT_ABGR32: return "PIXEL_FORMAT_ABGR32"; - case PIXEL_FORMAT_ABGR32_VF: - return "PIXEL_FORMAT_ABGR32_VF"; - case PIXEL_FORMAT_XBGR32: return "PIXEL_FORMAT_XBGR32"; - case PIXEL_FORMAT_XBGR32_VF: - return "PIXEL_FORMAT_XBGR32_VF"; - case PIXEL_FORMAT_BGRA32: return "PIXEL_FORMAT_BGRA32"; - case PIXEL_FORMAT_BGRA32_VF: - return "PIXEL_FORMAT_BGRA32_VF"; - case PIXEL_FORMAT_BGRX32: return "PIXEL_FORMAT_BGRX32"; - case PIXEL_FORMAT_BGRX32_VF: - return "PIXEL_FORMAT_BGRX32_VF"; - case PIXEL_FORMAT_RGBA32: return "PIXEL_FORMAT_RGBA32"; - case PIXEL_FORMAT_RGBA32_VF: - return "PIXEL_FORMAT_RGBA32_VF"; - case PIXEL_FORMAT_RGBX32: return "PIXEL_FORMAT_RGBX32"; - case PIXEL_FORMAT_RGBX32_VF: - return "PIXEL_FORMAT_RGBX32_VF"; - /* 24bpp formats */ case PIXEL_FORMAT_RGB24: return "PIXEL_FORMAT_RGB24"; - case PIXEL_FORMAT_RGB24_VF: - return "PIXEL_FORMAT_RGB24_VF"; - case PIXEL_FORMAT_BGR24: return "PIXEL_FORMAT_BGR24"; - case PIXEL_FORMAT_BGR24_VF: - return "PIXEL_FORMAT_BGR24_VF"; - /* 16bpp formats */ case PIXEL_FORMAT_RGB16: return "PIXEL_FORMAT_RGB16"; - case PIXEL_FORMAT_RGB16_VF: - return "PIXEL_FORMAT_RGB16_VF"; - case PIXEL_FORMAT_BGR16: return "PIXEL_FORMAT_BGR16"; - case PIXEL_FORMAT_BGR16_VF: - return "PIXEL_FORMAT_BGR16_VF"; - case PIXEL_FORMAT_ARGB15: return "PIXEL_FORMAT_ARGB15"; - case PIXEL_FORMAT_ARGB15_VF: - return "PIXEL_FORMAT_ARGB15_VF"; - case PIXEL_FORMAT_RGB15: return "PIXEL_FORMAT_RGB15"; - case PIXEL_FORMAT_RGB15_VF: - return "PIXEL_FORMAT_ABGR15"; - case PIXEL_FORMAT_ABGR15: - return ""; - - case PIXEL_FORMAT_ABGR15_VF: - return "PIXEL_FORMAT_ABGR15_VF"; + return "PIXEL_FORMAT_ABGR15"; case PIXEL_FORMAT_BGR15: return "PIXEL_FORMAT_BGR15"; - case PIXEL_FORMAT_BGR15_VF: - return "PIXEL_FORMAT_BGR15_VF"; - /* 8bpp formats */ case PIXEL_FORMAT_RGB8: return "PIXEL_FORMAT_RGB8"; - case PIXEL_FORMAT_RGB8_VF: - return "PIXEL_FORMAT_RGB8_VF"; - /* 4 bpp formats */ case PIXEL_FORMAT_A4: return "PIXEL_FORMAT_A4"; - case PIXEL_FORMAT_A4_VF: - return "PIXEL_FORMAT_A4_VF"; - /* 1bpp formats */ case PIXEL_FORMAT_MONO: return "PIXEL_FORMAT_MONO"; - case PIXEL_FORMAT_MONO_VF: - return "PIXEL_FORMAT_MONO_VF"; - default: return "UNKNOWN"; } @@ -319,7 +234,7 @@ static INLINE void SplitColor(UINT32 color, UINT32 format, BYTE* _r, BYTE* _g, { UINT32 tmp; - switch (FREERDP_PIXEL_FORMAT_FLIP_MASKED(format)) + switch (format) { /* 32bpp formats */ case PIXEL_FORMAT_ARGB32: @@ -645,7 +560,7 @@ static INLINE UINT32 GetColor(UINT32 format, BYTE r, BYTE g, BYTE b, BYTE a) UINT32 _b = b; UINT32 _a = a; - switch (FREERDP_PIXEL_FORMAT_FLIP_MASKED(format)) + switch (format) { /* 32bpp formats */ case PIXEL_FORMAT_ARGB32: @@ -962,6 +877,7 @@ FREERDP_API BOOL freerdp_image_copy_from_pointer_data( * @param nXSrc source buffer x offset in pixels * @param nYSrc source buffer y offset in pixels * @param palette pallete to use (only used for 8 bit color!) + * @param flags Image flipping flags FREERDP_FLIP_NONE et al * * @return TRUE if success, FALSE otherwise */ @@ -970,7 +886,7 @@ FREERDP_API BOOL freerdp_image_copy(BYTE* pDstData, DWORD DstFormat, UINT32 nWidth, UINT32 nHeight, const BYTE* pSrcData, DWORD SrcFormat, UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc, - const gdiPalette* palette); + const gdiPalette* palette, UINT32 flags); /*** * diff --git a/include/freerdp/codec/nsc.h b/include/freerdp/codec/nsc.h index 10a9d8e67..cab0e0a2e 100644 --- a/include/freerdp/codec/nsc.h +++ b/include/freerdp/codec/nsc.h @@ -92,7 +92,7 @@ FREERDP_API BOOL nsc_process_message(NSC_CONTEXT* context, UINT16 bpp, const BYTE* data, UINT32 length, BYTE* pDstData, UINT32 DstFormat, UINT32 nDstStride, UINT32 nXDst, UINT32 nYDst, - UINT32 nWidth, UINT32 nHeight); + UINT32 nWidth, UINT32 nHeight, UINT32 flip); FREERDP_API BOOL nsc_compose_message(NSC_CONTEXT* context, wStream* s, const BYTE* bmpdata, UINT32 width, UINT32 height, UINT32 rowstride); diff --git a/include/freerdp/gdi/gdi.h b/include/freerdp/gdi/gdi.h index 5562bce0c..2a893ce07 100644 --- a/include/freerdp/gdi/gdi.h +++ b/include/freerdp/gdi/gdi.h @@ -529,7 +529,7 @@ extern "C" { #endif FREERDP_API DWORD gdi_rop3_code(BYTE code); -FREERDP_API UINT32 gdi_get_pixel_format(UINT32 bitsPerPixel, BOOL vFlip); +FREERDP_API UINT32 gdi_get_pixel_format(UINT32 bitsPerPixel); FREERDP_API BOOL gdi_decode_color(rdpGdi* gdi, const UINT32 srcColor, UINT32* color, UINT32* format); FREERDP_API BOOL gdi_resize(rdpGdi* gdi, UINT32 width, UINT32 height); diff --git a/libfreerdp/codec/clear.c b/libfreerdp/codec/clear.c index 23434131b..b1fa4ecba 100644 --- a/libfreerdp/codec/clear.c +++ b/libfreerdp/codec/clear.c @@ -103,7 +103,7 @@ static BOOL clear_decompress_nscodec(NSC_CONTEXT* nsc, UINT32 width, rc = nsc_process_message(nsc, 32, width, height, Stream_Pointer(s), bitmapDataByteCount, pDstData, DstFormat, - nDstStep, nXDstRel, nYDstRel, width, height); + nDstStep, nXDstRel, nYDstRel, width, height, FREERDP_FLIP_NONE); Stream_Seek(s, bitmapDataByteCount); return rc; } diff --git a/libfreerdp/codec/color.c b/libfreerdp/codec/color.c index 26cbd7900..ba487b613 100644 --- a/libfreerdp/codec/color.c +++ b/libfreerdp/codec/color.c @@ -76,30 +76,26 @@ BYTE* freerdp_glyph_convert(UINT32 width, UINT32 height, const BYTE* data) } BOOL freerdp_image_copy_from_monochrome(BYTE* pDstData, UINT32 DstFormat, - UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, - UINT32 nWidth, UINT32 nHeight, - const BYTE* pSrcData, - UINT32 backColor, UINT32 foreColor, - const gdiPalette* palette) + UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, + UINT32 nWidth, UINT32 nHeight, + const BYTE* pSrcData, + UINT32 backColor, UINT32 foreColor, + const gdiPalette* palette) { UINT32 x, y; BOOL vFlip; - UINT32 srcFlip; - UINT32 dstFlip; UINT32 nDstPad; UINT32 monoStep; UINT32 dstBitsPerPixel; UINT32 dstBytesPerPixel; dstBitsPerPixel = GetBitsPerPixel(DstFormat); dstBytesPerPixel = GetBytesPerPixel(DstFormat); - dstFlip = FREERDP_PIXEL_FORMAT_FLIP(DstFormat); if (nDstStep == 0) nDstStep = dstBytesPerPixel * nWidth; nDstPad = (nDstStep - (nWidth * dstBytesPerPixel)); - srcFlip = FREERDP_PIXEL_FLIP_NONE; - vFlip = (srcFlip != dstFlip) ? TRUE : FALSE; + vFlip = FALSE; monoStep = (nWidth + 7) / 8; for (y = 0; y < nHeight; y++) @@ -135,7 +131,7 @@ BOOL freerdp_image_copy_from_monochrome(BYTE* pDstData, UINT32 DstFormat, } static INLINE UINT32 freerdp_image_inverted_pointer_color(UINT32 x, UINT32 y, - UINT32 format) + UINT32 format) { #if 1 /** @@ -171,8 +167,6 @@ BOOL freerdp_image_copy_from_pointer_data( { UINT32 x, y; BOOL vFlip; - UINT32 srcFlip; - UINT32 dstFlip; UINT32 nDstPad; UINT32 xorStep; UINT32 andStep; @@ -184,20 +178,12 @@ BOOL freerdp_image_copy_from_pointer_data( UINT32 dstBytesPerPixel; dstBitsPerPixel = GetBitsPerPixel(DstFormat); dstBytesPerPixel = GetBytesPerPixel(DstFormat); - dstFlip = FREERDP_PIXEL_FORMAT_FLIP(DstFormat); - - if (FREERDP_PIXEL_FORMAT_FLIP(DstFormat)) - { - WLog_ERR(TAG, "Format %s not supported!", GetColorFormatName(DstFormat)); - return FALSE; - } if (nDstStep <= 0) nDstStep = dstBytesPerPixel * nWidth; nDstPad = (nDstStep - (nWidth * dstBytesPerPixel)); - srcFlip = (xorBpp == 1) ? FREERDP_PIXEL_FLIP_NONE : FREERDP_PIXEL_FLIP_VERTICAL; - vFlip = (srcFlip != dstFlip) ? TRUE : FALSE; + vFlip = (xorBpp == 1) ? FALSE : TRUE; andStep = (nWidth + 7) / 8; andStep += (andStep % 2); @@ -224,7 +210,7 @@ BOOL freerdp_image_copy_from_pointer_data( const BYTE* andBits; const BYTE* xorBits; BYTE* pDstPixel = &pDstData[((nYDst + y) * nDstStep) + - (nXDst * GetBytesPerPixel(DstFormat))]; + (nXDst * GetBytesPerPixel(DstFormat))]; xorBit = andBit = 0x80; if (!vFlip) @@ -284,7 +270,7 @@ BOOL freerdp_image_copy_from_pointer_data( if (xorBpp == 8 && !palette) { WLog_ERR(TAG, "null palette in convertion from %d bpp to %d bpp", - xorBpp, dstBitsPerPixel); + xorBpp, dstBitsPerPixel); return -1; } @@ -302,7 +288,7 @@ BOOL freerdp_image_copy_from_pointer_data( const BYTE* xorBits; const BYTE* andBits = NULL; BYTE* pDstPixel = &pDstData[((nYDst + y) * nDstStep) + - (nXDst * GetBytesPerPixel(DstFormat))]; + (nXDst * GetBytesPerPixel(DstFormat))]; andBit = 0x80; if (!vFlip) @@ -353,9 +339,9 @@ BOOL freerdp_image_copy_from_pointer_data( } xorPixel = ConvertColor(xorPixel, - pixelFormat, - PIXEL_FORMAT_ARGB32, - palette); + pixelFormat, + PIXEL_FORMAT_ARGB32, + palette); xorBits += xorBytesPerPixel; andPixel = 0; @@ -382,7 +368,7 @@ BOOL freerdp_image_copy_from_pointer_data( } color = ConvertColor(xorPixel, PIXEL_FORMAT_ARGB32, - DstFormat, palette); + DstFormat, palette); WriteColor(pDstPixel, DstFormat, color); pDstPixel += GetBytesPerPixel(DstFormat); } @@ -393,16 +379,16 @@ BOOL freerdp_image_copy_from_pointer_data( default: WLog_ERR(TAG, "failed to convert from %d bpp to %d bpp", - xorBpp, dstBitsPerPixel); + xorBpp, dstBitsPerPixel); return -1; } } static BOOL overlapping(const BYTE* pDstData, UINT32 nXDst, UINT32 nYDst, - UINT32 nDstStep, UINT32 dstBytesPerPixel, - const BYTE* pSrcData, UINT32 nXSrc, UINT32 nYSrc, - UINT32 nSrcStep, UINT32 srcBytesPerPixel, - UINT32 nWidth, UINT32 nHeight) + UINT32 nDstStep, UINT32 dstBytesPerPixel, + const BYTE* pSrcData, UINT32 nXSrc, UINT32 nYSrc, + UINT32 nSrcStep, UINT32 srcBytesPerPixel, + UINT32 nWidth, UINT32 nHeight) { const BYTE* pDstStart = &pDstData[nXDst * dstBytesPerPixel + nYDst * nDstStep]; const BYTE* pDstEnd = pDstStart + nHeight * nDstStep; @@ -419,21 +405,19 @@ static BOOL overlapping(const BYTE* pDstData, UINT32 nXDst, UINT32 nYDst, } BOOL freerdp_image_copy(BYTE* pDstData, DWORD DstFormat, - UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, - UINT32 nWidth, UINT32 nHeight, - const BYTE* pSrcData, DWORD SrcFormat, - UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc, - const gdiPalette* palette) + UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, + UINT32 nWidth, UINT32 nHeight, + const BYTE* pSrcData, DWORD SrcFormat, + UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc, + const gdiPalette* palette, UINT32 flags) { const UINT32 dstByte = GetBytesPerPixel(DstFormat); const UINT32 srcByte = GetBytesPerPixel(SrcFormat); const UINT32 copyDstWidth = nWidth * dstByte; const UINT32 xSrcOffset = nXSrc * srcByte; const UINT32 xDstOffset = nXDst * dstByte; - BOOL vSrcVFlip = FALSE; - BOOL vDstVFlip = FALSE; - BOOL vSrcHFlip = FALSE; - BOOL vDstHFlip = FALSE; + BOOL vSrcVFlip = flags & FREERDP_FLIP_VERTICAL; + BOOL vSrcHFlip = flags & FREERDP_FLIP_HORIZONTAL; UINT32 srcVOffset = 0; INT32 srcVMultiplier = 1; UINT32 dstVOffset = 0; @@ -442,36 +426,6 @@ BOOL freerdp_image_copy(BYTE* pDstData, DWORD DstFormat, if (!pDstData || !pSrcData) return FALSE; - switch (FREERDP_PIXEL_FORMAT_FLIP(SrcFormat)) - { - case FREERDP_PIXEL_FLIP_HORIZONTAL: - vSrcHFlip = TRUE; - return FALSE; - - case FREERDP_PIXEL_FLIP_VERTICAL: - vSrcVFlip = TRUE; - break; - - case FREERDP_PIXEL_FLIP_NONE: - default: - break; - } - - switch (FREERDP_PIXEL_FORMAT_FLIP(DstFormat)) - { - case FREERDP_PIXEL_FLIP_HORIZONTAL: - vDstHFlip = TRUE; - return FALSE; - - case FREERDP_PIXEL_FLIP_VERTICAL: - vDstVFlip = TRUE; - break; - - case FREERDP_PIXEL_FLIP_NONE: - default: - break; - } - if (nDstStep == 0) nDstStep = nWidth * GetBytesPerPixel(DstFormat); @@ -484,27 +438,13 @@ BOOL freerdp_image_copy(BYTE* pDstData, DWORD DstFormat, srcVMultiplier = -1; } - if (vDstVFlip) - { - dstVOffset = (nHeight - 1) * nDstStep; - dstVMultiplier = -1; - } - - if (vSrcHFlip || vDstHFlip) - { - WLog_ERR(TAG, "Horizontal flipping not supported! %s %s", - GetColorFormatName(SrcFormat), GetColorFormatName(DstFormat)); - return FALSE; - } - - if (FREERDP_PIXEL_FORMAT_FLIP_MASKED(SrcFormat) == - FREERDP_PIXEL_FORMAT_FLIP_MASKED(DstFormat)) + if (SrcFormat == DstFormat) { INT32 y; if (overlapping(pDstData, nXDst, nYDst, nDstStep, dstByte, - pSrcData, nXSrc, nYSrc, nSrcStep, srcByte, - nWidth, nHeight)) + pSrcData, nXSrc, nYSrc, nSrcStep, srcByte, + nWidth, nHeight)) { /* Copy down */ if (nYDst < nYSrc) @@ -512,11 +452,11 @@ BOOL freerdp_image_copy(BYTE* pDstData, DWORD DstFormat, for (y = 0; y < nHeight; y++) { const BYTE* srcLine = &pSrcData[(y + nYSrc) * - nSrcStep * srcVMultiplier + - srcVOffset]; + nSrcStep * srcVMultiplier + + srcVOffset]; BYTE* dstLine = &pDstData[(y + nYDst) * - nDstStep * dstVMultiplier + - dstVOffset]; + nDstStep * dstVMultiplier + + dstVOffset]; memcpy(&dstLine[xDstOffset], &srcLine[xSrcOffset], copyDstWidth); } @@ -527,11 +467,11 @@ BOOL freerdp_image_copy(BYTE* pDstData, DWORD DstFormat, for (y = nHeight - 1; y >= 0; y--) { const BYTE* srcLine = &pSrcData[(y + nYSrc) * - nSrcStep * srcVMultiplier + - srcVOffset]; + nSrcStep * srcVMultiplier + + srcVOffset]; BYTE* dstLine = &pDstData[(y + nYDst) * - nDstStep * dstVMultiplier + - dstVOffset]; + nDstStep * dstVMultiplier + + dstVOffset]; memcpy(&dstLine[xDstOffset], &srcLine[xSrcOffset], copyDstWidth); } @@ -542,13 +482,13 @@ BOOL freerdp_image_copy(BYTE* pDstData, DWORD DstFormat, for (y = 0; y < nHeight; y++) { const BYTE* srcLine = &pSrcData[(y + nYSrc) * - nSrcStep * srcVMultiplier + - srcVOffset]; + nSrcStep * srcVMultiplier + + srcVOffset]; BYTE* dstLine = &pDstData[(y + nYDst) * - nDstStep * dstVMultiplier + - dstVOffset]; + nDstStep * dstVMultiplier + + dstVOffset]; memmove(&dstLine[xDstOffset], - &srcLine[xSrcOffset], copyDstWidth); + &srcLine[xSrcOffset], copyDstWidth); } } /* Copy right */ @@ -557,13 +497,13 @@ BOOL freerdp_image_copy(BYTE* pDstData, DWORD DstFormat, for (y = nHeight - 1; y >= 0; y--) { const BYTE* srcLine = &pSrcData[(y + nYSrc) * - nSrcStep * srcVMultiplier + - srcVOffset]; + nSrcStep * srcVMultiplier + + srcVOffset]; BYTE* dstLine = &pDstData[(y + nYDst) * - nDstStep * dstVMultiplier + - dstVOffset]; + nDstStep * dstVMultiplier + + dstVOffset]; memmove(&dstLine[xDstOffset], - &srcLine[xSrcOffset], copyDstWidth); + &srcLine[xSrcOffset], copyDstWidth); } } /* Source and destination are equal... */ @@ -576,11 +516,11 @@ BOOL freerdp_image_copy(BYTE* pDstData, DWORD DstFormat, for (y = 0; y < nHeight; y++) { const BYTE* srcLine = &pSrcData[(y + nYSrc) * - nSrcStep * srcVMultiplier + - srcVOffset]; + nSrcStep * srcVMultiplier + + srcVOffset]; BYTE* dstLine = &pDstData[(y + nYDst) * - nDstStep * dstVMultiplier + - dstVOffset]; + nDstStep * dstVMultiplier + + dstVOffset]; memcpy(&dstLine[xDstOffset], &srcLine[xSrcOffset], copyDstWidth); } @@ -593,16 +533,16 @@ BOOL freerdp_image_copy(BYTE* pDstData, DWORD DstFormat, for (y = 0; y < nHeight; y++) { const BYTE* srcLine = &pSrcData[(y + nYSrc) * - nSrcStep * srcVMultiplier + - srcVOffset]; + nSrcStep * srcVMultiplier + + srcVOffset]; BYTE* dstLine = &pDstData[(y + nYDst) * - nDstStep * dstVMultiplier + dstVOffset]; + nDstStep * dstVMultiplier + dstVOffset]; for (x = 0; x < nWidth; x++) { UINT32 dstColor; UINT32 color = ReadColor(&srcLine[(x + nXSrc) * srcByte], - SrcFormat); + SrcFormat); dstColor = ConvertColor(color, SrcFormat, DstFormat, palette); WriteColor(&dstLine[(x + nXDst) * dstByte], DstFormat, dstColor); } @@ -613,8 +553,8 @@ BOOL freerdp_image_copy(BYTE* pDstData, DWORD DstFormat, } BOOL freerdp_image_fill(BYTE* pDstData, DWORD DstFormat, - UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, - UINT32 nWidth, UINT32 nHeight, UINT32 color) + UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, + UINT32 nWidth, UINT32 nHeight, UINT32 color) { UINT32 x, y; diff --git a/libfreerdp/codec/interleaved.c b/libfreerdp/codec/interleaved.c index 1b9454fe7..cbac0dad6 100644 --- a/libfreerdp/codec/interleaved.c +++ b/libfreerdp/codec/interleaved.c @@ -109,7 +109,7 @@ static INLINE UINT32 ExtractCodeId(BYTE bOrderHdr) * Extract the run length of a compression order. */ static INLINE UINT32 ExtractRunLength(UINT32 code, const BYTE* pbOrderHdr, - UINT32* advance) + UINT32* advance) { UINT32 runLength; UINT32 ladvance; @@ -252,9 +252,9 @@ static INLINE UINT32 ExtractRunLength(UINT32 code, const BYTE* pbOrderHdr, #define DESTWRITEPIXEL(_buf, _pix) do { (_buf)[0] = (BYTE)(_pix); \ (_buf)[1] = (BYTE)((_pix) >> 8); (_buf)[2] = (BYTE)((_pix) >> 16); } while (0) #define DESTREADPIXEL(_pix, _buf) _pix = (_buf)[0] | ((_buf)[1] << 8) | \ - ((_buf)[2] << 16) + ((_buf)[2] << 16) #define SRCREADPIXEL(_pix, _buf) _pix = (_buf)[0] | ((_buf)[1] << 8) | \ - ((_buf)[2] << 16) + ((_buf)[2] << 16) #define DESTNEXTPIXEL(_buf) _buf += 3 #define SRCNEXTPIXEL(_buf) _buf += 3 #define WRITEFGBGIMAGE WriteFgBgImage24to24 @@ -264,13 +264,13 @@ static INLINE UINT32 ExtractRunLength(UINT32 code, const BYTE* pbOrderHdr, #include "include/bitmap.c" BOOL interleaved_decompress(BITMAP_INTERLEAVED_CONTEXT* interleaved, - const BYTE* pSrcData, UINT32 SrcSize, - UINT32 nSrcWidth, UINT32 nSrcHeight, - UINT32 bpp, - BYTE* pDstData, UINT32 DstFormat, - UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, - UINT32 nDstWidth, UINT32 nDstHeight, - const gdiPalette* palette) + const BYTE* pSrcData, UINT32 SrcSize, + UINT32 nSrcWidth, UINT32 nSrcHeight, + UINT32 bpp, + BYTE* pDstData, UINT32 DstFormat, + UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, + UINT32 nDstWidth, UINT32 nDstHeight, + const gdiPalette* palette) { UINT32 scanline; UINT32 SrcFormat; @@ -283,22 +283,22 @@ BOOL interleaved_decompress(BITMAP_INTERLEAVED_CONTEXT* interleaved, { case 24: scanline = nSrcWidth * 3; - SrcFormat = PIXEL_FORMAT_BGR24_VF; + SrcFormat = PIXEL_FORMAT_BGR24; break; case 16: scanline = nSrcWidth * 2; - SrcFormat = PIXEL_FORMAT_RGB16_VF; + SrcFormat = PIXEL_FORMAT_RGB16; break; case 15: scanline = nSrcWidth * 2; - SrcFormat = PIXEL_FORMAT_RGB15_VF; + SrcFormat = PIXEL_FORMAT_RGB15; break; case 8: scanline = nSrcWidth; - SrcFormat = PIXEL_FORMAT_RGB8_VF; + SrcFormat = PIXEL_FORMAT_RGB8; break; default: @@ -311,8 +311,8 @@ BOOL interleaved_decompress(BITMAP_INTERLEAVED_CONTEXT* interleaved, if (BufferSize > interleaved->TempSize) { interleaved->TempBuffer = _aligned_realloc( - interleaved->TempBuffer, - BufferSize, 16); + interleaved->TempBuffer, + BufferSize, 16); interleaved->TempSize = BufferSize; } @@ -323,18 +323,18 @@ BOOL interleaved_decompress(BITMAP_INTERLEAVED_CONTEXT* interleaved, { case 24: RleDecompress24to24(pSrcData, SrcSize, interleaved->TempBuffer, - scanline, nSrcWidth, nSrcHeight); + scanline, nSrcWidth, nSrcHeight); break; case 16: case 15: RleDecompress16to16(pSrcData, SrcSize, interleaved->TempBuffer, - scanline, nSrcWidth, nSrcHeight); + scanline, nSrcWidth, nSrcHeight); break; case 8: RleDecompress8to8(pSrcData, SrcSize, interleaved->TempBuffer, - scanline, nSrcWidth, nSrcHeight); + scanline, nSrcWidth, nSrcHeight); break; default: @@ -342,16 +342,16 @@ BOOL interleaved_decompress(BITMAP_INTERLEAVED_CONTEXT* interleaved, } return freerdp_image_copy(pDstData, DstFormat, nDstStep, nXDst, nYDst, - nDstWidth, nDstHeight, interleaved->TempBuffer, - SrcFormat, scanline, 0, 0, palette); + nDstWidth, nDstHeight, interleaved->TempBuffer, + SrcFormat, scanline, 0, 0, palette, FREERDP_FLIP_VERTICAL); } BOOL interleaved_compress(BITMAP_INTERLEAVED_CONTEXT* interleaved, - BYTE* pDstData, UINT32* pDstSize, - UINT32 nWidth, UINT32 nHeight, - const BYTE* pSrcData, UINT32 SrcFormat, - UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc, - const gdiPalette* palette, UINT32 bpp) + BYTE* pDstData, UINT32* pDstSize, + UINT32 nWidth, UINT32 nHeight, + const BYTE* pSrcData, UINT32 SrcFormat, + UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc, + const gdiPalette* palette, UINT32 bpp) { int status; wStream* s; @@ -367,8 +367,8 @@ BOOL interleaved_compress(BITMAP_INTERLEAVED_CONTEXT* interleaved, if ((nWidth > 64) || (nHeight > 64)) { WLog_ERR(TAG, - "interleaved_compress: width (%d) or height (%d) is greater than 64", nWidth, - nHeight); + "interleaved_compress: width (%d) or height (%d) is greater than 64", nWidth, + nHeight); return FALSE; } @@ -385,16 +385,16 @@ BOOL interleaved_compress(BITMAP_INTERLEAVED_CONTEXT* interleaved, return FALSE; status = freerdp_image_copy(interleaved->TempBuffer, DstFormat, 0, 0, 0, nWidth, - nHeight, - pSrcData, SrcFormat, nSrcStep, nXSrc, nYSrc, palette); + nHeight, + pSrcData, SrcFormat, nSrcStep, nXSrc, nYSrc, palette, FREERDP_FLIP_NONE); s = Stream_New(pDstData, maxSize); if (!s) return FALSE; status = freerdp_bitmap_compress((char*) interleaved->TempBuffer, nWidth, - nHeight, - s, bpp, maxSize, nHeight - 1, interleaved->bts, 0); + nHeight, + s, bpp, maxSize, nHeight - 1, interleaved->bts, 0); Stream_SealLength(s); *pDstSize = (UINT32) Stream_Length(s); Stream_Free(s, FALSE); @@ -413,7 +413,7 @@ BITMAP_INTERLEAVED_CONTEXT* bitmap_interleaved_context_new(BOOL Compressor) { BITMAP_INTERLEAVED_CONTEXT* interleaved; interleaved = (BITMAP_INTERLEAVED_CONTEXT*) calloc(1, - sizeof(BITMAP_INTERLEAVED_CONTEXT)); + sizeof(BITMAP_INTERLEAVED_CONTEXT)); if (interleaved) { diff --git a/libfreerdp/codec/nsc.c b/libfreerdp/codec/nsc.c index 487aaf299..14e605db5 100644 --- a/libfreerdp/codec/nsc.c +++ b/libfreerdp/codec/nsc.c @@ -48,7 +48,6 @@ static void nsc_decode(NSC_CONTEXT* context) UINT16 y; UINT16 rw = ROUND_UP_TO(context->width, 8); BYTE shift = context->ColorLossLevel - 1; /* colorloss recovery + YCoCg shift */; - BYTE* bmpdata = context->BitmapData; for (y = 0; y < context->height; y++) @@ -62,9 +61,9 @@ static void nsc_decode(NSC_CONTEXT* context) { yplane = context->priv->PlaneBuffers[0] + y * rw; /* Y */ coplane = context->priv->PlaneBuffers[1] + (y >> 1) * (rw >> - 1); /* Co, supersampled */ + 1); /* Co, supersampled */ cgplane = context->priv->PlaneBuffers[2] + (y >> 1) * (rw >> - 1); /* Cg, supersampled */ + 1); /* Cg, supersampled */ } else { @@ -81,7 +80,6 @@ static void nsc_decode(NSC_CONTEXT* context) INT16 r_val = y_val + co_val - cg_val; INT16 g_val = y_val + cg_val; INT16 b_val = y_val - co_val - cg_val; - *bmpdata++ = MINMAX(b_val, 0, 0xFF); *bmpdata++ = MINMAX(g_val, 0, 0xFF); *bmpdata++ = MINMAX(r_val, 0, 0xFF); @@ -176,7 +174,7 @@ static BOOL nsc_stream_initialize(NSC_CONTEXT* context, wStream* s) Stream_Read_UINT8(s, context->ColorLossLevel); /* ColorLossLevel (1 byte) */ Stream_Read_UINT8(s, - context->ChromaSubsamplingLevel); /* ChromaSubsamplingLevel (1 byte) */ + context->ChromaSubsamplingLevel); /* ChromaSubsamplingLevel (1 byte) */ Stream_Seek(s, 2); /* Reserved (2 bytes) */ context->Planes = Stream_Pointer(s); return TRUE; @@ -295,10 +293,10 @@ NSC_CONTEXT* nsc_context_new(void) goto error_PlanePool; PROFILER_CREATE(context->priv->prof_nsc_rle_decompress_data, - "nsc_rle_decompress_data"); + "nsc_rle_decompress_data"); PROFILER_CREATE(context->priv->prof_nsc_decode, "nsc_decode"); PROFILER_CREATE(context->priv->prof_nsc_rle_compress_data, - "nsc_rle_compress_data"); + "nsc_rle_compress_data"); PROFILER_CREATE(context->priv->prof_nsc_encode, "nsc_encode"); /* Default encoding parameters */ context->ColorLossLevel = 3; @@ -345,12 +343,12 @@ BOOL nsc_context_set_pixel_format(NSC_CONTEXT* context, UINT32 pixel_format) } BOOL nsc_process_message(NSC_CONTEXT* context, UINT16 bpp, - UINT32 width, UINT32 height, - const BYTE* data, UINT32 length, - BYTE* pDstData, UINT32 DstFormat, - UINT32 nDstStride, - UINT32 nXDst, UINT32 nYDst, UINT32 nWidth, - UINT32 nHeight) + UINT32 width, UINT32 height, + const BYTE* data, UINT32 length, + BYTE* pDstData, UINT32 DstFormat, + UINT32 nDstStride, + UINT32 nXDst, UINT32 nYDst, UINT32 nWidth, + UINT32 nHeight, UINT32 flip) { wStream* s; BOOL ret; @@ -406,8 +404,8 @@ BOOL nsc_process_message(NSC_CONTEXT* context, UINT16 bpp, PROFILER_EXIT(context->priv->prof_nsc_decode); if (!freerdp_image_copy(pDstData, DstFormat, nDstStride, nXDst, nYDst, - width, height, context->BitmapData, - PIXEL_FORMAT_BGRA32, 0, 0, 0, NULL)) + width, height, context->BitmapData, + PIXEL_FORMAT_BGRA32, 0, 0, 0, NULL, flip)) return FALSE; return TRUE; diff --git a/libfreerdp/codec/planar.c b/libfreerdp/codec/planar.c index ce941b0e5..683d3a0bc 100644 --- a/libfreerdp/codec/planar.c +++ b/libfreerdp/codec/planar.c @@ -559,7 +559,7 @@ BOOL planar_decompress(BITMAP_PLANAR_CONTEXT* planar, { if (!freerdp_image_copy(pDstData, DstFormat, nDstStep, nXDst, nYDst, w, h, pTempData, - TempFormat, nTempStep, nXDst, nYDst, NULL)) + TempFormat, nTempStep, nXDst, nYDst, NULL, FREERDP_FLIP_NONE)) return FALSE; } } diff --git a/libfreerdp/codec/progressive.c b/libfreerdp/codec/progressive.c index a4f57bde9..1d01c07b2 100644 --- a/libfreerdp/codec/progressive.c +++ b/libfreerdp/codec/progressive.c @@ -1930,7 +1930,7 @@ INT32 progressive_decompress(PROGRESSIVE_CONTEXT* progressive, rect->left, rect->top, width, height, tile->data, PIXEL_FORMAT_BGRX32, - 64 * 4, nXSrc, nYSrc, NULL)) + 64 * 4, nXSrc, nYSrc, NULL, FREERDP_FLIP_NONE)) { rc = -42; break; diff --git a/libfreerdp/codec/rfx.c b/libfreerdp/codec/rfx.c index 57fa88334..829984400 100644 --- a/libfreerdp/codec/rfx.c +++ b/libfreerdp/codec/rfx.c @@ -1188,7 +1188,7 @@ BOOL rfx_process_message(RFX_CONTEXT* context, const BYTE* data, if (!freerdp_image_copy(dst, dstFormat, dstStride, nXDst, nYDst, nWidth, nHeight, - tile->data, format, stride, nXSrc, nYSrc, NULL)) + tile->data, format, stride, nXSrc, nYSrc, NULL, FREERDP_FLIP_NONE)) goto fail; if (invalidRegion) diff --git a/libfreerdp/codec/test/TestFreeRDPCodecProgressive.c b/libfreerdp/codec/test/TestFreeRDPCodecProgressive.c index 917645522..9ed19b791 100644 --- a/libfreerdp/codec/test/TestFreeRDPCodecProgressive.c +++ b/libfreerdp/codec/test/TestFreeRDPCodecProgressive.c @@ -169,7 +169,8 @@ static void* test_image_memset32(UINT32* ptr, UINT32 fill, size_t length) return (void*) ptr; } -static int test_image_fill(BYTE* pDstData, int nDstStep, int nXDst, int nYDst, int nWidth, int nHeight, UINT32 color) +static int test_image_fill(BYTE* pDstData, int nDstStep, int nXDst, int nYDst, int nWidth, + int nHeight, UINT32 color) { int y; UINT32* pDstPixel; @@ -186,7 +187,8 @@ static int test_image_fill(BYTE* pDstData, int nDstStep, int nXDst, int nYDst, i return 1; } -static int test_image_fill_quarter(BYTE* pDstData, int nDstStep, int nWidth, int nHeight, UINT32 color, int quarter) +static int test_image_fill_quarter(BYTE* pDstData, int nDstStep, int nWidth, int nHeight, + UINT32 color, int quarter) { int x = 0; int y = 0; @@ -199,37 +201,37 @@ static int test_image_fill_quarter(BYTE* pDstData, int nDstStep, int nWidth, int x = 0; y = 0; width = nWidth / 2; - height = nHeight /2; + height = nHeight / 2; break; case 1: x = nWidth / 2; y = nHeight / 2; width = nWidth / 2; - height = nHeight /2; + height = nHeight / 2; break; case 2: x = 0; y = nHeight / 2; width = nWidth / 2; - height = nHeight /2; + height = nHeight / 2; break; case 3: x = nWidth / 2; y = 0; width = nWidth / 2; - height = nHeight /2; + height = nHeight / 2; break; } test_image_fill(pDstData, nDstStep, x, y, width, height, 0xFF000000); - return 1; } -static int test_image_fill_unused_quarters(BYTE* pDstData, int nDstStep, int nWidth, int nHeight, UINT32 color, int quarter) +static int test_image_fill_unused_quarters(BYTE* pDstData, int nDstStep, int nWidth, int nHeight, + UINT32 color, int quarter) { return 1; @@ -266,8 +268,8 @@ BYTE* test_progressive_load_file(char* path, char* file, UINT32* size) FILE* fp; BYTE* buffer; char* filename; - filename = GetCombinedPath(path, file); + if (!filename) return NULL; @@ -280,7 +282,6 @@ BYTE* test_progressive_load_file(char* path, char* file, UINT32* size) fseek(fp, 0, SEEK_END); *size = ftell(fp); fseek(fp, 0, SEEK_SET); - buffer = (BYTE*) malloc(*size); if (!buffer) @@ -297,7 +298,6 @@ BYTE* test_progressive_load_file(char* path, char* file, UINT32* size) } fclose(fp); - return buffer; } @@ -306,225 +306,163 @@ int test_progressive_load_files(char* ms_sample_path, EGFX_SAMPLE_FILE files[3][ int imageNo = 0; int quarterNo = 0; int passNo = 0; - /* image 1 */ - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_0_025_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_0_025_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_0_050_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_0_050_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_0_075_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_0_075_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_0_100_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_0_100_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_1_025_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_1_025_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_1_050_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_1_050_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_1_075_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_1_075_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_1_100_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_1_100_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_2_025_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_2_025_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_2_050_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_2_050_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_2_075_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_2_075_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_2_100_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_2_100_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_3_025_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_3_025_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_3_050_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_3_050_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_3_075_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_3_075_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_0_3_100_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_0_3_100_sampleimage1.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - imageNo++; - /* image 2 */ - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_0_025_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_0_025_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_0_050_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_0_050_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_0_075_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_0_075_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_0_100_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_0_100_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_1_025_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_1_025_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_1_050_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_1_050_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_1_075_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_1_075_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_1_100_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_1_100_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_2_025_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_2_025_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_2_050_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_2_050_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_2_075_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_2_075_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_2_100_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_2_100_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_3_025_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_3_025_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_3_050_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_3_050_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_3_075_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_3_075_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_1_3_100_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_1_3_100_sampleimage2.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - imageNo++; - /* image 3 */ - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_0_025_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_0_025_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_0_050_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_0_050_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_0_075_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_0_075_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_0_100_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_0_100_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_1_025_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_1_025_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_1_050_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_1_050_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_1_075_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_1_075_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_1_100_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_1_100_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_2_025_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_2_025_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_2_050_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_2_050_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_2_075_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_2_075_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_2_100_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_2_100_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_3_025_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_3_025_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_3_050_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_3_050_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_3_075_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_3_075_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; - files[imageNo][quarterNo][passNo].buffer = test_progressive_load_file(ms_sample_path, - "compress/enc_2_3_100_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); + "compress/enc_2_3_100_sampleimage3.bin", &(files[imageNo][quarterNo][passNo].size)); passNo = (passNo + 1) % 4; /* check if all test data has been loaded */ @@ -550,7 +488,6 @@ BYTE* test_progressive_load_bitmap(char* path, char* file, UINT32* size, int qua BYTE* buffer; wImage* image; char* filename; - filename = GetCombinedPath(path, file); if (!filename) @@ -568,13 +505,11 @@ BYTE* test_progressive_load_bitmap(char* path, char* file, UINT32* size, int qua buffer = image->data; *size = image->height * image->scanline; - test_fill_image_alpha_channel(image->data, image->width, image->height, 0xFF); - test_image_fill_unused_quarters(image->data, image->scanline, image->width, image->height, quarter, 0xFF000000); - + test_image_fill_unused_quarters(image->data, image->scanline, image->width, image->height, quarter, + 0xFF000000); winpr_image_free(image, FALSE); free(filename); - return buffer; } @@ -583,225 +518,163 @@ int test_progressive_load_bitmaps(char* ms_sample_path, EGFX_SAMPLE_FILE bitmaps int imageNo = 0; int quarterNo = 0; int passNo = 0; - /* image 1 */ - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_0_025_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_0_025_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_0_050_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_0_050_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_0_075_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_0_075_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_0_100_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_0_100_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_1_025_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_1_025_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_1_050_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_1_050_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_1_075_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_1_075_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_1_100_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_1_100_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_2_025_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_2_025_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_2_050_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_2_050_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_2_075_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_2_075_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_2_100_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_2_100_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_3_025_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_3_025_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_3_050_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_3_050_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_3_075_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_3_075_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_0_3_100_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_0_3_100_sampleimage1.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - imageNo++; - /* image 2 */ - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_0_025_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_0_025_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_0_050_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_0_050_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_0_075_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_0_075_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_0_100_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_0_100_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_1_025_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_1_025_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_1_050_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_1_050_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_1_075_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_1_075_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_1_100_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_1_100_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_2_025_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_2_025_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_2_050_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_2_050_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_2_075_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_2_075_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_2_100_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_2_100_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_3_025_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_3_025_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_3_050_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_3_050_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_3_075_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_3_075_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_1_3_100_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_1_3_100_sampleimage2.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - imageNo++; - /* image 3 */ - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_0_025_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_0_025_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_0_050_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_0_050_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_0_075_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_0_075_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_0_100_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_0_100_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_1_025_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_1_025_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_1_050_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_1_050_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_1_075_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_1_075_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_1_100_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_1_100_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_2_025_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_2_025_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_2_050_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_2_050_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_2_075_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_2_075_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_2_100_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_2_100_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - quarterNo = (quarterNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_3_025_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_3_025_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_3_050_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_3_050_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_3_075_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_3_075_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; - bitmaps[imageNo][quarterNo][passNo].buffer = test_progressive_load_bitmap(ms_sample_path, - "decompress/dec_2_3_100_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); + "decompress/dec_2_3_100_sampleimage3.bmp", &(bitmaps[imageNo][quarterNo][passNo].size), quarterNo); passNo = (passNo + 1) % 4; /* check if all test data has been loaded */ @@ -844,7 +717,8 @@ static int test_memcmp_count(const BYTE* mem1, const BYTE* mem2, int size, int m return count; } -static int test_progressive_decode(PROGRESSIVE_CONTEXT* progressive, EGFX_SAMPLE_FILE files[4], EGFX_SAMPLE_FILE bitmaps[4], int quarter, int count) +static int test_progressive_decode(PROGRESSIVE_CONTEXT* progressive, EGFX_SAMPLE_FILE files[4], + EGFX_SAMPLE_FILE bitmaps[4], int quarter, int count) { int cnt; int pass; @@ -859,7 +733,6 @@ static int test_progressive_decode(PROGRESSIVE_CONTEXT* progressive, EGFX_SAMPLE RECTANGLE_16 clippingRect; RFX_PROGRESSIVE_TILE* tile; PROGRESSIVE_BLOCK_REGION* region; - clippingRect.left = 0; clippingRect.top = 0; clippingRect.right = g_Width; @@ -868,10 +741,8 @@ static int test_progressive_decode(PROGRESSIVE_CONTEXT* progressive, EGFX_SAMPLE for (pass = 0; pass < count; pass++) { status = progressive_decompress(progressive, files[pass].buffer, files[pass].size, - g_DstData, PIXEL_FORMAT_XRGB32, g_DstStep, 0, 0, g_Width, g_Height, 0); - + g_DstData, PIXEL_FORMAT_XRGB32, g_DstStep, 0, 0, g_Width, g_Height, 0); printf("ProgressiveDecompress: status: %d pass: %d\n", status, pass + 1); - region = &(progressive->region); switch (quarter) @@ -880,7 +751,7 @@ static int test_progressive_decode(PROGRESSIVE_CONTEXT* progressive, EGFX_SAMPLE clippingRect.left = 0; clippingRect.top = 0; clippingRect.right = g_Width / 2; - clippingRect.bottom = g_Height /2; + clippingRect.bottom = g_Height / 2; break; case 1: @@ -908,14 +779,11 @@ static int test_progressive_decode(PROGRESSIVE_CONTEXT* progressive, EGFX_SAMPLE for (index = 0; index < region->numTiles; index++) { tile = region->tiles[index]; - tileRect.left = tile->x; tileRect.top = tile->y; tileRect.right = tile->x + tile->width; tileRect.bottom = tile->y + tile->height; - rectangles_intersection(&tileRect, &clippingRect, &updateRect); - nXDst = updateRect.left; nYDst = updateRect.top; nWidth = updateRect.right - updateRect.left; @@ -926,10 +794,9 @@ static int test_progressive_decode(PROGRESSIVE_CONTEXT* progressive, EGFX_SAMPLE nXSrc = nXDst - tile->x; nYSrc = nYDst - tile->y; - freerdp_image_copy(g_DstData, PIXEL_FORMAT_XRGB32, g_DstStep, - nXDst, nYDst, nWidth, nHeight, tile->data, - PIXEL_FORMAT_XRGB32, 64 * 4, nXSrc, nYSrc, NULL); + nXDst, nYDst, nWidth, nHeight, tile->data, + PIXEL_FORMAT_XRGB32, 64 * 4, nXSrc, nYSrc, NULL, FREERDP_FLIP_NONE); } size = bitmaps[pass].size; @@ -956,23 +823,20 @@ static int test_progressive_ms_sample(char* ms_sample_path) EGFX_SAMPLE_FILE files[3][4][4]; EGFX_SAMPLE_FILE bitmaps[3][4][4]; PROGRESSIVE_CONTEXT* progressive; - g_Width = 1920; g_Height = 1080; g_DstStep = g_Width * 4; - ZeroMemory(files, sizeof(files)); ZeroMemory(bitmaps, sizeof(bitmaps)); - status = test_progressive_load_files(ms_sample_path, files); if (status < 0) { - for(i=0; i<3; i++) + for (i = 0; i < 3; i++) { - for (j=0; j<4; j++) + for (j = 0; j < 4; j++) { - for (k=0; k<4; k++) + for (k = 0; k < 4; k++) sample_file_free(&files[i][j][k]); } } @@ -984,11 +848,11 @@ static int test_progressive_ms_sample(char* ms_sample_path) if (status < 0) { - for(i=0; i<3; i++) + for (i = 0; i < 3; i++) { - for (j=0; j<4; j++) + for (j = 0; j < 4; j++) { - for (k=0; k<4; k++) + for (k = 0; k < 4; k++) sample_file_free(&files[i][j][k]); } } @@ -997,11 +861,8 @@ static int test_progressive_ms_sample(char* ms_sample_path) } count = 4; - progressive = progressive_context_new(FALSE); - g_DstData = _aligned_malloc(g_DstStep * g_Height, 16); - progressive_create_surface_context(progressive, 0, g_Width, g_Height); /* image 1 */ @@ -1042,28 +903,27 @@ static int test_progressive_ms_sample(char* ms_sample_path) progressive_context_free(progressive); - for(i=0; i<3; i++) + for (i = 0; i < 3; i++) { - for (j=0; j<4; j++) + for (j = 0; j < 4; j++) { - for (k=0; k<4; k++) + for (k = 0; k < 4; k++) { - sample_file_free(&bitmaps[i][j][k]); - sample_file_free(&files[i][j][k]); + sample_file_free(&bitmaps[i][j][k]); + sample_file_free(&files[i][j][k]); } } } _aligned_free(g_DstData); - return 0; } int TestFreeRDPCodecProgressive(int argc, char* argv[]) { char* ms_sample_path; - ms_sample_path = GetKnownSubPath(KNOWN_PATH_TEMP, "EGFX_PROGRESSIVE_MS_SAMPLE"); + if (!ms_sample_path) { printf("Memory allocation failed\n"); @@ -1074,6 +934,5 @@ int TestFreeRDPCodecProgressive(int argc, char* argv[]) return test_progressive_ms_sample(ms_sample_path); free(ms_sample_path); - return 0; } diff --git a/libfreerdp/gdi/bitmap.c b/libfreerdp/gdi/bitmap.c index 0eaa9b8c2..c8f5d936a 100644 --- a/libfreerdp/gdi/bitmap.c +++ b/libfreerdp/gdi/bitmap.c @@ -485,7 +485,7 @@ BOOL gdi_BitBlt(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest, if (!freerdp_image_copy(hDstBmp->data, hdcDest->format, hDstBmp->scanline, nXDest, nYDest, nWidth, nHeight, - hSrcBmp->data, hdcSrc->format, hSrcBmp->scanline, nXSrc, nYSrc, palette)) + hSrcBmp->data, hdcSrc->format, hSrcBmp->scanline, nXSrc, nYSrc, palette, FREERDP_FLIP_NONE)) return FALSE; break; @@ -496,7 +496,7 @@ BOOL gdi_BitBlt(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest, if (!freerdp_image_copy(hDstBmp->data, hdcDest->format, hDstBmp->scanline, nXDest, nYDest, nWidth, nHeight, - hSrcBmp->data, hdcSrc->format, hSrcBmp->scanline, nXSrc, nYSrc, palette)) + hSrcBmp->data, hdcSrc->format, hSrcBmp->scanline, nXSrc, nYSrc, palette, FREERDP_FLIP_NONE)) return FALSE; break; diff --git a/libfreerdp/gdi/gdi.c b/libfreerdp/gdi/gdi.c index c5f460584..a8a2ea387 100644 --- a/libfreerdp/gdi/gdi.c +++ b/libfreerdp/gdi/gdi.c @@ -322,8 +322,7 @@ static const BYTE GDI_BS_HATCHED_PATTERNS[] = INLINE BOOL gdi_decode_color(rdpGdi* gdi, const UINT32 srcColor, UINT32* color, UINT32* format) { - UINT32 SrcFormat = gdi_get_pixel_format(gdi->context->settings->ColorDepth, - FALSE); + UINT32 SrcFormat = gdi_get_pixel_format(gdi->context->settings->ColorDepth); if (format) *format = SrcFormat; @@ -339,30 +338,30 @@ INLINE DWORD gdi_rop3_code(BYTE code) return rop3_code_table[code]; } -UINT32 gdi_get_pixel_format(UINT32 bitsPerPixel, BOOL vFlip) +UINT32 gdi_get_pixel_format(UINT32 bitsPerPixel) { - UINT32 format = PIXEL_FORMAT_XBGR32_VF; + UINT32 format = PIXEL_FORMAT_XBGR32; switch (bitsPerPixel) { case 32: - format = vFlip ? PIXEL_FORMAT_ABGR32_VF : PIXEL_FORMAT_ABGR32; + format = PIXEL_FORMAT_ABGR32; break; case 24: - format = vFlip ? PIXEL_FORMAT_BGR24_VF : PIXEL_FORMAT_BGR24; + format = PIXEL_FORMAT_BGR24; break; case 16: - format = vFlip ? PIXEL_FORMAT_RGB16_VF : PIXEL_FORMAT_RGB16; + format = PIXEL_FORMAT_RGB16; break; case 15: - format = vFlip ? PIXEL_FORMAT_RGB15_VF : PIXEL_FORMAT_RGB15; + format = PIXEL_FORMAT_RGB15; break; case 8: - format = vFlip ? PIXEL_FORMAT_RGB8_VF : PIXEL_FORMAT_RGB8; + format = PIXEL_FORMAT_RGB8; break; } @@ -576,11 +575,11 @@ static BOOL gdi_patblt(rdpContext* context, PATBLT_ORDER* patblt) if (brush->bpp > 1) { - brushFormat = gdi_get_pixel_format(brush->bpp, FALSE); + brushFormat = gdi_get_pixel_format(brush->bpp); if (!freerdp_image_copy(data, gdi->drawing->hdc->format, 0, 0, 0, 8, 8, brush->data, brushFormat, 0, 0, 0, - &gdi->palette)) + &gdi->palette, FREERDP_FLIP_NONE)) goto out_error; } else @@ -822,11 +821,11 @@ static BOOL gdi_mem3blt(rdpContext* context, MEM3BLT_ORDER* mem3blt) if (brush->bpp > 1) { - brushFormat = gdi_get_pixel_format(brush->bpp, FALSE); + brushFormat = gdi_get_pixel_format(brush->bpp); if (!freerdp_image_copy(data, gdi->drawing->hdc->format, 0, 0, 0, 8, 8, brush->data, brushFormat, - 0, 0, 0, &gdi->palette)) + 0, 0, 0, &gdi->palette, FREERDP_FLIP_NONE)) { ret = FALSE; _aligned_free(data); @@ -978,24 +977,24 @@ static BOOL gdi_surface_bits(rdpContext* context, break; case RDP_CODEC_ID_NSCODEC: - format = FREERDP_VFLIP_PIXEL_FORMAT(gdi->dstFormat); + format = gdi->dstFormat; if (!nsc_process_message(context->codecs->nsc, cmd->bpp, cmd->width, cmd->height, cmd->bitmapData, cmd->bitmapDataLength, gdi->primary_buffer, format, gdi->stride, cmd->destLeft, cmd->destTop, - cmd->width, cmd->height)) + cmd->width, cmd->height, FREERDP_FLIP_VERTICAL)) return FALSE; break; case RDP_CODEC_ID_NONE: - format = PIXEL_FORMAT_BGRX32_VF; + format = PIXEL_FORMAT_BGRX32; if (!freerdp_image_copy(gdi->primary_buffer, gdi->dstFormat, gdi->stride, cmd->destLeft, cmd->destTop, cmd->width, cmd->height, cmd->bitmapData, format, 0, 0, 0, - &gdi->palette)) + &gdi->palette, FREERDP_FLIP_VERTICAL)) return FALSE; break; @@ -1161,7 +1160,7 @@ BOOL gdi_init(freerdp* instance, UINT32 format) BOOL gdi_init_ex(freerdp* instance, UINT32 format, UINT32 stride, BYTE* buffer, void (*pfree)(void*)) { - UINT32 SrcFormat = gdi_get_pixel_format(instance->settings->ColorDepth, FALSE); + UINT32 SrcFormat = gdi_get_pixel_format(instance->settings->ColorDepth); rdpGdi* gdi = (rdpGdi*) calloc(1, sizeof(rdpGdi)); rdpContext* context = instance->context; diff --git a/libfreerdp/gdi/gfx.c b/libfreerdp/gdi/gfx.c index 76c6fe383..5c9c7592e 100644 --- a/libfreerdp/gdi/gfx.c +++ b/libfreerdp/gdi/gfx.c @@ -121,7 +121,7 @@ static UINT gdi_OutputUpdate(rdpGdi* gdi, gdiGfxSurface* surface) gdi->stride, nXDst, nYDst, width, height, surface->data, surface->format, - surface->scanline, nXSrc, nYSrc, NULL)) + surface->scanline, nXSrc, nYSrc, NULL, FREERDP_FLIP_NONE)) return CHANNEL_RC_NULL_DATA; gdi_InvalidateRegion(gdi->primary->hdc, nXDst, nYDst, width, height); @@ -210,7 +210,7 @@ static UINT gdi_SurfaceCommand_Uncompressed(rdpGdi* gdi, if (!freerdp_image_copy(surface->data, surface->format, surface->scanline, cmd->left, cmd->top, cmd->width, cmd->height, - cmd->data, cmd->format, 0, 0, 0, NULL)) + cmd->data, cmd->format, 0, 0, 0, NULL, FREERDP_FLIP_NONE)) return ERROR_INTERNAL_ERROR; invalidRect.left = cmd->left; @@ -843,7 +843,7 @@ static UINT gdi_SurfaceToSurface(RdpgfxClientContext* context, destPt->x, destPt->y, nWidth, nHeight, surfaceSrc->data, surfaceSrc->format, surfaceSrc->scanline, - rectSrc->left, rectSrc->top, NULL); + rectSrc->left, rectSrc->top, NULL, FREERDP_FLIP_NONE); invalidRect.left = destPt->x; invalidRect.top = destPt->y; invalidRect.right = destPt->x + rectSrc->right; @@ -898,7 +898,7 @@ static UINT gdi_SurfaceToCache(RdpgfxClientContext* context, freerdp_image_copy(cacheEntry->data, cacheEntry->format, cacheEntry->scanline, 0, 0, cacheEntry->width, cacheEntry->height, surface->data, - surface->format, surface->scanline, rect->left, rect->top, NULL); + surface->format, surface->scanline, rect->left, rect->top, NULL, FREERDP_FLIP_NONE); context->SetCacheSlotData(context, surfaceToCache->cacheSlot, (void*) cacheEntry); return CHANNEL_RC_OK; @@ -932,7 +932,7 @@ static UINT gdi_CacheToSurface(RdpgfxClientContext* context, destPt = &cacheToSurface->destPts[index]; freerdp_image_copy(surface->data, surface->format, surface->scanline, destPt->x, destPt->y, cacheEntry->width, cacheEntry->height, - cacheEntry->data, cacheEntry->format, cacheEntry->scanline, 0, 0, NULL); + cacheEntry->data, cacheEntry->format, cacheEntry->scanline, 0, 0, NULL, FREERDP_FLIP_NONE); invalidRect.left = destPt->x; invalidRect.top = destPt->y; invalidRect.right = destPt->x + cacheEntry->width - 1; diff --git a/libfreerdp/gdi/graphics.c b/libfreerdp/gdi/graphics.c index 63ce8fcbb..c046e9ea1 100644 --- a/libfreerdp/gdi/graphics.c +++ b/libfreerdp/gdi/graphics.c @@ -40,7 +40,7 @@ /* Bitmap Class */ HGDI_BITMAP gdi_create_bitmap(rdpGdi* gdi, UINT32 nWidth, UINT32 nHeight, - UINT32 SrcFormat, BYTE* data) + UINT32 SrcFormat, BYTE* data) { UINT32 nSrcStep; UINT32 nDstStep; @@ -61,8 +61,8 @@ HGDI_BITMAP gdi_create_bitmap(rdpGdi* gdi, UINT32 nWidth, UINT32 nHeight, nSrcStep = nWidth * GetBytesPerPixel(SrcFormat); if (!freerdp_image_copy(pDstData, gdi->dstFormat, nDstStep, 0, 0, - nWidth, nHeight, pSrcData, SrcFormat, nSrcStep, 0, 0, - &gdi->palette)) + nWidth, nHeight, pSrcData, SrcFormat, nSrcStep, 0, 0, + &gdi->palette, FREERDP_FLIP_NONE)) { _aligned_free(pDstData); return NULL; @@ -84,14 +84,14 @@ static BOOL gdi_Bitmap_New(rdpContext* context, rdpBitmap* bitmap) if (!bitmap->data) gdi_bitmap->bitmap = gdi_CreateCompatibleBitmap( - gdi->hdc, bitmap->width, - bitmap->height); + gdi->hdc, bitmap->width, + bitmap->height); else { UINT32 format = bitmap->format; gdi_bitmap->bitmap = gdi_create_bitmap(gdi, bitmap->width, - bitmap->height, - format, bitmap->data); + bitmap->height, + format, bitmap->data); } if (!gdi_bitmap->bitmap) @@ -124,25 +124,23 @@ static BOOL gdi_Bitmap_Paint(rdpContext* context, rdpBitmap* bitmap) UINT32 width = bitmap->right - bitmap->left + 1; UINT32 height = bitmap->bottom - bitmap->top + 1; return gdi_BitBlt(context->gdi->primary->hdc, - bitmap->left, bitmap->top, - width, height, gdi_bitmap->hdc, - 0, 0, GDI_SRCCOPY, &context->gdi->palette); + bitmap->left, bitmap->top, + width, height, gdi_bitmap->hdc, + 0, 0, GDI_SRCCOPY, &context->gdi->palette); } static BOOL gdi_Bitmap_Decompress(rdpContext* context, rdpBitmap* bitmap, - const BYTE* pSrcData, UINT32 DstWidth, UINT32 DstHeight, - UINT32 bpp, UINT32 length, BOOL compressed, - UINT32 codecId) + const BYTE* pSrcData, UINT32 DstWidth, UINT32 DstHeight, + UINT32 bpp, UINT32 length, BOOL compressed, + UINT32 codecId) { UINT32 SrcSize = length; UINT32 SrcFormat; UINT32 bytesPerPixel; rdpGdi* gdi = context->gdi; - bitmap->compressed = FALSE; bitmap->format = gdi->dstFormat; bitmap->length = DstWidth * DstHeight * GetBytesPerPixel(bitmap->format); - bytesPerPixel = GetBytesPerPixel(bpp); bitmap->data = (BYTE*) _aligned_malloc(bitmap->length, 16); @@ -154,30 +152,30 @@ static BOOL gdi_Bitmap_Decompress(rdpContext* context, rdpBitmap* bitmap, if (bpp < 32) { if (!interleaved_decompress(context->codecs->interleaved, - pSrcData, SrcSize, - DstWidth, DstHeight, - bpp, - bitmap->data, bitmap->format, - 0, 0, 0, DstWidth, DstHeight, - &gdi->palette)) + pSrcData, SrcSize, + DstWidth, DstHeight, + bpp, + bitmap->data, bitmap->format, + 0, 0, 0, DstWidth, DstHeight, + &gdi->palette)) return FALSE; } else { if (!planar_decompress(context->codecs->planar, pSrcData, SrcSize, - DstWidth, DstHeight, - bitmap->data, bitmap->format, 0, 0, 0, - DstWidth, DstHeight, TRUE)) + DstWidth, DstHeight, + bitmap->data, bitmap->format, 0, 0, 0, + DstWidth, DstHeight, TRUE)) return FALSE; } } else { - SrcFormat = gdi_get_pixel_format(bpp, TRUE); + SrcFormat = gdi_get_pixel_format(bpp); if (!freerdp_image_copy(bitmap->data, bitmap->format, 0, 0, 0, - DstWidth, DstHeight, pSrcData, SrcFormat, - 0, 0, 0, &gdi->palette)) + DstWidth, DstHeight, pSrcData, SrcFormat, + 0, 0, 0, &gdi->palette, FREERDP_FLIP_VERTICAL)) return FALSE; } @@ -185,7 +183,7 @@ static BOOL gdi_Bitmap_Decompress(rdpContext* context, rdpBitmap* bitmap, } static BOOL gdi_Bitmap_SetSurface(rdpContext* context, rdpBitmap* bitmap, - BOOL primary) + BOOL primary) { rdpGdi* gdi = context->gdi; @@ -222,7 +220,7 @@ static BOOL gdi_Glyph_New(rdpContext* context, const rdpGlyph* glyph) } gdi_glyph->bitmap = gdi_CreateBitmap(glyph->cx, glyph->cy, PIXEL_FORMAT_MONO, - data); + data); if (!gdi_glyph->bitmap) { @@ -252,7 +250,7 @@ static void gdi_Glyph_Free(rdpContext* context, rdpGlyph* glyph) } static BOOL gdi_Glyph_Draw(rdpContext* context, const rdpGlyph* glyph, UINT32 x, - UINT32 y, UINT32 w, UINT32 h, UINT32 sx, UINT32 sy, BOOL fOpRedundant) + UINT32 y, UINT32 w, UINT32 h, UINT32 sx, UINT32 sy, BOOL fOpRedundant) { gdiGlyph* gdi_glyph; rdpGdi* gdi; @@ -300,14 +298,14 @@ static BOOL gdi_Glyph_Draw(rdpContext* context, const rdpGlyph* glyph, UINT32 x, gdi_SelectObject(gdi->drawing->hdc, (HGDIOBJECT)brush); rc = gdi_BitBlt(gdi->drawing->hdc, x, y, w, h, gdi_glyph->hdc, sx, sy, - GDI_GLYPH_ORDER, &context->gdi->palette); + GDI_GLYPH_ORDER, &context->gdi->palette); gdi_DeleteObject((HGDIOBJECT)brush); return rc; } static BOOL gdi_Glyph_BeginDraw(rdpContext* context, UINT32 x, UINT32 y, - UINT32 width, UINT32 height, UINT32 bgcolor, - UINT32 fgcolor, BOOL fOpRedundant) + UINT32 width, UINT32 height, UINT32 bgcolor, + UINT32 fgcolor, BOOL fOpRedundant) { rdpGdi* gdi; @@ -355,7 +353,7 @@ static BOOL gdi_Glyph_BeginDraw(rdpContext* context, UINT32 x, UINT32 y, } static BOOL gdi_Glyph_EndDraw(rdpContext* context, UINT32 x, UINT32 y, - UINT32 width, UINT32 height, UINT32 bgcolor, UINT32 fgcolor) + UINT32 width, UINT32 height, UINT32 bgcolor, UINT32 fgcolor) { rdpGdi* gdi; diff --git a/libfreerdp/gdi/test/helpers.c b/libfreerdp/gdi/test/helpers.c index 16caddf92..caa32616d 100644 --- a/libfreerdp/gdi/test/helpers.c +++ b/libfreerdp/gdi/test/helpers.c @@ -37,7 +37,7 @@ HGDI_BITMAP test_convert_to_bitmap(const BYTE* src, UINT32 SrcFormat, return NULL; if (!freerdp_image_copy(data, DstFormat, DstStride, xDst, yDst, nWidth, nHeight, - src, SrcFormat, SrcStride, xSrc, ySrc, hPalette)) + src, SrcFormat, SrcStride, xSrc, ySrc, hPalette, FREERDP_FLIP_NONE)) { _aligned_free(data); return NULL; diff --git a/server/shadow/X11/x11_shadow.c b/server/shadow/X11/x11_shadow.c index 445894cf3..9e987f96e 100644 --- a/server/shadow/X11/x11_shadow.c +++ b/server/shadow/X11/x11_shadow.c @@ -68,7 +68,7 @@ struct _SHADOW_PAM_AUTH_INFO typedef struct _SHADOW_PAM_AUTH_INFO SHADOW_PAM_AUTH_INFO; static int x11_shadow_pam_conv(int num_msg, const struct pam_message** msg, - struct pam_response** resp, void* appdata_ptr) + struct pam_response** resp, void* appdata_ptr) { int index; int pam_status = PAM_BUF_ERR; @@ -77,7 +77,7 @@ static int x11_shadow_pam_conv(int num_msg, const struct pam_message** msg, appdata = (SHADOW_PAM_AUTH_DATA*) appdata_ptr; if (!(response = (struct pam_response*) calloc(num_msg, - sizeof(struct pam_response)))) + sizeof(struct pam_response)))) return PAM_BUF_ERR; for (index = 0; index < num_msg; index++) @@ -161,8 +161,8 @@ static int x11_shadow_pam_get_service_name(SHADOW_PAM_AUTH_INFO* info) } static int x11_shadow_pam_authenticate(x11ShadowSubsystem* subsystem, - rdpShadowClient* client, const char* user, const char* domain, - const char* password) + rdpShadowClient* client, const char* user, const char* domain, + const char* password) { int pam_status; SHADOW_PAM_AUTH_INFO* info; @@ -196,7 +196,7 @@ static int x11_shadow_pam_authenticate(x11ShadowSubsystem* subsystem, if (pam_status != PAM_SUCCESS) { WLog_ERR(TAG, "pam_authenticate failure: %s", pam_strerror(info->handle, - pam_status)); + pam_status)); free(info); return -1; } @@ -206,7 +206,7 @@ static int x11_shadow_pam_authenticate(x11ShadowSubsystem* subsystem, if (pam_status != PAM_SUCCESS) { WLog_ERR(TAG, "pam_acct_mgmt failure: %s", pam_strerror(info->handle, - pam_status)); + pam_status)); free(info); return -1; } @@ -218,12 +218,12 @@ static int x11_shadow_pam_authenticate(x11ShadowSubsystem* subsystem, #endif static void x11_shadow_input_synchronize_event(x11ShadowSubsystem* subsystem, - rdpShadowClient* client, UINT32 flags) + rdpShadowClient* client, UINT32 flags) { } static void x11_shadow_input_keyboard_event(x11ShadowSubsystem* subsystem, - rdpShadowClient* client, UINT16 flags, UINT16 code) + rdpShadowClient* client, UINT16 flags, UINT16 code) { #ifdef WITH_XTEST DWORD vkcode; @@ -262,13 +262,13 @@ static void x11_shadow_input_keyboard_event(x11ShadowSubsystem* subsystem, } static void x11_shadow_input_unicode_keyboard_event(x11ShadowSubsystem* - subsystem, - rdpShadowClient* client, UINT16 flags, UINT16 code) + subsystem, + rdpShadowClient* client, UINT16 flags, UINT16 code) { } static void x11_shadow_input_mouse_event(x11ShadowSubsystem* subsystem, - rdpShadowClient* client, UINT16 flags, UINT16 x, UINT16 y) + rdpShadowClient* client, UINT16 flags, UINT16 x, UINT16 y) { #ifdef WITH_XTEST int button = 0; @@ -320,7 +320,7 @@ static void x11_shadow_input_mouse_event(x11ShadowSubsystem* subsystem, } static void x11_shadow_input_extended_mouse_event(x11ShadowSubsystem* subsystem, - rdpShadowClient* client, UINT16 flags, UINT16 x, UINT16 y) + rdpShadowClient* client, UINT16 flags, UINT16 x, UINT16 y) { #ifdef WITH_XTEST int button = 0; @@ -383,7 +383,7 @@ static int x11_shadow_pointer_position_update(x11ShadowSubsystem* subsystem) int count = 0; int index = 0; msg = (SHADOW_MSG_OUT_POINTER_POSITION_UPDATE*) calloc(1, - sizeof(SHADOW_MSG_OUT_POINTER_POSITION_UPDATE)); + sizeof(SHADOW_MSG_OUT_POINTER_POSITION_UPDATE)); if (!msg) return -1; @@ -415,7 +415,7 @@ static int x11_shadow_pointer_alpha_update(x11ShadowSubsystem* subsystem) SHADOW_MSG_OUT_POINTER_ALPHA_UPDATE* msg; UINT32 msgId = SHADOW_MSG_OUT_POINTER_ALPHA_UPDATE_ID; msg = (SHADOW_MSG_OUT_POINTER_ALPHA_UPDATE*) calloc(1, - sizeof(SHADOW_MSG_OUT_POINTER_ALPHA_UPDATE)); + sizeof(SHADOW_MSG_OUT_POINTER_ALPHA_UPDATE)); if (!msg) return -1; @@ -426,8 +426,8 @@ static int x11_shadow_pointer_alpha_update(x11ShadowSubsystem* subsystem) msg->height = subsystem->cursorHeight; if (shadow_subsystem_pointer_convert_alpha_pointer_data(subsystem->cursorPixels, - TRUE, - msg->width, msg->height, msg) < 0) + TRUE, + msg->width, msg->height, msg) < 0) { free(msg); return -1; @@ -435,7 +435,7 @@ static int x11_shadow_pointer_alpha_update(x11ShadowSubsystem* subsystem) msg->Free = x11_shadow_message_free; return shadow_client_boardcast_msg(subsystem->server, NULL, msgId, - (SHADOW_MSG_OUT*) msg, NULL) ? 1 : -1; + (SHADOW_MSG_OUT*) msg, NULL) ? 1 : -1; } static int x11_shadow_query_cursor(x11ShadowSubsystem* subsystem, BOOL getImage) @@ -494,7 +494,7 @@ static int x11_shadow_query_cursor(x11ShadowSubsystem* subsystem, BOOL getImage) XLockDisplay(subsystem->display); if (!XQueryPointer(subsystem->display, subsystem->root_window, - &root, &child, &root_x, &root_y, &win_x, &win_y, &mask)) + &root, &child, &root_x, &root_y, &win_x, &win_y, &mask)) { XUnlockDisplay(subsystem->display); return -1; @@ -523,7 +523,7 @@ static int x11_shadow_query_cursor(x11ShadowSubsystem* subsystem, BOOL getImage) } static int x11_shadow_handle_xevent(x11ShadowSubsystem* subsystem, - XEvent* xevent) + XEvent* xevent) { if (xevent->type == MotionNotify) { @@ -544,8 +544,8 @@ static int x11_shadow_handle_xevent(x11ShadowSubsystem* subsystem, } static void x11_shadow_validate_region(x11ShadowSubsystem* subsystem, int x, - int y, - int width, int height) + int y, + int width, int height) { XRectangle region; @@ -560,7 +560,7 @@ static void x11_shadow_validate_region(x11ShadowSubsystem* subsystem, int x, XLockDisplay(subsystem->display); XFixesSetRegion(subsystem->display, subsystem->xdamage_region, ®ion, 1); XDamageSubtract(subsystem->display, subsystem->xdamage, - subsystem->xdamage_region, None); + subsystem->xdamage_region, None); XUnlockDisplay(subsystem->display); #endif } @@ -701,12 +701,12 @@ static BOOL x11_shadow_check_resize(x11ShadowSubsystem* subsystem) } static int x11_shadow_error_handler_for_capture(Display* display, - XErrorEvent* event) + XErrorEvent* event) { char msg[256]; XGetErrorText(display, event->error_code, (char*) &msg, sizeof(msg)); WLog_ERR(TAG, "X11 error: %s Error code: %x, request code: %x, minor code: %x", - msg, event->error_code, event->request_code, event->minor_code); + msg, event->error_code, event->request_code, event->minor_code); /* Ignore BAD MATCH error during image capture. Abort in other case */ if (event->error_code != BadMatch) @@ -753,16 +753,16 @@ static int x11_shadow_screen_grab(x11ShadowSubsystem* subsystem) { image = subsystem->fb_image; XCopyArea(subsystem->display, subsystem->root_window, subsystem->fb_pixmap, - subsystem->xshm_gc, 0, 0, subsystem->width, subsystem->height, 0, 0); + subsystem->xshm_gc, 0, 0, subsystem->width, subsystem->height, 0, 0); status = shadow_capture_compare(surface->data, surface->scanline, - surface->width, surface->height, - (BYTE*) & (image->data[surface->width * 4]), image->bytes_per_line, - &invalidRect); + surface->width, surface->height, + (BYTE*) & (image->data[surface->width * 4]), image->bytes_per_line, + &invalidRect); } else { image = XGetImage(subsystem->display, subsystem->root_window, - surface->x, surface->y, surface->width, surface->height, AllPlanes, ZPixmap); + surface->x, surface->y, surface->width, surface->height, AllPlanes, ZPixmap); if (!image) { @@ -774,8 +774,8 @@ static int x11_shadow_screen_grab(x11ShadowSubsystem* subsystem) } status = shadow_capture_compare(surface->data, surface->scanline, - surface->width, surface->height, - (BYTE*) image->data, image->bytes_per_line, &invalidRect); + surface->width, surface->height, + (BYTE*) image->data, image->bytes_per_line, &invalidRect); } /* Restore the default error handler */ @@ -783,9 +783,9 @@ static int x11_shadow_screen_grab(x11ShadowSubsystem* subsystem) XSync(subsystem->display, False); XUnlockDisplay(subsystem->display); region16_union_rect(&(surface->invalidRegion), &(surface->invalidRegion), - &invalidRect); + &invalidRect); region16_intersect_rect(&(surface->invalidRegion), &(surface->invalidRegion), - &surfaceRect); + &surfaceRect); if (!region16_is_empty(&(surface->invalidRegion))) { @@ -795,9 +795,9 @@ static int x11_shadow_screen_grab(x11ShadowSubsystem* subsystem) width = extents->right - extents->left; height = extents->bottom - extents->top; freerdp_image_copy(surface->data, surface->format, - surface->scanline, x, y, width, height, - (BYTE*) image->data, PIXEL_FORMAT_BGRX32, - image->bytes_per_line, x, y, NULL); + surface->scanline, x, y, width, height, + (BYTE*) image->data, PIXEL_FORMAT_BGRX32, + image->bytes_per_line, x, y, NULL, FREERDP_FLIP_NONE); //x11_shadow_blend_cursor(subsystem); count = ArrayList_Count(server->clients); shadow_subsystem_frame_update((rdpShadowSubsystem*)subsystem); @@ -828,7 +828,7 @@ fail_capture: } static int x11_shadow_subsystem_process_message(x11ShadowSubsystem* subsystem, - wMessage* message) + wMessage* message) { switch (message->id) { @@ -955,7 +955,7 @@ static int x11_shadow_xfixes_init(x11ShadowSubsystem* subsystem) subsystem->xfixes_cursor_notify_event = xfixes_event + XFixesCursorNotify; XFixesSelectCursorInput(subsystem->display, subsystem->root_window, - XFixesDisplayCursorNotifyMask); + XFixesDisplayCursorNotifyMask); return 1; #else return -1; @@ -971,7 +971,7 @@ static int x11_shadow_xinerama_init(x11ShadowSubsystem* subsystem) x11_shadow_subsystem_base_init(subsystem); if (!XineramaQueryExtension(subsystem->display, &xinerama_event, - &xinerama_error)) + &xinerama_error)) return -1; if (!XDamageQueryVersion(subsystem->display, &major, &minor)) @@ -1007,7 +1007,7 @@ static int x11_shadow_xdamage_init(x11ShadowSubsystem* subsystem) subsystem->xdamage_notify_event = damage_event + XDamageNotify; subsystem->xdamage = XDamageCreate(subsystem->display, subsystem->root_window, - XDamageReportDeltaRectangles); + XDamageReportDeltaRectangles); if (!subsystem->xdamage) return -1; @@ -1044,8 +1044,8 @@ static int x11_shadow_xshm_init(x11ShadowSubsystem* subsystem) subsystem->fb_shm_info.shmaddr = (char*) - 1; subsystem->fb_shm_info.readOnly = False; subsystem->fb_image = XShmCreateImage(subsystem->display, subsystem->visual, - subsystem->depth, - ZPixmap, NULL, &(subsystem->fb_shm_info), subsystem->width, subsystem->height); + subsystem->depth, + ZPixmap, NULL, &(subsystem->fb_shm_info), subsystem->width, subsystem->height); if (!subsystem->fb_image) { @@ -1054,8 +1054,8 @@ static int x11_shadow_xshm_init(x11ShadowSubsystem* subsystem) } subsystem->fb_shm_info.shmid = shmget(IPC_PRIVATE, - subsystem->fb_image->bytes_per_line * subsystem->fb_image->height, - IPC_CREAT | 0600); + subsystem->fb_image->bytes_per_line * subsystem->fb_image->height, + IPC_CREAT | 0600); if (subsystem->fb_shm_info.shmid == -1) { @@ -1078,9 +1078,9 @@ static int x11_shadow_xshm_init(x11ShadowSubsystem* subsystem) XSync(subsystem->display, False); shmctl(subsystem->fb_shm_info.shmid, IPC_RMID, 0); subsystem->fb_pixmap = XShmCreatePixmap(subsystem->display, - subsystem->root_window, subsystem->fb_image->data, &(subsystem->fb_shm_info), - subsystem->fb_image->width, subsystem->fb_image->height, - subsystem->fb_image->depth); + subsystem->root_window, subsystem->fb_image->data, &(subsystem->fb_shm_info), + subsystem->fb_image->width, subsystem->fb_image->height, + subsystem->fb_image->depth); XSync(subsystem->display, False); if (!subsystem->fb_pixmap) @@ -1089,7 +1089,7 @@ static int x11_shadow_xshm_init(x11ShadowSubsystem* subsystem) values.subwindow_mode = IncludeInferiors; values.graphics_exposures = False; subsystem->xshm_gc = XCreateGC(subsystem->display, subsystem->root_window, - GCSubwindowMode | GCGraphicsExposures, &values); + GCSubwindowMode | GCGraphicsExposures, &values); XSetFunction(subsystem->display, subsystem->xshm_gc, GXcopy); XSync(subsystem->display, False); return 1; @@ -1231,7 +1231,7 @@ static int x11_shadow_subsystem_init(x11ShadowSubsystem* subsystem) template.class = TrueColor; template.screen = subsystem->number; vis = XGetVisualInfo(subsystem->display, VisualClassMask | VisualScreenMask, - &template, &vi_count); + &template, &vi_count); if (!vis) { @@ -1252,11 +1252,11 @@ static int x11_shadow_subsystem_init(x11ShadowSubsystem* subsystem) XFree(vis); XSelectInput(subsystem->display, subsystem->root_window, - SubstructureNotifyMask); + SubstructureNotifyMask); subsystem->cursorMaxWidth = 256; subsystem->cursorMaxHeight = 256; subsystem->cursorPixels = _aligned_malloc(subsystem->cursorMaxWidth * - subsystem->cursorMaxHeight * 4, 16); + subsystem->cursorMaxHeight * 4, 16); if (!subsystem->cursorPixels) return -1; @@ -1288,7 +1288,7 @@ static int x11_shadow_subsystem_init(x11ShadowSubsystem* subsystem) } if (!(subsystem->event = CreateFileDescriptorEvent(NULL, FALSE, FALSE, - subsystem->xfds, WINPR_FD_READ))) + subsystem->xfds, WINPR_FD_READ))) return -1; virtualScreen = &(subsystem->virtualScreen); @@ -1298,8 +1298,8 @@ static int x11_shadow_subsystem_init(x11ShadowSubsystem* subsystem) virtualScreen->bottom = subsystem->height; virtualScreen->flags = 1; WLog_INFO(TAG, "X11 Extensions: XFixes: %d Xinerama: %d XDamage: %d XShm: %d", - subsystem->use_xfixes, subsystem->use_xinerama, subsystem->use_xdamage, - subsystem->use_xshm); + subsystem->use_xfixes, subsystem->use_xinerama, subsystem->use_xdamage, + subsystem->use_xshm); return 1; } @@ -1335,8 +1335,8 @@ static int x11_shadow_subsystem_start(x11ShadowSubsystem* subsystem) return -1; if (!(subsystem->thread = CreateThread(NULL, 0, - (LPTHREAD_START_ROUTINE) x11_shadow_subsystem_thread, - (void*) subsystem, 0, NULL))) + (LPTHREAD_START_ROUTINE) x11_shadow_subsystem_thread, + (void*) subsystem, 0, NULL))) { WLog_ERR(TAG, "Failed to create thread"); return -1; From 8ef1808191194b07dfbaf686caaeb6fd5832cf09 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Fri, 14 Oct 2016 12:50:04 +0200 Subject: [PATCH 2/3] Adjusted non X11 implementations. --- client/Android/android_freerdp.c | 2 +- client/Mac/MRDPView.m | 4 ++-- client/Windows/wf_graphics.c | 4 ++-- server/shadow/Mac/mac_shadow.c | 2 +- server/shadow/Win/win_shadow.c | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/client/Android/android_freerdp.c b/client/Android/android_freerdp.c index 54a96feb8..fccdc00ed 100644 --- a/client/Android/android_freerdp.c +++ b/client/Android/android_freerdp.c @@ -971,7 +971,7 @@ static jboolean JNICALL jni_freerdp_update_graphics( { rc = freerdp_image_copy(pixels, DstFormat, info.stride, x, y, width, height, gdi->primary_buffer, gdi->dstFormat, gdi->stride, x, y, - &gdi->palette); + &gdi->palette, FREERDP_FLIP_NONE); } if ((ret = AndroidBitmap_unlockPixels(env, bitmap)) < 0) diff --git a/client/Mac/MRDPView.m b/client/Mac/MRDPView.m index 97f41854c..0cb91bae8 100644 --- a/client/Mac/MRDPView.m +++ b/client/Mac/MRDPView.m @@ -1032,12 +1032,12 @@ BOOL mf_Pointer_New(rdpContext* context, rdpPointer* pointer) mrdpCursor->cursor_data = cursor_data; format = PIXEL_FORMAT_RGBA32; - if (freerdp_image_copy_from_pointer_data( + if (!freerdp_image_copy_from_pointer_data( cursor_data, format, 0, 0, 0, pointer->width, pointer->height, pointer->xorMaskData, pointer->lengthXorMask, pointer->andMaskData, pointer->lengthAndMask, - pointer->xorBpp, NULL) < 0) + pointer->xorBpp, NULL)) { free(cursor_data); mrdpCursor->cursor_data = NULL; diff --git a/client/Windows/wf_graphics.c b/client/Windows/wf_graphics.c index 0d4c58499..066008b70 100644 --- a/client/Windows/wf_graphics.c +++ b/client/Windows/wf_graphics.c @@ -58,7 +58,7 @@ HBITMAP wf_create_dib(wfContext* wfc, UINT32 width, UINT32 height, if (data) freerdp_image_copy(cdata, dstFormat, 0, 0, 0, width, height, data, srcFormat, 0, - 0, 0, &wfc->context.gdi->palette); + 0, 0, &wfc->context.gdi->palette, FREERDP_FLIP_NONE); if (pdata) *pdata = cdata; @@ -243,7 +243,7 @@ static BOOL wf_Pointer_New(rdpContext* context, const rdpPointer* pointer) if (!freerdp_image_copy_from_pointer_data(pdata, gdi->dstFormat, 0, 0, 0, pointer->width, pointer->height, pointer->xorMaskData, pointer->lengthXorMask, - pointer->andMaskData, pointer->lengthAndMask, pointer->xorBpp, &gdi->palette)) + pointer->andMaskData, pointer->lengthAndMask, pointer->xorBpp, &gdi->palette, FREERDP_FLIP_NONE)) { _aligned_free(pdata); goto fail; diff --git a/server/shadow/Mac/mac_shadow.c b/server/shadow/Mac/mac_shadow.c index d29f929f9..9f79c7c60 100644 --- a/server/shadow/Mac/mac_shadow.c +++ b/server/shadow/Mac/mac_shadow.c @@ -394,7 +394,7 @@ static void (^mac_capture_stream_handler)(CGDisplayStreamFrameStatus, uint64_t, else { freerdp_image_copy(surface->data, surface->format, surface->scanline, - x, y, width, height, pSrcData, PIXEL_FORMAT_BGRX32, nSrcStep, x, y, NULL); + x, y, width, height, pSrcData, PIXEL_FORMAT_BGRX32, nSrcStep, x, y, NULL, FREERDP_FLIP_NONE); } IOSurfaceUnlock(frameSurface, kIOSurfaceLockReadOnly, NULL); diff --git a/server/shadow/Win/win_shadow.c b/server/shadow/Win/win_shadow.c index c9358a583..dc603dc71 100644 --- a/server/shadow/Win/win_shadow.c +++ b/server/shadow/Win/win_shadow.c @@ -269,7 +269,7 @@ int win_shadow_surface_copy(winShadowSubsystem* subsystem) freerdp_image_copy(surface->data, surface->format, surface->scanline, x - surface->x, y - surface->y, width, height, - pDstData, DstFormat, nDstStep, 0, 0, NULL); + pDstData, DstFormat, nDstStep, 0, 0, NULL, FREERDP_FLIP_NONE); ArrayList_Lock(server->clients); count = ArrayList_Count(server->clients); shadow_subsystem_frame_update((rdpShadowSubsystem*)subsystem); From e9b5b555b9e172b26a1c6aebf4c86e7ff9a0282a Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Wed, 19 Oct 2016 12:41:43 +0200 Subject: [PATCH 3/3] directly using FREERDP_PIXEL_FORMAT. --- include/freerdp/codec/color.h | 72 +++++++++-------------------------- 1 file changed, 19 insertions(+), 53 deletions(-) diff --git a/include/freerdp/codec/color.h b/include/freerdp/codec/color.h index 98544ccf7..edfc7722a 100644 --- a/include/freerdp/codec/color.h +++ b/include/freerdp/codec/color.h @@ -55,73 +55,39 @@ * The single pixel manipulation functions use an intermediate integer representation * that must not be interpreted outside the functions as it is platform dependent. * - * _VF denotes vertically flipped bitmaps. * X for alpha channel denotes unused (but existing) alpha channel data. */ /* 32bpp formats */ -#define PIXEL_FORMAT_A8R8G8B8_F() FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 8, 8, 8, 8) - -#define PIXEL_FORMAT_ARGB32 PIXEL_FORMAT_A8R8G8B8_F() - -#define PIXEL_FORMAT_X8R8G8B8_F(_flip) FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 8, 8, 8) -#define PIXEL_FORMAT_XRGB32 PIXEL_FORMAT_X8R8G8B8_F() - -#define PIXEL_FORMAT_A8B8G8R8_F(_flip) FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 8, 8, 8, 8) -#define PIXEL_FORMAT_ABGR32 PIXEL_FORMAT_A8B8G8R8_F() - -#define PIXEL_FORMAT_X8B8G8R8_F(_flip) FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 8, 8, 8) -#define PIXEL_FORMAT_XBGR32 PIXEL_FORMAT_X8B8G8R8_F() - -#define PIXEL_FORMAT_B8G8R8A8_F(_flip) FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_BGRA, 8, 8, 8, 8) -#define PIXEL_FORMAT_BGRA32 PIXEL_FORMAT_B8G8R8A8_F() - -#define PIXEL_FORMAT_B8G8R8X8_F(_flip) FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_BGRA, 0, 8, 8, 8) -#define PIXEL_FORMAT_BGRX32 PIXEL_FORMAT_B8G8R8X8_F() - -#define PIXEL_FORMAT_R8G8B8A8_F(_flip) FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_RGBA, 8, 8, 8, 8) -#define PIXEL_FORMAT_RGBA32 PIXEL_FORMAT_R8G8B8A8_F() - -#define PIXEL_FORMAT_R8G8B8X8_F(_flip) FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_RGBA, 0, 8, 8, 8) -#define PIXEL_FORMAT_RGBX32 PIXEL_FORMAT_R8G8B8X8_F() +#define PIXEL_FORMAT_ARGB32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 8, 8, 8, 8) +#define PIXEL_FORMAT_XRGB32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 8, 8, 8) +#define PIXEL_FORMAT_ABGR32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 8, 8, 8, 8) +#define PIXEL_FORMAT_XBGR32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 8, 8, 8) +#define PIXEL_FORMAT_BGRA32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_BGRA, 8, 8, 8, 8) +#define PIXEL_FORMAT_BGRX32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_BGRA, 0, 8, 8, 8) +#define PIXEL_FORMAT_RGBA32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_RGBA, 8, 8, 8, 8) +#define PIXEL_FORMAT_RGBX32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_RGBA, 0, 8, 8, 8) /* 24bpp formats */ -#define PIXEL_FORMAT_R8G8B8_F(_flip) FREERDP_PIXEL_FORMAT(24, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 8, 8, 8) -#define PIXEL_FORMAT_RGB24 PIXEL_FORMAT_R8G8B8_F() - -#define PIXEL_FORMAT_B8G8R8_F(_flip) FREERDP_PIXEL_FORMAT(24, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 8, 8, 8) -#define PIXEL_FORMAT_BGR24 PIXEL_FORMAT_B8G8R8_F() +#define PIXEL_FORMAT_RGB24 FREERDP_PIXEL_FORMAT(24, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 8, 8, 8) +#define PIXEL_FORMAT_BGR24 FREERDP_PIXEL_FORMAT(24, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 8, 8, 8) /* 16bpp formats */ -#define PIXEL_FORMAT_R5G6B5_F(_flip) FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 5, 6, 5) -#define PIXEL_FORMAT_RGB16 PIXEL_FORMAT_R5G6B5_F() - -#define PIXEL_FORMAT_B5G6R5_F(_flip) FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 5, 6, 5) -#define PIXEL_FORMAT_BGR16 PIXEL_FORMAT_B5G6R5_F() - -#define PIXEL_FORMAT_A1R5G5B5_F(_flip) FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 1, 5, 5, 5) -#define PIXEL_FORMAT_ARGB15 PIXEL_FORMAT_A1R5G5B5_F() - -#define PIXEL_FORMAT_X1R5G5B5_F(_flip) FREERDP_PIXEL_FORMAT(15, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 5, 5, 5) -#define PIXEL_FORMAT_RGB15 PIXEL_FORMAT_X1R5G5B5_F() - -#define PIXEL_FORMAT_A1B5G5R5_F(_flip) FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 1, 5, 5, 5) -#define PIXEL_FORMAT_ABGR15 PIXEL_FORMAT_A1B5G5R5_F() - -#define PIXEL_FORMAT_X1B5G5R5_F(_flip) FREERDP_PIXEL_FORMAT(15, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 5, 5, 5) -#define PIXEL_FORMAT_BGR15 PIXEL_FORMAT_X1B5G5R5_F() +#define PIXEL_FORMAT_RGB16 FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 5, 6, 5) +#define PIXEL_FORMAT_BGR16 FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 5, 6, 5) +#define PIXEL_FORMAT_ARGB15 FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 1, 5, 5, 5) +#define PIXEL_FORMAT_RGB15 FREERDP_PIXEL_FORMAT(15, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 5, 5, 5) +#define PIXEL_FORMAT_ABGR15 FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 1, 5, 5, 5) +#define PIXEL_FORMAT_BGR15 FREERDP_PIXEL_FORMAT(15, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 5, 5, 5) /* 8bpp formats */ -#define PIXEL_FORMAT_A8_F(_flip) FREERDP_PIXEL_FORMAT(8, FREERDP_PIXEL_FORMAT_TYPE_A, 8, 0, 0, 0) -#define PIXEL_FORMAT_RGB8 PIXEL_FORMAT_A8_F() +#define PIXEL_FORMAT_RGB8 FREERDP_PIXEL_FORMAT(8, FREERDP_PIXEL_FORMAT_TYPE_A, 8, 0, 0, 0) /* 4 bpp formats */ -#define PIXEL_FORMAT_A4_F(_flip) FREERDP_PIXEL_FORMAT(4, FREERDP_PIXEL_FORMAT_TYPE_A, 4, 0, 0, 0) -#define PIXEL_FORMAT_A4 PIXEL_FORMAT_A4_F() +#define PIXEL_FORMAT_A4 FREERDP_PIXEL_FORMAT(4, FREERDP_PIXEL_FORMAT_TYPE_A, 4, 0, 0, 0) /* 1bpp formats */ -#define PIXEL_FORMAT_A1_F(_flip) FREERDP_PIXEL_FORMAT(1, FREERDP_PIXEL_FORMAT_TYPE_A, 1, 0, 0, 0) -#define PIXEL_FORMAT_MONO PIXEL_FORMAT_A1_F() +#define PIXEL_FORMAT_MONO FREERDP_PIXEL_FORMAT(1, FREERDP_PIXEL_FORMAT_TYPE_A, 1, 0, 0, 0) struct gdi_palette {