feat/data-dnd e05cb15

transform_test.go RawHistoryFolder

1package vulkan
2
3import (
4	"image/color"
5	"testing"
6
7	"github.com/bnema/neferwl/internal/ports"
8)
9
10// Every wl_output.transform draws the buffer through its inverse: each
11// surface pixel shows the buffer pixel ToBuffer names, pixel exact at 1:1,
12// with and without a viewport crop.
13func TestRendererBufferTransform(t *testing.T) {
14	r, err := New(8, 8)
15	if err != nil {
16		t.Skipf("Vulkan unavailable: %v", err)
17	}
18	defer r.Close()
19	// 3×2 buffer, one colour per pixel.
20	colours := [2][3]color.RGBA{
21		{{255, 0, 0, 255}, {0, 255, 0, 255}, {0, 0, 255, 255}},
22		{{255, 255, 0, 255}, {0, 255, 255, 255}, {255, 0, 255, 255}},
23	}
24	var px []byte
25	for y := range 2 {
26		for x := range 3 {
27			c := colours[y][x]
28			px = append(px, c.B, c.G, c.R, 255)
29		}
30	}
31	for _, crop := range []bool{false, true} {
32		for tr := ports.BufferTransform(0); tr < 8; tr++ {
33			c := shmContent(t, 3, 2, 12, px)
34			// Crop: the buffer's right 2×2 pixels.
35			bx0, bw, bh := 0, 3, 2
36			if crop {
37				c.Source = [4]float32{1, 0, 2, 2}
38				bx0, bw = 1, 2
39			}
40			sw, sh := tr.Size(bw, bh)
41			c.Transform, c.LogicalW, c.LogicalH = tr, sw, sh
42			scene := ports.Scene{Background: "#000000", Windows: []ports.SceneWindow{{ID: 1, Rect: ports.Rect{W: sw, H: sh}}}}
43			if err := render(r, scene, map[ports.WindowID]ports.SurfaceContent{1: *c}); err != nil {
44				t.Fatal(err)
45			}
46			for y := range sh {
47				for x := range sw {
48					bx, by := tr.ToBuffer(float64(x)+0.5, float64(y)+0.5, float64(sw), float64(sh))
49					want := colours[int(by)][bx0+int(bx)]
50					if got := readPixels(t, r).RGBAAt(x, y); !near(got, want, 2) {
51						t.Errorf("crop=%v transform %d: surface (%d,%d) = %v, want %v", crop, tr, x, y, got, want)
52					}
53				}
54			}
55		}
56	}
57}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 25

Tags 10

↑↓ moveenter openesc close