File: 0001-Add-patch-to-revert-commit-6aa93cd20570c3f73ab32881f.patch

package info (click to toggle)
golang-github-charmbracelet-x 0.0~git20251028.0cf22f8%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,940 kB
  • sloc: sh: 124; makefile: 5
file content (111 lines) | stat: -rw-r--r-- 2,995 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
From: "Dr. Tobias Quathamer" <toddy@debian.org>
Date: Fri, 24 Oct 2025 21:06:22 +0200
Subject: Add patch to revert commit 6aa93cd20570c3f73ab32881f77e1b29ca59c22e

In that commit, the package exp/color has been removed. However, it is
still needed by other packages in this library, so we add it again for now.

Forwarded: not-needed
---
 exp/color/blend.go | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 exp/color/go.mod   |  5 ++++
 exp/color/go.sum   |  2 ++
 3 files changed, 76 insertions(+)
 create mode 100644 exp/color/blend.go
 create mode 100644 exp/color/go.mod
 create mode 100644 exp/color/go.sum

diff --git a/exp/color/blend.go b/exp/color/blend.go
new file mode 100644
index 0000000..cee2c7f
--- /dev/null
+++ b/exp/color/blend.go
@@ -0,0 +1,69 @@
+// Package color contains utilities for working with colors.
+package color
+
+import (
+	"image/color"
+
+	"github.com/lucasb-eyer/go-colorful"
+)
+
+// Blend returns a slice of colors blended between the given
+// colors. Blending is done as Hcl to stay in gamut.
+//
+// Example:
+//
+//	red := color.RGBA{R: 0xff, G: 0x00, B: 0x00, A: 0xff}
+//	blue := color.RGBA{R: 0x00, G: 0x00, B: 0xff, A: 0xff}
+//
+//	blend := Blend(10, red, blue)
+//	var b strings.Builder
+//
+//	for _, c := range blend {
+//		b.WriteString(lipgloss.NewStyle().Background(c).Render(" "))
+//	}
+//
+//	lipgloss.Println(b.String())
+func Blend(size int, points ...color.Color) []color.Color {
+	if size <= 0 || len(points) < 2 {
+		return nil
+	}
+	if size == 1 {
+		return []color.Color{points[0]}
+	}
+
+	stops := make([]colorful.Color, len(points))
+	for i, c := range points {
+		stops[i], _ = colorful.MakeColor(c)
+	}
+
+	numSegments := len(stops) - 1
+	blended := make([]color.Color, 0, size)
+
+	// Calculate how many colors each segment should have.
+	segmentSizes := make([]int, numSegments)
+	baseSize := size / numSegments
+	remainder := size % numSegments
+
+	// Distribute the remainder across segments.
+	for i := range numSegments {
+		segmentSizes[i] = baseSize
+		if i < remainder {
+			segmentSizes[i]++
+		}
+	}
+
+	// Generate colors for each segment.
+	for i := range numSegments {
+		c1 := stops[i]
+		c2 := stops[i+1]
+		segmentSize := segmentSizes[i]
+
+		for j := range segmentSize {
+			t := float64(j) / float64(segmentSize)
+			c := c1.BlendHcl(c2, t)
+			blended = append(blended, c)
+		}
+	}
+
+	return blended
+}
diff --git a/exp/color/go.mod b/exp/color/go.mod
new file mode 100644
index 0000000..414e6c4
--- /dev/null
+++ b/exp/color/go.mod
@@ -0,0 +1,5 @@
+module github.com/charmbracelet/x/exp/color
+
+go 1.24.0
+
+require github.com/lucasb-eyer/go-colorful v1.3.0
diff --git a/exp/color/go.sum b/exp/color/go.sum
new file mode 100644
index 0000000..7e7b637
--- /dev/null
+++ b/exp/color/go.sum
@@ -0,0 +1,2 @@
+github.com/lucasb-eyer/go-colorful v1.3.0 h1:2/yBRLdWBZKrf7gB40FoiKfAWYQ0lqNcbuQwVHXptag=
+github.com/lucasb-eyer/go-colorful v1.3.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=