#include <stdlib.h>
#include "pof.h"

char find_color(rgb color, ColorNode *node)
{
    int watch;

    if (!(color.Red+color.Grn+color.Blu)) return (0);   /* 0th Palette case */
    watch = (((color.Red < node->key.Red)<<2) +
                 ((color.Grn < node->key.Grn)<<1) +
                                                (color.Blu < node->key.Blu));

    if ((watch == 0) && (color.Red == node->key.Red) &&
                        (color.Grn == node->key.Grn) &&
                                                                (color.Blu == node->key.Blu))
                                return(node->pal_num);

         else if (node->Link[watch] != NULL) /* off to next node */
          return(find_color(color, node->Link[watch]));

    else return(node->pal_num);
}

char ffind_color(float R, float G, float B, ColorNode *node)
{
    rgb temp;

    temp.Red = (char)(63.0*R);
    temp.Grn = (char)(63.0*G);
    temp.Blu = (char)(63.0*B);

    return(find_color(temp,node));
}

