Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
96
Src/Plugins/Visualization/vis_nsfs/makepal.cpp
Normal file
96
Src/Plugins/Visualization/vis_nsfs/makepal.cpp
Normal file
|
@ -0,0 +1,96 @@
|
|||
#include <windows.h>
|
||||
#include <math.h>
|
||||
|
||||
extern int (*warand)(void);
|
||||
static double rsc[3], rv[3];
|
||||
|
||||
static double drand(void)
|
||||
{
|
||||
return (warand()%4096)/(double)4096;
|
||||
}
|
||||
|
||||
static void startgen(void)
|
||||
{
|
||||
for (int x = 0; x < 3; x ++)
|
||||
{
|
||||
rsc[x]=drand()*256.0+256.0;
|
||||
rv[x]=drand()*0.25+0.25;
|
||||
}
|
||||
|
||||
if ((warand()&0xf)==5) rv[0]+=drand()*4.0;
|
||||
if ((warand()&0xf)==2) rv[1]+=drand()*4.0;
|
||||
if ((warand()&0xf)==3) rv[2]+=drand()*4.0;
|
||||
}
|
||||
|
||||
static int getv(int i, int w)
|
||||
{
|
||||
double d=sin((double)i*3.14159/256.0*rv[w])*rsc[w];
|
||||
int v;
|
||||
__asm
|
||||
{
|
||||
fld d
|
||||
fistp v
|
||||
}
|
||||
if (v<0)v=0;
|
||||
if (v>0xff)v=0xff;
|
||||
return v;
|
||||
}
|
||||
|
||||
static int lreversed;
|
||||
|
||||
unsigned char *getnewpalette()
|
||||
{
|
||||
static unsigned char thispal[256][3];
|
||||
int x;
|
||||
startgen();
|
||||
|
||||
for (x = 0; x < 768; x ++)
|
||||
{
|
||||
thispal[x/3][x%3]=getv(x/3,x%3);
|
||||
}
|
||||
|
||||
int lr=warand()%21;
|
||||
|
||||
if (lreversed)
|
||||
{
|
||||
if (warand()&1) lreversed=0;
|
||||
lr=4;
|
||||
}
|
||||
else if (lr == 4)
|
||||
{
|
||||
lreversed=1;
|
||||
}
|
||||
|
||||
switch (lr)
|
||||
{
|
||||
case 3:
|
||||
for (x = 0; x < 128; x ++)
|
||||
{
|
||||
thispal[x][0]=thispal[x*2][0];
|
||||
thispal[x][1]=thispal[x*2][1];
|
||||
thispal[x][2]=thispal[x*2][2];
|
||||
}
|
||||
for (; x < 256; x ++)
|
||||
{
|
||||
thispal[x][0]=thispal[255-x][0];
|
||||
thispal[x][1]=thispal[255-x][1];
|
||||
thispal[x][2]=thispal[255-x][2];
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
for (x = 0; x < 128; x ++)
|
||||
{
|
||||
int q;
|
||||
for (q = 0; q < 3; q ++)
|
||||
{
|
||||
unsigned char t;
|
||||
t=thispal[x][q];
|
||||
thispal[x][q]=thispal[255-x][q];
|
||||
thispal[255-x][q]=t;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return &thispal[0][0];
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue