MCPcopy Create free account
hub / github.com/SolarLune/masterplan / NewColorFromHSV

Function NewColorFromHSV

utils.go:486–537  ·  view source on GitHub ↗

Cribbed from: https://github.com/lucasb-eyer/go-colorful/blob/master/colors.go h is hue s is saturation v is value All values are expected to range from 0 to 1

(h, s, v float64)

Source from the content-addressed store, hash-verified

484// v is value
485// All values are expected to range from 0 to 1
486func NewColorFromHSV(h, s, v float64) Color {
487
488 if s > 1 {
489 s = 1
490 } else if s < 0 {
491 s = 0
492 }
493
494 if v > 1 {
495 v = 1
496 } else if v < 0 {
497 v = 0
498 }
499
500 for h > 1 {
501 h--
502 }
503
504 for h < 0 {
505 h++
506 }
507
508 Hp := h * 6
509 C := v * s
510 X := C * (1.0 - math.Abs(math.Mod(Hp, 2.0)-1.0))
511
512 m := v - C
513 r, g, b := 0.0, 0.0, 0.0
514
515 switch {
516 case 0.0 <= Hp && Hp < 1.0:
517 r = C
518 g = X
519 case 1.0 <= Hp && Hp < 2.0:
520 r = X
521 g = C
522 case 2.0 <= Hp && Hp < 3.0:
523 g = C
524 b = X
525 case 3.0 <= Hp && Hp < 4.0:
526 g = X
527 b = C
528 case 4.0 <= Hp && Hp < 5.0:
529 r = X
530 b = C
531 case 5.0 <= Hp && Hp <= 6.0:
532 r = C
533 b = X
534 }
535
536 return Color{uint8((m + r) * 255), uint8((m + g) * 255), uint8((m + b) * 255), 255}
537}
538
539func (color Color) RGBA() (uint8, uint8, uint8, uint8) {
540 return color[0], color[1], color[2], color[3]

Callers 8

UpdateColorSurfacesMethod · 0.85
UpdateMethod · 0.85
SetHSVMethod · 0.85
DrawMethod · 0.85
ColorMethod · 0.85
DrawMethod · 0.85
ColorMethod · 0.85
UpdateMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected