📄 xwin.c
字号:
(
*((uint16 *) out) = This->xwin.colmap[*(data++)];
out += 2;
)
/* *INDENT-ON* */
}
else if (This->xwin.xserver_be)
{
while (out < end)
{
value = (uint16) This->xwin.colmap[*(data++)];
BOUT16(out, value);
}
}
else
{
while (out < end)
{
value = (uint16) This->xwin.colmap[*(data++)];
LOUT16(out, value);
}
}
}
/* little endian - conversion happens when colourmap is built */
static void
translate8to24(RDPCLIENT * This, const uint8 * data, uint8 * out, uint8 * end)
{
uint32 value;
if (This->xwin.compatible_arch)
{
while (out < end)
{
value = This->xwin.colmap[*(data++)];
BOUT24(out, value);
}
}
else
{
while (out < end)
{
value = This->xwin.colmap[*(data++)];
LOUT24(out, value);
}
}
}
static void
translate8to32(RDPCLIENT * This, const uint8 * data, uint8 * out, uint8 * end)
{
uint32 value;
if (This->xwin.compatible_arch)
{
/* *INDENT-OFF* */
REPEAT4
(
*((uint32 *) out) = This->xwin.colmap[*(data++)];
out += 4;
)
/* *INDENT-ON* */
}
else if (This->xwin.xserver_be)
{
while (out < end)
{
value = This->xwin.colmap[*(data++)];
BOUT32(out, value);
}
}
else
{
while (out < end)
{
value = This->xwin.colmap[*(data++)];
LOUT32(out, value);
}
}
}
static void
translate15to16(RDPCLIENT * This, const uint16 * data, uint8 * out, uint8 * end)
{
uint16 pixel;
uint16 value;
PixelColour pc;
if (This->xwin.xserver_be)
{
while (out < end)
{
pixel = *(data++);
if (This->xwin.host_be)
{
BSWAP16(pixel);
}
SPLITCOLOUR15(pixel, pc);
value = MAKECOLOUR(pc);
BOUT16(out, value);
}
}
else
{
while (out < end)
{
pixel = *(data++);
if (This->xwin.host_be)
{
BSWAP16(pixel);
}
SPLITCOLOUR15(pixel, pc);
value = MAKECOLOUR(pc);
LOUT16(out, value);
}
}
}
static void
translate15to24(RDPCLIENT * This, const uint16 * data, uint8 * out, uint8 * end)
{
uint32 value;
uint16 pixel;
PixelColour pc;
if (This->xwin.compatible_arch)
{
/* *INDENT-OFF* */
REPEAT3
(
pixel = *(data++);
SPLITCOLOUR15(pixel, pc);
*(out++) = pc.blue;
*(out++) = pc.green;
*(out++) = pc.red;
)
/* *INDENT-ON* */
}
else if (This->xwin.xserver_be)
{
while (out < end)
{
pixel = *(data++);
if (This->xwin.host_be)
{
BSWAP16(pixel);
}
SPLITCOLOUR15(pixel, pc);
value = MAKECOLOUR(pc);
BOUT24(out, value);
}
}
else
{
while (out < end)
{
pixel = *(data++);
if (This->xwin.host_be)
{
BSWAP16(pixel);
}
SPLITCOLOUR15(pixel, pc);
value = MAKECOLOUR(pc);
LOUT24(out, value);
}
}
}
static void
translate15to32(RDPCLIENT * This, const uint16 * data, uint8 * out, uint8 * end)
{
uint16 pixel;
uint32 value;
PixelColour pc;
if (This->xwin.compatible_arch)
{
/* *INDENT-OFF* */
REPEAT4
(
pixel = *(data++);
SPLITCOLOUR15(pixel, pc);
*(out++) = pc.blue;
*(out++) = pc.green;
*(out++) = pc.red;
*(out++) = 0;
)
/* *INDENT-ON* */
}
else if (This->xwin.xserver_be)
{
while (out < end)
{
pixel = *(data++);
if (This->xwin.host_be)
{
BSWAP16(pixel);
}
SPLITCOLOUR15(pixel, pc);
value = MAKECOLOUR(pc);
BOUT32(out, value);
}
}
else
{
while (out < end)
{
pixel = *(data++);
if (This->xwin.host_be)
{
BSWAP16(pixel);
}
SPLITCOLOUR15(pixel, pc);
value = MAKECOLOUR(pc);
LOUT32(out, value);
}
}
}
static void
translate16to16(RDPCLIENT * This, const uint16 * data, uint8 * out, uint8 * end)
{
uint16 pixel;
uint16 value;
PixelColour pc;
if (This->xwin.xserver_be)
{
if (This->xwin.host_be)
{
while (out < end)
{
pixel = *(data++);
BSWAP16(pixel);
SPLITCOLOUR16(pixel, pc);
value = MAKECOLOUR(pc);
BOUT16(out, value);
}
}
else
{
while (out < end)
{
pixel = *(data++);
SPLITCOLOUR16(pixel, pc);
value = MAKECOLOUR(pc);
BOUT16(out, value);
}
}
}
else
{
if (This->xwin.host_be)
{
while (out < end)
{
pixel = *(data++);
BSWAP16(pixel);
SPLITCOLOUR16(pixel, pc);
value = MAKECOLOUR(pc);
LOUT16(out, value);
}
}
else
{
while (out < end)
{
pixel = *(data++);
SPLITCOLOUR16(pixel, pc);
value = MAKECOLOUR(pc);
LOUT16(out, value);
}
}
}
}
static void
translate16to24(RDPCLIENT * This, const uint16 * data, uint8 * out, uint8 * end)
{
uint32 value;
uint16 pixel;
PixelColour pc;
if (This->xwin.compatible_arch)
{
/* *INDENT-OFF* */
REPEAT3
(
pixel = *(data++);
SPLITCOLOUR16(pixel, pc);
*(out++) = pc.blue;
*(out++) = pc.green;
*(out++) = pc.red;
)
/* *INDENT-ON* */
}
else if (This->xwin.xserver_be)
{
if (This->xwin.host_be)
{
while (out < end)
{
pixel = *(data++);
BSWAP16(pixel);
SPLITCOLOUR16(pixel, pc);
value = MAKECOLOUR(pc);
BOUT24(out, value);
}
}
else
{
while (out < end)
{
pixel = *(data++);
SPLITCOLOUR16(pixel, pc);
value = MAKECOLOUR(pc);
BOUT24(out, value);
}
}
}
else
{
if (This->xwin.host_be)
{
while (out < end)
{
pixel = *(data++);
BSWAP16(pixel);
SPLITCOLOUR16(pixel, pc);
value = MAKECOLOUR(pc);
LOUT24(out, value);
}
}
else
{
while (out < end)
{
pixel = *(data++);
SPLITCOLOUR16(pixel, pc);
value = MAKECOLOUR(pc);
LOUT24(out, value);
}
}
}
}
static void
translate16to32(RDPCLIENT * This, const uint16 * data, uint8 * out, uint8 * end)
{
uint16 pixel;
uint32 value;
PixelColour pc;
if (This->xwin.compatible_arch)
{
/* *INDENT-OFF* */
REPEAT4
(
pixel = *(data++);
SPLITCOLOUR16(pixel, pc);
*(out++) = pc.blue;
*(out++) = pc.green;
*(out++) = pc.red;
*(out++) = 0;
)
/* *INDENT-ON* */
}
else if (This->xwin.xserver_be)
{
if (This->xwin.host_be)
{
while (out < end)
{
pixel = *(data++);
BSWAP16(pixel);
SPLITCOLOUR16(pixel, pc);
value = MAKECOLOUR(pc);
BOUT32(out, value);
}
}
else
{
while (out < end)
{
pixel = *(data++);
SPLITCOLOUR16(pixel, pc);
value = MAKECOLOUR(pc);
BOUT32(out, value);
}
}
}
else
{
if (This->xwin.host_be)
{
while (out < end)
{
pixel = *(data++);
BSWAP16(pixel);
SPLITCOLOUR16(pixel, pc);
value = MAKECOLOUR(pc);
LOUT32(out, value);
}
}
else
{
while (out < end)
{
pixel = *(data++);
SPLITCOLOUR16(pixel, pc);
value = MAKECOLOUR(pc);
LOUT32(out, value);
}
}
}
}
static void
translate24to16(RDPCLIENT * This, const uint8 * data, uint8 * out, uint8 * end)
{
uint32 pixel = 0;
uint16 value;
PixelColour pc;
while (out < end)
{
pixel = *(data++) << 16;
pixel |= *(data++) << 8;
pixel |= *(data++);
SPLITCOLOUR24(pixel, pc);
value = MAKECOLOUR(pc);
if (This->xwin.xserver_be)
{
BOUT16(out, value);
}
else
{
LOUT16(out, value);
}
}
}
static void
translate24to24(RDPCLIENT * This, const uint8 * data, uint8 * out, uint8 * end)
{
uint32 pixel;
uint32 value;
PixelColour pc;
if (This->xwin.xserver_be)
{
while (out < end)
{
pixel = *(data++) << 16;
pixel |= *(data++) << 8;
pixel |= *(data++);
SPLITCOLOUR24(pixel, pc);
value = MAKECOLOUR(pc);
BOUT24(out, value);
}
}
else
{
while (out < end)
{
pixel = *(data++) << 16;
pixel |= *(data++) << 8;
pixel |= *(data++);
SPLITCOLOUR24(pixel, pc);
value = MAKECOLOUR(pc);
LOUT24(out, value);
}
}
}
static void
translate24to32(RDPCLIENT * This, const uint8 * data, uint8 * out, uint8 * end)
{
uint32 pixel;
uint32 value;
PixelColour pc;
if (This->xwin.compatible_arch)
{
/* *INDENT-OFF* */
#ifdef NEED_ALIGN
REPEAT4
(
*(out++) = *(data++);
*(out++) = *(data++);
*(out++) = *(data++);
*(out++) = 0;
)
#else
REPEAT4
(
/* Only read 3 bytes. Reading 4 bytes means reading beyond buffer. */
*((uint32 *) out) = *((uint16 *) data) + (*((uint8 *) data + 2) << 16);
out += 4;
data += 3;
)
#endif
/* *INDENT-ON* */
}
else if (This->xwin.xserver_be)
{
while (out < end)
{
pixel = *(data++) << 16;
pixel |= *(data++) << 8;
pixel |= *(data++);
SPLITCOLOUR24(pixel, pc);
value = MAKECOLOUR(pc);
BOUT32(out, value);
}
}
else
{
while (out < end)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -