00001 #include <clu.h>
00002
00022 CLcolour* cluColourGeneratePalette(unsigned int red_separation, unsigned int green_separation, unsigned int blue_separation)
00023 {
00024 float red_interval;
00025 float green_interval;
00026 float blue_interval;
00027 unsigned int i, j, k;
00028 unsigned int current_colour;
00029 unsigned int num_colours;
00030 CLcolour* region_colours;
00031
00032
00033 if (red_separation <= 1)
00034 {
00035 red_interval = 1.0f;
00036 }
00037 else
00038 {
00039 red_interval = 1.0f / (red_separation - 1);
00040 }
00041
00042 if (green_separation <= 1)
00043 {
00044 green_interval = 1.0f;
00045 }
00046 else
00047 {
00048 green_interval = 1.0f / (green_separation - 1);
00049 }
00050
00051 if (blue_separation <= 1)
00052 {
00053 blue_interval = 1.0f;
00054 }
00055 else
00056 {
00057 blue_interval = 1.0f / (blue_separation - 1);
00058 }
00059
00060
00061 num_colours = red_separation * blue_separation * green_separation;
00062 region_colours = (CLcolour*) malloc (num_colours * sizeof(CLcolour));
00063
00064
00065 current_colour = 0;
00066 for (i = 0 ; i < red_separation ; i++)
00067 {
00068 for (j = 0 ; j < green_separation ; j++)
00069 {
00070 for (k = 0 ; k < blue_separation ; k++)
00071 {
00072
00073
00074
00075
00076
00077
00078
00079
00080 cluSetColour(®ion_colours[current_colour], i * red_interval, j * green_interval, k * blue_interval, 1.0f);
00081 current_colour++;
00082 }
00083 }
00084 }
00085
00086
00087 return region_colours;
00088 }