diff --git a/monitor/go.mod b/monitor/go.mod index aa0f4a6..54c14c4 100644 --- a/monitor/go.mod +++ b/monitor/go.mod @@ -1,7 +1,20 @@ module foglar/monitor -go 1.21.6 +go 1.20 -require github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07 +require ( + github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 + github.com/gopxl/pixel v1.0.0 + github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07 + golang.org/x/image v0.13.0 +) -require golang.org/x/sys v0.16.0 // indirect +require ( + github.com/faiface/glhf v0.0.0-20211013000516-57b20770c369 // indirect + github.com/faiface/mainthread v0.0.0-20171120011319-8b78f0a41ae3 // indirect + github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6 // indirect + github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b // indirect + github.com/go-gl/mathgl v1.1.0 // indirect + github.com/pkg/errors v0.9.1 // indirect + golang.org/x/sys v0.17.0 // indirect +) diff --git a/monitor/go.sum b/monitor/go.sum index bf059e4..732adfd 100644 --- a/monitor/go.sum +++ b/monitor/go.sum @@ -1,4 +1,31 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/faiface/glhf v0.0.0-20211013000516-57b20770c369 h1:gv4BgP50atccdK/1tZHDyP6rMwiiutR2HPreR/OyLzI= +github.com/faiface/glhf v0.0.0-20211013000516-57b20770c369/go.mod h1:dDdUO+G9ZnJ9sc8nIUvhLkE45k8PEKW6+A3TdWsfpV0= +github.com/faiface/mainthread v0.0.0-20171120011319-8b78f0a41ae3 h1:baVdMKlASEHrj19iqjARrPbaRisD7EuZEVJj6ZMLl1Q= +github.com/faiface/mainthread v0.0.0-20171120011319-8b78f0a41ae3/go.mod h1:VEPNJUlxl5KdWjDvz6Q1l+rJlxF2i6xqDeGuGAxa87M= +github.com/go-gl/gl v0.0.0-20210905235341-f7a045908259/go.mod h1:wjpnOv6ONl2SuJSxqCPVaPZibGFdSci9HFocT9qtVYM= +github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6 h1:zDw5v7qm4yH7N8C8uWd+8Ii9rROdgWxQuGoJ9WDXxfk= +github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6/go.mod h1:9YTyiznxEY1fVinfM7RvRcjRHbw2xLBJ3AAGIT0I4Nw= +github.com/go-gl/glfw v0.0.0-20210727001814-0db043d8d5be/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b h1:GgabKamyOYguHqHjSkDACcgoPIz3w0Dis/zJ1wyHHHU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/mathgl v1.0.0/go.mod h1:yhpkQzEiH9yPyxDUGzkmgScbaBVlhC06qodikEM0ZwQ= +github.com/go-gl/mathgl v1.1.0 h1:0lzZ+rntPX3/oGrDzYGdowSLC2ky8Osirvf5uAwfIEA= +github.com/go-gl/mathgl v1.1.0/go.mod h1:yhpkQzEiH9yPyxDUGzkmgScbaBVlhC06qodikEM0ZwQ= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/gopxl/pixel v1.0.0 h1:ZON6ll6/tI6sO8fwrlj93GVUcXReTST5//iKv6lcd8g= +github.com/gopxl/pixel v1.0.0/go.mod h1:kPUBG2He7/+alwmi5z0IwnpAc6pw2N7eA08cdBfoE/Q= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07 h1:UyzmZLoiDWMRywV4DUYb9Fbt8uiOSooupjTq10vpvnU= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= -golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/image v0.0.0-20190321063152-3fc05d484e9f/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.13.0 h1:3cge/F/QTkNLauhf2QoE9zp+7sr+ZcL4HnoZmdwg9sg= +golang.org/x/image v0.13.0/go.mod h1:6mmbMOeV28HuMTgA6OSRkdXKYw/t5W9Uwn2Yv1r3Yxk= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/monitor/gui/JetBrainsMonoNerdFont-Medium.ttf b/monitor/gui/JetBrainsMonoNerdFont-Medium.ttf new file mode 100644 index 0000000..177386b Binary files /dev/null and b/monitor/gui/JetBrainsMonoNerdFont-Medium.ttf differ diff --git a/monitor/gui/gui.go b/monitor/gui/gui.go new file mode 100644 index 0000000..daee599 --- /dev/null +++ b/monitor/gui/gui.go @@ -0,0 +1,75 @@ +package gui + +// TODO: finish reading serial input and parsing it and piping it to the gui component + +import ( + "io" + "os" + "time" + + "github.com/golang/freetype/truetype" + "github.com/gopxl/pixel" + "github.com/gopxl/pixel/pixelgl" + "github.com/gopxl/pixel/text" + "golang.org/x/image/colornames" + "golang.org/x/image/font" +) + +func loadTTF(path string, size float64) (font.Face, error) { + file, err := os.Open(path) + if err != nil { + return nil, err + } + defer file.Close() + + bytes, err := io.ReadAll(file) + if err != nil { + return nil, err + } + + font, err := truetype.Parse(bytes) + if err != nil { + return nil, err + } + + return truetype.NewFace(font, &truetype.Options{ + Size: size, + GlyphCacheEntries: 1, + }), nil +} + +func run() { + cfg := pixelgl.WindowConfig{ + Title: "Cobra Monitor", + Bounds: pixel.R(0, 0, 1024, 768), + } + win, err := pixelgl.NewWindow(cfg) + if err != nil { + panic(err) + } + + face, err := loadTTF("gui/JetBrainsMonoNerdFont-Medium.ttf", 36) + if err != nil { + panic(err) + } + + atlas := text.NewAtlas(face, text.ASCII) + txt := text.New(pixel.V(100, 500), atlas) + + fps := time.Tick(time.Second / 120) + + for !win.Closed() { + + //txt.WriteString(data) + + win.Clear(colornames.Black) + txt.Draw(win, pixel.IM) + win.Update() + + <-fps + } +} + +func GUI() { + pixelgl.Run(run) +} diff --git a/monitor/main.go b/monitor/main.go index 904ac1a..4afa846 100644 --- a/monitor/main.go +++ b/monitor/main.go @@ -1,29 +1,33 @@ package main import ( - "fmt" - p "foglar/monitor/parse" - "foglar/monitor/serial_read" - "log" + //"fmt" + gui "foglar/monitor/gui" + //p "foglar/monitor/parse" + //"foglar/monitor/serial_read" + //"log" ) func main() { - // Initialize serial connection - serialHandler, err := serial_read.NewSerialHandler() - if err != nil { - log.Fatal(err) - } + // // Initialize serial connection + // serialHandler, err := serial_read.NewSerialHandler() + // if err != nil { + // log.Fatal(err) + // } + // + // defer serialHandler.Close() + // + // for { + // // Read serial data + // data, err := serialHandler.ReadSerial() + // if err != nil { + // log.Fatal(err) + // } + // + // fmt.Println("Received data:", data) + // fmt.Println(p.Parser(data)) + // } - defer serialHandler.Close() - - for { - // Read serial data - data, err := serialHandler.ReadSerial() - if err != nil { - log.Fatal(err) - } - - fmt.Println("Received data:", data) - fmt.Println(p.Parser(data)) - } + // Testing GUI interface + gui.GUI() }