This commit is contained in:
parent
7551b4f12e
commit
8788076d39
37 changed files with 11186 additions and 0 deletions
180
Utils/Libs/GinLib/ginio.cpp
Normal file
180
Utils/Libs/GinLib/ginio.cpp
Normal file
|
@ -0,0 +1,180 @@
|
|||
/*=========================================================================
|
||||
|
||||
FILENAME.CPP
|
||||
|
||||
Author: Gary Liddon @
|
||||
Created:
|
||||
Project:
|
||||
Purpose:
|
||||
|
||||
Copyright (c) 1998 G R Liddon
|
||||
|
||||
===========================================================================*/
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Includes
|
||||
-------- */
|
||||
|
||||
/* Std Lib
|
||||
------- */
|
||||
|
||||
/* Glib
|
||||
---- */
|
||||
|
||||
/* Local
|
||||
----- */
|
||||
#include "ginio.h"
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Tyepdefs && Defines
|
||||
------------------- */
|
||||
using namespace std;
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Structure defintions
|
||||
-------------------- */
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function Prototypes
|
||||
------------------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Vars
|
||||
---- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Data
|
||||
---- */
|
||||
vector<GinChunk *> GinFile::ChunkHandlers;
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
GinChunk::GinChunk(void)
|
||||
{
|
||||
Size=0;
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
GinChunk::~GinChunk(void)
|
||||
{
|
||||
DumpData();
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
void GinChunk::Load(Gifstream & In)
|
||||
{
|
||||
Data.resize(Size);
|
||||
In.read((char *)(&Data[0]),Size);
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
void GinFile::AddHandler(GinChunk * New)
|
||||
{
|
||||
ChunkHandlers.push_back(New);
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
GinChunk * GinFile::GetHandler(char const * Name)
|
||||
{
|
||||
GString ChunkName(Name);
|
||||
|
||||
GinChunk * RetChunk;
|
||||
|
||||
RetChunk=NULL;
|
||||
|
||||
for (int f=0;f<ChunkHandlers.size() && !RetChunk;f++)
|
||||
{
|
||||
if (ChunkName==GString(ChunkHandlers[f]->GetName()))
|
||||
RetChunk=ChunkHandlers[f]->MakeNew();
|
||||
}
|
||||
|
||||
|
||||
return(RetChunk);
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
bool GinFile::GinHdr::ReadHdr(Gifstream & In)
|
||||
{
|
||||
vector<char> Str;
|
||||
bool Done;
|
||||
GString RetStr;
|
||||
|
||||
Done=false;
|
||||
|
||||
Str.reserve(1000);
|
||||
|
||||
|
||||
while (In && !In.eof() && !Done)
|
||||
{
|
||||
char c=In.get();
|
||||
|
||||
if (!c)
|
||||
Done=true;
|
||||
|
||||
Str.push_back(c);
|
||||
}
|
||||
|
||||
if (Done)
|
||||
{
|
||||
Name=&Str[0];
|
||||
|
||||
In.Align(4);
|
||||
|
||||
if (In)
|
||||
{
|
||||
Size=In.Get32();
|
||||
}
|
||||
else
|
||||
Done=false;
|
||||
}
|
||||
|
||||
|
||||
return(Done);
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
void GinChunk::DumpData(void)
|
||||
{
|
||||
Size=0;
|
||||
Data.resize(0);
|
||||
}
|
||||
|
||||
/*===========================================================================
|
||||
end */
|
Loading…
Add table
Add a link
Reference in a new issue