PostGIS  3.3.9dev-r@@SVN_REVISION@@

◆ rt_util_hsv_to_rgb()

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

Definition at line 605 of file rt_util.c.

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

References DBL_EQ, ES_NONE, and r.

Referenced by test_hsv_to_rgb().

Here is the caller graph for this function: