|
Packit Service |
fa4841 |
/**
|
|
Packit Service |
fa4841 |
* FreeRDP: A Remote Desktop Protocol Implementation
|
|
Packit Service |
fa4841 |
* Color Conversion Routines
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* Copyright 2010 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
|
Packit Service |
fa4841 |
* Copyright 2016 Armin Novak <armin.novak@thincast.com>
|
|
Packit Service |
fa4841 |
* Copyright 2016 Thincast Technologies GmbH
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
Packit Service |
fa4841 |
* you may not use this file except in compliance with the License.
|
|
Packit Service |
fa4841 |
* You may obtain a copy of the License at
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* http://www.apache.org/licenses/LICENSE-2.0
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* Unless required by applicable law or agreed to in writing, software
|
|
Packit Service |
fa4841 |
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
Packit Service |
fa4841 |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
Packit Service |
fa4841 |
* See the License for the specific language governing permissions and
|
|
Packit Service |
fa4841 |
* limitations under the License.
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#ifndef FREERDP_CODEC_COLOR_H
|
|
Packit Service |
fa4841 |
#define FREERDP_CODEC_COLOR_H
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#include <freerdp/api.h>
|
|
Packit Service |
fa4841 |
#include <winpr/wlog.h>
|
|
Packit Service |
fa4841 |
#include <freerdp/log.h>
|
|
Packit Service |
fa4841 |
#define CTAG FREERDP_TAG("codec.color")
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define FREERDP_PIXEL_FORMAT_TYPE_A 0
|
|
Packit Service |
fa4841 |
#define FREERDP_PIXEL_FORMAT_TYPE_ARGB 1
|
|
Packit Service |
fa4841 |
#define FREERDP_PIXEL_FORMAT_TYPE_ABGR 2
|
|
Packit Service |
fa4841 |
#define FREERDP_PIXEL_FORMAT_TYPE_RGBA 3
|
|
Packit Service |
fa4841 |
#define FREERDP_PIXEL_FORMAT_TYPE_BGRA 4
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define FREERDP_PIXEL_FORMAT_IS_ABGR(_format) \
|
|
Packit Service |
fa4841 |
(FREERDP_PIXEL_FORMAT_TYPE(_format) == FREERDP_PIXEL_FORMAT_TYPE_ABGR)
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define FREERDP_FLIP_NONE 0
|
|
Packit Service |
fa4841 |
#define FREERDP_FLIP_VERTICAL 1
|
|
Packit Service |
fa4841 |
#define FREERDP_FLIP_HORIZONTAL 2
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define FREERDP_PIXEL_FORMAT(_bpp, _type, _a, _r, _g, _b) \
|
|
Packit Service |
fa4841 |
((_bpp << 24) | (_type << 16) | (_a << 12) | (_r << 8) | (_g << 4) | (_b))
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define FREERDP_PIXEL_FORMAT_TYPE(_format) (((_format) >> 16) & 0x07)
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/*** Design considerations
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* The format naming scheme is based on byte position in memory.
|
|
Packit Service |
fa4841 |
* RGBA for example names a byte array with red on positon 0, green on 1 etc.
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* To read and write the appropriate format from / to memory use ReadColor and
|
|
Packit Service |
fa4841 |
* WriteColor.
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* The single pixel manipulation functions use an intermediate integer representation
|
|
Packit Service |
fa4841 |
* that must not be interpreted outside the functions as it is platform dependent.
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* X for alpha channel denotes unused (but existing) alpha channel data.
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 32bpp formats */
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_ARGB32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 8, 8, 8, 8)
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_XRGB32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 8, 8, 8)
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_ABGR32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 8, 8, 8, 8)
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_XBGR32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 8, 8, 8)
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_BGRA32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_BGRA, 8, 8, 8, 8)
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_BGRX32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_BGRA, 0, 8, 8, 8)
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_RGBA32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_RGBA, 8, 8, 8, 8)
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_RGBX32 FREERDP_PIXEL_FORMAT(32, FREERDP_PIXEL_FORMAT_TYPE_RGBA, 0, 8, 8, 8)
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 24bpp formats */
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_RGB24 FREERDP_PIXEL_FORMAT(24, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 8, 8, 8)
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_BGR24 FREERDP_PIXEL_FORMAT(24, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 8, 8, 8)
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 16bpp formats */
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_RGB16 FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 5, 6, 5)
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_BGR16 FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 5, 6, 5)
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_ARGB15 FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 1, 5, 5, 5)
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_RGB15 FREERDP_PIXEL_FORMAT(15, FREERDP_PIXEL_FORMAT_TYPE_ARGB, 0, 5, 5, 5)
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_ABGR15 FREERDP_PIXEL_FORMAT(16, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 1, 5, 5, 5)
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_BGR15 FREERDP_PIXEL_FORMAT(15, FREERDP_PIXEL_FORMAT_TYPE_ABGR, 0, 5, 5, 5)
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 8bpp formats */
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_RGB8 FREERDP_PIXEL_FORMAT(8, FREERDP_PIXEL_FORMAT_TYPE_A, 8, 0, 0, 0)
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 4 bpp formats */
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_A4 FREERDP_PIXEL_FORMAT(4, FREERDP_PIXEL_FORMAT_TYPE_A, 4, 0, 0, 0)
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 1bpp formats */
|
|
Packit Service |
fa4841 |
#define PIXEL_FORMAT_MONO FREERDP_PIXEL_FORMAT(1, FREERDP_PIXEL_FORMAT_TYPE_A, 1, 0, 0, 0)
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
struct gdi_palette
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
UINT32 format;
|
|
Packit Service |
fa4841 |
UINT32 palette[256];
|
|
Packit Service |
fa4841 |
};
|
|
Packit Service |
fa4841 |
typedef struct gdi_palette gdiPalette;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#ifdef __cplusplus
|
|
Packit Service |
fa4841 |
extern "C"
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
#endif
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* Compare two color formats but ignore differences in alpha channel.
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
static INLINE DWORD AreColorFormatsEqualNoAlpha(DWORD first, DWORD second)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const DWORD mask = ~(8 << 12);
|
|
Packit Service |
fa4841 |
return (first & mask) == (second & mask);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* Color Space Conversions: http://msdn.microsoft.com/en-us/library/ff566496/ */
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* Get a string representation of a color
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param format The pixel color format
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return A string representation of format
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
static const char* FreeRDPGetColorFormatName(UINT32 format)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
switch (format)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
/* 32bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_ARGB32:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_ARGB32";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_XRGB32:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_XRGB32";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_ABGR32:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_ABGR32";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_XBGR32:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_XBGR32";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGRA32:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_BGRA32";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGRX32:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_BGRX32";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGBA32:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_RGBA32";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGBX32:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_RGBX32";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 24bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGB24:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_RGB24";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGR24:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_BGR24";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 16bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGB16:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_RGB16";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGR16:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_BGR16";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_ARGB15:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_ARGB15";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGB15:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_RGB15";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_ABGR15:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_ABGR15";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGR15:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_BGR15";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 8bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGB8:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_RGB8";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 4 bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_A4:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_A4";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 1bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_MONO:
|
|
Packit Service |
fa4841 |
return "PIXEL_FORMAT_MONO";
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
default:
|
|
Packit Service |
fa4841 |
return "UNKNOWN";
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* Converts a pixel color in internal representation to its red, green, blue
|
|
Packit Service |
fa4841 |
* and alpha components.
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param color The color in format internal representation
|
|
Packit Service |
fa4841 |
* @param format one of PIXEL_FORMAT_* color format defines
|
|
Packit Service |
fa4841 |
* @param _r red color value
|
|
Packit Service |
fa4841 |
* @param _g green color value
|
|
Packit Service |
fa4841 |
* @param _b blue color value
|
|
Packit Service |
fa4841 |
* @param _a alpha color value
|
|
Packit Service |
fa4841 |
* @param palette pallete to use (only used for 8 bit color!)
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
static INLINE void SplitColor(UINT32 color, UINT32 format, BYTE* _r, BYTE* _g, BYTE* _b,
|
|
Packit Service |
fa4841 |
BYTE* _a, const gdiPalette* palette)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
UINT32 tmp;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
switch (format)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
/* 32bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_ARGB32:
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = (BYTE)(color >> 24);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
*_r = (BYTE)(color >> 16);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(color >> 8);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
*_b = (BYTE)color;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_XRGB32:
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
*_r = (BYTE)(color >> 16);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(color >> 8);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
*_b = (BYTE)color;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = 0xFF;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_ABGR32:
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = (BYTE)(color >> 24);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
*_b = (BYTE)(color >> 16);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(color >> 8);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
*_r = (BYTE)color;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_XBGR32:
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
*_b = (BYTE)(color >> 16);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(color >> 8);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
*_r = (BYTE)color;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = 0xFF;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGBA32:
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
*_r = (BYTE)(color >> 24);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(color >> 16);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
*_b = (BYTE)(color >> 8);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = (BYTE)color;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGBX32:
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
*_r = (BYTE)(color >> 24);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(color >> 16);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
*_b = (BYTE)(color >> 8);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = 0xFF;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGRA32:
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
*_b = (BYTE)(color >> 24);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(color >> 16);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
*_r = (BYTE)(color >> 8);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = (BYTE)color;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGRX32:
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
*_b = (BYTE)(color >> 24);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(color >> 16);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
*_r = (BYTE)(color >> 8);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = 0xFF;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 24bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGB24:
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
*_r = (BYTE)(color >> 16);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(color >> 8);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
*_b = (BYTE)color;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = 0xFF;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGR24:
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
*_b = (BYTE)(color >> 16);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(color >> 8);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
*_r = (BYTE)color;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = 0xFF;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 16bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGB16:
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color >> 11) & 0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_r = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color >> 5) & 0x3F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 2) + c / 4 / 2;
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color)&0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_b = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = 0xFF;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGR16:
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color)&0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_r = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color >> 5) & 0x3F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 2) + c / 4 / 2;
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color >> 11) & 0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_b = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = 0xFF;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_ARGB15:
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color >> 10) & 0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_r = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color >> 5) & 0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color)&0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_b = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = color & 0x8000 ? 0xFF : 0x00;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_ABGR15:
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color)&0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_r = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color >> 5) & 0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color >> 10) & 0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_b = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = color & 0x8000 ? 0xFF : 0x00;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 15bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGB15:
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color >> 10) & 0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_r = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color >> 5) & 0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color)&0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_b = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = 0xFF;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGR15:
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color)&0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_r = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color >> 5) & 0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_g = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
const UINT32 c = (color >> 10) & 0x1F;
|
|
Packit Service |
fa4841 |
const UINT32 val = (c << 3) + c / 4;
|
|
Packit Service |
fa4841 |
*_b = (BYTE)(val > 255 ? 255 : val);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = 0xFF;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 8bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGB8:
|
|
Packit Service |
fa4841 |
if (color <= 0xFF)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
tmp = palette->palette[color];
|
|
Packit Service |
fa4841 |
SplitColor(tmp, palette->format, _r, _g, _b, _a, NULL);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
else
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
*_r = 0x00;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
*_g = 0x00;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
*_b = 0x00;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = 0x00;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 1bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_MONO:
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
*_r = (color) ? 0xFF : 0x00;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
*_g = (color) ? 0xFF : 0x00;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
*_b = (color) ? 0xFF : 0x00;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = (color) ? 0xFF : 0x00;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 4 bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_A4:
|
|
Packit Service |
fa4841 |
default:
|
|
Packit Service |
fa4841 |
if (_r)
|
|
Packit Service |
fa4841 |
*_r = 0x00;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_g)
|
|
Packit Service |
fa4841 |
*_g = 0x00;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_b)
|
|
Packit Service |
fa4841 |
*_b = 0x00;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (_a)
|
|
Packit Service |
fa4841 |
*_a = 0x00;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
WLog_ERR(CTAG, "Unsupported format %s", FreeRDPGetColorFormatName(format));
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* Converts red, green, blue and alpha values to internal representation.
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param format one of PIXEL_FORMAT_* color format defines
|
|
Packit Service |
fa4841 |
* @param r red color value
|
|
Packit Service |
fa4841 |
* @param g green color value
|
|
Packit Service |
fa4841 |
* @param b blue color value
|
|
Packit Service |
fa4841 |
* @param a alpha color value
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return The pixel color in the desired format. Value is in internal
|
|
Packit Service |
fa4841 |
* representation.
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
static INLINE UINT32 FreeRDPGetColor(UINT32 format, BYTE r, BYTE g, BYTE b, BYTE a)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
UINT32 _r = r;
|
|
Packit Service |
fa4841 |
UINT32 _g = g;
|
|
Packit Service |
fa4841 |
UINT32 _b = b;
|
|
Packit Service |
fa4841 |
UINT32 _a = a;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
switch (format)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
/* 32bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_ARGB32:
|
|
Packit Service |
fa4841 |
return (_a << 24) | (_r << 16) | (_g << 8) | _b;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_XRGB32:
|
|
Packit Service |
fa4841 |
return (_r << 16) | (_g << 8) | _b;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_ABGR32:
|
|
Packit Service |
fa4841 |
return (_a << 24) | (_b << 16) | (_g << 8) | _r;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_XBGR32:
|
|
Packit Service |
fa4841 |
return (_b << 16) | (_g << 8) | _r;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGBA32:
|
|
Packit Service |
fa4841 |
return (_r << 24) | (_g << 16) | (_b << 8) | _a;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGBX32:
|
|
Packit Service |
fa4841 |
return (_r << 24) | (_g << 16) | (_b << 8) | _a;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGRA32:
|
|
Packit Service |
fa4841 |
return (_b << 24) | (_g << 16) | (_r << 8) | _a;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGRX32:
|
|
Packit Service |
fa4841 |
return (_b << 24) | (_g << 16) | (_r << 8) | _a;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 24bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGB24:
|
|
Packit Service |
fa4841 |
return (_r << 16) | (_g << 8) | _b;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGR24:
|
|
Packit Service |
fa4841 |
return (_b << 16) | (_g << 8) | _r;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 16bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGB16:
|
|
Packit Service |
fa4841 |
return (((_r >> 3) & 0x1F) << 11) | (((_g >> 2) & 0x3F) << 5) | ((_b >> 3) & 0x1F);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGR16:
|
|
Packit Service |
fa4841 |
return (((_b >> 3) & 0x1F) << 11) | (((_g >> 2) & 0x3F) << 5) | ((_r >> 3) & 0x1F);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_ARGB15:
|
|
Packit Service |
fa4841 |
return (((_r >> 3) & 0x1F) << 10) | (((_g >> 3) & 0x1F) << 5) | ((_b >> 3) & 0x1F) |
|
|
Packit Service |
fa4841 |
(_a ? 0x8000 : 0x0000);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_ABGR15:
|
|
Packit Service |
fa4841 |
return (((_b >> 3) & 0x1F) << 10) | (((_g >> 3) & 0x1F) << 5) | ((_r >> 3) & 0x1F) |
|
|
Packit Service |
fa4841 |
(_a ? 0x8000 : 0x0000);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 15bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGB15:
|
|
Packit Service |
fa4841 |
return (((_r >> 3) & 0x1F) << 10) | (((_g >> 3) & 0x1F) << 5) | ((_b >> 3) & 0x1F);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_BGR15:
|
|
Packit Service |
fa4841 |
return (((_b >> 3) & 0x1F) << 10) | (((_g >> 3) & 0x1F) << 5) | ((_r >> 3) & 0x1F);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 8bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_RGB8:
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 4 bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_A4:
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* 1bpp formats */
|
|
Packit Service |
fa4841 |
case PIXEL_FORMAT_MONO:
|
|
Packit Service |
fa4841 |
default:
|
|
Packit Service |
fa4841 |
WLog_ERR(CTAG, "Unsupported format %s", FreeRDPGetColorFormatName(format));
|
|
Packit Service |
fa4841 |
return 0;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* Returns the number of bits the format format uses.
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param format One of PIXEL_FORMAT_* defines
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return The number of bits the format requires per pixel.
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
static INLINE UINT32 GetBitsPerPixel(UINT32 format)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
return (((format) >> 24) & 0x3F);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
* @param format one of PIXEL_FORMAT_* color format defines
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return TRUE if the format has an alpha channel, FALSE otherwise.
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
static INLINE BOOL ColorHasAlpha(UINT32 format)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
UINT32 alpha = (((format) >> 12) & 0x0F);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (alpha == 0)
|
|
Packit Service |
fa4841 |
return FALSE;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
return TRUE;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* Read a pixel from memory to internal representation
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param src The source buffer
|
|
Packit Service |
fa4841 |
* @param format The PIXEL_FORMAT_* define the source buffer uses for encoding
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return The pixel color in internal representation
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
static INLINE UINT32 ReadColor(const BYTE* src, UINT32 format)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
UINT32 color;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
switch (GetBitsPerPixel(format))
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
case 32:
|
|
Packit Service |
fa4841 |
color = ((UINT32)src[0] << 24) | ((UINT32)src[1] << 16) | ((UINT32)src[2] << 8) |
|
|
Packit Service |
fa4841 |
src[3];
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case 24:
|
|
Packit Service |
fa4841 |
color = ((UINT32)src[0] << 16) | ((UINT32)src[1] << 8) | src[2];
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case 16:
|
|
Packit Service |
fa4841 |
color = ((UINT32)src[1] << 8) | src[0];
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case 15:
|
|
Packit Service |
fa4841 |
color = ((UINT32)src[1] << 8) | src[0];
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
if (!ColorHasAlpha(format))
|
|
Packit Service |
fa4841 |
color = color & 0x7FFF;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case 8:
|
|
Packit Service |
fa4841 |
case 4:
|
|
Packit Service |
fa4841 |
case 1:
|
|
Packit Service |
fa4841 |
color = *src;
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
default:
|
|
Packit Service |
fa4841 |
WLog_ERR(CTAG, "Unsupported format %s", FreeRDPGetColorFormatName(format));
|
|
Packit Service |
fa4841 |
color = 0;
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
return color;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* Write a pixel from internal representation to memory
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param dst The destination buffer
|
|
Packit Service |
fa4841 |
* @param format The PIXEL_FORMAT_* define for encoding
|
|
Packit Service |
fa4841 |
* @param color The pixel color in internal representation
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return TRUE if successful, FALSE otherwise
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
static INLINE BOOL WriteColor(BYTE* dst, UINT32 format, UINT32 color)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
switch (GetBitsPerPixel(format))
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
case 32:
|
|
Packit Service |
fa4841 |
dst[0] = (BYTE)(color >> 24);
|
|
Packit Service |
fa4841 |
dst[1] = (BYTE)(color >> 16);
|
|
Packit Service |
fa4841 |
dst[2] = (BYTE)(color >> 8);
|
|
Packit Service |
fa4841 |
dst[3] = (BYTE)color;
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case 24:
|
|
Packit Service |
fa4841 |
dst[0] = (BYTE)(color >> 16);
|
|
Packit Service |
fa4841 |
dst[1] = (BYTE)(color >> 8);
|
|
Packit Service |
fa4841 |
dst[2] = (BYTE)color;
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case 16:
|
|
Packit Service |
fa4841 |
dst[1] = (BYTE)(color >> 8);
|
|
Packit Service |
fa4841 |
dst[0] = (BYTE)color;
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case 15:
|
|
Packit Service |
fa4841 |
if (!ColorHasAlpha(format))
|
|
Packit Service |
fa4841 |
color = color & 0x7FFF;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
dst[1] = (BYTE)(color >> 8);
|
|
Packit Service |
fa4841 |
dst[0] = (BYTE)color;
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
case 8:
|
|
Packit Service |
fa4841 |
dst[0] = (BYTE)color;
|
|
Packit Service |
fa4841 |
break;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
default:
|
|
Packit Service |
fa4841 |
WLog_ERR(CTAG, "Unsupported format %s", FreeRDPGetColorFormatName(format));
|
|
Packit Service |
fa4841 |
return FALSE;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
return TRUE;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* Converts a pixel in internal representation format srcFormat to internal
|
|
Packit Service |
fa4841 |
* representation format dstFormat
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param color The pixel color in srcFormat representation
|
|
Packit Service |
fa4841 |
* @param srcFormat The PIXEL_FORMAT_* of color
|
|
Packit Service |
fa4841 |
* @param dstFormat The PIXEL_FORMAT_* of the return.
|
|
Packit Service |
fa4841 |
* @param palette pallete to use (only used for 8 bit color!)
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return The converted pixel color in dstFormat representation
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
static INLINE UINT32 FreeRDPConvertColor(UINT32 color, UINT32 srcFormat, UINT32 dstFormat,
|
|
Packit Service |
fa4841 |
const gdiPalette* palette)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
BYTE r = 0;
|
|
Packit Service |
fa4841 |
BYTE g = 0;
|
|
Packit Service |
fa4841 |
BYTE b = 0;
|
|
Packit Service |
fa4841 |
BYTE a = 0;
|
|
Packit Service |
fa4841 |
SplitColor(color, srcFormat, &r, &g, &b, &a, palette);
|
|
Packit Service |
fa4841 |
return FreeRDPGetColor(dstFormat, r, g, b, a);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* Returns the number of bytes the format format uses.
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param format One of PIXEL_FORMAT_* defines
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return The number of bytes the format requires per pixel.
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
static INLINE UINT32 GetBytesPerPixel(UINT32 format)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
return (GetBitsPerPixel(format) + 7) / 8;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param nWidth width to copy in pixels
|
|
Packit Service |
fa4841 |
* @param nHeight height to copy in pixels
|
|
Packit Service |
fa4841 |
* @param data source buffer, must be (nWidth + 7) / 8 bytes long
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return A buffer allocated with _aligned_malloc(width * height, 16)
|
|
Packit Service |
fa4841 |
* if successufl, NULL otherwise.
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
FREERDP_API BYTE* freerdp_glyph_convert(UINT32 width, UINT32 height, const BYTE* data);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param pDstData destination buffer
|
|
Packit Service |
fa4841 |
* @param DstFormat destination buffer format
|
|
Packit Service |
fa4841 |
* @param nDstStep destination buffer stride (line in bytes) 0 for default
|
|
Packit Service |
fa4841 |
* @param nXDst destination buffer offset x
|
|
Packit Service |
fa4841 |
* @param nYDst destination buffer offset y
|
|
Packit Service |
fa4841 |
* @param nWidth width to copy in pixels
|
|
Packit Service |
fa4841 |
* @param nHeight height to copy in pixels
|
|
Packit Service |
fa4841 |
* @param pSrcData source buffer, must be (nWidth + 7) / 8 bytes long
|
|
Packit Service |
fa4841 |
* @param backColor The background color in internal representation format
|
|
Packit Service |
fa4841 |
* @param foreColor The foreground color in internal representation format
|
|
Packit Service |
fa4841 |
* @param palette palette to use (only used for 8 bit color!)
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return TRUE if success, FALSE otherwise
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
FREERDP_API BOOL freerdp_image_copy_from_monochrome(BYTE* pDstData, UINT32 DstFormat,
|
|
Packit Service |
fa4841 |
UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst,
|
|
Packit Service |
fa4841 |
UINT32 nWidth, UINT32 nHeight,
|
|
Packit Service |
fa4841 |
const BYTE* pSrcData, UINT32 backColor,
|
|
Packit Service |
fa4841 |
UINT32 foreColor,
|
|
Packit Service |
fa4841 |
const gdiPalette* palette);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param pDstData destination buffer
|
|
Packit Service |
fa4841 |
* @param DstFormat destination buffer format
|
|
Packit Service |
fa4841 |
* @param nDstStep destination buffer stride (line in bytes) 0 for default
|
|
Packit Service |
fa4841 |
* @param nXDst destination buffer offset x
|
|
Packit Service |
fa4841 |
* @param nYDst destination buffer offset y
|
|
Packit Service |
fa4841 |
* @param nWidth width to copy in pixels
|
|
Packit Service |
fa4841 |
* @param nHeight height to copy in pixels
|
|
Packit Service |
fa4841 |
* @param bitsColor icon's image data buffer
|
|
Packit Service |
fa4841 |
* @param cbBitsColor length of the image data buffer in bytes
|
|
Packit Service |
fa4841 |
* @param bitsMask icon's 1bpp image mask buffer
|
|
Packit Service |
fa4841 |
* @param cbBitsMask length of the image mask buffer in bytes
|
|
Packit Service |
fa4841 |
* @param colorTable icon's image color table
|
|
Packit Service |
fa4841 |
* @param cbBitsColor length of the image color table buffer in bytes
|
|
Packit Service |
fa4841 |
* @param bpp color image data bits per pixel
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return TRUE if success, FALSE otherwise
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
FREERDP_API BOOL freerdp_image_copy_from_icon_data(BYTE* pDstData, UINT32 DstFormat,
|
|
Packit Service |
fa4841 |
UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst,
|
|
Packit Service |
fa4841 |
UINT16 nWidth, UINT16 nHeight,
|
|
Packit Service |
fa4841 |
const BYTE* bitsColor, UINT16 cbBitsColor,
|
|
Packit Service |
fa4841 |
const BYTE* bitsMask, UINT16 cbBitsMask,
|
|
Packit Service |
fa4841 |
const BYTE* colorTable, UINT16 cbColorTable,
|
|
Packit Service |
fa4841 |
UINT32 bpp);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param pDstData destination buffer
|
|
Packit Service |
fa4841 |
* @param DstFormat destination buffer format
|
|
Packit Service |
fa4841 |
* @param nDstStep destination buffer stride (line in bytes) 0 for default
|
|
Packit Service |
fa4841 |
* @param nXDst destination buffer offset x
|
|
Packit Service |
fa4841 |
* @param nYDst destination buffer offset y
|
|
Packit Service |
fa4841 |
* @param nWidth width to copy in pixels
|
|
Packit Service |
fa4841 |
* @param nHeight height to copy in pixels
|
|
Packit Service |
fa4841 |
* @param xorMask XOR mask buffer
|
|
Packit Service |
fa4841 |
* @param xorMaskLength XOR mask length in bytes
|
|
Packit Service |
fa4841 |
* @param andMask AND mask buffer
|
|
Packit Service |
fa4841 |
* @param andMaskLength AND mask length in bytes
|
|
Packit Service |
fa4841 |
* @param xorBpp XOR bits per pixel
|
|
Packit Service |
fa4841 |
* @param palette palette to use (only used for 8 bit color!)
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return TRUE if success, FALSE otherwise
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
FREERDP_API BOOL freerdp_image_copy_from_pointer_data(
|
|
Packit Service |
fa4841 |
BYTE* pDstData, UINT32 DstFormat, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst,
|
|
Packit Service |
fa4841 |
UINT32 nWidth, UINT32 nHeight, const BYTE* xorMask, UINT32 xorMaskLength,
|
|
Packit Service |
fa4841 |
const BYTE* andMask, UINT32 andMaskLength, UINT32 xorBpp, const gdiPalette* palette);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param pDstData destination buffer
|
|
Packit Service |
fa4841 |
* @param DstFormat destination buffer format
|
|
Packit Service |
fa4841 |
* @param nDstStep destination buffer stride (line in bytes) 0 for default
|
|
Packit Service |
fa4841 |
* @param nXDst destination buffer offset x
|
|
Packit Service |
fa4841 |
* @param nYDst destination buffer offset y
|
|
Packit Service |
fa4841 |
* @param nWidth width to copy in pixels
|
|
Packit Service |
fa4841 |
* @param nHeight height to copy in pixels
|
|
Packit Service |
fa4841 |
* @param pSrcData source buffer
|
|
Packit Service |
fa4841 |
* @param SrcFormat source buffer format
|
|
Packit Service |
fa4841 |
* @param nSrcStep source buffer stride (line in bytes) 0 for default
|
|
Packit Service |
fa4841 |
* @param nXSrc source buffer x offset in pixels
|
|
Packit Service |
fa4841 |
* @param nYSrc source buffer y offset in pixels
|
|
Packit Service |
fa4841 |
* @param palette palette to use (only used for 8 bit color!)
|
|
Packit Service |
fa4841 |
* @param flags Image flipping flags FREERDP_FLIP_NONE et al
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return TRUE if success, FALSE otherwise
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
FREERDP_API BOOL freerdp_image_copy(BYTE* pDstData, DWORD DstFormat, UINT32 nDstStep,
|
|
Packit Service |
fa4841 |
UINT32 nXDst, UINT32 nYDst, UINT32 nWidth, UINT32 nHeight,
|
|
Packit Service |
fa4841 |
const BYTE* pSrcData, DWORD SrcFormat, UINT32 nSrcStep,
|
|
Packit Service |
fa4841 |
UINT32 nXSrc, UINT32 nYSrc, const gdiPalette* palette,
|
|
Packit Service |
fa4841 |
UINT32 flags);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param pDstData destination buffer
|
|
Packit Service |
fa4841 |
* @param DstFormat destination buffer format
|
|
Packit Service |
fa4841 |
* @param nDstStep destination buffer stride (line in bytes) 0 for default
|
|
Packit Service |
fa4841 |
* @param nXDst destination buffer offset x
|
|
Packit Service |
fa4841 |
* @param nYDst destination buffer offset y
|
|
Packit Service |
fa4841 |
* @param nDstWidth width of destination in pixels
|
|
Packit Service |
fa4841 |
* @param nDstHeight height of destination in pixels
|
|
Packit Service |
fa4841 |
* @param pSrcData source buffer
|
|
Packit Service |
fa4841 |
* @param SrcFormat source buffer format
|
|
Packit Service |
fa4841 |
* @param nSrcStep source buffer stride (line in bytes) 0 for default
|
|
Packit Service |
fa4841 |
* @param nXSrc source buffer x offset in pixels
|
|
Packit Service |
fa4841 |
* @param nYSrc source buffer y offset in pixels
|
|
Packit Service |
fa4841 |
* @param nSrcWidth width of source in pixels
|
|
Packit Service |
fa4841 |
* @param nSrcHeight height of source in pixels
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return TRUE if success, FALSE otherwise
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
FREERDP_API BOOL freerdp_image_scale(BYTE* pDstData, DWORD DstFormat, UINT32 nDstStep,
|
|
Packit Service |
fa4841 |
UINT32 nXDst, UINT32 nYDst, UINT32 nDstWidth,
|
|
Packit Service |
fa4841 |
UINT32 nDstHeight, const BYTE* pSrcData, DWORD SrcFormat,
|
|
Packit Service |
fa4841 |
UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc,
|
|
Packit Service |
fa4841 |
UINT32 nSrcWidth, UINT32 nSrcHeight);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/***
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @param pDstData destionation buffer
|
|
Packit Service |
fa4841 |
* @param DstFormat destionation buffer format
|
|
Packit Service |
fa4841 |
* @param nDstStep destionation buffer stride (line in bytes) 0 for default
|
|
Packit Service |
fa4841 |
* @param nXDst destination buffer offset x
|
|
Packit Service |
fa4841 |
* @param nYDst destination buffer offset y
|
|
Packit Service |
fa4841 |
* @param nWidth width to copy in pixels
|
|
Packit Service |
fa4841 |
* @param nHeight height to copy in pixels
|
|
Packit Service |
fa4841 |
* @param color Pixel color in DstFormat (internal representation format,
|
|
Packit Service |
fa4841 |
* use FreeRDPGetColor to create)
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* @return TRUE if success, FALSE otherwise
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
FREERDP_API BOOL freerdp_image_fill(BYTE* pDstData, DWORD DstFormat, UINT32 nDstStep,
|
|
Packit Service |
fa4841 |
UINT32 nXDst, UINT32 nYDst, UINT32 nWidth, UINT32 nHeight,
|
|
Packit Service |
fa4841 |
UINT32 color);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#if !defined(__APPLE__)
|
|
Packit Service |
fa4841 |
#define GetColorFormatName FreeRDPGetColorFormatName
|
|
Packit Service |
fa4841 |
#define GetColor FreeRDPGetColor
|
|
Packit Service |
fa4841 |
#define ConvertColor FreeRDPConvertColor
|
|
Packit Service |
fa4841 |
#endif
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#ifdef __cplusplus
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
#endif
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#endif /* FREERDP_CODEC_COLOR_H */
|