gomp/render.go
aditya-K2 bae972f697 Now the Image is resized according to font Size
Image is now resized according to the font size and also a new
globals.go files is added which contains all the globals.

the Image width can also be changed according to use by adding or
substracting pixels to it by changing the globals

IMAGE_WIDTH_EXTRA_X, IMAGE_WIDTH_EXTRA_Y

Also, now there is no need to specify where the music directory is
the mpd.conf file in `~/.config/mpd/` is automatically parsed for music
directory
2021-10-29 13:54:06 +05:30

66 lines
1.4 KiB
Go

package main
import (
"gitlab.com/diamondburned/ueberzug-go"
)
/*
Renderer is just a channel on which we will send the Path to the song whose
Image is to be Rendered. This channel is passed to the openImage which in turn is called
by the Start() function as a go routine.
*/
type Renderer struct {
c chan string
}
/*
Returns a new Renderer with a string channel
*/
func newRenderer() *Renderer {
c := make(chan string)
return &Renderer{
c: c,
}
}
/*
Send Image Path to Renderer
*/
func (self *Renderer) Send(path string) {
self.c <- path
}
/*
Go Routine that will Be Called and will listen on the channel c
for changes and on getting a string over the channel will open the Image and
keep listening again. This will keep the image blocked ( i.e no need to use time.Sleep() etc. )
and saves resources too.
*/
func openImage(path string, c chan string) {
fw, fh := getFontWidth()
var im *ueberzug.Image
if path != "stop" {
img2, _ := getImg(getAlbumArt(path))
im, _ = ueberzug.NewImage(img2, int(float32(IMG_X)*fw)+ADDITIONAL_PADDING_X, int(float32(IMG_Y)*fh)+ADDITIONAL_PADDING_Y)
}
d := <-c
if im != nil {
im.Clear()
}
if d != "stop" {
openImage(d, c)
} else {
openImage("stop", c)
}
}
/*
Initialises the Renderer and calls the go routine openImage and passes the channel
as argument.
*/
func (self *Renderer) Start(path string) {
go openImage(path, self.c)
}