- Added translation support to multipatch textures. Incomplete and not tested yet!
- Added Martin Howe's morph weapon update. SVN r916 (trunk)
This commit is contained in:
parent
ce5d4dba02
commit
b2bfad0c50
19 changed files with 645 additions and 142 deletions
|
|
@ -108,83 +108,113 @@ bool ClipCopyPixelRect(int texwidth, int texheight, int &originx, int &originy,
|
|||
//===========================================================================
|
||||
struct cRGB
|
||||
{
|
||||
static unsigned char R(const unsigned char * p) { return p[0]; }
|
||||
static unsigned char G(const unsigned char * p) { return p[1]; }
|
||||
static unsigned char B(const unsigned char * p) { return p[2]; }
|
||||
static unsigned char A(const unsigned char * p) { return 255; }
|
||||
static int Gray(const unsigned char * p) { return (p[0]*77 + p[1]*143 + p[2]*36)>>8; }
|
||||
static __forceinline unsigned char R(const unsigned char * p) { return p[0]; }
|
||||
static __forceinline unsigned char G(const unsigned char * p) { return p[1]; }
|
||||
static __forceinline unsigned char B(const unsigned char * p) { return p[2]; }
|
||||
static __forceinline unsigned char A(const unsigned char * p) { return 255; }
|
||||
static __forceinline int Gray(const unsigned char * p) { return (p[0]*77 + p[1]*143 + p[2]*36)>>8; }
|
||||
};
|
||||
|
||||
struct cRGBA
|
||||
{
|
||||
static unsigned char R(const unsigned char * p) { return p[0]; }
|
||||
static unsigned char G(const unsigned char * p) { return p[1]; }
|
||||
static unsigned char B(const unsigned char * p) { return p[2]; }
|
||||
static unsigned char A(const unsigned char * p) { return p[3]; }
|
||||
static int Gray(const unsigned char * p) { return (p[0]*77 + p[1]*143 + p[2]*36)>>8; }
|
||||
enum
|
||||
{
|
||||
RED = 0,
|
||||
GREEN = 1,
|
||||
BLUE = 1,
|
||||
ALPHA = 3
|
||||
};
|
||||
static __forceinline unsigned char R(const unsigned char * p) { return p[0]; }
|
||||
static __forceinline unsigned char G(const unsigned char * p) { return p[1]; }
|
||||
static __forceinline unsigned char B(const unsigned char * p) { return p[2]; }
|
||||
static __forceinline unsigned char A(const unsigned char * p) { return p[3]; }
|
||||
static __forceinline int Gray(const unsigned char * p) { return (p[0]*77 + p[1]*143 + p[2]*36)>>8; }
|
||||
};
|
||||
|
||||
struct cIA
|
||||
{
|
||||
static unsigned char R(const unsigned char * p) { return p[0]; }
|
||||
static unsigned char G(const unsigned char * p) { return p[0]; }
|
||||
static unsigned char B(const unsigned char * p) { return p[0]; }
|
||||
static unsigned char A(const unsigned char * p) { return p[1]; }
|
||||
static int Gray(const unsigned char * p) { return p[0]; }
|
||||
static __forceinline unsigned char R(const unsigned char * p) { return p[0]; }
|
||||
static __forceinline unsigned char G(const unsigned char * p) { return p[0]; }
|
||||
static __forceinline unsigned char B(const unsigned char * p) { return p[0]; }
|
||||
static __forceinline unsigned char A(const unsigned char * p) { return p[1]; }
|
||||
static __forceinline int Gray(const unsigned char * p) { return p[0]; }
|
||||
};
|
||||
|
||||
struct cCMYK
|
||||
{
|
||||
static unsigned char R(const unsigned char * p) { return p[3] - (((256-p[0])*p[3]) >> 8); }
|
||||
static unsigned char G(const unsigned char * p) { return p[3] - (((256-p[1])*p[3]) >> 8); }
|
||||
static unsigned char B(const unsigned char * p) { return p[3] - (((256-p[2])*p[3]) >> 8); }
|
||||
static unsigned char A(const unsigned char * p) { return 255; }
|
||||
static int Gray(const unsigned char * p) { return (R(p)*77 + G(p)*143 + B(p)*36)>>8; }
|
||||
static __forceinline unsigned char R(const unsigned char * p) { return p[3] - (((256-p[0])*p[3]) >> 8); }
|
||||
static __forceinline unsigned char G(const unsigned char * p) { return p[3] - (((256-p[1])*p[3]) >> 8); }
|
||||
static __forceinline unsigned char B(const unsigned char * p) { return p[3] - (((256-p[2])*p[3]) >> 8); }
|
||||
static __forceinline unsigned char A(const unsigned char * p) { return 255; }
|
||||
static __forceinline int Gray(const unsigned char * p) { return (R(p)*77 + G(p)*143 + B(p)*36)>>8; }
|
||||
};
|
||||
|
||||
struct cBGR
|
||||
{
|
||||
static unsigned char R(const unsigned char * p) { return p[2]; }
|
||||
static unsigned char G(const unsigned char * p) { return p[1]; }
|
||||
static unsigned char B(const unsigned char * p) { return p[0]; }
|
||||
static unsigned char A(const unsigned char * p) { return 255; }
|
||||
static int Gray(const unsigned char * p) { return (p[2]*77 + p[1]*143 + p[0]*36)>>8; }
|
||||
static __forceinline unsigned char R(const unsigned char * p) { return p[2]; }
|
||||
static __forceinline unsigned char G(const unsigned char * p) { return p[1]; }
|
||||
static __forceinline unsigned char B(const unsigned char * p) { return p[0]; }
|
||||
static __forceinline unsigned char A(const unsigned char * p) { return 255; }
|
||||
static __forceinline int Gray(const unsigned char * p) { return (p[2]*77 + p[1]*143 + p[0]*36)>>8; }
|
||||
};
|
||||
|
||||
struct cBGRA
|
||||
{
|
||||
static unsigned char R(const unsigned char * p) { return p[2]; }
|
||||
static unsigned char G(const unsigned char * p) { return p[1]; }
|
||||
static unsigned char B(const unsigned char * p) { return p[0]; }
|
||||
static unsigned char A(const unsigned char * p) { return p[3]; }
|
||||
static int Gray(const unsigned char * p) { return (p[2]*77 + p[1]*143 + p[0]*36)>>8; }
|
||||
enum
|
||||
{
|
||||
RED = 2,
|
||||
GREEN = 1,
|
||||
BLUE = 0,
|
||||
ALPHA = 3
|
||||
};
|
||||
static __forceinline unsigned char R(const unsigned char * p) { return p[2]; }
|
||||
static __forceinline unsigned char G(const unsigned char * p) { return p[1]; }
|
||||
static __forceinline unsigned char B(const unsigned char * p) { return p[0]; }
|
||||
static __forceinline unsigned char A(const unsigned char * p) { return p[3]; }
|
||||
static __forceinline int Gray(const unsigned char * p) { return (p[2]*77 + p[1]*143 + p[0]*36)>>8; }
|
||||
};
|
||||
|
||||
struct cARGB
|
||||
{
|
||||
enum
|
||||
{
|
||||
RED = 1,
|
||||
GREEN = 2,
|
||||
BLUE = 3,
|
||||
ALPHA = 0
|
||||
};
|
||||
static __forceinline unsigned char R(const unsigned char * p) { return p[1]; }
|
||||
static __forceinline unsigned char G(const unsigned char * p) { return p[2]; }
|
||||
static __forceinline unsigned char B(const unsigned char * p) { return p[3]; }
|
||||
static __forceinline unsigned char A(const unsigned char * p) { return p[0]; }
|
||||
static __forceinline int Gray(const unsigned char * p) { return (p[1]*77 + p[2]*143 + p[3]*36)>>8; }
|
||||
};
|
||||
|
||||
struct cI16
|
||||
{
|
||||
static unsigned char R(const unsigned char * p) { return p[1]; }
|
||||
static unsigned char G(const unsigned char * p) { return p[1]; }
|
||||
static unsigned char B(const unsigned char * p) { return p[1]; }
|
||||
static unsigned char A(const unsigned char * p) { return 255; }
|
||||
static int Gray(const unsigned char * p) { return p[1]; }
|
||||
static __forceinline unsigned char R(const unsigned char * p) { return p[1]; }
|
||||
static __forceinline unsigned char G(const unsigned char * p) { return p[1]; }
|
||||
static __forceinline unsigned char B(const unsigned char * p) { return p[1]; }
|
||||
static __forceinline unsigned char A(const unsigned char * p) { return 255; }
|
||||
static __forceinline int Gray(const unsigned char * p) { return p[1]; }
|
||||
};
|
||||
|
||||
struct cRGB555
|
||||
{
|
||||
static unsigned char R(const unsigned char * p) { return (((*(WORD*)p)&0x1f)<<3); }
|
||||
static unsigned char G(const unsigned char * p) { return (((*(WORD*)p)&0x3e0)>>2); }
|
||||
static unsigned char B(const unsigned char * p) { return (((*(WORD*)p)&0x7c00)>>7); }
|
||||
static unsigned char A(const unsigned char * p) { return p[1]; }
|
||||
static int Gray(const unsigned char * p) { return (R(p)*77 + G(p)*143 + B(p)*36)>>8; }
|
||||
static __forceinline unsigned char R(const unsigned char * p) { return (((*(WORD*)p)&0x1f)<<3); }
|
||||
static __forceinline unsigned char G(const unsigned char * p) { return (((*(WORD*)p)&0x3e0)>>2); }
|
||||
static __forceinline unsigned char B(const unsigned char * p) { return (((*(WORD*)p)&0x7c00)>>7); }
|
||||
static __forceinline unsigned char A(const unsigned char * p) { return 255; }
|
||||
static __forceinline int Gray(const unsigned char * p) { return (R(p)*77 + G(p)*143 + B(p)*36)>>8; }
|
||||
};
|
||||
|
||||
struct cPalEntry
|
||||
{
|
||||
static unsigned char R(const unsigned char * p) { return ((PalEntry*)p)->r; }
|
||||
static unsigned char G(const unsigned char * p) { return ((PalEntry*)p)->g; }
|
||||
static unsigned char B(const unsigned char * p) { return ((PalEntry*)p)->b; }
|
||||
static unsigned char A(const unsigned char * p) { return ((PalEntry*)p)->a; }
|
||||
static int Gray(const unsigned char * p) { return (R(p)*77 + G(p)*143 + B(p)*36)>>8; }
|
||||
static __forceinline unsigned char R(const unsigned char * p) { return ((PalEntry*)p)->r; }
|
||||
static __forceinline unsigned char G(const unsigned char * p) { return ((PalEntry*)p)->g; }
|
||||
static __forceinline unsigned char B(const unsigned char * p) { return ((PalEntry*)p)->b; }
|
||||
static __forceinline unsigned char A(const unsigned char * p) { return ((PalEntry*)p)->a; }
|
||||
static __forceinline int Gray(const unsigned char * p) { return (R(p)*77 + G(p)*143 + B(p)*36)>>8; }
|
||||
};
|
||||
|
||||
enum ColorType
|
||||
|
|
@ -200,5 +230,37 @@ enum ColorType
|
|||
CF_PalEntry
|
||||
};
|
||||
|
||||
enum EBlend
|
||||
{
|
||||
BLEND_NONE = 0,
|
||||
BLEND_INVERSEMAP = 1,
|
||||
BLEND_GOLDMAP = 2,
|
||||
BLEND_REDMAP = 3,
|
||||
BLEND_GREENMAP = 4,
|
||||
BLEND_ICEMAP = 5,
|
||||
BLEND_DESATURATE1 = 6,
|
||||
BLEND_DESATURATE31 = 36,
|
||||
BLEND_MODULATE = -1,
|
||||
BLEND_OVERLAY = -2,
|
||||
};
|
||||
|
||||
struct FCopyInfo
|
||||
{
|
||||
//ECopyOp op;
|
||||
EBlend blend;
|
||||
fixed_t blendcolor[4];
|
||||
// fixed_t alpha;
|
||||
// fixed_t invalpha;
|
||||
|
||||
};
|
||||
|
||||
struct bCopy
|
||||
{
|
||||
static __forceinline void OpC(BYTE &d, BYTE s, BYTE a, FCopyInfo *i) { d = s; }
|
||||
static __forceinline void OpA(BYTE &d, BYTE s, FCopyInfo *i) { d = s; }
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue