Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FreeRDP/FreeRDP-old.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGernot Tenchio <gernot.tenchio@securepoint.de>2011-06-20 10:54:44 +0400
committerGernot Tenchio <gernot.tenchio@securepoint.de>2011-06-20 10:54:44 +0400
commitdc92ecce99d13d6c4391b5ab4bcd22ab87375df6 (patch)
tree6c456cd8ca266920066f6d23640d9cd7f4e72d23
parentd1eef40acc994d85cb78c0a98914edc097c9b44d (diff)
Fix gdi_mono_image_convert()
This fixes gdi_mono_image_convert() at least for the X-bpp to 32bpp case. Could fix X to 16bpp too, but this is untested.
-rw-r--r--libfreerdp-gdi/color.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/libfreerdp-gdi/color.c b/libfreerdp-gdi/color.c
index 52ec9b2..371f69a 100644
--- a/libfreerdp-gdi/color.c
+++ b/libfreerdp-gdi/color.c
@@ -687,11 +687,8 @@ uint8* gdi_mono_image_convert(uint8* srcData, int width, int height, int srcBpp,
uint8 redBg, greenBg, blueBg;
uint8 redFg, greenFg, blueFg;
- if(dstBpp == 16)
- {
- if(srcBpp == 8)
- {
- /* convert palette colors to 16-bit colors */
+ switch (srcBpp) {
+ case 8:
bgcolor &= 0xFF;
redBg = clrconv->palette->entries[bgcolor].red;
greenBg = clrconv->palette->entries[bgcolor].green;
@@ -701,18 +698,24 @@ uint8* gdi_mono_image_convert(uint8* srcData, int width, int height, int srcBpp,
redFg = clrconv->palette->entries[fgcolor].red;
greenFg = clrconv->palette->entries[fgcolor].green;
blueFg = clrconv->palette->entries[fgcolor].blue;
+ break;
+ case 16:
+ GetRGB16(redBg, greenBg, blueBg, bgcolor);
+ GetRGB16(redFg, greenFg, blueFg, fgcolor);
+ break;
+ case 15:
+ GetRGB15(redBg, greenBg, blueBg, bgcolor);
+ GetRGB15(redFg, greenFg, blueFg, fgcolor);
+ break;
+ default:
+ GetRGB32(redBg, greenBg, blueBg, bgcolor);
+ GetRGB32(redFg, greenFg, blueFg, fgcolor);
+ }
- if(clrconv->rgb555)
- {
- bgcolor = RGB15(redBg, greenBg, blueBg);
- fgcolor = RGB15(redFg, greenFg, blueFg);
- }
- else
- {
- bgcolor = RGB16(redBg, greenBg, blueBg);
- fgcolor = RGB16(redFg, greenFg, blueFg);
- }
- }
+ if(dstBpp == 16)
+ {
+ /* GT: looks strange to me. Convert colors from RGB16 to RGB15 when
+ * srcBpp == dstBpp == 16? */
if(clrconv->rgb555)
{
if(srcBpp == 16)
@@ -756,9 +759,6 @@ uint8* gdi_mono_image_convert(uint8* srcData, int width, int height, int srcBpp,
}
else if(dstBpp == 32)
{
- GetRGB32(redBg, greenBg, blueBg, bgcolor);
- GetRGB32(redFg, greenFg, blueFg, fgcolor);
-
dstData = (uint8*) malloc(width * height * 4);
dst32 = (uint32*) dstData;
for(index = height; index > 0; index--)
@@ -769,11 +769,11 @@ uint8* gdi_mono_image_convert(uint8* srcData, int width, int height, int srcBpp,
{
if((bitMask >> bitIndex) & 0x01)
{
- *dst32 = BGR32(redBg, greenBg, blueBg);
+ *dst32 = RGB32(redBg, greenBg, blueBg);
}
else
{
- *dst32 = BGR32(redFg, greenFg, blueFg);
+ *dst32 = RGB32(redFg, greenFg, blueFg);
}
dst32++;
}