This commit is contained in:
parent
8788076d39
commit
1c5c1b4011
59 changed files with 24871 additions and 56 deletions
180
Utils/Libs/GLib/Dpanim.hpp
Normal file
180
Utils/Libs/GLib/Dpanim.hpp
Normal file
|
@ -0,0 +1,180 @@
|
|||
/*=========================================================================
|
||||
|
||||
DPANM.HPP
|
||||
|
||||
Author: Gary Liddon @ Fareham
|
||||
Created:
|
||||
Project:
|
||||
Purpose:
|
||||
|
||||
Copyright (c) 1997 Gary Liddon
|
||||
|
||||
===========================================================================*/
|
||||
|
||||
#ifndef __DPANM_HPP__
|
||||
#define __DPANM_HPP__
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Includes
|
||||
-------- */
|
||||
|
||||
/* Std Lib
|
||||
------- */
|
||||
#include <fstream>
|
||||
#include <vector>
|
||||
|
||||
/* Glib
|
||||
---- */
|
||||
|
||||
/* Local
|
||||
----- */
|
||||
#include "gtypes.h"
|
||||
#include "ganim.hpp"
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Tyepdefs && Defines
|
||||
------------------- */
|
||||
#define MAX_LARGE_PAGE 256
|
||||
#define MAX_RECORDS_PER_LP 256
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Class defintions
|
||||
---------------- */
|
||||
class CompFrame;
|
||||
class LpObj;
|
||||
|
||||
typedef std::vector<LpObj> LpObjVec;
|
||||
|
||||
class GLIB_API DpAnimFilter : public GAnimFilter
|
||||
{
|
||||
public:
|
||||
DpAnimFilter();
|
||||
~DpAnimFilter(void);
|
||||
DpAnimFilter(char const * FName);
|
||||
|
||||
virtual bool Load(GAnim & Anm);
|
||||
virtual bool Save(GAnim & Anm);
|
||||
|
||||
virtual GAnimFilter * Create(char const * Name) {return (new DpAnimFilter(Name));}
|
||||
|
||||
protected:
|
||||
|
||||
class AnimHdr
|
||||
{
|
||||
public:
|
||||
AnimHdr();
|
||||
void InitHdr(void);
|
||||
|
||||
|
||||
ULONG id; // ID == "IPF "
|
||||
UWORD maxLps; // Maximum Number of LPs
|
||||
UWORD nLps; // Number of LPs in file
|
||||
ULONG lRecords; // Number of records in file
|
||||
UWORD maxRecsPerLp; // Maximum number of records per LP
|
||||
UWORD lpfTableOffset; // Offset to start of LP Table
|
||||
ULONG contentType; // == "ANIM"
|
||||
UWORD width; // Width in pixels of drawing
|
||||
UWORD height; // Height in pixel of drawing
|
||||
UBYTE variant;
|
||||
UBYTE version;
|
||||
UBYTE hasLastDelta; // Has a delta for first to last
|
||||
UBYTE lastDeltaValid; // The delta is valid
|
||||
UBYTE pixelType;
|
||||
UBYTE highestBBComp;
|
||||
UBYTE otherRecordsPerFrame;
|
||||
UBYTE bitmapRecordsPerFrame;
|
||||
UBYTE recordTypes[32];
|
||||
ULONG nFrames; // Number of frames in the file
|
||||
UWORD framesPerSecond;
|
||||
UWORD pad2[29];
|
||||
};
|
||||
|
||||
struct ColCycles
|
||||
{
|
||||
ColCycles();
|
||||
|
||||
UWORD count;
|
||||
UWORD rate;
|
||||
UWORD flags;
|
||||
UBYTE low, high;
|
||||
};
|
||||
|
||||
struct LpTable
|
||||
{
|
||||
UWORD baseRecord;
|
||||
UWORD nRecords;
|
||||
UWORD nBytes;
|
||||
};
|
||||
|
||||
struct LpTableMem
|
||||
{
|
||||
UWORD baseRecord;
|
||||
UWORD nRecords;
|
||||
UWORD nBytes;
|
||||
UWORD size[MAX_RECORDS_PER_LP];
|
||||
};
|
||||
|
||||
|
||||
protected:
|
||||
void GetPal(Palette & MyPal);
|
||||
|
||||
|
||||
ULONG anm_init2(char const * filename);
|
||||
ULONG anm_init(FILE * filename);
|
||||
int anm_read_next_frame(void);
|
||||
void anm_read_first_frame(void);
|
||||
|
||||
void read_LP(UWORD LP_to_load);
|
||||
void PlayRunSkipDump(UBYTE const *src, UBYTE *dst);
|
||||
|
||||
UWORD loaded_LP; // Which LP is currently loaded
|
||||
|
||||
UWORD current_Frame; // Which frame is being displayed
|
||||
FILE * inANM; // Input anm file
|
||||
UBYTE * lp_buffer; // Input buffer for the currently loaded LP
|
||||
UBYTE * dst_buffer; // Location to play the frames to
|
||||
|
||||
void InitVars(void);
|
||||
void MakeVars(void);
|
||||
void DeleteVars(void);
|
||||
|
||||
AnimHdr lpfHdr;
|
||||
ColCycles Color_Cycles;
|
||||
LpTable * lpfTable;
|
||||
LpTableMem * current_LP;
|
||||
|
||||
|
||||
void MakeAnim(void);
|
||||
void WriteHdr(std::ofstream & Out,AnimHdr & A);
|
||||
void WriteCycs(std::ofstream & Out);
|
||||
void WritePal(std::ofstream & Out,Palette const & P);
|
||||
void WriteLpTable(std::ofstream & Out,LpObjVec & LpTable);
|
||||
void WriteLps(std::ofstream & Out,LpObjVec & LpTable);
|
||||
void DiscardAnim(void);
|
||||
|
||||
|
||||
void Encode(Frame const & Fr,CompFrame & Cfr);
|
||||
void WriteRun(u8 Val,int Length,CompFrame &Cfr);
|
||||
void WriteDataRun(u8 const * Data,int Length,CompFrame &Cfr);
|
||||
int GetDataLength(u8 const * Src,int BytesLeft);
|
||||
int GetRunLength(u8 const * Src,int BytesLeft);
|
||||
void WriteEnd(CompFrame &Cfr);
|
||||
|
||||
enum
|
||||
{
|
||||
// MAX_RUN_WRITE = 16384-10
|
||||
MAX_RUN_WRITE = 10240
|
||||
};
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
/*---------------------------------------------------------------------- */
|
||||
|
||||
#endif /* __DPANM_HPP__ */
|
||||
|
||||
/*===========================================================================
|
||||
end */
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue