clucolour.c

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     /* check if any parameters are 1 or less */
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     /* malloc */
00061     num_colours = red_separation * blue_separation * green_separation;
00062     region_colours = (CLcolour*) malloc (num_colours * sizeof(CLcolour));
00063     
00064     /* create colours */
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                 printf("%s() : colour %u is r:%f g:%f b:%f\n",
00074                        __FUNCTION__,
00075                        current_colour,
00076                        i * red_interval,
00077                        j * green_interval,
00078                        k * blue_interval);
00079                 */
00080                 cluSetColour(&region_colours[current_colour], i * red_interval, j * green_interval, k * blue_interval, 1.0f);
00081                 current_colour++;
00082             }
00083         }
00084     }
00085     
00086     /* return the completed array */
00087     return region_colours;
00088 }

Generated on Thu Dec 27 13:53:42 2007 for CLU by  doxygen 1.4.6