PostGIS  3.7.0dev-r@@SVN_REVISION@@

◆ rt_util_hsv_to_rgb()

rt_errorstate rt_util_hsv_to_rgb ( double  hsv[3],
double  rgb[3] 
)

Definition at line 613 of file rt_util.c.

613  {
614  double r = 0;
615  double g = 0;
616  double b = 0;
617  double v = hsv[2];
618 
619  if (DBL_EQ(hsv[1], 0.))
620  r = g = b = v;
621  else {
622  double i;
623  double f;
624  double p;
625  double q;
626  double t;
627 
628  int a;
629 
630  i = floor(hsv[0] * 6.);
631  f = (hsv[0] * 6.0) - i;
632  p = v * (1. - hsv[1]);
633  q = v * (1. - hsv[1] * f);
634  t = v * (1. - hsv[1] * (1. - f));
635 
636  a = (int) i;
637  switch (a) {
638  case 1:
639  r = q;
640  g = v;
641  b = p;
642  break;
643  case 2:
644  r = p;
645  g = v;
646  b = t;
647  break;
648  case 3:
649  r = p;
650  g = q;
651  b = v;
652  break;
653  case 4:
654  r = t;
655  g = p;
656  b = v;
657  break;
658  case 5:
659  r = v;
660  g = p;
661  b = q;
662  break;
663  case 0:
664  case 6:
665  default:
666  r = v;
667  g = t;
668  b = p;
669  break;
670  }
671  }
672 
673  rgb[0] = r;
674  rgb[1] = g;
675  rgb[2] = b;
676 
677  return ES_NONE;
678 }
char * r
Definition: cu_in_wkt.c:24
@ ES_NONE
Definition: librtcore.h:182
#define DBL_EQ(x, y)
Definition: librtcore.h:2426

References DBL_EQ, ES_NONE, and r.

Referenced by test_hsv_to_rgb().

Here is the caller graph for this function: