Files
Client/rylCoder_16.02.2008_src/addons/DevIL/src-IL/src/il_raw.c
LGram16 dd97ddec92 Restructure repository to include all source folders
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>
2025-11-29 20:17:20 +09:00

181 lines
3.4 KiB
C

//-----------------------------------------------------------------------------
//
// ImageLib Sources
// Copyright (C) 2000-2001 by Denton Woods
// Last modified: 05/25/2001 <--Y2K Compliant! =]
//
// Filename: src-IL/src/il_raw.c
//
// Description: "Raw" file functions
//
//-----------------------------------------------------------------------------
#include "il_internal.h"
#ifndef IL_NO_RAW
ILboolean iLoadRawInternal(ILvoid);
ILboolean iSaveRawInternal(ILvoid);
//! Reads a raw file
ILboolean ilLoadRaw(ILconst_string FileName)
{
ILHANDLE RawFile;
ILboolean bRaw = IL_FALSE;
// No need to check for raw
/*if (!iCheckExtension(FileName, "raw")) {
ilSetError(IL_INVALID_EXTENSION);
return bRaw;
}*/
RawFile = iopenr(FileName);
if (RawFile == NULL) {
ilSetError(IL_COULD_NOT_OPEN_FILE);
return bRaw;
}
bRaw = ilLoadRawF(RawFile);
icloser(RawFile);
return bRaw;
}
//! Reads an already-opened raw file
ILboolean ilLoadRawF(ILHANDLE File)
{
ILuint FirstPos;
ILboolean bRet;
iSetInputFile(File);
FirstPos = itell();
bRet = iLoadRawInternal();
iseek(FirstPos, IL_SEEK_SET);
return bRet;
}
//! Reads from a raw memory "lump"
ILboolean ilLoadRawL(const ILvoid *Lump, ILuint Size)
{
iSetInputLump(Lump, Size);
return iLoadRawInternal();
}
// Internal function to load a raw image
ILboolean iLoadRawInternal()
{
if (iCurImage == NULL) {
ilSetError(IL_ILLEGAL_OPERATION);
return IL_FALSE;
}
iCurImage->Width = GetLittleUInt();
iCurImage->Height = GetLittleUInt();
iCurImage->Depth = GetLittleUInt();
iCurImage->Bpp = igetc();
if (iread(&iCurImage->Bpc, 1, 1) != 1)
return IL_FALSE;
if (!ilTexImage(iCurImage->Width, iCurImage->Height, iCurImage->Depth, iCurImage->Bpp, 0, ilGetTypeBpc(iCurImage->Bpc), NULL)) {
return IL_FALSE;
}
iCurImage->Origin = IL_ORIGIN_LOWER_LEFT;
// Tries to read the correct amount of data
if (iread(iCurImage->Data, 1, iCurImage->SizeOfData) < iCurImage->SizeOfData)
return IL_FALSE;
if (ilIsEnabled(IL_ORIGIN_SET)) {
iCurImage->Origin = ilGetInteger(IL_ORIGIN_MODE);
}
else {
iCurImage->Origin = IL_ORIGIN_UPPER_LEFT;
}
if (iCurImage->Bpp == 1)
iCurImage->Format = IL_LUMINANCE;
else if (iCurImage->Bpp == 3)
iCurImage->Format = IL_RGB;
else // 4
iCurImage->Format = IL_RGBA;
ilFixImage();
return IL_TRUE;
}
//! Writes a Raw file
ILboolean ilSaveRaw(ILconst_string FileName)
{
ILHANDLE RawFile;
ILboolean bRaw = IL_FALSE;
if (ilGetBoolean(IL_FILE_MODE) == IL_FALSE) {
if (iFileExists(FileName)) {
ilSetError(IL_FILE_ALREADY_EXISTS);
return IL_FALSE;
}
}
RawFile = iopenw(FileName);
if (RawFile == NULL) {
ilSetError(IL_COULD_NOT_OPEN_FILE);
return bRaw;
}
bRaw = ilSaveRawF(RawFile);
iclosew(RawFile);
return bRaw;
}
//! Writes raw data to an already-opened file
ILboolean ilSaveRawF(ILHANDLE File)
{
iSetOutputFile(File);
return iSaveRawInternal();
}
//! Writes raw data to a memory "lump"
ILboolean ilSaveRawL(ILvoid *Lump, ILuint Size)
{
iSetOutputLump(Lump, Size);
return iSaveRawInternal();
}
// Internal function used to load the raw data.
ILboolean iSaveRawInternal()
{
if (iCurImage == NULL) {
ilSetError(IL_ILLEGAL_OPERATION);
return IL_FALSE;
}
SaveLittleUInt(iCurImage->Width);
SaveLittleUInt(iCurImage->Height);
SaveLittleUInt(iCurImage->Depth);
iputc(iCurImage->Bpp);
iputc(iCurImage->Bpc);
iwrite(iCurImage->Data, 1, iCurImage->SizeOfData);
return IL_TRUE;
}
#endif//IL_NO_RAW