refactoring finished

This commit is contained in:
Dmitry Sergeev
2026-09-17 20:42:38 +03:00
parent de4dfcf101
commit e30cb7a168
11 changed files with 92 additions and 48 deletions
+12 -2
View File
@@ -33,9 +33,19 @@ func LoadFace(path string, size float64) (font.Face, error) {
if err != nil {
return nil, fmt.Errorf("text: %w", err)
}
face, err := NewFace(data, size)
if err != nil {
return nil, fmt.Errorf("text: load %s: %w", path, err)
}
return face, nil
}
// NewFace parses TTF/OTF data and builds a render-ready face at the given
// pixel size (DPI 72, full hinting for crisp video text).
func NewFace(data []byte, size float64) (font.Face, error) {
f, err := opentype.Parse(data)
if err != nil {
return nil, fmt.Errorf("text: parse %s: %w", path, err)
return nil, fmt.Errorf("parse font: %w", err)
}
face, err := opentype.NewFace(f, &opentype.FaceOptions{
Size: size,
@@ -43,7 +53,7 @@ func LoadFace(path string, size float64) (font.Face, error) {
Hinting: font.HintingFull,
})
if err != nil {
return nil, fmt.Errorf("text: face %s: %w", path, err)
return nil, fmt.Errorf("create font face: %w", err)
}
return face, nil
}
+3 -3
View File
@@ -1,17 +1,17 @@
package generator
import (
"path/filepath"
"strings"
"testing"
"mxl-pattern-generator/assets"
"golang.org/x/image/font"
)
func testFace(t *testing.T, size float64) font.Face {
t.Helper()
face, err := LoadFace(filepath.Join("..", "..", "assets", "fonts",
"JetBrainsMonoNLNerdFontMono-Regular.ttf"), size)
face, err := NewFace(assets.JetBrainsMono, size)
if err != nil {
t.Fatalf("LoadFace: %v", err)
}
+2 -8
View File
@@ -6,7 +6,6 @@ import (
"context"
"encoding/binary"
"fmt"
"os"
"time"
"github.com/gogpu/gputypes"
@@ -47,7 +46,7 @@ var _ FrameGenerator = (*WGPUGenerator)(nil)
// WGPUOption customizes NewWGPUGenerator.
type WGPUOption func(*WGPUGenerator)
func NewWGPUGenerator(width, height uint, kernelPath string, opts ...WGPUOption) (*WGPUGenerator, error) {
func NewWGPUGenerator(width, height uint, wgsl string, opts ...WGPUOption) (*WGPUGenerator, error) {
g := &WGPUGenerator{
width: int(width),
height: int(height),
@@ -75,13 +74,8 @@ func NewWGPUGenerator(width, height uint, kernelPath string, opts ...WGPUOption)
}
g.queue = g.device.Queue()
wgsl, err := os.ReadFile(kernelPath)
if err != nil {
g.Close()
return nil, fmt.Errorf("wgpu: read kernel: %w", err)
}
if g.shader, err = g.device.CreateShaderModule(&wgpu.ShaderModuleDescriptor{
Label: "v210-shader", WGSL: string(wgsl),
Label: "v210-shader", WGSL: wgsl,
}); err != nil {
g.Close()
return nil, fmt.Errorf("wgpu: shader: %w", err)
+7 -2
View File
@@ -1,13 +1,18 @@
package generator
import (
"path/filepath"
"testing"
"mxl-pattern-generator/kernels"
)
func TestWGPUMoveSquare(t *testing.T) {
const width, height = 1920, 1080
g, err := NewWGPUGenerator(width, height, filepath.Join("..", "..", "kernels", "dynamic", "smpteBars.wgsl"))
shader, err := kernels.Read("dynamic/smpteBars.wgsl")
if err != nil {
t.Fatalf("read shader: %v", err)
}
g, err := NewWGPUGenerator(width, height, string(shader))
if err != nil {
t.Fatalf("init: %v", err)
}
+7 -2
View File
@@ -1,13 +1,18 @@
package generator
import (
"path/filepath"
"testing"
"mxl-pattern-generator/kernels"
)
func TestWGPUSMPTEPattern(t *testing.T) {
const width, height = 1920, 1080
g, err := NewWGPUGenerator(width, height, filepath.Join("..", "..", "kernels", "static", "smpteBars.wgsl"))
shader, err := kernels.Read("static/smpteBars.wgsl")
if err != nil {
t.Fatalf("read shader: %v", err)
}
g, err := NewWGPUGenerator(width, height, string(shader))
if err != nil {
t.Fatalf("init: %v", err)
}