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

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;
};