package internal import ( "github.com/eliukblau/pixterm/ansimage" "github.com/qpliu/qrencode-go/qrencode" ) func ConvertGridToANSImage(grid *qrencode.BitGrid) (s string, err error) { // HACK - ansimage has an image offset bug which hides the first two rows img, err := ansimage.New(2+2+((grid.Height()+1)/2)*2, 2+grid.Width()) if err != nil { return } // white borders for x := 0; x < 1+grid.Width()+1; x++ { err = img.SetAt(2, x, 255, 255, 255) if err != nil { return } err = img.SetAt(2+grid.Height()+1, x, 255, 255, 255) if err != nil { return } } for y := 1; y < grid.Height()+3; y++ { err = img.SetAt(y, 0, 255, 255, 255) if err != nil { return } err = img.SetAt(y, grid.Width()+1, 255, 255, 255) if err != nil { return } } for y := 0; y < grid.Height(); y++ { for x := 0; x < grid.Width(); x++ { val := uint8(0) if !grid.Get(x, y) { val = 255 } // HACK - ansimage has an image offset bug which hides the first two rows err = img.SetAt(y+3, x+1, val, val, val) if err != nil { return } } } s = img.Render() return }