nori/renderer/gif_test.go

53 lines
1.1 KiB
Go

package renderer_test
import (
"bytes"
"fmt"
"git.tuxpa.in/a/nori"
"git.tuxpa.in/a/nori/renderer"
"git.tuxpa.in/a/zlog/log"
"image/gif"
"os"
"strings"
"testing"
)
func TestMakeGif1(t *testing.T) {
nori, err := nori.FromFile("../render_test/CharCreateNSelectUI.bac")
if err != nil {
t.Errorf("decode: %s", err)
}
t.Logf("\n nori: %+v\n gawi: %+v", nori, nori.Gawi)
err = writeGif(nori, "charcreate")
if err != nil {
t.Errorf("export: %s", err)
}
}
func writeGif(n *nori.Nori, name string) error {
postfix := ".example"
out := new(bytes.Buffer)
os.MkdirAll(fmt.Sprintf("../render_test/%s%s", name, postfix), 0740)
for i := range n.Animations {
g, err := renderer.RenderAnimationGif(n, i)
if err != nil {
if strings.Contains(err.Error(), "no frame") {
continue
}
return err
}
err = gif.EncodeAll(out, g)
if err != nil {
log.Errorf("EncodeAll failed for frame %d, skipping: %s", i, err)
continue
}
err = os.WriteFile(fmt.Sprintf("../render_test/%s%s/animation_%d.gif", name, postfix, i), out.Bytes(), 0740)
if err != nil {
return err
}
out.Reset()
}
return nil
}