PostGIS  3.1.6dev-r@@SVN_REVISION@@

◆ rt_util_hsv_to_rgb()

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

Definition at line 562 of file rt_util.c.

562  {
563  double r = 0;
564  double g = 0;
565  double b = 0;
566  double v = hsv[2];
567 
568  if (DBL_EQ(hsv[1], 0.))
569  r = g = b = v;
570  else {
571  double i;
572  double f;
573  double p;
574  double q;
575  double t;
576 
577  int a;
578 
579  i = floor(hsv[0] * 6.);
580  f = (hsv[0] * 6.0) - i;
581  p = v * (1. - hsv[1]);
582  q = v * (1. - hsv[1] * f);
583  t = v * (1. - hsv[1] * (1. - f));
584 
585  a = (int) i;
586  switch (a) {
587  case 1:
588  r = q;
589  g = v;
590  b = p;
591  break;
592  case 2:
593  r = p;
594  g = v;
595  b = t;
596  break;
597  case 3:
598  r = p;
599  g = q;
600  b = v;
601  break;
602  case 4:
603  r = t;
604  g = p;
605  b = v;
606  break;
607  case 5:
608  r = v;
609  g = p;
610  b = q;
611  break;
612  case 0:
613  case 6:
614  default:
615  r = v;
616  g = t;
617  b = p;
618  break;
619  }
620  }
621 
622  rgb[0] = r;
623  rgb[1] = g;
624  rgb[2] = b;
625 
626  return ES_NONE;
627 }
char * r
Definition: cu_in_wkt.c:24
@ ES_NONE
Definition: librtcore.h:180
#define DBL_EQ(x, y)
Definition: librtcore.h:2237

References DBL_EQ, ES_NONE, and r.

Referenced by test_hsv_to_rgb().

Here is the caller graph for this function: