gstreamer/gst/goom/lines.c

91 lines
2.6 KiB
C
Raw Normal View History

/*
* lines.c
* iTunesXPlugIn
*
* Created by guillaum on Tue Aug 14 2001.
* Copyright (c) 2001 __CompanyName__. All rights reserved.
*
*/
#include "lines.h"
#include <math.h>
extern unsigned int resolx,resoly;
inline unsigned char lighten(unsigned char value,unsigned char power)
{
unsigned char i;
for (i=0;i < power; i++) value += (255-value)/5;
return value;
}
void goom_lines(gint16 data [2][512], unsigned int ID,unsigned int* p, guint32 power)
{
guint32 color1;
guint32 color2;
unsigned char * color = 1 + (unsigned char *) &color1;
switch (ID)
{
case 0: /* Horizontal stereo lines */
{
color1 = 0x0000AA00;
color2 = 0x00AA0000;
break;
}
case 1: /* Stereo circles */
{
color1 = 0x00AA33DD;
color2 = 0x00AA33DD;
break;
}
}
*color = lighten(*color,power);
color++;
* color = lighten(*color,power);
color++;
* color = lighten(*color,power);
color = 1 + (unsigned char *) &color2;
* color = lighten(*color,power);
color++;
* color = lighten(*color,power);
color++;
* color = lighten(*color,power);
switch (ID)
{
case 0: /* Horizontal stereo lines */
{
unsigned int i;
for (i=0;i<512;i++)
{
guint32 plot ;
plot = i * resolx / 512 + (resoly / 4 + data[0][i] / 1600) * resolx;
p[plot] = color1;
p[plot+1] = color1;
plot = i * resolx / 512 + (resoly * 3 / 4 - data[1][i] / 1600) * resolx;
p[plot] = color2;
p[plot+1] = color2;
}
break;
}
case 1: /* Stereo circles */
{
float z;
unsigned int monX = resolx/2;
float monY = resoly/4;
float monY2 = resoly/2;
for (z=0;z<6.2832f; z+=1.0f/monY)
{
/* float offset1 = 128+data[1][(unsigned int)(z*81.33f)])/200000; */
p[ monX + (unsigned int)( (monY + ((float)resoly) * (128+data[1][(unsigned int)(z*81.33f)])/200000) * cos (z) + resolx * (unsigned int)( monY2 + (monY + ((float)resoly)*(128+data[1][(unsigned int)(z*81.33f)])/400000) * sin (z)))] = color1;
p[ monX + (unsigned int)((monY - ((float)resoly) * (128+data[0][(unsigned int)(z*81.33f)])/200000) * cos (z) + resolx * (unsigned int)( monY2 + (monY - ((float)resoly)*(128+data[0][(unsigned int)(z*81.33f)])/400000) * sin (z)))] = color2;
}
break;
}
}
}