76 lines
1.7 KiB
C++
76 lines
1.7 KiB
C++
|
|
#include "TRACK.h"
|
|
#include "MEDIA.h"
|
|
#include "SCENE.h"
|
|
|
|
|
|
class BLUR_Grabber:public INPUT_IO
|
|
{
|
|
public:
|
|
float BlurFactor;
|
|
u32 BlurSource;
|
|
WORLD *pScene;
|
|
int INIT (class WORLD*){return 0;};
|
|
int FRAME (void);
|
|
int END (void){return 0;};
|
|
IOTYPE GetType() {return IOtype_BLUR;};
|
|
|
|
};
|
|
|
|
int BLUR_Grabber::FRAME()
|
|
{
|
|
#ifndef SKIMMED_NET
|
|
OneBuf Output;
|
|
#endif
|
|
u32 OK_Continue;
|
|
u32 LastTileNumb;
|
|
u32 X,Y,*Ptr;
|
|
|
|
if (BlurSource == -1) return 0;
|
|
|
|
if (!pScene->ID_MEDIA[BlurSource]) return 0;
|
|
START_RASTER(Blur);
|
|
if (Image.SetSize(pScene->ID_MEDIA[BlurSource]->Image.SX, pScene->ID_MEDIA[BlurSource]->Image.SY, 1))
|
|
{
|
|
if (ulAssociatedTextureIndex != -1)
|
|
pScene->DI->DestroyTexture(ulAssociatedTextureIndex);
|
|
ulAssociatedTextureIndex = pScene->DI->CreateTexture(&Image,ulColorMode);
|
|
}
|
|
|
|
/* Blur */
|
|
|
|
pScene->DI->BeginTextureTarget(ulAssociatedTextureIndex,0);
|
|
pScene->DI->SetViewport(0,0,Image.SX,Image.SY);
|
|
pScene->DI->SetBackGround(pScene->ID_MEDIA[BlurSource]->ulAssociatedTextureIndex);
|
|
pScene->DI->AfterEffect(0,0xffffffff,BlurFactor,0,0,0,0);
|
|
pScene->DI->EndTextureTarget(ulAssociatedTextureIndex,1);
|
|
|
|
STOP_RASTER(Blur);
|
|
|
|
return 0;
|
|
}
|
|
|
|
void BLUR_SETPARAMS(INPUT_IO *pBLUR,u32 BlurSource,float BlurFactor)
|
|
{
|
|
((BLUR_Grabber *)pBLUR)->BlurSource = BlurSource;
|
|
((BLUR_Grabber *)pBLUR)->BlurFactor = BlurFactor;
|
|
}
|
|
|
|
|
|
INPUT_IO *BLUR_CREATE(class WORLD*pScene,char *Filename)
|
|
{
|
|
u32 SX,SY,Col;
|
|
INPUT_IO *Ret;
|
|
Ret = (INPUT_IO *)new(BLUR_Grabber);
|
|
SX = SY = 256;
|
|
((BLUR_Grabber*)Ret)->BlurFactor = 0.0f;
|
|
((BLUR_Grabber*)Ret)->BlurSource = -1;
|
|
((BLUR_Grabber*)Ret)->pScene = pScene;
|
|
strcpy((char*)Ret->MediaName,Filename);
|
|
Ret->Image.SetSize(SX, SY);
|
|
Ret->dTotalTime = 0;
|
|
Ret->dAvgFramePerSecond = 30.0;
|
|
return (INPUT_IO *)Ret;
|
|
};
|
|
|
|
|