summaryrefslogtreecommitdiffstats
path: root/freerdp/xrdp-color.c
diff options
context:
space:
mode:
authorLaxmikant Rashinkar <LK.Rashinkar@gmail.com>2012-09-19 20:51:34 -0700
committerLaxmikant Rashinkar <LK.Rashinkar@gmail.com>2012-09-19 20:51:34 -0700
commit1123323fda6d128fb98b0427e0ea5f6a2dc9e632 (patch)
tree3407a3771a069f812554312ce7c36db625139cc2 /freerdp/xrdp-color.c
parent3cedfae76a2351bc8b1e5bd2ee33bbf8630dbacf (diff)
downloadxrdp-proprietary-1123323fda6d128fb98b0427e0ea5f6a2dc9e632.tar.gz
xrdp-proprietary-1123323fda6d128fb98b0427e0ea5f6a2dc9e632.zip
o moved from GNU General Public License to Apache License, Version 2.0
o applied new coding standards to all .c files o moved some files around
Diffstat (limited to 'freerdp/xrdp-color.c')
-rw-r--r--freerdp/xrdp-color.c527
1 files changed, 281 insertions, 246 deletions
diff --git a/freerdp/xrdp-color.c b/freerdp/xrdp-color.c
index 1bbdef43..0ecf4dbf 100644
--- a/freerdp/xrdp-color.c
+++ b/freerdp/xrdp-color.c
@@ -1,279 +1,314 @@
-/*
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
+/**
+ * xrdp: A Remote Desktop Protocol server.
+ *
+ * Copyright (C) Jay Sorg 2004-2012
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * freerdp wrapper
+ */
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
+#include "xrdp-freerdp.h"
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+char *APP_CC
+convert_bitmap(int in_bpp, int out_bpp, char *bmpdata,
+ int width, int height, int *palette)
+{
+ char *out;
+ char *src;
+ char *dst;
+ int i;
+ int j;
+ int red;
+ int green;
+ int blue;
+ int pixel;
- xrdp: A Remote Desktop Protocol server.
- Copyright (C) Jay Sorg 2010
+ if ((in_bpp == 8) && (out_bpp == 8))
+ {
+ out = (char *)g_malloc(width * height, 0);
+ src = bmpdata;
+ dst = out;
- freerdp wrapper
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ {
+ pixel = *((tui8 *)src);
+ pixel = palette[pixel];
+ SPLITCOLOR32(red, green, blue, pixel);
+ pixel = COLOR8(red, green, blue);
+ *dst = pixel;
+ src++;
+ dst++;
+ }
+ }
-*/
+ return out;
+ }
-#include "xrdp-freerdp.h"
+ if ((in_bpp == 8) && (out_bpp == 16))
+ {
+ out = (char *)g_malloc(width * height * 2, 0);
+ src = bmpdata;
+ dst = out;
+
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ {
+ pixel = *((tui8 *)src);
+ pixel = palette[pixel];
+ SPLITCOLOR32(red, green, blue, pixel);
+ pixel = COLOR16(red, green, blue);
+ *((tui16 *)dst) = pixel;
+ src++;
+ dst += 2;
+ }
+ }
+
+ return out;
+ }
+
+ if ((in_bpp == 8) && (out_bpp == 24))
+ {
+ out = (char *)g_malloc(width * height * 4, 0);
+ src = bmpdata;
+ dst = out;
+
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ {
+ pixel = *((tui8 *)src);
+ pixel = palette[pixel];
+ SPLITCOLOR32(red, green, blue, pixel);
+ pixel = COLOR24RGB(red, green, blue);
+ *((tui32 *)dst) = pixel;
+ src++;
+ dst += 4;
+ }
+ }
+
+ return out;
+ }
+
+ if ((in_bpp == 15) && (out_bpp == 16))
+ {
+ out = (char *)g_malloc(width * height * 2, 0);
+ src = bmpdata;
+ dst = out;
+
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ {
+ pixel = *((tui16 *)src);
+ SPLITCOLOR15(red, green, blue, pixel);
+ pixel = COLOR16(red, green, blue);
+ *((tui16 *)dst) = pixel;
+ src += 2;
+ dst += 2;
+ }
+ }
+
+ return out;
+ }
+
+ if ((in_bpp == 15) && (out_bpp == 24))
+ {
+ out = (char *)g_malloc(width * height * 4, 0);
+ src = bmpdata;
+ dst = out;
+
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ {
+ pixel = *((tui16 *)src);
+ SPLITCOLOR15(red, green, blue, pixel);
+ pixel = COLOR24RGB(red, green, blue);
+ *((tui32 *)dst) = pixel;
+ src += 2;
+ dst += 4;
+ }
+ }
+
+ return out;
+ }
+
+ if ((in_bpp == 16) && (out_bpp == 16))
+ {
+ return bmpdata;
+ }
+
+ if ((in_bpp == 16) && (out_bpp == 24))
+ {
+ out = (char *)g_malloc(width * height * 4, 0);
+ src = bmpdata;
+ dst = out;
+
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ {
+ pixel = *((tui16 *)src);
+ SPLITCOLOR16(red, green, blue, pixel);
+ pixel = COLOR24RGB(red, green, blue);
+ *((tui32 *)dst) = pixel;
+ src += 2;
+ dst += 4;
+ }
+ }
+
+ return out;
+ }
+
+ if ((in_bpp == 24) && (out_bpp == 24))
+ {
+ out = (char *)g_malloc(width * height * 4, 0);
+ src = bmpdata;
+ dst = out;
+
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ {
+ blue = *((tui8 *)src);
+ src++;
+ green = *((tui8 *)src);
+ src++;
+ red = *((tui8 *)src);
+ src++;
+ pixel = COLOR24RGB(red, green, blue);
+ *((tui32 *)dst) = pixel;
+ dst += 4;
+ }
+ }
+
+ return out;
+ }
+
+ if ((in_bpp == 32) && (out_bpp == 24))
+ {
+ return bmpdata;
+ }
+
+ if ((in_bpp == 32) && (out_bpp == 32))
+ {
+ return bmpdata;
+ }
+
+ if ((in_bpp == 15) && (out_bpp == 15))
+ {
+ return bmpdata;
+ }
-char* APP_CC
-convert_bitmap(int in_bpp, int out_bpp, char* bmpdata,
- int width, int height, int* palette)
+ g_writeln("convert_bitmap: error unknown conversion from %d to %d",
+ in_bpp, out_bpp);
+ return 0;
+}
+
+/*****************************************************************************/
+/* returns color or 0 */
+int APP_CC
+convert_color(int in_bpp, int out_bpp, int in_color, int *palette)
{
- char* out;
- char* src;
- char* dst;
- int i;
- int j;
- int red;
- int green;
- int blue;
- int pixel;
-
- if ((in_bpp == 8) && (out_bpp == 8))
- {
- out = (char*)g_malloc(width * height, 0);
- src = bmpdata;
- dst = out;
- for (i = 0; i < height; i++)
+ int pixel;
+ int red;
+ int green;
+ int blue;
+
+ if ((in_bpp == 1) && (out_bpp == 24))
+ {
+ pixel = in_color == 0 ? 0 : 0xffffff;
+ return pixel;
+ }
+
+ if ((in_bpp == 8) && (out_bpp == 8))
{
- for (j = 0; j < width; j++)
- {
- pixel = *((tui8*)src);
- pixel = palette[pixel];
+ pixel = palette[in_color];
SPLITCOLOR32(red, green, blue, pixel);
pixel = COLOR8(red, green, blue);
- *dst = pixel;
- src++;
- dst++;
- }
+ return pixel;
}
- return out;
- }
- if ((in_bpp == 8) && (out_bpp == 16))
- {
- out = (char*)g_malloc(width * height * 2, 0);
- src = bmpdata;
- dst = out;
- for (i = 0; i < height; i++)
+
+ if ((in_bpp == 8) && (out_bpp == 16))
{
- for (j = 0; j < width; j++)
- {
- pixel = *((tui8*)src);
- pixel = palette[pixel];
+ pixel = palette[in_color];
SPLITCOLOR32(red, green, blue, pixel);
pixel = COLOR16(red, green, blue);
- *((tui16*)dst) = pixel;
- src++;
- dst += 2;
- }
+ return pixel;
}
- return out;
- }
- if ((in_bpp == 8) && (out_bpp == 24))
- {
- out = (char*)g_malloc(width * height * 4, 0);
- src = bmpdata;
- dst = out;
- for (i = 0; i < height; i++)
+
+ if ((in_bpp == 8) && (out_bpp == 24))
{
- for (j = 0; j < width; j++)
- {
- pixel = *((tui8*)src);
- pixel = palette[pixel];
+ pixel = palette[in_color];
SPLITCOLOR32(red, green, blue, pixel);
- pixel = COLOR24RGB(red, green, blue);
- *((tui32*)dst) = pixel;
- src++;
- dst += 4;
- }
+ pixel = COLOR24BGR(red, green, blue);
+ return pixel;
}
- return out;
- }
- if ((in_bpp == 15) && (out_bpp == 16))
- {
- out = (char*)g_malloc(width * height * 2, 0);
- src = bmpdata;
- dst = out;
- for (i = 0; i < height; i++)
+
+ if ((in_bpp == 15) && (out_bpp == 16))
{
- for (j = 0; j < width; j++)
- {
- pixel = *((tui16*)src);
+ pixel = in_color;
SPLITCOLOR15(red, green, blue, pixel);
pixel = COLOR16(red, green, blue);
- *((tui16*)dst) = pixel;
- src += 2;
- dst += 2;
- }
+ return pixel;
}
- return out;
- }
- if ((in_bpp == 15) && (out_bpp == 24))
- {
- out = (char*)g_malloc(width * height * 4, 0);
- src = bmpdata;
- dst = out;
- for (i = 0; i < height; i++)
+
+ if ((in_bpp == 15) && (out_bpp == 24))
{
- for (j = 0; j < width; j++)
- {
- pixel = *((tui16*)src);
+ pixel = in_color;
SPLITCOLOR15(red, green, blue, pixel);
- pixel = COLOR24RGB(red, green, blue);
- *((tui32*)dst) = pixel;
- src += 2;
- dst += 4;
- }
+ pixel = COLOR24BGR(red, green, blue);
+ return pixel;
}
- return out;
- }
- if ((in_bpp == 16) && (out_bpp == 16))
- {
- return bmpdata;
- }
- if ((in_bpp == 16) && (out_bpp == 24))
- {
- out = (char*)g_malloc(width * height * 4, 0);
- src = bmpdata;
- dst = out;
- for (i = 0; i < height; i++)
+
+ if ((in_bpp == 16) && (out_bpp == 16))
{
- for (j = 0; j < width; j++)
- {
- pixel = *((tui16*)src);
+ return in_color;
+ }
+
+ if ((in_bpp == 16) && (out_bpp == 24))
+ {
+ pixel = in_color;
SPLITCOLOR16(red, green, blue, pixel);
- pixel = COLOR24RGB(red, green, blue);
- *((tui32*)dst) = pixel;
- src += 2;
- dst += 4;
- }
+ pixel = COLOR24BGR(red, green, blue);
+ return pixel;
}
- return out;
- }
- if ((in_bpp == 24) && (out_bpp == 24))
- {
- out = (char*)g_malloc(width * height * 4, 0);
- src = bmpdata;
- dst = out;
- for (i = 0; i < height; i++)
+
+ if ((in_bpp == 24) && (out_bpp == 24))
{
- for (j = 0; j < width; j++)
- {
- blue = *((tui8*)src);
- src++;
- green = *((tui8*)src);
- src++;
- red = *((tui8*)src);
- src++;
- pixel = COLOR24RGB(red, green, blue);
- *((tui32*)dst) = pixel;
- dst += 4;
- }
+ return in_color;
}
- return out;
- }
- if ((in_bpp == 32) && (out_bpp == 24))
- {
- return bmpdata;
- }
- if ((in_bpp == 32) && (out_bpp == 32))
- {
- return bmpdata;
- }
- if ((in_bpp == 15) && (out_bpp == 15))
- {
- return bmpdata;
- }
- g_writeln("convert_bitmap: error unknown conversion from %d to %d",
- in_bpp, out_bpp);
- return 0;
-}
-/*****************************************************************************/
-/* returns color or 0 */
-int APP_CC
-convert_color(int in_bpp, int out_bpp, int in_color, int* palette)
-{
- int pixel;
- int red;
- int green;
- int blue;
-
- if ((in_bpp == 1) && (out_bpp == 24))
- {
- pixel = in_color == 0 ? 0 : 0xffffff;
- return pixel;
- }
- if ((in_bpp == 8) && (out_bpp == 8))
- {
- pixel = palette[in_color];
- SPLITCOLOR32(red, green, blue, pixel);
- pixel = COLOR8(red, green, blue);
- return pixel;
- }
- if ((in_bpp == 8) && (out_bpp == 16))
- {
- pixel = palette[in_color];
- SPLITCOLOR32(red, green, blue, pixel);
- pixel = COLOR16(red, green, blue);
- return pixel;
- }
- if ((in_bpp == 8) && (out_bpp == 24))
- {
- pixel = palette[in_color];
- SPLITCOLOR32(red, green, blue, pixel);
- pixel = COLOR24BGR(red, green, blue);
- return pixel;
- }
- if ((in_bpp == 15) && (out_bpp == 16))
- {
- pixel = in_color;
- SPLITCOLOR15(red, green, blue, pixel);
- pixel = COLOR16(red, green, blue);
- return pixel;
- }
- if ((in_bpp == 15) && (out_bpp == 24))
- {
- pixel = in_color;
- SPLITCOLOR15(red, green, blue, pixel);
- pixel = COLOR24BGR(red, green, blue);
- return pixel;
- }
- if ((in_bpp == 16) && (out_bpp == 16))
- {
- return in_color;
- }
- if ((in_bpp == 16) && (out_bpp == 24))
- {
- pixel = in_color;
- SPLITCOLOR16(red, green, blue, pixel);
- pixel = COLOR24BGR(red, green, blue);
- return pixel;
- }
- if ((in_bpp == 24) && (out_bpp == 24))
- {
- return in_color;
- }
- if ((in_bpp == 32) && (out_bpp == 24))
- {
- return in_color;
- }
- if ((in_bpp == 32) && (out_bpp == 32))
- {
- return in_color;
- }
- if ((in_bpp == 15) && (out_bpp == 15))
- {
- return in_color;
- }
- g_writeln("convert_color: error unknown conversion from %d to %d",
- in_bpp, out_bpp);
- return 0;
+ if ((in_bpp == 32) && (out_bpp == 24))
+ {
+ return in_color;
+ }
+
+ if ((in_bpp == 32) && (out_bpp == 32))
+ {
+ return in_color;
+ }
+
+ if ((in_bpp == 15) && (out_bpp == 15))
+ {
+ return in_color;
+ }
+
+ g_writeln("convert_color: error unknown conversion from %d to %d",
+ in_bpp, out_bpp);
+ return 0;
}