#include <windows.h>




/*

  //  strange amoeba
#define GRAVITY_STRENGTH -0.00333
#define STUFF_MAX      2
#define AMBIENT_STUFF  0
#define SOL 2
#define WEAKER_FORCE
#define DIM 32
#define VELOCITY_SCALE 1
*/

/*
  //  Chaotic galaxy life
#define GRAVITY_STRENGTH 1
#define STUFF_MAX      2
#define AMBIENT_STUFF  0
#define SOL 20000
#define WEAKER_FORCE
#define DIM 32
#define VELOCITY_SCALE 1
*/

/*
//self-reproducing mini-galaxies

#define GRAVITY_STRENGTH 0.0125
#define STUFF_MAX      2
#define AMBIENT_STUFF  0
#define SOL 20000
#define WEAKER_FORCE
#define DIM 32
#define VELOCITY_SCALE 1
*/

/*
//  less galaxies, still self-reproducing
#define GRAVITY_STRENGTH 0.005
#define STUFF_MAX      2
#define AMBIENT_STUFF  0
#define SOL 20000
#define WEAKER_FORCE
#define DIM 32
#define VELOCITY_SCALE 1
*/

/*
//  sub-particle swarm
#define GRAVITY_STRENGTH 0.5
#define STUFF_MAX      0.01
#define AMBIENT_STUFF  0
#define SOL 20000
#define WEAKER_FORCE
#define DIM 32
#define VELOCITY_SCALE 1
*/

/*
//  wispy smoke
#define GRAVITY_STRENGTH 0.1
#define STUFF_MAX      0.125
#define AMBIENT_STUFF  0
#define SOL 20000
#define WEAKER_FORCE
#define SWAP_DX_AND_DY
#define DIM 41
#define VELOCITY_SCALE 1
*/

/*
//  atomic soup
#define GRAVITY_STRENGTH 1
#define STUFF_MAX      0.125
#define AMBIENT_STUFF  0
#define SOL 20000
#define WEAKER_FORCE
#define DIM 41
#define VELOCITY_SCALE 1
*/

//  Galaxy with some nice rotational motion
/*
#define GRAVITY_STRENGTH 0.005
#define STUFF_MAX      15.525
#define AMBIENT_STUFF  0
#define SOL 20000
//#define WEAKER_FORCE
#define DIM 128
#define VELOCITY_SCALE 1
*/


//random test... ok galaxies
#define GRAVITY_STRENGTH 0.005
#define STUFF_MAX      5
#define AMBIENT_STUFF  0
#define SOL 200000
//#define WEAKER_FORCE
#define DIM 128
#define VELOCITY_SCALE 1
//#define DONT_WRAP_UNVIERSE
//#define SPEED_LIMIT 5.0

//#define SWAP_DX_AND_DY





typedef struct _PATTERN_A {
  unsigned char buf[DIM][DIM];
} PATTERN_A;

typedef struct _PATTERN_RGB {
  unsigned char buf[DIM][DIM][3];
} PATTERN_RGB;




void drag(int mx, int my);

void MouseMove( int x, int y );



void Pattern_Startup();

void Pattern_Display(HDC dc, PATTERN_RGB *rgb);

PATTERN_RGB *Pattern_Generate();
