46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
|
|
#include "TRACK.h"
|
|
#include "MEDIA.h"
|
|
|
|
|
|
class VOID_Grabber:public INPUT_IO
|
|
{
|
|
public:
|
|
int INIT (class WORLD*){return 0;};
|
|
int FRAME (void){return 0;};
|
|
int END (void){return 0;};
|
|
IOTYPE GetType() {return IOtype_VOID;};
|
|
|
|
};
|
|
|
|
|
|
INPUT_IO *VOID_CREATE(char *Filename)
|
|
{
|
|
u32 SX,SY,Col;
|
|
INPUT_IO *Ret;
|
|
Ret = (INPUT_IO *)new(VOID_Grabber);
|
|
SX = SY = Col = 0;
|
|
strcpy((char*)Ret->MediaName,Filename);
|
|
while (*Filename && (!IsDeci(*Filename))) Filename++;
|
|
while (*Filename && (IsDeci(*Filename))) {SX *= 10; SX += IsDeci(*Filename++) - 1;};
|
|
while (*Filename && (!IsDeci(*Filename))) Filename++;
|
|
while (*Filename && (IsDeci(*Filename))) {SY *= 10; SY += IsDeci(*Filename++) - 1;};
|
|
while (*Filename && (!IsHex(*Filename))) Filename++;
|
|
while (*Filename && (IsHex(*Filename))) {Col *= 16; Col += IsHex(*Filename++) - 1;};
|
|
if (SX > 2048) SX = 2048;
|
|
if (SY > 2048) SY = 2048;
|
|
if (SX < 4) SX = 4;
|
|
if (SY < 4) SY = 4;
|
|
Ret->Image.SetSize(SX, SY);
|
|
Ret->dTotalTime = 0;
|
|
Ret->dAvgFramePerSecond = 30.0;
|
|
|
|
u32 Counter;
|
|
s32 *pBASE = Ret->Image.GetBase();
|
|
Counter = SX * SY;
|
|
while (Counter--)
|
|
pBASE[Counter] = Col;
|
|
return (INPUT_IO *)Ret;
|
|
};
|
|
|
|
|