diff --git a/go.mod b/go.mod index ba78a61..0f9a950 100644 --- a/go.mod +++ b/go.mod @@ -2,17 +2,15 @@ module github.com/coalaura/ffwebp go 1.25.0 -require github.com/urfave/cli/v3 v3.4.1 - require ( github.com/anthonynsimon/bild v0.14.0 + github.com/coalaura/xbm v0.0.4 github.com/ftrvxmtrx/tga v0.0.0-20150524081124-bd8e8d5be13a github.com/gen2brain/avif v0.4.4 github.com/gen2brain/heic v0.4.5 github.com/gen2brain/jpegxl v0.4.5 github.com/gen2brain/webp v0.5.5 github.com/hullerob/go.farbfeld v0.0.0-20181222022525-3661193c725f - github.com/knieriem/g v0.5.0 github.com/kriticalflare/qoi v0.0.0-20240815192827-34f66f23bcef github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 github.com/oov/psd v0.0.0-20220121172623-5db5eafcecbb @@ -21,7 +19,7 @@ require ( github.com/spakin/netpbm v1.3.2 github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef - github.com/xyproto/xbm v1.0.0 + github.com/urfave/cli/v3 v3.4.1 golang.org/x/image v0.30.0 gotest.tools/v3 v3.5.2 ) diff --git a/go.sum b/go.sum index b96a05b..a2c409b 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ github.com/anthonynsimon/bild v0.14.0 h1:IFRkmKdNdqmexXHfEU7rPlAmdUZ8BDZEGtGHDnGWync= github.com/anthonynsimon/bild v0.14.0/go.mod h1:hcvEAyBjTW69qkKJTfpcDQ83sSZHxwOunsseDfeQhUs= +github.com/coalaura/xbm v0.0.4 h1:B8TKdo44fogAAnpWKSeABqUtspLpnwVlU4lwNYJKXEE= +github.com/coalaura/xbm v0.0.4/go.mod h1:FEAK5clZSXwDFfQbpdPguUclWBKdU7uDvwPAuzVkcPc= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw= @@ -20,11 +22,8 @@ github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25d github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= github.com/hullerob/go.farbfeld v0.0.0-20181222022525-3661193c725f h1:1LkiAnH6RhOEbQAcfcEcixM5IsegqFi6IH0Nz0ZGqYs= github.com/hullerob/go.farbfeld v0.0.0-20181222022525-3661193c725f/go.mod h1:mQEoc766DxPTAwQ54neWTK/lFqIeSO7OU6bqZsceglw= -github.com/knieriem/g v0.5.0 h1:0WGfg4rfLD70T5e3SLZ9HtmmLQlRPChoKG15B3dfyqI= -github.com/knieriem/g v0.5.0/go.mod h1:fhVCOebbqbZTIN+bv0aU/gOAasuZlP0ETeaF4N2553A= github.com/kriticalflare/qoi v0.0.0-20240815192827-34f66f23bcef h1:XHb/eK43B8XuqAO5jHILCXzZP3pBamGmn5PcGjTZTuE= github.com/kriticalflare/qoi v0.0.0-20240815192827-34f66f23bcef/go.mod h1:skc5Zgfi3XE//1zgGGPC1abynJwsZhFxOiwkCrwL4Z8= -github.com/lionkov/go9p v0.0.0-20180620135904-0a603dd6808a/go.mod h1:Nbrxd4FljESFB/bUvzT5xm1VNO2VfzMKSIv4L++4J4U= github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ= github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= github.com/oov/psd v0.0.0-20220121172623-5db5eafcecbb h1:JF9kOhBBk4WPF7luXFu5yR+WgaFm9L/KiHJHhU9vDwA= @@ -49,13 +48,10 @@ github.com/tetratelabs/wazero v1.9.0 h1:IcZ56OuxrtaEz8UYNRHBrUa9bYeX9oVY93KspZZB github.com/tetratelabs/wazero v1.9.0/go.mod h1:TSbcXCfFP0L2FGkRPxHphadXPjo1T6W+CseNNY7EkjM= github.com/urfave/cli/v3 v3.4.1 h1:1M9UOCy5bLmGnuu1yn3t3CB4rG79Rtoxuv1sPhnm6qM= github.com/urfave/cli/v3 v3.4.1/go.mod h1:FJSKtM/9AiiTOJL4fJ6TbMUkxBXn7GO9guZqoZtpYpo= -github.com/xyproto/xbm v1.0.0 h1:R5/A2+yhyy4V2c626bdIVfS1UNwE3efhiEBuKXU6u3A= -github.com/xyproto/xbm v1.0.0/go.mod h1:m2xrjsNmxuzBrx6gs4rSgxgpJWXS01j9KxYgjxhcnoc= golang.org/x/image v0.30.0 h1:jD5RhkmVAnjqaCUXfbGBrn3lpxbknfN9w2UhHHU+5B4= golang.org/x/image v0.30.0/go.mod h1:SAEUTxCCMWSrJcCy/4HwavEsfZZJlYxeHLc6tTiAe/c= golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/internal/codec/xbm/xbm.go b/internal/codec/xbm/xbm.go index db0c07f..cd7f75b 100644 --- a/internal/codec/xbm/xbm.go +++ b/internal/codec/xbm/xbm.go @@ -5,14 +5,15 @@ import ( "image" "io" - decode "github.com/knieriem/g/image/xbm" - "github.com/xyproto/xbm" + "github.com/coalaura/xbm" "github.com/coalaura/ffwebp/internal/codec" "github.com/coalaura/ffwebp/internal/opts" "github.com/urfave/cli/v3" ) +var name string + func init() { codec.Register(impl{}) } @@ -32,11 +33,18 @@ func (impl) CanEncode() bool { } func (impl) Flags(flags []cli.Flag) []cli.Flag { - return flags + return append(flags, + &cli.StringFlag{ + Name: "xbm.name", + Usage: "XBM: name of the image definition", + Value: "image", + Destination: &name, + }, + ) } func (impl) Sniff(reader io.ReaderAt) (int, []byte, error) { - buf := make([]byte, 64) + buf := make([]byte, 128) n, err := reader.ReadAt(buf, 0) if err != nil && err != io.EOF { @@ -45,7 +53,7 @@ func (impl) Sniff(reader io.ReaderAt) (int, []byte, error) { buf = buf[:n] - if bytes.Contains(buf, []byte("#define")) && bytes.Contains(buf, []byte("static char")) { + if bytes.Contains(buf, []byte("#define")) && bytes.Contains(buf, []byte("bits[]")) { return 90, buf, nil } @@ -53,9 +61,11 @@ func (impl) Sniff(reader io.ReaderAt) (int, []byte, error) { } func (impl) Decode(r io.Reader) (image.Image, error) { - return decode.Decode(r) + return xbm.Decode(r) } func (impl) Encode(w io.Writer, img image.Image, _ opts.Common) error { - return xbm.Encode(w, img) + return xbm.Encode(w, img, xbm.XBMOptions{ + Name: name, + }) }