Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
93 lines
1.6 KiB
C
93 lines
1.6 KiB
C
//-----------------------------------------------------------------------------
|
|
//
|
|
// ImageLib Sources
|
|
// Copyright (C) 2000-2002 by Denton Woods
|
|
// Last modified: 05/25/2001 <--Y2K Compliant! =]
|
|
//
|
|
// Filename: src-IL/include/il_rle.h
|
|
//
|
|
// Description: Functions for run-length encoding
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#ifndef RLE_H
|
|
#define RLE_H
|
|
|
|
#include "il_internal.h"
|
|
|
|
#define TGA_MAX_RUN 128
|
|
#define SGI_MAX_RUN 127
|
|
#define BMP_MAX_RUN 127
|
|
|
|
#ifdef IL_RLE_C
|
|
#undef NOINLINE
|
|
#undef INLINE
|
|
#define INLINE
|
|
#endif
|
|
|
|
#ifndef NOINLINE
|
|
INLINE ILuint GetPix(ILubyte *p, ILuint bpp) {
|
|
ILuint Pixel;
|
|
Pixel = (ILuint)*p++;
|
|
|
|
while( bpp-- > 1 ) {
|
|
Pixel <<= 8;
|
|
Pixel |= (ILuint)*p++;
|
|
}
|
|
return Pixel;
|
|
}
|
|
|
|
INLINE ILint CountDiffPixels(ILubyte *p, ILuint bpp, ILuint pixCnt) {
|
|
ILuint pixel;
|
|
ILuint nextPixel = 0;
|
|
ILint n;
|
|
|
|
n = 0;
|
|
if (pixCnt == 1)
|
|
return pixCnt;
|
|
pixel = GetPix(p, bpp);
|
|
|
|
while (pixCnt > 1) {
|
|
p += bpp;
|
|
nextPixel = GetPix(p, bpp);
|
|
if (nextPixel == pixel)
|
|
break;
|
|
pixel = nextPixel;
|
|
++n;
|
|
--pixCnt;
|
|
}
|
|
|
|
if (nextPixel == pixel)
|
|
return n;
|
|
return n + 1;
|
|
}
|
|
|
|
|
|
INLINE ILint CountSamePixels(ILubyte *p, ILuint bpp, ILuint pixCnt) {
|
|
ILuint pixel;
|
|
ILuint nextPixel;
|
|
ILint n;
|
|
|
|
n = 1;
|
|
pixel = GetPix(p, bpp);
|
|
pixCnt--;
|
|
|
|
while (pixCnt > 0) {
|
|
p += bpp;
|
|
nextPixel = GetPix(p, bpp);
|
|
if (nextPixel != pixel)
|
|
break;
|
|
++n;
|
|
--pixCnt;
|
|
}
|
|
|
|
return n;
|
|
}
|
|
#endif
|
|
|
|
ILuint GetPix(ILubyte *p, ILuint bpp);
|
|
ILint CountDiffPixels(ILubyte *p, ILuint bpp, ILuint pixCnt);
|
|
ILint CountSamePixels(ILubyte *p, ILuint bpp, ILuint pixCnt);
|
|
|
|
#endif//RLE_H
|