PostGIS  3.4.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 608 of file rt_util.c.

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

References DBL_EQ, ES_NONE, and r.

Referenced by test_hsv_to_rgb().

Here is the caller graph for this function: