53 lines
1.1 KiB
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
|
|
}
|