mirror of
https://github.com/clementine-player/Clementine
synced 2024-12-16 19:31:02 +01:00
94 lines
1.8 KiB
C++
94 lines
1.8 KiB
C++
/*
|
|
* VideoEcho.cpp
|
|
*
|
|
* Created on: Jun 29, 2008
|
|
* Author: pete
|
|
*/
|
|
|
|
#include "Common.hpp"
|
|
|
|
#ifdef USE_GLES1
|
|
#include <GLES/gl.h>
|
|
#else
|
|
#ifdef __APPLE__
|
|
#include <OpenGL/gl.h>
|
|
#include <OpenGL/glu.h>
|
|
#else
|
|
#include <GL/gl.h>
|
|
#include <GL/glu.h>
|
|
#endif
|
|
#endif
|
|
|
|
#include "VideoEcho.hpp"
|
|
|
|
VideoEcho::VideoEcho(): a(0), zoom(1), orientation(Normal)
|
|
{
|
|
// TODO Auto-generated constructor stub
|
|
|
|
}
|
|
|
|
VideoEcho::~VideoEcho()
|
|
{
|
|
// TODO Auto-generated destructor stub
|
|
}
|
|
|
|
void VideoEcho::Draw(RenderContext &context)
|
|
{
|
|
|
|
|
|
glEnable(GL_TEXTURE_2D);
|
|
|
|
|
|
float tex[4][2] = {{0, 1},
|
|
{0, 0},
|
|
{1, 0},
|
|
{1, 1}};
|
|
|
|
float points[4][2] = {{-0.5, -0.5},
|
|
{-0.5, 0.5},
|
|
{ 0.5, 0.5},
|
|
{ 0.5, -0.5}};
|
|
|
|
glEnableClientState(GL_VERTEX_ARRAY);
|
|
glDisableClientState(GL_COLOR_ARRAY);
|
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
|
|
|
glVertexPointer(2,GL_FLOAT,0,points);
|
|
glTexCoordPointer(2,GL_FLOAT,0,tex);
|
|
|
|
//Now Blend the Video Echo
|
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
|
|
glMatrixMode(GL_TEXTURE);
|
|
|
|
//draw video echo
|
|
glColor4f(1.0, 1.0, 1.0, a * masterAlpha);
|
|
glTranslatef(.5, .5, 0);
|
|
glScalef(1.0/zoom, 1.0/zoom, 1);
|
|
glTranslatef(-.5, -.5, 0);
|
|
|
|
int flipx=1, flipy=1;
|
|
switch (orientation)
|
|
{
|
|
case Normal: flipx=1;flipy=1;break;
|
|
case FlipX: flipx=-1;flipy=1;break;
|
|
case FlipY: flipx=1;flipy=-1;break;
|
|
case FlipXY: flipx=-1;flipy=-1;break;
|
|
default: flipx=1;flipy=1; break;
|
|
}
|
|
|
|
float pointsFlip[4][2] = {{-0.5*flipx, -0.5*flipy},
|
|
{-0.5*flipx, 0.5*flipy},
|
|
{ 0.5*flipx, 0.5*flipy},
|
|
{ 0.5*flipx, -0.5*flipy}};
|
|
|
|
glVertexPointer(2,GL_FLOAT,0,pointsFlip);
|
|
glDrawArrays(GL_TRIANGLE_FAN,0,4);
|
|
|
|
glDisable(GL_TEXTURE_2D);
|
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
|
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
|
|
|
}
|