From 6fbdefa21f7c603bf57ff3f0b07eab1626e0b8d2 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Mon, 2 Dec 2019 13:58:12 +0100 Subject: [PATCH] app/headless: compensate for OpenGL's lower left origin The origin of image.Images is the upper left corner. Convert the ReadPixels result by flipping the image the y-direction. Signed-off-by: Elias Naur --- app/headless/headless.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/headless/headless.go b/app/headless/headless.go index 88f4d8c5..0628ecbf 100644 --- a/app/headless/headless.go +++ b/app/headless/headless.go @@ -111,6 +111,17 @@ func (w *Window) Screenshot() (*image.RGBA, error) { } return nil }) + // Flip image in y-direction. OpenGL's origin is in the lower + // left corner. + row := make([]uint8, img.Stride) + for y := 0; y < w.size.Y/2; y++ { + y1 := w.size.Y - y - 1 + dest := img.PixOffset(0, y1) + src := img.PixOffset(0, y) + copy(row, img.Pix[dest:]) + copy(img.Pix[dest:], img.Pix[src:src+len(row)]) + copy(img.Pix[src:], row) + } return img, nil }