JD2022-TU1/main/extern/Camcam/LIBS/Input/MAPC.cpp

45 lines
1.1 KiB
C++

#include "TRACK.h"
#include "MEDIA.h"
class MAPC_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_MAPC;};
};
INPUT_IO *MAPC_CREATE(char *Filename)
{
u32 SX,SY;
INPUT_IO *Ret;
Ret = (INPUT_IO *)new(MAPC_Grabber);
SX = SY = 0;
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;};
strcpy((char*)Ret->MediaName,Filename);
if (SX > 512) SX = 512;
if (SY > 512) SY = 512;
if (SX < 4) SX = 4;
if (SY < 4) SY = 4;
Ret->Image.SetSize(SX, SY);
Ret->dTotalTime = 0;
Ret->dAvgFramePerSecond = 30.0;
s32 *pBASE = Ret->Image.GetBase();
for (u32 counterY=0; counterY<SY; counterY++) {
for (u32 counterX=0; counterX<SX; counterX++) {
pBASE[counterX + (SY - counterY - 1)*SX] = ((counterX*256/SX) << 16) | (255 << 8) | (counterY*256/SY);
}
}
return (INPUT_IO *)Ret;
};