display in true colors

This commit is contained in:
Lorenz Hohermuth 2024-02-15 22:13:03 +01:00
parent dc6ec67168
commit 0579adeb80
5 changed files with 69 additions and 22 deletions

View File

@ -1,12 +1,14 @@
/* /*
Copyright © 2024 NAME HERE <EMAIL ADDRESS> Copyright © 2024 NAME HERE <EMAIL ADDRESS>
*/ */
package cmd package cmd
import ( import (
"fmt" "fmt"
"github.com/LorenzHohermuth/cli-shapes/internal/color"
"github.com/LorenzHohermuth/cli-shapes/internal/renderer"
"github.com/LorenzHohermuth/cli-shapes/pkg/image"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@ -21,12 +23,27 @@ Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files This application is a tool to generate the needed files
to quickly create a Cobra application.`, to quickly create a Cobra application.`,
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
fmt.Println("draw called") fileFlag, _ := cmd.Flags().GetString("png")
if fileFlag != "" {
pix := image.ImageToPixles(fileFlag)
s := ""
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())
s += color + char + non
}
s += "\n"
}
fmt.Println(s)
}
}, },
} }
func init() { func init() {
rootCmd.AddCommand(drawCmd) rootCmd.AddCommand(drawCmd)
drawCmd.Flags().String("png", "", "png image")
// Here you will define your flags and configuration settings. // Here you will define your flags and configuration settings.

38
cmd/palette.go Normal file
View File

@ -0,0 +1,38 @@
/*
Copyright © 2024 NAME HERE <EMAIL ADDRESS>
*/
package cmd
import (
"github.com/LorenzHohermuth/cli-shapes/internal/color"
"github.com/spf13/cobra"
)
// paletteCmd represents the palette command
var paletteCmd = &cobra.Command{
Use: "palette",
Short: "A brief description of your command",
Long: `A longer description that spans multiple lines and likely contains examples
and usage of using your command. For example:
Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.`,
Run: func(cmd *cobra.Command, args []string) {
color.PrintColorPallet()
},
}
func init() {
rootCmd.AddCommand(paletteCmd)
// Here you will define your flags and configuration settings.
// Cobra supports Persistent Flags which will work for this command
// and all subcommands, e.g.:
// paletteCmd.PersistentFlags().String("foo", "", "A help for foo")
// Cobra supports local flags which will only run when this command
// is called directly, e.g.:
// paletteCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
}

View File

@ -32,7 +32,7 @@ func PrintColorPallet() {
} }
} }
func GetColor(p [3]int) (string, string) { func GetDefaultColor(p [3]int) (string, string) {
var color string = "\033[39m" var color string = "\033[39m"
var delta float64 = 255 var delta float64 = 255
r2 := float64(p[0]) r2 := float64(p[0])

View File

@ -0,0 +1,11 @@
package color
import "fmt"
//printf "\x1b[38;2;255;100;0mTRUECOLOR\x1b[0m\n"
func GetTrueColor(p [3]int) (string, string) {
color := fmt.Sprintf("\x1b[38;2;%d;%d;%dm", p[0], p[1], p[2])
return color, "\x1b[0m"
}

19
main.go
View File

@ -4,28 +4,9 @@ Copyright © 2024 NAME HERE <EMAIL ADDRESS>
package main package main
import ( import (
"fmt"
"github.com/LorenzHohermuth/cli-shapes/cmd" "github.com/LorenzHohermuth/cli-shapes/cmd"
"github.com/LorenzHohermuth/cli-shapes/internal/color"
"github.com/LorenzHohermuth/cli-shapes/internal/renderer"
"github.com/LorenzHohermuth/cli-shapes/pkg/image"
) )
func main() { func main() {
//pix := image.ImageToPixles("/home/lorenz/Downloads/mushroom-mini.png")
//pix := image.ImageToPixles("/home/lorenz/Downloads/rgb.png")
pix := image.ImageToPixles("/home/lorenz/Downloads/yoshi.png")
s := ""
for _, y := range pix {
for _, x := range y {
color, non := color.GetColor([3]int{x.R, x.G, x.B})
char := renderer.GetChar(x.Brightness())
s += color + char + non
}
s += "\n"
}
fmt.Println(s)
color.PrintColorPallet()
cmd.Execute() cmd.Execute()
} }