You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1206 lines
23 KiB
C
1206 lines
23 KiB
C
//
|
|
// File: sys_txcopy.h
|
|
//
|
|
// G A M E.O.N.E - LOW LEVEL LIB V1.0
|
|
// Copyright (C) 2001 LEVEL ONE ENTERTAINMENT,
|
|
// Licensed under the terms of LGPL.
|
|
//:---------------------------------------------------------------------------
|
|
//:Description
|
|
//
|
|
// Generic Pixel convertion and copy functions
|
|
//
|
|
//:-----------------------------------------------------------------------------
|
|
// Dieses file in den jeweiligen treibern anpassen
|
|
//
|
|
|
|
//* WARNUNG */ Dieses File muss im driver.h includiert sein nach
|
|
// sys_assert und sys_types in den jeweiligen SYS_PLATORM_ bereich
|
|
|
|
#if !defined(SYS_TXCOPY_INCLUDED)
|
|
#define SYS_TXCOPY_INCLUDED
|
|
|
|
#include <string.h> // memcpy
|
|
|
|
void txCopy_ARGB_to_ARGB(void *D, void *S, int pixels);
|
|
void txCopy_ARGB_to_I8(void *D, void *S, int pixels);
|
|
void txCopy_ARGB_to_RGB332(void *D, void *S, int pixels);
|
|
void txCopy_ARGB_to_RGB555(void *D, void *S, int pixels);
|
|
void txCopy_ARGB_to_RGB565(void *D, void *S, int pixels);
|
|
void txCopy_ARGB_to_RGB888(void *D, void *S, int pixels);
|
|
void txCopy_I8_to_ARGB(void *D, void *S, int pixels);
|
|
void txCopy_I8_to_I8(void *D, void *S, int pixels);
|
|
void txCopy_I8_to_RGB332(void *D, void *S, int pixels);
|
|
void txCopy_I8_to_RGB555(void *D, void *S, int pixels);
|
|
void txCopy_I8_to_RGB565(void *D, void *S, int pixels);
|
|
void txCopy_I8_to_RGB888(void *D, void *S, int pixels);
|
|
void txCopy_P8_to_ARGB(void *D, void *S, TxU32 *pal, int pixels);
|
|
void txCopy_P8_to_I8(void *D, void *S, TxU32 *pal, int pixels);
|
|
void txCopy_P8_to_RGB332(void *D, void *S, TxU32 *pal, int pixels);
|
|
void txCopy_P8_to_RGB555(void *D, void *S, TxU32 *pal, int pixels);
|
|
void txCopy_P8_to_RGB565(void *D, void *S, TxU32 *pal, int pixels);
|
|
void txCopy_P8_to_RGB888(void *D, void *S, TxU32 *pal, int pixels);
|
|
void txCopy_RGB332_to_ARGB(void *D, void *S, int pixels);
|
|
void txCopy_RGB332_to_I8(void *D, void *S, int pixels);
|
|
void txCopy_RGB332_to_RGB332(void *D, void *S, int pixels);
|
|
void txCopy_RGB332_to_RGB555(void *D, void *S, int pixels);
|
|
void txCopy_RGB332_to_RGB565(void *D, void *S, int pixels);
|
|
void txCopy_RGB332_to_RGB888(void *D, void *S, int pixels);
|
|
void txCopy_RGB555_to_ARGB(void *D, void *S, int pixels);
|
|
void txCopy_RGB555_to_I8(void *D, void *S, int pixels);
|
|
void txCopy_RGB555_to_RGB332(void *D, void *S, int pixels);
|
|
void txCopy_RGB555_to_RGB555(void *D, void *S, int pixels);
|
|
void txCopy_RGB555_to_RGB565(void *D, void *S, int pixels);
|
|
void txCopy_RGB555_to_RGB888(void *D, void *S, int pixels);
|
|
void txCopy_RGB565_to_ARGB(void *D, void *S, int pixels);
|
|
void txCopy_RGB565_to_I8(void *D, void *S, int pixels);
|
|
void txCopy_RGB565_to_RGB332(void *D, void *S, int pixels);
|
|
void txCopy_RGB565_to_RGB555(void *D, void *S, int pixels);
|
|
void txCopy_RGB565_to_RGB565(void *D, void *S, int pixels);
|
|
void txCopy_RGB565_to_RGB888(void *D, void *S, int pixels);
|
|
void txCopy_RGB888_to_ARGB(void *D, void *S, int pixels);
|
|
void txCopy_RGB888_to_I8(void *D, void *S, int pixels);
|
|
void txCopy_RGB888_to_RGB332(void *D, void *S, int pixels);
|
|
void txCopy_RGB888_to_RGB555(void *D, void *S, int pixels);
|
|
void txCopy_RGB888_to_RGB565(void *D, void *S, int pixels);
|
|
void txCopy_RGB888_to_RGB888(void *D, void *S, int pixels);
|
|
void txCopy_RxGxBx_to_ARGB(void *D, void *S, int width, int height);
|
|
|
|
//::36
|
|
// +-------------------------+
|
|
// | txCopy_ARGB_to_ARGB() |
|
|
// +-------------------------+
|
|
|
|
inline void txCopy_ARGB_to_ARGB(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
SYS_ASSERT_PTR((TxU8*)src);
|
|
SYS_ASSERT_PTR((TxU8*)dst);
|
|
|
|
memcpy(dst,src,pixels*4);
|
|
}
|
|
|
|
//::48
|
|
// +-----------------------+
|
|
// | txCopy_ARGB_to_I8() |
|
|
// +-----------------------+
|
|
|
|
inline void txCopy_ARGB_to_I8(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxU32 * SPtr = (TxU32*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
TxU32 argb = *SPtr;
|
|
|
|
*DPtr = (TxU8) (((argb>>16)&0xFF) * 0.30F +
|
|
((argb>>8)&0xFF) * 0.59F +
|
|
(argb&0xFF) * 0.11F + 0.5F);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::37
|
|
// +---------------------------+
|
|
// | txCopy_ARGB_to_RGB332() |
|
|
// +---------------------------+
|
|
|
|
inline void txCopy_ARGB_to_RGB332(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxU32 * SPtr = (TxU32*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
TxU32 argb = *SPtr;
|
|
|
|
*DPtr = (TxU8) ((argb>>16)&0xE0) |
|
|
(TxU8) ((argb>>11)&0x1C) |
|
|
(TxU8) ((argb>>6 )&0x03);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::38
|
|
// +---------------------------+
|
|
// | txCopy_ARGB_to_RGB555() |
|
|
// +---------------------------+
|
|
|
|
inline void txCopy_ARGB_to_RGB555(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU16 * DPtr = (TxU16*) dst;
|
|
TxU32 * SPtr = (TxU32*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
TxU32 argb = *SPtr;
|
|
|
|
*DPtr = (TxU16) ((argb>>9)&0x7C00) |
|
|
(TxU16) ((argb>>6)&0x03E0) |
|
|
(TxU16) ((argb>>3)&0x001F);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::39
|
|
// +---------------------------+
|
|
// | txCopy_ARGB_to_RGB565() |
|
|
// +---------------------------+
|
|
|
|
inline void txCopy_ARGB_to_RGB565(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU16 * DPtr = (TxU16*) dst;
|
|
TxU32 * SPtr = (TxU32*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
TxU32 argb = *SPtr;
|
|
|
|
*DPtr = (TxU16) ((argb>>8)&0xF800) |
|
|
(TxU16) ((argb>>5)&0x07E0) |
|
|
(TxU16) ((argb>>3)&0x001F);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::40
|
|
// +---------------------------+
|
|
// | txCopy_ARGB_to_RGB888() |
|
|
// +---------------------------+
|
|
|
|
inline void txCopy_ARGB_to_RGB888(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr++ = *SPtr++;
|
|
*DPtr++ = *SPtr++;
|
|
*DPtr++ = *SPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::49
|
|
// +-----------------------+
|
|
// | txCopy_I8_to_ARGB() |
|
|
// +-----------------------+
|
|
|
|
inline void txCopy_I8_to_ARGB(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU32 * DPtr = (TxU32*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
TxU32 argb = (TxU32) *SPtr;
|
|
|
|
*DPtr = argb<< 24 | argb<<16 | argb<<8 | argb;
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::50
|
|
// +---------------------+
|
|
// | txCopy_I8_to_I8() |
|
|
// +---------------------+
|
|
|
|
|
|
inline void txCopy_I8_to_I8(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
SYS_ASSERT_PTR((TxU8*)src);
|
|
SYS_ASSERT_PTR((TxU8*)dst);
|
|
|
|
memcpy(dst,src,pixels);
|
|
}
|
|
|
|
|
|
//::51
|
|
// +-------------------------+
|
|
// | txCopy_I8_to_RGB332() |
|
|
// +-------------------------+
|
|
|
|
inline void txCopy_I8_to_RGB332(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
TxU8 argb = *SPtr;
|
|
|
|
*DPtr = (TxU8) (argb&0xE0) |
|
|
(TxU8) ((argb>>3)&0x1C) |
|
|
(TxU8) ((argb>>6)&0x03);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::52
|
|
// +-------------------------+
|
|
// | txCopy_I8_to_RGB555() |
|
|
// +-------------------------+
|
|
|
|
inline void txCopy_I8_to_RGB555(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU16 * DPtr = (TxU16*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
TxU16 argb = (TxU16) *SPtr;
|
|
|
|
*DPtr = (TxU16) ((argb<<7)&0x7C00) |
|
|
(TxU16) ((argb<<2)&0x03E0) |
|
|
(TxU16) ((argb>>3)&0x001F);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::53
|
|
// +-------------------------+
|
|
// | txCopy_I8_to_RGB565() |
|
|
// +-------------------------+
|
|
|
|
inline void txCopy_I8_to_RGB565(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU16 * DPtr = (TxU16*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
TxU16 argb = (TxU16) *SPtr;
|
|
|
|
*DPtr = (TxU16) ((argb<<8)&0xF800) |
|
|
(TxU16) ((argb<<3)&0x07E0) |
|
|
(TxU16) ((argb>>3)&0x001F);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::54
|
|
// +-------------------------+
|
|
// | txCopy_I8_to_RGB888() |
|
|
// +-------------------------+
|
|
|
|
inline void txCopy_I8_to_RGB888(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr++ = *SPtr;
|
|
*DPtr++ = *SPtr;
|
|
*DPtr++ = *SPtr;
|
|
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::21
|
|
// +-----------------------+
|
|
// | txCopy_P8_to_ARGB() |
|
|
// +-----------------------+
|
|
|
|
inline void txCopy_P8_to_ARGB(
|
|
void *dst,
|
|
void *src,
|
|
TxU32 *pal, // Farbpalette pal[256]
|
|
int pixels) // Pixel Count
|
|
{
|
|
SYS_ASSERT_PTR(pal);
|
|
|
|
TxU32 * DPtr = (TxU32*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = pal[ *SPtr ];
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::55
|
|
// +---------------------+
|
|
// | txCopy_P8_to_I8() |
|
|
// +---------------------+
|
|
|
|
inline void txCopy_P8_to_I8(
|
|
void *dst,
|
|
void *src,
|
|
TxU32 *pal, // Farbpalette pal[256]
|
|
int pixels) // Pixel Count
|
|
{
|
|
SYS_ASSERT_PTR(pal);
|
|
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
TxU32 argb = pal[ *SPtr ];
|
|
|
|
*DPtr = (TxU8) (((argb>>16)&0xFF) * 0.30F +
|
|
((argb>>8)&0xFF) * 0.59F +
|
|
(argb&0xFF) * 0.11F + 0.5F);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::19
|
|
// +-------------------------+
|
|
// | txCopy_P8_to_RGB332() |
|
|
// +-------------------------+
|
|
|
|
inline void txCopy_P8_to_RGB332(
|
|
void *dst,
|
|
void *src,
|
|
TxU32 *pal, // Farbpalette pal[256]
|
|
int pixels) // Pixel Count
|
|
{
|
|
SYS_ASSERT_PTR(pal);
|
|
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
TxU32 argb = pal[ *SPtr ];
|
|
|
|
*DPtr = (TxU8) ((argb>>16)&0xE0) |
|
|
(TxU8) ((argb>>11)&0x1C) |
|
|
(TxU8) ((argb>>6 )&0x03);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::22
|
|
// +-------------------------+
|
|
// | txCopy_P8_to_RGB555() |
|
|
// +-------------------------+
|
|
|
|
inline void txCopy_P8_to_RGB555(
|
|
void *dst,
|
|
void *src,
|
|
TxU32 *pal, // Farbpalette pal[256]
|
|
int pixels) // Pixel Count
|
|
{
|
|
SYS_ASSERT_PTR(pal);
|
|
|
|
TxU16 * DPtr = (TxU16*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
TxU32 argb = pal[ *SPtr ];
|
|
|
|
*DPtr = (TxU16) ((argb>>9)&0x7C00) |
|
|
(TxU16) ((argb>>6)&0x03E0) |
|
|
(TxU16) ((argb>>3)&0x001F);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::23
|
|
// +-------------------------+
|
|
// | txCopy_P8_to_RGB565() |
|
|
// +-------------------------+
|
|
|
|
inline void txCopy_P8_to_RGB565(
|
|
void *dst,
|
|
void *src,
|
|
TxU32 *pal, // Farbpalette pal[256]
|
|
int pixels) // Pixel Count
|
|
{
|
|
SYS_ASSERT_PTR(pal);
|
|
|
|
TxU16 * DPtr = (TxU16*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(SPtr);
|
|
SYS_ASSERT_PTR(DPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
TxU32 argb = pal[ *SPtr ];
|
|
|
|
*DPtr = (TxU16) ((argb>>8)&0xF800) |
|
|
(TxU16) ((argb>>5)&0x07E0) |
|
|
(TxU16) ((argb>>3)&0x001F);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::24
|
|
// +-------------------------+
|
|
// | txCopy_P8_to_RGB888() |
|
|
// +-------------------------+
|
|
|
|
inline void txCopy_P8_to_RGB888(
|
|
void *dst,
|
|
void *src,
|
|
TxU32 *pal, // Farbpalette pal[256]
|
|
int pixels) // Pixel Count
|
|
{
|
|
SYS_ASSERT_PTR(pal);
|
|
|
|
TxRGB * DPtr = (TxRGB*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = pal[ *SPtr ];
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::20
|
|
// +---------------------------+
|
|
// | txCopy_RGB332_to_ARGB() |
|
|
// +---------------------------+
|
|
|
|
inline void txCopy_RGB332_to_ARGB(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU32 * DPtr = (TxU32*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = (TxU32) ((*SPtr&0xE0)<<16) |
|
|
(TxU32) ((*SPtr&0x1c)<<11) |
|
|
(TxU32) ((*SPtr&0x03)<<6);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::56
|
|
// +-------------------------+
|
|
// | txCopy_RGB332_to_I8() |
|
|
// +-------------------------+
|
|
|
|
inline void txCopy_RGB332_to_I8(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = (TxU8) ((*SPtr&0xE0) * 0.30F +
|
|
((*SPtr&0x1c)<<3) * 0.59F +
|
|
((*SPtr&0x03)<<5) * 0.11F + 0.5F);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::25
|
|
// +-----------------------------+
|
|
// | txCopy_RGB332_to_RGB332() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB332_to_RGB332(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
SYS_ASSERT_PTR((TxU8*)src);
|
|
SYS_ASSERT_PTR((TxU8*)dst);
|
|
|
|
memcpy(dst,src,pixels);
|
|
}
|
|
|
|
//::13
|
|
// +-----------------------------+
|
|
// | txCopy_RGB332_to_RGB555() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB332_to_RGB555(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU16 * DPtr = (TxU16*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = (TxU16) ( (*SPtr&0xE0) << 7 ) |
|
|
(TxU16) ( (*SPtr&0x1c) << 5 ) |
|
|
(TxU16) ( (*SPtr&0x03)) ;
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::46
|
|
// +-----------------------------+
|
|
// | txCopy_RGB332_to_RGB565() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB332_to_RGB565(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU16 * DPtr = (TxU16*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = (TxU16) ( (*SPtr&0xE0) << 8 ) |
|
|
(TxU16) ( (*SPtr&0x1c) << 6 ) |
|
|
(TxU16) ( (*SPtr&0x03)) ;
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::15
|
|
// +-----------------------------+
|
|
// | txCopy_RGB332_to_RGB888() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB332_to_RGB888(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxRGB * DPtr = (TxRGB*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
(*DPtr).r = (*SPtr&0xE0);
|
|
(*DPtr).g = (*SPtr&0x1c) << 3;
|
|
(*DPtr).b = (*SPtr&0x03) << 6;
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::27
|
|
// +---------------------------+
|
|
// | txCopy_RGB555_to_ARGB() |
|
|
// +---------------------------+
|
|
|
|
inline void txCopy_RGB555_to_ARGB(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU32 * DPtr = (TxU32*) dst;
|
|
TxU16 * SPtr = (TxU16*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = (TxU32) ((*SPtr&0x7c00)<<9) |
|
|
(TxU32) ((*SPtr&0x03e0)<<6) |
|
|
(TxU32) ((*SPtr&0x001f)<<3);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::57
|
|
// +-------------------------+
|
|
// | txCopy_RGB555_to_I8() |
|
|
// +-------------------------+
|
|
|
|
inline void txCopy_RGB555_to_I8(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxU16 * SPtr = (TxU16*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = (TxU8) (((*SPtr&0x7C00) >> 7) * 0.30F +
|
|
((*SPtr&0x03E0) >> 2) * 0.59F +
|
|
((*SPtr&0x001F) << 3) * 0.11F + 0.5F);
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::28
|
|
// +-----------------------------+
|
|
// | txCopy_RGB555_to_RGB332() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB555_to_RGB332(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxU16 * SPtr = (TxU16*) src;
|
|
|
|
SYS_ASSERT_PTR(SPtr);
|
|
SYS_ASSERT_PTR(DPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = ((*SPtr>>7)&0xE0) |
|
|
((*SPtr>>5)&0x1C) |
|
|
((*SPtr>>3)&0x03);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::29
|
|
// +-----------------------------+
|
|
// | txCopy_RGB555_to_RGB555() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB555_to_RGB555(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
SYS_ASSERT_PTR((TxU8*)src);
|
|
SYS_ASSERT_PTR((TxU8*)dst);
|
|
|
|
memcpy(dst,src,pixels*2);
|
|
}
|
|
|
|
//::14
|
|
// +-----------------------------+
|
|
// | txCopy_RGB555_to_RGB565() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB555_to_RGB565(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU16 * DPtr = (TxU16*) dst;
|
|
TxU16 * SPtr = (TxU16*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = ((*SPtr&0x7C00) << 1 ) |
|
|
((*SPtr&0x03E0) << 1 ) |
|
|
((*SPtr&0x001F)) ;
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::30
|
|
// +-----------------------------+
|
|
// | txCopy_RGB555_to_RGB888() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB555_to_RGB888(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxRGB * DPtr = (TxRGB*) dst;
|
|
TxU16 * SPtr = (TxU16*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
(*DPtr).r = (*SPtr&0x7C00) >> 7;
|
|
(*DPtr).g = (*SPtr&0x03E0) >> 2;
|
|
(*DPtr).b = (*SPtr&0x001F) << 3;
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::31
|
|
// +---------------------------+
|
|
// | txCopy_RGB565_to_ARGB() |
|
|
// +---------------------------+
|
|
|
|
inline void txCopy_RGB565_to_ARGB(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU32 * DPtr = (TxU32*) dst;
|
|
TxU16 * SPtr = (TxU16*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = (TxU32) ((*SPtr&0xF800)<<8) |
|
|
(TxU32) ((*SPtr&0x07e0)<<5) |
|
|
(TxU32) ((*SPtr&0x001f)<<3);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::58
|
|
// +-------------------------+
|
|
// | txCopy_RGB565_to_I8() |
|
|
// +-------------------------+
|
|
|
|
inline void txCopy_RGB565_to_I8(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxU16 * SPtr = (TxU16*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = (TxU8) (((*SPtr&0xF800) >> 8) * 0.30F +
|
|
((*SPtr&0x07E0) >> 3) * 0.59F +
|
|
((*SPtr&0x001F) << 3) * 0.11F + 0.5F);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::32
|
|
// +-----------------------------+
|
|
// | txCopy_RGB565_to_RGB332() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB565_to_RGB332(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxU16 * SPtr = (TxU16*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = ((*SPtr>>8)&0xE0) |
|
|
((*SPtr>>6)&0x1C) |
|
|
((*SPtr>>3)&0x03);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::33
|
|
// +-----------------------------+
|
|
// | txCopy_RGB565_to_RGB555() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB565_to_RGB555(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU16 * DPtr = (TxU16*) dst;
|
|
TxU16 * SPtr = (TxU16*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = ((*SPtr&0xF800) >> 1 ) |
|
|
((*SPtr&0x07C0) >> 1 ) |
|
|
((*SPtr&0x001F)) ;
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::34
|
|
// +-----------------------------+
|
|
// | txCopy_RGB565_to_RGB565() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB565_to_RGB565(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
SYS_ASSERT_PTR((TxU8*)src);
|
|
SYS_ASSERT_PTR((TxU8*)dst);
|
|
|
|
memcpy(dst,src,pixels*2);
|
|
}
|
|
|
|
//::35
|
|
// +-----------------------------+
|
|
// | txCopy_RGB565_to_RGB888() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB565_to_RGB888(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxRGB * DPtr = (TxRGB*) dst;
|
|
TxU16 * SPtr = (TxU16*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
(*DPtr).r = (*SPtr&0xF800) >> 8;
|
|
(*DPtr).g = (*SPtr&0x07E0) >> 3;
|
|
(*DPtr).b = (*SPtr&0x001F) << 3;
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::41
|
|
// +---------------------------+
|
|
// | txCopy_RGB888_to_ARGB() |
|
|
// +---------------------------+
|
|
|
|
inline void txCopy_RGB888_to_ARGB(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr++ = *SPtr++;
|
|
*DPtr++ = *SPtr++;
|
|
*DPtr++ = *SPtr++;
|
|
*DPtr++ = 0x00;
|
|
}
|
|
}
|
|
|
|
//::59
|
|
// +-------------------------+
|
|
// | txCopy_RGB888_to_I8() |
|
|
// +-------------------------+
|
|
|
|
inline void txCopy_RGB888_to_I8(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxRGB * SPtr = (TxRGB*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = (TxU8) ((*SPtr).r * 0.30F +
|
|
(*SPtr).g * 0.59F +
|
|
(*SPtr).b * 0.11F + 0.5F);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::42
|
|
// +-----------------------------+
|
|
// | txCopy_RGB888_to_RGB332() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB888_to_RGB332(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU8 * DPtr = (TxU8*) dst;
|
|
TxRGB * SPtr = (TxRGB*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = (((*SPtr).r)&0xE0) |
|
|
(((*SPtr).g>>3)&0x1C) |
|
|
(((*SPtr).b>>6)&0x03);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::43
|
|
// +-----------------------------+
|
|
// | txCopy_RGB888_to_RGB555() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB888_to_RGB555(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU16 * DPtr = (TxU16*) dst;
|
|
TxRGB * SPtr = (TxRGB*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
*DPtr = (((TxU16)((*SPtr).r)<<7)&0x7C00) |
|
|
(((TxU16)((*SPtr).g)<<2)&0x03E0) |
|
|
(((TxU16)((*SPtr).b)>>3)&0x001F);
|
|
|
|
DPtr++;
|
|
SPtr++;
|
|
}
|
|
}
|
|
|
|
//::44
|
|
// +-----------------------------+
|
|
// | txCopy_RGB888_to_RGB565() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB888_to_RGB565(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
TxU16 * DPtr = (TxU16*) dst;
|
|
TxU8 * SPtr = (TxU8*) src;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtr);
|
|
|
|
|
|
while( pixels-- > 0 )
|
|
{
|
|
|
|
*DPtr = (((TxU16)(SPtr[2])<<8)&0xF800) |
|
|
(((TxU16)(SPtr[1])<<3)&0x07E0) |
|
|
(((TxU16)(SPtr[0])>>3)&0x001F);
|
|
|
|
DPtr++;
|
|
SPtr+=3;
|
|
}
|
|
}
|
|
|
|
//::45
|
|
// +-----------------------------+
|
|
// | txCopy_RGB888_to_RGB888() |
|
|
// +-----------------------------+
|
|
|
|
inline void txCopy_RGB888_to_RGB888(
|
|
void *dst,
|
|
void *src,
|
|
int pixels) // Pixel Count
|
|
{
|
|
SYS_ASSERT_PTR((TxU8*)src);
|
|
SYS_ASSERT_PTR((TxU8*)dst);
|
|
|
|
memcpy(dst,src,pixels*3);
|
|
}
|
|
|
|
//::41
|
|
// +---------------------------+
|
|
// | txCopy_RxGxBx_to_ARGB() |
|
|
// +---------------------------+
|
|
// scanlines RRRRR
|
|
// scanlines GGGGG
|
|
// scanlines BBBBB
|
|
// scanlines RRR...
|
|
|
|
inline void txCopy_RxGxBx_to_ARGB(
|
|
void *dst,
|
|
void *src,
|
|
int width,
|
|
int height) // Pixel Count
|
|
{
|
|
TxU32 * DPtr = (TxU32*) dst;
|
|
TxU8 * SPtrR = (TxU8*) src;
|
|
TxU8 * SPtrG = SPtrR + width;
|
|
TxU8 * SPtrB = SPtrG + width;
|
|
int wadd = width << 1;
|
|
|
|
SYS_ASSERT_PTR(DPtr);
|
|
SYS_ASSERT_PTR(SPtrR);
|
|
|
|
while( height-- > 0 )
|
|
{
|
|
int w = width;
|
|
while( w -- > 0 )
|
|
{
|
|
*DPtr++ = (TxU32((*SPtrR++)) << 16) |
|
|
(TxU32((*SPtrG++)) << 8) |
|
|
(TxU32((*SPtrB++)) );
|
|
}
|
|
SPtrR += wadd;
|
|
SPtrG += wadd;
|
|
SPtrB += wadd;
|
|
}
|
|
}
|
|
|
|
#endif // SYS_TXCOPY_INCLUDED
|