nerd font support
This commit is contained in:
parent
ab9eb8e798
commit
4495384772
|
@ -6,6 +6,7 @@ package cmd
|
|||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/LorenzHohermuth/cli-shapes/internal/generated"
|
||||
"github.com/LorenzHohermuth/cli-shapes/internal/nerdfont"
|
||||
"github.com/LorenzHohermuth/cli-shapes/pkg/canvas"
|
||||
"github.com/LorenzHohermuth/cli-shapes/pkg/image"
|
||||
|
@ -24,10 +25,14 @@ This application is a tool to generate the needed files
|
|||
to quickly create a Cobra application.`,
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
icons := nerdfont.ParseFile("./nerd-font-icons")
|
||||
f := generated.CreatFile("nerdFont")
|
||||
defer generated.CloseFile(f)
|
||||
for i, v := range icons {
|
||||
fmt.Printf("%g %% %s\n", (float64(i) + 1) / float64(len(icons)) * 100, v)
|
||||
path := canvas.CharacterAnalyse(v)
|
||||
image.ImageToPixles(path)
|
||||
img := image.ImageToPixles(path)
|
||||
line := fmt.Sprintf("\t\"%s\":%g,", v, image.GetBrightness(img))
|
||||
generated.AddToFile(line, f)
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"github.com/LorenzHohermuth/cli-shapes/internal/color"
|
||||
"github.com/LorenzHohermuth/cli-shapes/internal/renderer"
|
||||
"github.com/LorenzHohermuth/cli-shapes/internal/generated"
|
||||
"github.com/LorenzHohermuth/cli-shapes/pkg/image"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
@ -31,7 +31,7 @@ to quickly create a Cobra application.`,
|
|||
for _, y := range pix {
|
||||
for _, x := range y {
|
||||
color, non := color.GetTrueColor([3]int{x.R, x.G, x.B})
|
||||
char := renderer.GetChar(x.Brightness())
|
||||
char := generated.GetChar(x.Brightness())
|
||||
s += color + char + non
|
||||
}
|
||||
s += "\n"
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,50 @@
|
|||
package generated
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"os"
|
||||
)
|
||||
|
||||
func CreatFile(name string) *os.File {
|
||||
fileName := "internal/generated/gen-" + name + ".go"
|
||||
_ = os.Remove(fileName)
|
||||
f, err := os.Create(fileName)
|
||||
check(err)
|
||||
_, err = f.WriteString("package generated\n\nvar " + name + " = map[string]float64{\n")
|
||||
check(err)
|
||||
return f
|
||||
}
|
||||
|
||||
func AddToFile(line string, file *os.File) {
|
||||
_, err := file.WriteString(line + "\n")
|
||||
check(err)
|
||||
}
|
||||
|
||||
func CloseFile(f *os.File) {
|
||||
_, err := f.WriteString("}")
|
||||
check(err)
|
||||
f.Close()
|
||||
}
|
||||
|
||||
func check(err error) {
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func GetChar(brightness float64) string {
|
||||
chars := []string{" "}
|
||||
var delta float64 = 1
|
||||
for k, v := range nerdFont {
|
||||
otherDelta := math.Abs(v - brightness)
|
||||
if (otherDelta < delta) {
|
||||
delta = otherDelta
|
||||
chars = []string{k}
|
||||
}
|
||||
if (otherDelta == delta) {
|
||||
chars = append(chars, k)
|
||||
}
|
||||
}
|
||||
return chars[rand.IntN(len(chars))]
|
||||
}
|
2
main.go
2
main.go
|
@ -5,10 +5,8 @@ package main
|
|||
|
||||
import (
|
||||
"github.com/LorenzHohermuth/cli-shapes/cmd"
|
||||
"github.com/LorenzHohermuth/cli-shapes/pkg/canvas"
|
||||
)
|
||||
|
||||
func main() {
|
||||
canvas.CharacterAnalyse("")
|
||||
cmd.Execute()
|
||||
}
|
||||
|
|
|
@ -42,3 +42,22 @@ func check(err error) {
|
|||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func GetBrightness(img [][]Pixel) float64 {
|
||||
amountOfPixels := 0
|
||||
avgR, avgG, avgB, avgA := 0, 0, 0, 0
|
||||
for _, y := range img {
|
||||
for _, x := range y {
|
||||
avgR += x.R
|
||||
avgG += x.G
|
||||
avgB += x.B
|
||||
avgA += x.A
|
||||
amountOfPixels++
|
||||
}
|
||||
}
|
||||
|
||||
return Pixel{avgR / amountOfPixels,
|
||||
avgG / amountOfPixels,
|
||||
avgB / amountOfPixels,
|
||||
avgA / amountOfPixels}.Brightness()
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue