feat: Implemented visualizer
This commit is contained in:
58
visualizer/visualizer.go
Normal file
58
visualizer/visualizer.go
Normal file
@ -0,0 +1,58 @@
|
||||
package visualizer
|
||||
|
||||
import (
|
||||
"image/color"
|
||||
"maze-solver/io/writer"
|
||||
"maze-solver/maze"
|
||||
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/app"
|
||||
"fyne.io/fyne/v2/canvas"
|
||||
"github.com/mazznoer/colorgrad"
|
||||
)
|
||||
|
||||
var (
|
||||
a fyne.App
|
||||
w fyne.Window
|
||||
img_writer writer.ImageWriter
|
||||
cimg *canvas.Image
|
||||
)
|
||||
|
||||
func Init(m *maze.Maze) {
|
||||
a = app.New()
|
||||
w = a.NewWindow("maze-solver-go")
|
||||
img_writer = writer.ImageWriter{
|
||||
Filename: "",
|
||||
Maze: &maze.SolvedMaze{
|
||||
Maze: m,
|
||||
Solution: []*maze.Node{},
|
||||
},
|
||||
CellWidth: 2,
|
||||
CellHeight: 2,
|
||||
WallColor: color.Black,
|
||||
PathColor: color.White,
|
||||
SolutionGradient: colorgrad.Warm(),
|
||||
}
|
||||
println(m.Height)
|
||||
cimg = canvas.NewImageFromImage(img_writer.GenerateImage())
|
||||
w.SetContent(cimg)
|
||||
w.Resize(
|
||||
fyne.NewSize(
|
||||
float32(m.Width*img_writer.CellWidth),
|
||||
float32(m.Height*img_writer.CellHeight),
|
||||
),
|
||||
)
|
||||
w.Show()
|
||||
}
|
||||
|
||||
func Visualize(solved_chan <-chan *maze.SolvedMaze) {
|
||||
for solved := range solved_chan {
|
||||
img_writer.Maze = solved
|
||||
cimg.Image = img_writer.GenerateImage()
|
||||
cimg.Refresh()
|
||||
}
|
||||
}
|
||||
|
||||
func Run() {
|
||||
w.ShowAndRun()
|
||||
}
|
Reference in New Issue
Block a user