PostGIS  3.0.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 561 of file rt_util.c.

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