From afe00a1a080ecef3f41a9ec7f53a57f94b341c0f Mon Sep 17 00:00:00 2001 From: Vincent Smith Date: Fri, 2 Feb 2018 23:31:07 -0500 Subject: [PATCH 1/3] added pixterm for rendering --- main.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index f3aee8d..8e41d73 100644 --- a/main.go +++ b/main.go @@ -2,15 +2,16 @@ package main import ( "bytes" - "encoding/base64" "fmt" "image" + "image/color" "image/png" "math/rand" "os" "time" "github.com/disintegration/gift" + "github.com/eliukblau/pixterm/ansimage" termbox "github.com/nsf/termbox-go" ) @@ -273,12 +274,14 @@ func collide(s1, s2 Sprite) bool { return false } -// this only works for iTerm2! func printImage(img image.Image) { var buf bytes.Buffer png.Encode(&buf, img) - imgBase64Str := base64.StdEncoding.EncodeToString(buf.Bytes()) - fmt.Printf("\x1b[2;0H\x1b]1337;File=inline=1:%s\a", imgBase64Str) + ansiImg, err := ansimage.NewScaledFromReader(&buf, 124, 424, color.Black, ansimage.ScaleModeFit, ansimage.NoDithering) + if err != nil { + panic(err) + } + ansiImg.Draw() } func getImage(filePath string) image.Image { From 1c410d9c88709918efc803dd7c6818f4f44d6fb0 Mon Sep 17 00:00:00 2001 From: Vincent Smith Date: Sat, 3 Feb 2018 09:06:46 -0500 Subject: [PATCH 2/3] better scaling, clear screen when drawing frame --- main.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index 8e41d73..c1fb337 100644 --- a/main.go +++ b/main.go @@ -277,10 +277,11 @@ func collide(s1, s2 Sprite) bool { func printImage(img image.Image) { var buf bytes.Buffer png.Encode(&buf, img) - ansiImg, err := ansimage.NewScaledFromReader(&buf, 124, 424, color.Black, ansimage.ScaleModeFit, ansimage.NoDithering) + ansiImg, err := ansimage.NewScaledFromReader(&buf, 120, 180, color.Black, ansimage.ScaleModeFit, ansimage.NoDithering) if err != nil { panic(err) } + print("\033[H") ansiImg.Draw() } From c467d40615957c252d6a6cbdb8f1b45b829b06d0 Mon Sep 17 00:00:00 2001 From: Vincent Smith Date: Sat, 3 Feb 2018 09:24:36 -0500 Subject: [PATCH 3/3] added iTerm2 rendering back in --- main.go | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/main.go b/main.go index c1fb337..991661a 100644 --- a/main.go +++ b/main.go @@ -2,12 +2,14 @@ package main import ( "bytes" + "encoding/base64" "fmt" "image" "image/color" "image/png" "math/rand" "os" + "runtime" "time" "github.com/disintegration/gift" @@ -23,6 +25,9 @@ var alienSize = 30 var bombProbability = 0.005 var bombSpeed = 10 +//macOS check +var isMac = runtime.GOOS == "darwin" + // sprites var src = getImage("imgs/sprites.png") var background = getImage("imgs/bg.png") @@ -277,12 +282,18 @@ func collide(s1, s2 Sprite) bool { func printImage(img image.Image) { var buf bytes.Buffer png.Encode(&buf, img) - ansiImg, err := ansimage.NewScaledFromReader(&buf, 120, 180, color.Black, ansimage.ScaleModeFit, ansimage.NoDithering) - if err != nil { - panic(err) + + if isMac { + imgBase64Str := base64.StdEncoding.EncodeToString(buf.Bytes()) + fmt.Printf("\x1b[2;0H\x1b]1337;File=inline=1:%s\a", imgBase64Str) + } else { + ansiImg, err := ansimage.NewScaledFromReader(&buf, 120, 180, color.Black, ansimage.ScaleModeFit, ansimage.NoDithering) + if err != nil { + panic(err) + } + print("\033[H") + ansiImg.Draw() } - print("\033[H") - ansiImg.Draw() } func getImage(filePath string) image.Image {